평가 실행 및 결과 해석 - Amazon SageMaker AI

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

평가 실행 및 결과 해석

평가 작업 실행

1단계: 데이터 준비

  • 데이터 형식 요구 사항에 따라 평가 데이터 형식 지정

  • JSONL 파일을 S3에 업로드합니다. s3://your-bucket/eval-data/eval_data.jsonl

2단계: 레시피 구성

구성으로 샘플 레시피를 업데이트합니다.

  • 모델 위치로 model_name_or_path 설정

  • 보상 함수 ARNlambda_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 라이브러리의 두 가지 사전 설정 보상 함수(prime_code, prime_math)를 RFT Lambda와 번들링할 수 있는 Lambda 계층에서 사용할 수 있습니다.

개요

이러한 사전 설정 함수는 다음에 대한 out-of-the-box 평가 기능을 제공합니다.

  • prime_code – 코드 생성 및 정확성 평가

  • prime_math – 수학적 추론 및 문제 해결 평가

빠른 설정

  1. nova-custom-eval-sdk 릴리스에서 Lambda 계층 다운로드

  2. 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
  3. 에서 Lambda 함수에 계층을 추가합니다 AWS Management Console (사용자 지정 preset-function-layer 계층을 선택하고, 종속성을 최소화하려면 AWSSDKPandas-Python312도 추가).

  4. 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, 음수, 빈 입력)

  • 참조 답변에서 수학 표현식의 형식을 일관되게 지정

  • 배포 전에 샘플 데이터로 보상 함수 테스트

오류 처리

두 함수 모두 다음에 대한 강력한 오류 처리를 포함합니다.

  • 생성된 코드의 컴파일 오류

  • 실행 중 런타임 예외

  • 형식이 잘못된 입력 데이터

  • 무한 루프에 대한 제한 시간 시나리오

  • 잘못된 수학 표현식