기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
평가 실행 및 결과 해석
평가 작업 실행
1단계: 데이터 준비
-
데이터 형식 요구 사항에 따라 평가 데이터 형식 지정
-
JSONL 파일을 S3에 업로드합니다.
s3://your-bucket/eval-data/eval_data.jsonl
2단계: 레시피 구성
구성으로 샘플 레시피를 업데이트합니다.
-
모델 위치로
model_name_or_path설정 -
보상 함수 ARN
lambda_arn으로 설정 -
원하는 출력 위치로
output_s3_path설정 -
필요에 따라
inference파라미터 조정
레시피를 로 저장 rft_eval_recipe.yaml
3단계: 평가 실행
제공된 노트북: 평가 노트북을 사용하여 평가 작업 실행
평가 컨테이너
708977205387.dkr.ecr.us-east-1.amazonaws.com/nova-evaluation-repo:SM-TJ-Eval-V2-latest
4단계: 진행 상황 모니터링
다음을 통해 평가 작업을 모니터링합니다.
-
SageMaker 콘솔: 작업 상태 및 로그 확인
-
CloudWatch Logs: 세부 실행 로그 보기
-
Lambda 로그: 보상 함수 문제 디버깅
평가 결과 이해
출력 형식
평가 작업은 결과를 지정된 S3 위치에 JSONL 형식으로 출력합니다. 각 줄에는 하나의 샘플에 대한 평가 결과가 포함됩니다.
{ "id": "sample-001", "aggregate_reward_score": 0.75, "metrics_list": [ { "name": "accuracy", "value": 0.85, "type": "Metric" }, { "name": "fluency", "value": 0.90, "type": "Reward" } ] }
참고
RFT 평가 작업 출력은 Lambda 응답 형식과 동일합니다. 평가 서비스는 Lambda 함수의 응답을 수정 없이 전달하여 보상 계산과 최종 결과 간의 일관성을 보장합니다.
결과 해석
보상 점수 집계
-
범위: 일반적으로 0.0(최악)~1.0(가장 좋음)이지만 구현에 따라 다름
-
용도: 전체 성능을 요약하는 단일 숫자
-
사용: 모델 비교, 훈련 대비 개선 사항 추적
개별 지표
-
지표 유형: 분석을 위한 정보 지표
-
보상 유형: RFT 훈련 중에 사용되는 지표
-
해석: 값이 높을수록 일반적으로 더 나은 성능을 나타냅니다(반대 지표를 설계하지 않는 한).
성능 벤치마크
"좋은" 성능을 구성하는 요소는 사용 사례에 따라 달라집니다.
| 점수 범위 | 해석 | 작업 |
|---|---|---|
| 0.8~1.0 | 우수 | 배포 준비된 모델 |
| 0.6~0.8 | 양호 | 사소한 개선이 유용할 수 있음 |
| 0.4~0.6 | 공정 | 상당한 개선 필요 |
| 0.0~0.4 | 나쁨 | 훈련 데이터 및 보상 함수 검토 |
중요
다음은 일반적인 지침입니다. 다음을 기반으로 자체 임계값을 정의합니다.
-
비즈니스 요구 사항
-
기준 모델 성능
-
도메인별 제약 조건
-
추가 훈련의 비용 편익 분석
결과 분석
요약 통계 계산
import json import numpy as np scores = [] with open('evaluation_results.jsonl', 'r') as f: for line in f: result = json.loads(line) scores.append(result['aggregate_reward_score']) print(f"Mean: {np.mean(scores):.3f}") print(f"Median: {np.median(scores):.3f}") print(f"Std Dev: {np.std(scores):.3f}") print(f"Min: {np.min(scores):.3f}") print(f"Max: {np.max(scores):.3f}")
-
실패 사례 식별: 점수가 낮은 샘플을 검토하여 약점을 이해합니다.
-
지표 비교: 다양한 지표 간의 상관관계를 분석하여 장단점을 식별합니다.
-
시간 경과에 따른 추적: 훈련 반복에서 평가 결과 비교
문제 해결
일반적인 문제
| 문제 | 원인 | 솔루션 |
|---|---|---|
| Lambda 제한 시간 | 복잡한 보상 계산 | Lambda 제한 시간 증가 또는 함수 최적화 |
| 권한 거부됨 | IAM 권한 누락 | SageMaker 역할이 Lambda를 호출할 수 있는지 확인 |
| 일관되지 않은 점수 | 비결정적 보상 함수 | 고정 시드 또는 결정론적 로직 사용 |
| 누락된 결과 | Lambda 오류가 발견되지 않음 | Lambda에서 포괄적인 오류 처리 추가 |
디버그 체크리스트
-
중첩된 콘텐츠 배열을 사용하여 입력 데이터가 올바른 형식을 따르는지 확인
-
Lambda ARN이 올바르고 함수가 배포되었는지 확인
-
SageMaker → Lambda 호출에 대한 IAM 권한 확인
-
Lambda 오류에 대한 CloudWatch 로그 검토
-
Lambda 응답이 예상 형식과 일치하는지 확인
모범 사례
-
간단한 시작: 기본 보상 함수로 시작하고 반복합니다.
-
Lambda 별도 테스트: 전체 평가 전에 Lambda 테스트 이벤트 사용
-
소규모 데이터 세트에서 검증: 전체 데이터 세트 전에 하위 집합에 대한 평가 실행
-
버전 관리: 모델 버전과 함께 보상 함수 버전 추적
-
비용 모니터링: Lambda 호출 및 컴퓨팅 시간이 비용에 미치는 영향
-
광범위한 로그: 디버깅을 위해 Lambda의 인쇄 문 사용
-
적절한 제한 시간 설정: 인내와 비용 간의 균형
-
문서 지표: 각 지표가 측정하는 항목을 명확하게 정의
다음 단계
RFT 평가를 완료한 후:
-
결과가 만족스러우면: 프로덕션에 모델 배포
-
개선이 필요한 경우:
-
보상 함수 조정
-
더 많은 훈련 데이터 수집
-
훈련 하이퍼파라미터 수정
-
추가 RFT 훈련 반복 실행
-
-
지속적인 모니터링: 새 데이터로 주기적으로 재평가
보상 함수 사전 설정
오픈 소스 verl 라이브러리
개요
이러한 사전 설정 함수는 다음에 대한 out-of-the-box 평가 기능을 제공합니다.
-
prime_code – 코드 생성 및 정확성 평가
-
prime_math – 수학적 추론 및 문제 해결 평가
빠른 설정
-
nova-custom-eval-sdk 릴리스
에서 Lambda 계층 다운로드 -
AWS CLI다음을 사용하여 Lambda 계층을 게시합니다.
aws lambda publish-layer-version \ --layer-name preset-function-layer \ --description "Preset reward function layer with dependencies" \ --zip-file fileb://universal_reward_layer.zip \ --compatible-runtimes python3.9 python3.10 python3.11 python3.12 \ --compatible-architectures x86_64 arm64 -
에서 Lambda 함수에 계층을 추가합니다 AWS Management Console (사용자 지정 preset-function-layer 계층을 선택하고, 종속성을 최소화하려면 AWSSDKPandas-Python312도 추가).
-
Lambda 코드에서 가져오기 및 사용:
from prime_code import compute_score # For code evaluation from prime_math import compute_score # For math evaluation
prime_code 함수
용도: 테스트 사례에 대해 코드를 실행하고 정확성을 측정하여 Python 코드 생성 작업을 평가합니다.
평가의 입력 데이터 세트 형식 예
{"messages":[{"role":"user","content":"Write a function that returns the sum of two numbers."}],"reference_answer":{"inputs":["3\n5","10\n-2","0\n0"],"outputs":["8","8","0"]}} {"messages":[{"role":"user","content":"Write a function to check if a number is even."}],"reference_answer":{"inputs":["4","7","0","-2"],"outputs":["True","False","True","True"]}}
주요 기능
-
마크다운 코드 블록에서 자동 코드 추출
-
함수 감지 및 호출 기반 테스트
-
제한 시간 보호를 사용하여 사례 실행 테스트
-
구문 검증 및 컴파일 검사
-
트레이스백을 사용한 세부 오류 보고
prime_math 함수
용도: 심볼 수학 지원을 통해 수학 추론 및 문제 해결 기능을 평가합니다.
입력 형식
{"messages":[{"role":"user","content":"What is the derivative of x^2 + 3x?."}],"reference_answer":"2*x + 3"}
주요 기능
-
SymPy를 사용한 심볼 수학 평가
-
여러 응답 형식(LaTeX, 일반 텍스트, 심볼)
-
수학적 동등성 검사
-
표현식 정규화 및 간소화
데이터 형식 요구 사항
코드 평가의 경우
-
입력 - 함수 인수 배열(적절한 유형: 정수, 문자열 등)
-
출력 - 예상 반환 값 배열(적절한 유형: 부울, 숫자 등)
-
코드 - 명확한 함수 정의가 있는 Python에 있어야 합니다.
수학 평가의 경우
-
참조 답변 - 수학 표현식 또는 숫자 값
-
응답 - LaTeX, 일반 텍스트 또는 심볼 표기법일 수 있습니다.
-
동등성 - 문자열 일치뿐만 아니라 기호적으로 확인됨
모범 사례
-
테스트 사례에 적절한 데이터 형식 사용(통합자 대 문자열, 부울 대 "True")
-
코드 문제에 명확한 함수 서명 제공
-
테스트 입력에 엣지 케이스 포함(0, 음수, 빈 입력)
-
참조 답변에서 수학 표현식의 형식을 일관되게 지정
-
배포 전에 샘플 데이터로 보상 함수 테스트
오류 처리
두 함수 모두 다음에 대한 강력한 오류 처리를 포함합니다.
-
생성된 코드의 컴파일 오류
-
실행 중 런타임 예외
-
형식이 잘못된 입력 데이터
-
무한 루프에 대한 제한 시간 시나리오
-
잘못된 수학 표현식