AI Prompt Engineering · 강의

의사 결정 평가

품질과 비용 측정

레슨 4/413개 단계

의사 결정 평가은(는) CoddyKit의 무료 AI Prompt Engineering 강의입니다. 이것은 4개 중 4번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 AI Prompt Engineering 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. AI Prompt Engineering 강의에는 총 4개의 강의가 포함되어 있습니다.

측정할 수 없는 것은 결정할 수 없습니다

프롬프트 방식, 튜닝 방식, 하이브리드 방식 중 무엇을 선택할지는 그 선택을 뒷받침하는 평가만큼만 정확합니다. 고정된 평가 세트와 비용 모델이 없으면 모든 비교는 일화적인 주장에 불과합니다.

  • 품질과 비용은 두 축이므로 너무 일찍 하나의 숫자로 합치지 마십시오
  • 평가 세트는 분리해 두고 비교하는 모든 접근 방식에서 동일하게 유지해야 합니다
  • 승자는 주어진 제약 조건에서 품질-비용 경계의 가장 적합한 지점에 있는 접근 방식입니다

먼저 고정된 평가 세트 구축하기

무엇이든 비교하기 전에 어떤 접근 방식도 학습에 사용하지 않는 분리 평가 세트를 구성하십시오. 실제 분포를 반영해야 하므로 일반적인 사례, 알려진 경계 사례, 적대적 입력을 운영 환경과 대략 같은 비율로 포함해야 합니다.

이 세트를 고정하십시오. 프롬프트만 사용하는 방식, 튜닝 방식, 하이브리드 방식 등 모든 접근 방식을 동일한 세트로 평가합니다. 비교할 때마다 평가 세트가 달라지면 수치를 비교할 수 없고 결정도 잘못됩니다.

def split_eval(labeled, holdout_ratio=0.2, seed=42):
    import random
    rng = random.Random(seed)        # fixed seed = reproducible split
    data = labeled[:]
    rng.shuffle(data)
    cut = int(len(data) * (1 - holdout_ratio))
    train, frozen_eval = data[:cut], data[cut:]
    return train, frozen_eval        # eval never enters any training run

작업에 맞는 지표 선택하기

일반적인 정확도는 작업별 실패를 가립니다. 실제로 중요한 요소를 포착하는 지표를 선택하십시오.

  • 구조화된 출력에는 정확 일치/스키마 일치
  • 자유 형식 품질에는 루브릭 기반 LLM 심사를 사용하고 사람이 검토한 표본을 함께 확인합니다
  • 꼬리 지표 — mean만이 아니라 최악의 경우와 p95를 확인합니다
  • 안전/거부율은 엄격한 통과 기준으로 삼고 품질과 별도로 평가합니다

치명적인 최악의 경우를 숨기는 mean 점수는 잘못된 결정으로 이어집니다.

모든 후보를 동일하게 평가하기

프롬프트만 사용하는 방식, 튜닝 방식, 하이브리드 방식을 동일한 고정 세트에 동일한 평가기로 평가하십시오. 비교가 동일 조건에서 이루어지도록 각각의 품질과 전체 비용 벡터를 기록하십시오.

def evaluate(candidate, frozen_eval, scorer):
    results = []
    for ex in frozen_eval:
        out = candidate.run(ex['input'])
        results.append(scorer(out, ex['label']))
    mean = sum(results) / len(results)
    p95 = sorted(results)[int(0.95 * len(results)) - 1]
    return {'mean': mean, 'p95_worst': p95}

# Identical frozen_eval + scorer for prompt / tuned / hybrid

전체 비용 벡터 모델링하기

비용은 하나의 숫자가 아닙니다. 실제 사용량에서 비교가 현실을 반영하도록 모든 구성 요소를 기록하십시오.

  • 호출당 추론: 입력 및 출력 토큰 수에 단가를 곱한 값입니다. 프롬프트가 길수록 호출당 비용이 커집니다
  • 학습 비용 상각: 튜닝 비용을 예상 요청량에 나누어 반영합니다
  • 유지 관리: 데이터 pipeline, 평가 실행, 기본 모델 변경에 따른 재튜닝을 포함합니다
  • 지연 시간: 전환율이나 사용자 경험에 영향을 줄 때 별도로 비용을 반영합니다
def monthly_cost(calls, in_tok, out_tok, price_in, price_out,
                 train_cost=0.0, months_amortized=12):
    inference = calls * ((in_tok/1000)*price_in + (out_tok/1000)*price_out)
    amortized_train = train_cost / months_amortized
    return inference + amortized_train

# Long prompt-only: high in_tok, train_cost=0
# Tuned: low in_tok, train_cost>0 amortized over volume

품질-비용 경계 그리기

각 후보의 품질과 월간 비용을 구했다면 이를 경계 위에 표시하십시오. 다른 후보가 더 높은 품질과 더 낮은 비용을 모두 제공한다면 해당 후보는 지배되는 것이므로 제외하십시오.

비지배 후보 중에서 올바른 선택은 제약 조건에 따라 달라집니다. 품질 기준을 충족하는 후보 중 가장 저렴한 것을 선택하거나, 비용 상한 안에서 품질이 가장 높은 것을 선택하십시오. 이제 결정은 선호의 문제가 아니라 명확하고 설명 가능한 판단이 됩니다.

def non_dominated(candidates):
    # candidate: {'name','quality','cost'} -- higher quality, lower cost better
    keep = []
    for c in candidates:
        dominated = any(o['quality'] >= c['quality'] and o['cost'] <= c['cost']
                        and o != c for o in candidates)
        if not dominated:
            keep.append(c)
    return keep

잡음이 아닌 통계적 유의성

200개 예제로 구성된 평가에서 2점 상승한 결과는 잡음일 수 있습니다. 승자를 선언하기 전에 평가 규모를 고려할 때 품질 차이가 통계적으로 의미 있는지 확인하십시오.

동일한 예제를 두 후보에 모두 적용하는 대응 비교와 차이에 대한 신뢰 구간을 사용하십시오. 구간에 0이 포함되면 실제 개선이 있다고 볼 수 없으므로 튜닝에 드는 추가 비용을 정당화할 수 없습니다.

def paired_diff_ci(scores_a, scores_b):
    import statistics
    diffs = [a - b for a, b in zip(scores_a, scores_b)]
    mean = statistics.mean(diffs)
    sd = statistics.pstdev(diffs)
    se = sd / (len(diffs) ** 0.5)
    return (mean - 1.96*se, mean + 1.96*se)  # if it spans 0 -> not significant

평가 데이터 누수 방지하기

튜닝이 실제보다 훨씬 좋아 보이게 만드는 가장 빠른 방법은 평가 세트와 겹치는 학습 예제가 생기는 누수입니다. 누수가 발생한 평가는 암기를 보상하고 튜닝 후보의 점수를 부풀립니다.

학습 세트와 평가 세트의 경계에서 중복을 제거하고, 유사 중복을 확인하십시오. 또한 시간적으로 분리된 평가 세트를 우선 사용하십시오. 날짜를 기준으로 분리하면 튜닝된 모델이 해당 데이터를 미리 보지 못하게 할 수 있습니다. 누수는 운영 환경에서 튜닝 결정을 실패하게 만드는 가장 흔한 원인입니다.

배포 후 모니터링하기

결정은 출시 시점에 끝나지 않습니다. 운영 환경의 데이터 분포는 변하고, 입력이 학습 분포에서 멀어지면 튜닝된 모델의 성능이 조용히 저하될 수 있습니다.

  • 실시간 트래픽을 표본 추출하고 동일한 평가 기준으로 점수를 매깁니다
  • 품질 저하와 호출당 비용 증가를 감지하도록 알림을 설정합니다
  • 기본 모델 버전이 바뀔 때마다 고정된 평가를 다시 실행합니다

선택한 접근 방식을 끝난 결정이 아니라 지속적으로 검증해야 하는 가설로 다루십시오.

의사 결정 기록

비교 결과를 문서로 작성한 의사 결정 기록으로 남기십시오. 여기에는 고정된 평가 세트, 각 후보의 품질과 비용 벡터, 유의성 결과, 가정한 사용량, 그리고 그 근거와 함께 품질-비용 경계에서 선택한 지점을 기록합니다.

이렇게 하면 선택을 감사하고 다시 평가할 수 있습니다. 사용량이나 기본 모델이 바뀌면 기억에 의존해 논쟁을 반복하는 대신 기록을 다시 열고 평가를 다시 실행하면 됩니다.

전체 의사 결정 함수

전체를 연결하면 다음과 같습니다. 고정된 평가 세트에서 각 후보를 평가하고, 비용을 연결하고, 지배되는 선택지를 제외하고, 가장 저렴한 기준선보다 통계적으로 유의미한 개선을 요구한 다음, 가장 중요한 제약 조건을 기준으로 선택하십시오.

def decide(candidates, quality_bar, cost_ceiling):
    frontier = non_dominated(candidates)
    feasible = [c for c in frontier
                if c['quality'] >= quality_bar and c['cost'] <= cost_ceiling]
    if not feasible:
        return 'NO_CANDIDATE_MEETS_CONSTRAINTS'
    # cheapest option that clears the quality bar
    return min(feasible, key=lambda c: c['cost'])['name']

# Prefer prompt-only on ties: lower maintenance TCO

간단한 확인

튜닝된 모델이 150개 예제로 구성된 평가에서 프롬프트 방식보다 2점 높은 점수를 받았습니다. 하지만 차이에 대한 대응 신뢰 구간에 0이 포함되고, 월간 비용도 더 높습니다. 어떻게 판단해야 할까요?

복습

직관이 아니라 고정된 평가와 정직한 비용 벡터를 바탕으로 결정하십시오. 품질과 비용은 두 축이며, 답은 가장 중요한 제약 조건을 기준으로 선택한 품질-비용 경계상의 지점입니다.

  • 평가 세트 하나를 고정하고 모든 후보를 그 세트에서 동일하게 평가합니다
  • 작업에 맞는 지표를 선택하고 mean만이 아니라 최악의 경우도 확인합니다
  • 전체 비용 벡터를 모델링하고 실제 사용량에 따라 학습 비용을 상각합니다
  • 통계적 유의성을 요구합니다. 신뢰 구간에 0이 포함되면 개선이 아닙니다
  • 평가 누수를 방지합니다. 누수는 잘못된 튜닝 성공의 가장 큰 원인입니다
  • 출시 후 모니터링하고 결정을 기록하여 다시 평가할 수 있게 합니다
무료로 시작

AI 튜터와 함께 AI Prompt Engineering을(를) 배우세요 — 무료

브라우저에서 실제 코드를 작성하고 실행하며, 24/7 AI 튜터로부터 즉각적인 도움을 받고, 웹이나 앱에서 중단한 부분부터 계속 학습하세요.

코스
53
레슨
199

자주 묻는 질문

“의사 결정 평가” 강의는 무료인가요?

네 — “의사 결정 평가” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 AI Prompt Engineering 강의 전체를 잠금 해제할 수 있습니다. AI Prompt Engineering 강의에는 총 4개의 강의가 포함되어 있습니다.

“의사 결정 평가”에서 뭘 배우나요?

품질과 비용 측정 브라우저에서 직접 실행하는 실습 코드로 AI Prompt Engineering을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

AI Prompt Engineering을(를) 시작하는 데 경험이 필요한가요?

사전 경험은 필요하지 않습니다. CoddyKit의 AI Prompt Engineering은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 4번째 강의입니다.

“의사 결정 평가” 강의는 얼마나 걸리나요?

대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.

이 AI Prompt Engineering 강의에서 코드를 작성하고 실행할 수 있나요?

네. 모든 AI Prompt Engineering 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. 프롬프트만으로 충분한 경우
  2. 파인튜닝이 필요한 경우
  3. 하이브리드: 프롬프트와 가벼운 튜닝
  4. 의사 결정 평가
← AI Prompt Engineering(으)로 돌아가기