SageMaker AI로 훈련된 모델 평가 - Amazon SageMaker AI

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

SageMaker AI로 훈련된 모델 평가

평가 프로세스의 목적은 훈련된 모델의 성능을 벤치마크 또는 사용자 지정 데이터세트와 비교하여 평가하는 것입니다. 평가 프로세스에는 일반적으로 훈련된 모델을 가리키는 평가 레시피를 생성하고, 평가 데이터세트와 지표를 지정하며, 별도의 평가 작업을 제출하고, 표준 벤치마크 또는 사용자 지정 데이터에 대해 성능을 평가하는 단계가 포함됩니다. 평가 프로세스는 Amazon S3 버킷에 저장된 성능 지표를 출력합니다.

참고

이 주제에 설명된 평가 프로세스는 오프라인 프로세스입니다. 모델은 실시간 또는 실제 사용자 상호 작용을 통해 평가되지 않고 미리 정의된 답변이 있는 고정 벤치마크를 기준으로 테스트됩니다. 실시간 평가를 위해서는, 모델을 Amazon Bedrock에 배포한 후 Amazon Bedrock 런타임 API를 직접적으로 호출하여 테스트할 수 있습니다.

사전 조건

평가 훈련 작업을 시작하기 전에 다음 사항을 확인하세요.

  • 성능을 평가하려는, SageMaker AI로 훈련된 Amazon Nova 모델.

  • 평가를 위한 기본 Amazon Nova 레시피. 자세한 내용은 Amazon Nova 레시피 가져오기 단원을 참조하십시오.

사용 가능한 벤치마크 태스크

Amazon Nova에 대한 SageMaker 모델 평가 기능을 사용하여 벤치마크 지표를 계산하는 방법을 보여주는 샘플 코드 패키지를 사용할 수 있습니다. 코드 패키지에 액세스하려면 sample-Nova-lighteval-custom-task를 참조하세요.

다음은 사용 가능한 업계 표준 벤치마크 목록입니다. eval_task 파라미터에 다음 벤치마크를 지정할 수 있습니다.

모델 평가에 사용할 수 있는 벤치마크

벤치마크 양식 설명 Metrics 전략 하위 태스크 사용 가능
mmlu

텍스트

다중 태스크 언어 이해 - 57개 주제에 걸친 지식을 테스트합니다.

정확도

zs_cot
mmlu_pro 텍스트

MMLU - 전문 하위 세트 - 법률, 의학, 회계, 엔지니어링 등 전문 분야에 중점을 둡니다.

정확도 zs_cot 아니요
bbh 텍스트

고급 추론 태스크 - 높은 수준의 인지 능력과 문제 해결 능력을 테스트하는 도전적 문제의 모음입니다.

정확도 fs_cot
gpqa 텍스트

일반 물리학 질문 응답 - 물리 개념 이해와 관련 문제 해결 능력을 평가합니다.

정확도 zs_cot 아니요
math 텍스트

수학적 문제 해결 - 대수학, 미적분학, 문장제 문제 등 여러 주제에서 수학적 추론 능력을 측정합니다.

exact_match zs_cot
strong_reject 텍스트

품질 관리 태스크 - 부적절하거나 유해하거나 잘못된 콘텐츠를 감지하고 거부하는 모델의 능력을 테스트합니다.

deflection zs
ifeval 텍스트

지침 준수 평가 - 모델이 주어진 지침을 얼마나 정확하게 따르고 요구 조건에 맞게 태스크를 완료하는지 측정합니다.

정확도 zs 아니요
gen_qa 다중 모달(이미지)

사용자 지정 데이터 세트 평가 - 벤치마킹을 위해 자체 데이터 세트를 제공하여 모델 출력을 ROUGE 및 BLEU와 같은 지표와 참조 답변과 비교할 수 있습니다.는 Amazon Nova Lite 또는 Amazon Nova Pro 기반 모델에 대한 이미지 추론을 gen_qa 지원합니다. 또한 Bring-Your-Own Metrics lambda를 지원합니다. (RFT 평가의 경우 RFT 평가 레시피를 사용하세요.)

모두 gen_qa 아니요
llm_judge 텍스트

평가형 LLM 선호도 비교 - Nova Judge 모델을 사용하여 프롬프트에 대한 응답 쌍(A와 B)을 비교하고, B가 A보다 선호될 확률을 계산합니다.

모두 judge 아니요

mm_llm_judge

다중 모달(이미지)

이 새로운 벤치마크는 llm_judge위의 텍스트 기반 벤치마크와 동일하게 동작합니다. 유일한 차이점은 이미지 추론을 지원한다는 것입니다.

모두 judge 아니요

rubric_llm_judge

텍스트

Rubric Judge는 Nova 2.0 Lite를 기반으로 구축된 향상된 LLM-as-a-judge 평가 모델입니다. 기본 설정 결정만 제공하는 원래 판사 모델과 달리 Rubric Judge는 각 프롬프트에 맞게 조정된 사용자 지정 평가 기준을 동적으로 생성하고 여러 차원에 세분화된 점수를 할당합니다.

모두

judge

아니요

aime_2024

텍스트

AIME 2024 - 고급 수학 추론 및 문제 해결을 테스트하는 미국 초대 수학 검사 문제

exact_match

zs_cot

아니요

calendar_scheduling

텍스트

자연 계획 - 일정 예약 작업 테스트 계획 여러 날 및 사람에 걸쳐 회의를 예약할 수 있는 기능

exact_match

fs

아니요

humaneval

텍스트

HumanEval - 대규모 언어 모델의 코드 생성 능력을 평가하도록 설계된 벤치마크 데이터세트입니다.

pass@1

zs 아니요

평가 관련 구성

다음은 레시피의 주요 구성 요소에 대한 분석과 이를 사용 사례에 맞게 수정하는 방법에 대한 지침입니다.

레시피 이해 및 수정

일반 실행 구성

run: name: eval_job_name model_type: amazon.nova-2-lite-v1:0:256k model_name_or_path: nova-lite-2/prod # or s3://escrow_bucket/model_location replicas: 1 data_s3_path: "" mlflow_tracking_uri: "" mlflow_experiment_name : "" mlflow_run_name : ""
  • name: 평가 작업에 대한 설명이 포함된 이름입니다.

  • model_type: 사용할 Nova 모델 변형을 지정합니다. 이 필드는 수동으로 수정하지 마세요. 옵션에는 다음이 포함됩니다.

    • amazon.nova-micro-v1:0:128k

    • amazon.nova-lite-v1:0:300k

    • amazon.nova-pro-v1:0:300k

    • amazon.nova-2-lite-v1:0:256k

  • model_name_or_path: 기본 모델 경로 또는 훈련 후 체크포인트의 S3 경로입니다. 옵션에는 다음이 포함됩니다.

    • nova-micro/prod

    • nova-lite/prod

    • nova-pro/prod

    • nova-lite-2/prod

    • 훈련 후 체크포인트 경로의 S3 경로(s3:customer-escrow-111122223333-smtj-<unique_id>/<training_run_name>)

      참고

      훈련 후 모델 평가

      Nova SFT 훈련 작업 후 훈련 후 모델을 평가하려면 훈련 작업을 성공적으로 실행한 후 다음 단계를 따르세요. 훈련 로그 끝에 "Training is complete"라는 로그 메시지가 표시됩니다. 또한 출력 버킷에서 체크포인트 위치가 포함된 manifest.json 파일을 찾을 수 있습니다. 이 파일은 출력 S3 위치의 output.tar.gz 파일 내에 있습니다. 평가를 진행하려면 레시피 구성에서 이 체크포인트를 run.model_name_or_path 값으로 설정하세요.

  • replica: 분산 추론(여러 노드에서 추론 실행)에 사용할 컴퓨팅 인스턴스 수입니다. 평가를 가속화하는 다중 노드 추론을 활성화하려면 replica > 1을 설정합니다. instance_countreplica를 모두 지정하면 instance_count가 우선합니다. 여러 복제본은 SageMaker HyperPod가 아닌 SageMaker 훈련 작업에만 적용됩니다.

  • data_s3_path: 입력 데이터세트 Amazon S3 경로입니다. 이 필드는 필수이지만 항상 비워 두어야 합니다.

  • mlflow_tracking_uri: (선택 사항) MLflow 추적 서버의 위치(SMHP에만 필요)

  • mlflow_experiment_name: (선택 사항) 관련 ML 실행을 그룹화하는 실험의 이름입니다.

  • mlflow_run_name: (선택 사항) 실험 내 특정 훈련 실행의 사용자 지정 이름

평가 구성

evaluation: task: mmlu strategy: zs_cot subtask: abstract_algebra metric: accuracy
  • task: 사용할 평가 벤치마크 또는 태스크를 지정합니다. 지원되는 태스크에는 다음이 포함됩니다.

    • mmlu

    • mmlu_pro

    • bbh

    • gpqa

    • math

    • strong_reject

    • gen_qa

    • ifeval

    • llm_judge

    • mm_llm_judge

    • rubric_llm_judge

    • aime_2024

    • calendar_scheduling

    • humaneval

  • strategy: 평가 접근 방식을 정의합니다.

    • zs_cot: 제로샷 생각의 사슬 - 명시적인 예시 없이, 단계별 추론을 수행하도록 대형 언어 모델에 지시하는 접근 방식입니다.

    • fs_cot: 퓨샷 생각의 사슬 - 모델에 새 문제를 해결하도록 요청하기 전에 단계별 추론의 몇 가지 예시를 제공하는 접근 방식입니다.

    • zs: 제로샷 - 사전 훈련 예시 없이 문제를 해결하는 접근 방식입니다.

    • gen_qa: 사용자 제공 데이터세트에 특화된 전략입니다.

    • judge: Nova LLM을 판사로 사용하는 전략 및 mm_llm_judge.

  • subtask: 선택 사항입니다. 평가 태스크의 특정 구성 요소입니다. 사용 가능한 하위 태스크에 대한 전체 목록은 사용 가능한 하위 태스크 섹션을 참조하세요.

    • 사용 가능한 벤치마크 태스크에서 지원되는 하위 태스크를 확인합니다.

    • 하위 태스크 벤치마크가 없는 경우 이 필드를 제거해야 합니다.

  • metric: 사용할 평가 지표입니다.

    • accuracy: 정답 비율입니다.

    • exact_match: math 벤치마크의 경우 입력 예측 문자열이 참조와 정확히 일치하는 비율을 반환합니다.

    • deflection: strong reject 벤치마크의 경우기본 모델에 대한 상대 편향과 중요도 지표의 차이를 반환합니다.

    • all:

      gen_qa의 사용자 제공 데이터세트 벤치마크의 경우 다음 지표를 반환합니다.

      • rouge1: 생성된 텍스트와 참조 텍스트 간의 유니그램(단일 단어) 중복을 측정합니다.

      • rouge2: 생성된 텍스트와 참조 텍스트 간의 바이그램(2개 연속 단어) 중복을 측정합니다.

      • rougeL: 텍스트 간에 가장 긴 공통 부분 수열을 측정하며, 일치 항목 간의 간격을 허용합니다.

      • exact_match: 생성된 텍스트가 문자별로 참조 텍스트와 정확히 일치하는지 여부를 나타내는 이진 점수(0 또는 1)입니다.

      • quasi_exact_match: exact_match와 유사하지만 일반적으로 대소문자, 구두점 및 공백 차이를 무시하는 더 관대한 일치 방식입니다.

      • f1_score: 정밀도와 재현율의 조화 평균으로, 예측된 답변과 참조 답변 간의 단어 중복을 측정합니다.

      • f1_score_quasi: f1_score와 유사하지만 사소한 차이를 무시하는 정규화된 텍스트 비교를 사용하는 더 관대한 일치 방식입니다.

      • bleu: 생성된 텍스트와 참조 텍스트 간의 n그램 일치 정밀도를 측정하며, 일반적으로 번역 평가에 사용됩니다.

      llm_judgemm_llm_judge의 경우 자체 데이터 세트 벤치마크를 가져오고 다음 지표를 반환합니다.

      • a_scores: 순방향 및 역방향 평가 패스에서 response_A가 승리한 횟수입니다.

      • a_scores_stderr: 쌍별 판단에서 response_A_scores의 표준 오차입니다.

      • b_scores: 순방향 및 역방향 평가 패스에서 response_B가 승리한 횟수를 측정합니다.

      • a_scores_stderr: 쌍별 판단에서 response_B_scores의 표준 오차입니다.

      • ties: response_Aresponse_B가 동일한 것으로 평가되는 판단 수입니다.

      • ties_stderr: 쌍별 판단에서 ties의 표준 오차입니다.

      • inference_error: 올바르게 평가되지 못한 판단 수입니다.

      • score: response_B에 대한 순방향 및 역방향 패스의 승리 횟수에 기반한 집계 점수입니다.

      • score_stderr: response_B에 대한 순방향 및 역방향 패스의 승리 횟수에 기반한 집계 점수입니다.

      • inference_error_stderr: 쌍별 판단에서 집계 점수의 표준 오차입니다.

      • winrate: Bradley-Terry 확률을 사용하여 계산된, response_Bresponse_A보다 선호될 확률입니다.

      • lower_rate: 부트스트랩 샘플링에서 추정된 승률의 하한(2.5번째 백분위수)입니다.

      • upper_rate: 부트스트랩 샘플링에서 추정된 승률의 상한(97.5번째 백분위수)입니다.

추론 구성(선택 사항)

inference: max_new_tokens: 2048 top_k: -1 top_p: 1.0 temperature: 0 top_logprobs: 10 reasoning_effort: null # options: low/high to enable reasoning or null to disable reasoning
  • max_new_tokens: 생성할 최대 토큰 수입니다. 정수여야 합니다. (LLM Judge에는 사용할 수 없음)

  • top_k: 고려할 확률이 가장 높은 토큰의 수입니다. 정수여야 합니다.

  • top_p: 토큰 샘플링을 위한 누적 확률 임곗값입니다. 1.0에서 0.0 사이의 부동 소수점 수여야 합니다.

  • temperature: 토큰 선택의 무작위성(값이 높을수록 더 무작위). 결과를 결정론적으로 만들려면 0으로 유지합니다. 부동 소수점 수 유형, 최소값은 0입니다.

  • top_logprobs: 추론 응답에서 반환할 상위 로그 프로브 수입니다. 이 값은 0~20의 정수여야 합니다. Logprob에는 메시지 콘텐츠에 반환된 각 출력 토큰의 고려된 출력 토큰과 로그 확률이 포함됩니다.

  • reasoning_effort: 추론 가능 모델의 추론 동작을 제어합니다. 가 추론 가능 모델(현재 )을 model_type 지정하는 reasoning_effort 경우에만를 설정합니다amazon.nova-2-lite-v1:0:256k. 사용 가능한 옵션은 null(설정하지 않은 경우 기본값, 추론 비활성화), 낮음 또는 높음입니다.

평가 레시피 예시

Amazon Nova는 네 가지 유형의 평가 레시피를 제공합니다. 모든 레시피는 Amazon SageMaker HyperPod 레시피 GitHub 리포지토리에서 사용할 수 있습니다.

평가 레시피

    이러한 레시피를 사용하면 광범위한 텍스트 전용 벤치마크 모음 전반에서 Amazon Nova 모델의 기본 기능을 평가할 수 있습니다.

    레시피 형식: xxx_general_text_benchmark_eval.yaml.

    이러한 레시피를 사용하면 벤치마킹을 위한 자체 데이터세트를 가져와서 다양한 유형의 지표를 사용하여 모델 출력을 참조 답변과 비교할 수 있습니다.

    레시피 형식: xxx_ bring_your_own_dataset_eval.yaml.

    사용자 제공 데이터세트 요구 사항

    파일 형식:

    • 평가 예시가 포함된 단일 gen_qa.jsonl 파일입니다. 파일 이름은 gen_qa.jsonl과 정확히 일치해야 합니다.

    • 데이터세트는 SageMaker 훈련 작업에서 액세스할 수 있는 S3 위치에 업로드해야 합니다.

    • 파일은 일반 Q&A 데이터 세트에 필요한 스키마 형식을 따라야 합니다.

    스키마 형식 요구 사항 - .jsonl 파일의 각 줄은 다음 필드가 있는 JSON 객체여야 합니다.

    • 필수 필드.

      query: 답변이 필요한 질문 또는 지침이 포함된 문자열입니다.

      response: 예상 모델 출력을 포함하는 문자열입니다.

    • 선택 필드.

      system: 쿼리를 처리하기 전에 AI 모델의 동작, 역할 또는 특성을 설정하는 시스템 프롬프트가 포함된 문자열입니다.

      images: 데이터 속성(Base64 인코딩 이미지 문자열)이 있는 객체 목록을 포함하는 배열입니다.

      metadata: 태그 지정을 위해 항목과 연결된 메타데이터를 포함하는 문자열입니다.

    입력 예

    { "system":"You are an English major with top marks in class who likes to give minimal word responses: ", "query":"What is the symbol that ends the sentence as a question", "response":"?" }{ "system":"You are a pattern analysis specialist who provides succinct answers: ", "query":"What is the next number in this series? 1, 2, 4, 8, 16, ?", "response":"32" }{ "system":"You have great attention to detail and follow instructions accurately: ", "query":"Repeat only the last two words of the following: I ate a hamburger today and it was kind of dry", "response":"of dry" }{ "system": "Image inference: ", "query": "What is the number in the image? Please just use one English word to answer.", "response": "two", "images": [ { "data": "data:image/png;Base64,iVBORw0KGgoA ..." } ] }

    사용자 지정 데이터 세트를 사용하려면 기존 구성을 변경하지 않고 다음 필수 필드를 추가하여 평가 레시피를 수정합니다.

    evaluation: task: gen_qa strategy: gen_qa metric: all

    제한 사항

    • 평가당 하나의 .jsonl 파일만 허용됩니다.

    • 파일은 정의된 스키마를 엄격하게 따라야 합니다.

    자체 지표 가져오기

    사용자 지정 사전 처리, 사후 처리 및 지표 기능을 사용하여 자체 지표를 가져와 모델 평가 워크플로를 완전히 사용자 지정할 수 있습니다. 사전 처리를 통해 입력 데이터를 추론 서버로 보내기 전에 처리할 수 있으며, 사후 처리를 통해 지표 계산을 사용자 지정하고 필요에 따라 사용자 지정 지표를 반환할 수 있습니다.

    다음 단계에 따라 사용자 지정 평가 SDK로 자체 지표를 가져옵니다.

    1. 이렇게 하지 않은 경우 먼저에서 AWS 계정 AWS Lambda 함수를 생성합니다.

    2. GitHub 리포지토리에서 사전 빌드된 nova-custom-eval-layer.zip 파일을 다운로드합니다. 이 오픈 소스 Nova 사용자 지정 평가 SDK를 사용하여 사용자 지정 함수의 입력 및 출력 페이로드를 검증하고 훈련 중에 Nova의 자체 지표 평가 가져오기와 통합하기 위한 통합 인터페이스를 제공할 수 있습니다.

    3. 다음 명령을 사용하여 사용자 지정 Lambda 계층을 업로드합니다.

      aws lambda publish-layer-version \ --layer-name nova-custom-eval-layer \ --zip-file fileb://nova-custom-eval-layer.zip \ --compatible-runtimes python3.12 python3.11 python3.10 python3.9
    4. 이 계층을 필수 계층AWSLambdaPowertoolsPythonV3-python312-arm64(pydantic종속성에 필요)과 함께 Lambda 함수에 사용자 지정 AWS 계층으로 추가합니다.

    5. 제공된 예제를 사용하여 Lambda 코드를 업데이트하고 필요에 따라 코드를 수정합니다. 이 예제 코드는 모델 평가를 위한 사전 처리 및 사후 처리 단계를 통해 Nova의 사용자 지정 평가를 위한 Lambda 함수를 생성합니다.

      from nova_custom_evaluation_sdk.processors.decorators import preprocess, postprocess from nova_custom_evaluation_sdk.lambda_handler import build_lambda_handler @preprocess def preprocessor(event: dict, context) -> dict: data = event.get('data', {}) return { "statusCode": 200, "body": { "system": data.get("system"), "prompt": data.get("prompt", ""), "gold": data.get("gold", "") } } @postprocess def postprocessor(event: dict, context) -> dict: # data is already validated and extracted from event data = event.get('data', []) inference_output = data.get('inference_output', '') gold = data.get('gold', '') metrics = [] inverted_accuracy = 0 if inference_output.lower() == gold.lower() else 1.0 metrics.append({ "metric": "inverted_accuracy_custom", "value": accuracy }) # Add more metrics here return { "statusCode": 200, "body": metrics } # Build Lambda handler lambda_handler = build_lambda_handler( preprocessor=preprocessor, postprocessor=postprocessor )
    6. Lambda에 평가 작업에 대한 액세스 권한을 부여합니다. 평가 작업에 지정된 실행 역할에 Lambda 함수를 호출하는 정책이 포함되어 있는지 확인합니다. 다음은 예시 정책입니다.

      JSON
      { "Version":"2012-10-17", "Statement": [ { "Sid": "LambdaAccess", "Effect": "Allow", "Action": [ "lambda:InvokeFunction" ], "Resource": "arn:aws:lambda:us-east-1:111122223333:function:ExampleFunction", "Condition": { "StringLike": { "aws:PrincipalArn": "arn:aws:iam::111122223333:role/service-role/AmazonSageMaker-ExecutionRole-ARN" } } }, { "Sid": "DenyNonAWSEventSourcesForLambda", "Effect": "Deny", "Action": [ "lambda:InvokeFunction" ], "Resource": "arn:aws:lambda:us-east-1:111122223333:function:ExampleFunction", "Condition": { "Null": { "lambda:EventSourceToken": false } } } ] }
    7. Lambda 페이로드 스키마를 검토합니다. 다음 표에는 Lambda 요청 및 응답 스키마가 나열되어 있습니다. Nova 사용자 지정 평가 SDK를 사용하여 스키마를 검증할 수 있습니다.

      Lambda 요청 페이로드 Lambda 응답 페이로드
      프리프로세서
      { "process_type": "preprocess", "data": { "system": "You are a helpful assistant", "prompt": "What is 2+2?", "gold": "4" } }
      { "statusCode": 200, "body": { "system": "You are a helpful assistant that can substitute * for addition", "prompt": "What is 2*2?", "gold": "4" } }
      후처리기
      { "process_type": "postprocess", "data": { "prompt": "What is 2+2?", "inference_output": "2+2=4", "gold": "4" } }
      { "statusCode": 200, "body": [ {"metric": "accuracy", "value": 1.0}, {"metric": "f1_score", "value": 1.0}, {"metric": "exact_match", "value": 1}, {"metric": "length_ratio", "value": 0.8} ] }
    8. 레시피 파일을 수정합니다. 다음 예를 참고하세요

      processor: lambda_arn: arn:aws:lambda:us-east-1:111122223333:function:name lambda_type: "custom_metrics" preprocessing: enabled: true postprocessing: enabled: true aggregation: average
      • lambda-arn: 사전 처리 및 사후 처리를 처리하는 Lambda 함수의 Amazon 리소스 이름(ARN)입니다.

      • lambda_type: "custom_metrics" 또는 "rft".

      • preprocessing: 사용자 지정 사전 처리 작업을 활성화할지 여부입니다.

      • postprocessing: 사용자 지정 사후 처리 작업을 활성화할지 여부입니다.

      • aggregation: 기본 제공 집계 함수(유효 옵션: 최소, 최대, 평균, 합계).

    제한 사항

    • 고유한 지표 가져오기는 텍스트 입력 데이터 세트에만 적용됩니다.

    • 다중 모달 입력 데이터 세트는 지원되지 않습니다.

    • 사전 처리 단계에서는 메타데이터 필드를 처리하지 않습니다.

    평가형 Nova LLM은 사용자 지정 데이터세트를 사용하여 한 모델의 응답 품질을 기준 모델의 응답과 비교하는 모델 평가 기능입니다. 프롬프트, 기준 응답 및 도전자 응답이 있는 데이터세트를 수락하고 Nova Judge 모델을 사용하여 쌍별 비교를 통해 Bradley-Terry 확률에 기반한 승률 지표를 제공합니다. 레시피 형식: xxx_llm_judge_eval.yaml.

    Nova LLM 데이터세트 요구 사항

    파일 형식:

    • 평가 예시가 포함된 단일 llm_judge.jsonl 파일입니다. 파일 이름은 llm_judge.jsonl과 정확히 일치해야 합니다.

    • 데이터세트는 SageMaker 훈련 작업에서 액세스할 수 있는 S3 위치에 업로드해야 합니다.

    • 파일은 llm_judge 데이터세트에 필요한 스키마 형식을 따라야 합니다.

    • 입력 데이터세트는 모든 레코드가 12k 컨텍스트 길이 미만인지 확인해야 합니다.

    스키마 형식 - .jsonl 파일의 각 줄은 다음 필드가 있는 JSON 객체여야 합니다.

    • 필수 필드:

      prompt: 생성된 응답에 대한 프롬프트가 포함된 문자열입니다.

      response_A: 기준 응답을 포함하는 문자열입니다.

      response_B: 기준 응답과 비교할 대체 응답을 포함하는 문자열입니다.

    입력 예

    { "prompt": "What is the most effective way to combat climate change?", "response_A": "The most effective way to combat climate change is through a combination of transitioning to renewable energy sources and implementing strict carbon pricing policies. This creates economic incentives for businesses to reduce emissions while promoting clean energy adoption.", "response_B": "We should focus on renewable energy. Solar and wind power are good. People should drive electric cars. Companies need to pollute less." } { "prompt": "Explain how a computer's CPU works", "response_A": "CPU is like brain of computer. It does math and makes computer work fast. Has lots of tiny parts inside.", "response_B": "A CPU (Central Processing Unit) functions through a fetch-execute cycle, where instructions are retrieved from memory, decoded, and executed through its arithmetic logic unit (ALU). It coordinates with cache memory and registers to process data efficiently using binary operations." } { "prompt": "How does photosynthesis work?", "response_A": "Plants do photosynthesis to make food. They use sunlight and water. It happens in leaves.", "response_B": "Photosynthesis is a complex biochemical process where plants convert light energy into chemical energy. They utilize chlorophyll to absorb sunlight, combining CO2 and water to produce glucose and oxygen through a series of chemical reactions in chloroplasts." }

    사용자 지정 데이터세트를 사용하려면 다음 필수 필드를 포함하도록 평가 레시피를 수정합니다. 콘텐츠는 변경하지 마세요.

    evaluation: task: llm_judge strategy: judge metric: all

    제한 사항

    • 평가당 하나의 .jsonl 파일만 허용됩니다.

    • 파일은 정의된 스키마를 엄격하게 따라야 합니다.

    • Nova Judge 모델은 micro/lite/pro 사양에서 동일합니다.

    • (현재 사용자 지정 구분 기호는 지원되지 않습니다.)

    멀티모달(이미지) 벤치마크 레시피의 판사로서의 Nova LLM

    Nova MM_LLM Judge의 약자인 멀티모달(이미지)용 Nova LLM Judge는 사용자 지정 데이터 세트를 사용하여 한 모델의 응답 품질을 기준 모델의 응답과 비교할 수 있는 모델 평가 기능입니다. 프롬프트, 기준 응답 및 챌린저 응답, Base64-encoded 문자열 형식의 이미지가 포함된 데이터 세트를 수락한 다음 Nova Judge 모델을 사용하여 쌍 비교를 통해 ™-Terry 확률을 기반으로 승률 지표를 제공합니다. 레시피 형식: xxx_mm_llm_judge_eval.yaml.

    Nova LLM 데이터세트 요구 사항

    파일 형식:

    • 평가 예시가 포함된 단일 mm_llm_judge.jsonl 파일입니다. 파일 이름은 정확히 이어야 합니다llm_judge.jsonl.

    • 는 SageMaker 훈련 작업이 액세스할 수 있는 S3 위치에 데이터 세트를 업로드해야 합니다.

    • 파일은 mm_llm_judge 데이터세트에 필요한 스키마 형식을 따라야 합니다.

    • 입력 데이터 세트는 이미지의 속성을 제외하고 모든 레코드의 컨텍스트 길이가 12k 미만인지 확인해야 합니다.

    스키마 형식 - .jsonl 파일의 각 줄은 다음 필드가 있는 JSON 객체여야 합니다.

    • 필수 필드:

      prompt: 생성된 응답에 대한 프롬프트가 포함된 문자열입니다.

      images: 데이터 속성이 있는 객체 목록을 포함하는 배열입니다(값은 Base64-encoded 이미지 문자열).

      response_A: 기준 응답을 포함하는 문자열입니다.

      response_B: 기준 응답과 비교할 대체 응답을 포함하는 문자열입니다.

    입력 예

    가독성을 위해 다음 예제에는 새 줄과 들여쓰기가 포함되지만 실제 데이터 세트에서는 각 레코드가 한 줄에 있어야 합니다.

    { "prompt": "What is in the image?", "images": [ { "data": "data:image/jpeg;Base64,/9j/2wBDAAQDAwQDAwQEAwQFBAQFBgo..." } ], "response_A": "a dog.", "response_B": "a cat.", } { "prompt": "How many animals are in each of the images?", "images": [ { "data": "data:image/jpeg;Base64,/9j/2wBDAAQDAwQDAwQEAwQFBAQFBgo..." }, { "data": "data:image/jpeg;Base64,/DKEafe3gihn..." } ], "response_A": "The first image contains one cat and the second image contains one dog", "response_B": "The first image has one aminal and the second has one animal" }

    사용자 지정 데이터세트를 사용하려면 다음 필수 필드를 포함하도록 평가 레시피를 수정합니다. 콘텐츠는 변경하지 마세요.

    evaluation: task: mm_llm_judge strategy: judge metric: all

    제한 사항

    • 평가당 하나의 .jsonl 파일만 허용됩니다.

    • 파일은 정의된 스키마를 엄격하게 따라야 합니다.

    • Nova MM Judge 모델은 이미지 참조만 지원합니다.

    • Nova MM Judge 모델은 Amazon Nova Micro, Amazon Nova Lite 및 Amazon Nova Pro 사양에서 동일합니다.

    • (현재 사용자 지정 구분 기호는 지원되지 않습니다.)

    • Amazon S3 이미지 URI는 지원되지 않습니다.

    • 입력 데이터 세트는 이미지 속성을 제외하고 모든 레코드의 컨텍스트 길이가 12k 미만인지 확인해야 합니다.

    평가 훈련 작업 실행

    다음 샘플 Jupyter Notebook을 사용하여 훈련 작업을 시작합니다. 평가 훈련 작업을 실행하려면 아래 노트북을 예제로 참조하세요. 자세한 내용은 SageMaker AI 예측기를 사용하여 훈련 작업 실행을 참조하세요.

    참조 테이블

    노트북을 실행하기 전에 다음 참조 테이블을 참조하여 이미지 URI 및 인스턴스 구성을 선택합니다.

    이미지 URI 선택

    방법 이미지 URI

    평가 이미지 URI

    708977205387.dkr.ecr.us-east-1.amazonaws.com/nova-evaluation-repo:SM-TJ-Eval-V2-latest

    인스턴스 유형 및 개수 선택

    모델 작업 유형 인스턴스 유형 권장 인스턴스 수 허용된 인스턴스 수
    Amazon Nova Micro 평가(SFT/DPO)

    g5.12xlarge

    1 1~16
    Amazon Nova Lite 평가(SFT/DPO)

    g5.12xlarge

    1 1~16
    Amazon Nova Pro 평가(SFT/DPO)

    p5.48xlarge

    1 1~16

    샘플 노트북

    다음 샘플 노트북은 평가 훈련 작업을 실행하는 방법을 보여줍니다.

    # install python SDK # Do not use sagemaker v3, as sagemaker v3 introduced breaking changes !pip install sagemaker==2.254.1 import os import sagemaker,boto3 from sagemaker.inputs import TrainingInput from sagemaker.pytorch import PyTorch sagemaker_session = sagemaker.Session() role = sagemaker.get_execution_role() # Download recipe from https://github.com/aws/sagemaker-hyperpod-recipes/tree/main/recipes_collection/recipes/evaluation/nova to local # Assume the file name be `recipe.yaml` # Populate parameters # input_s3_uri = "s3://<path>/input/" # (Optional) Only used for multi-modal dataset or bring your own dataset s3 location output_s3_uri= "s3://<path>/output/" # Output data s3 location, a zip containing metrics json and tensorboard metrics files will be stored to this location instance_type = "instance_type" # ml.g5.16xlarge as example instance_count = 1 # The number of instances for inference (set instance_count > 1 for multi-node inference to accelerate evaluation) job_name = "your job name" recipe_path = "recipe path" # ./recipe.yaml as example image_uri = "708977205387.dkr.ecr.us-east-1.amazonaws.com/nova-evaluation-repo:SM-TJ-Eval-V2-latest" # Do not change output_kms_key = "<KMS key arn to encrypt trained model in Amazon-owned S3 bucket>" # optional, leave blank for Amazon managed encryption # (Optional) To bring your own dataset and LLM judge for evaluation # evalInput = TrainingInput( # s3_data=input_s3_uri, # distribution='FullyReplicated', # s3_data_type='S3Prefix' #) estimator = PyTorch( output_path=output_s3_uri, base_job_name=job_name, role=role, instance_type=instance_type, instance_count=instance_count, training_recipe=recipe_path, sagemaker_session=sagemaker_session, image_uri=image_uri, output_kms_key=output_kms_key ) estimator.fit() # If input dataset exist, pass in inputs # estimator.fit(inputs={"train": evalInput})

    평가 결과 평가 및 분석

    평가 작업이 성공적으로 완료되면 다음 단계를 사용하여 결과를 평가하고 분석할 수 있습니다.

    결과를 평가하고 분석하려면 다음 단계를 따릅니다.
    1. 출력 위치 구조를 이해합니다. 결과는 지정된 Amazon S3 출력 위치에 압축 파일로 저장됩니다.

      s3://your-bucket/output/benchmark-name/ └── job_name/ └── output/ └── output.tar.gz
    2. 버킷에서 output.tar.gz 파일을 다운로드합니다. 콘텐츠를 추출하여 공개합니다.

      run_name/ ├── eval_results/ | └── results_[timestamp].json │ └── inference_output.jsonl (only present for gen_qa) | └── details/ | └── model/ | └── <execution-date-time>/ | └──details_<task_name>_#_<datetime>.parquet └── tensorboard_results/ └── eval/ └── events.out.tfevents.[timestamp]
      • results_[timestamp].json - 출력 지표 JSON 파일

      • details_<task_name>_#_<datetime>.parquet - 추론 출력 파일(strong_reject 제외)

      • events.out.tfevents.[timestamp] - TensorBoard 출력 파일

      • inference_output.jsonl - 정리된 추론 출력 파일(gen_qa 태스크만 해당)

    3. TensorBoard에서 결과를 봅니다. 평가 지표를 시각화하려면:

      1. S3 버킷에 추출된 폴더 업로드합니다.

      2. SageMaker TensorBoard로 이동합니다.

      3. 'S3 폴더'를 선택합니다.

      4. S3 폴더 경로를 추가합니다.

      5. 동기화가 완료될 때까지 기다립니다.

    4. 추론 출력을 분석합니다. llm_judgestrong_reject를 제외한 모든 평가 태스크의 추론 출력에는 분석을 위한 다음 필드가 있습니다.

      • full_prompt - 평가 작업에 사용되는 모델로 전송되는 전체 사용자 프롬프트입니다.

      • gold - 데이터 세트에 지정된 올바른 답변(들)이 포함된 필드입니다.

      • metrics - 개별 추론에서 평가된 지표가 포함된 필드입니다. 집계가 필요한 값은 개별 추론 출력에 값을 갖지 않습니다.

      • predictions - 지정된 프롬프트에 대한 모델 출력 목록이 포함된 필드입니다.

      • pred_logits - 메시지 콘텐츠에 반환된 각 출력 토큰의 고려된 출력 토큰 및 로그 확률을 포함하는 필드입니다.

      이러한 필드를 보면 지표 차이의 원인을 파악하고 사용자 지정 모델의 동작을 이해할 수 있습니다.

      llm_judge의 경우 추론 출력 파일의 지표 필드에는 각 평가 쌍별로 다음 필드가 포함됩니다.

      • forward_output - 정순으로 평가할 때 판단자의 원시 선호도(response_A, response_B).

      • backward_output - 역순으로 평가할 때 판단자의 원시 선호도(response_B, response_A).

      • Pairwise metrics - 순방향 및 역방향 평가 쌍별로 계산되는 지표로, 여기에는 a_scores, b_scores, ties, inference-scorescore 등이 포함됩니다.

        참고

        winrate와 같은 집계 지표는 개별 판단이 아닌 요약 결과 파일에서만 사용할 수 있습니다.

      gen_qa의 경우 inference_output.jsonl 파일에는 각 JSON 객체에 대해 다음 필드가 포함됩니다.

      • prompt - 모델에 제출된 최종 프롬프트

      • inference - 모델의 원시 추론 출력

      • gold - 입력 데이터 세트의 대상 응답

      • 메타데이터 - 제공된 경우 입력 데이터 세트의 메타데이터 문자열

    평가 모범 사례 및 문제 해결

    모범 사례

    다음 목록은 평가 프로세스의 몇 가지 모범 사례입니다.

    • 출력 경로를 모델 및 벤치마크 유형별로 정리하여 유지합니다.

    • 쉽게 추적할 수 있도록 일관된 이름 지정 규칙을 유지합니다.

    • 추출된 결과를 안전한 위치에 저장합니다.

    • TensorBoard 동기화 상태를 모니터링하여 데이터가 성공적으로 로드되었는지 확인합니다.

    문제 해결

    CloudWatch 로그 그룹 /aws/sagemaker/TrainingJobs를 훈련 작업 오류 로그에 사용할 수 있습니다.

    엔진 코어 장애

    문제:

    표시되는 경우:

    RuntimeError: Engine core initialization failed.

    원인:

    이는 여러 원인이 있을 수 있는 일반적인 오류이지만 일반적으로 로드하려는 모델 체크포인트와 지정된 모델 유형이 일치하지 않을 때 발생합니다. 예를 들어 미세 조정된 Nova 2.0 라이트 모델 체크포인트를 평가하려고 하지만 제공하는 모델 유형은 1.0 모델 유형입니다. 예: amazon.nova-micro-v1:0:128k

    올바른 매핑은 여야 합니다.

    model_type: amazon.nova-2-lite-v1:0:256k model_name_or_path: nova-lite-2/prod # or s3://escrow_bucket/model_location

    예방책:

    평가 작업을 제출하기 model_type 전에이 오른쪽에 매핑model_name_or_path되었는지 다시 확인합니다.

    사용 가능한 하위 태스크

    다음은 MMLU(Massive Multitask Language Understanding), BBH(Big Bench Hard) 및 MATH를 포함한 여러 도메인에서 모델 평가에 사용할 수 있는 하위 작업을 나열합니다. 이러한 하위 태스크를 통해 모델의 특정 기능 및 지식 영역에서 성능을 평가할 수 있습니다.

    MMLU

    MMLU_SUBTASKS = [ "abstract_algebra", "anatomy", "astronomy", "business_ethics", "clinical_knowledge", "college_biology", "college_chemistry", "college_computer_science", "college_mathematics", "college_medicine", "college_physics", "computer_security", "conceptual_physics", "econometrics", "electrical_engineering", "elementary_mathematics", "formal_logic", "global_facts", "high_school_biology", "high_school_chemistry", "high_school_computer_science", "high_school_european_history", "high_school_geography", "high_school_government_and_politics", "high_school_macroeconomics", "high_school_mathematics", "high_school_microeconomics", "high_school_physics", "high_school_psychology", "high_school_statistics", "high_school_us_history", "high_school_world_history", "human_aging", "human_sexuality", "international_law", "jurisprudence", "logical_fallacies", "machine_learning", "management", "marketing", "medical_genetics", "miscellaneous", "moral_disputes", "moral_scenarios", "nutrition", "philosophy", "prehistory", "professional_accounting", "professional_law", "professional_medicine", "professional_psychology", "public_relations", "security_studies", "sociology", "us_foreign_policy", "virology", "world_religions" ]

    BBH

    BBH_SUBTASKS = [ "boolean_expressions", "causal_judgement", "date_understanding", "disambiguation_qa", "dyck_languages", "formal_fallacies", "geometric_shapes", "hyperbaton", "logical_deduction_five_objects", "logical_deduction_seven_objects", "logical_deduction_three_objects", "movie_recommendation", "multistep_arithmetic_two", "navigate", "object_counting", "penguins_in_a_table", "reasoning_about_colored_objects", "ruin_names", "salient_translation_error_detection", "snarks", "sports_understanding", "temporal_sequences", "tracking_shuffled_objects_five_objects", "tracking_shuffled_objects_seven_objects", "tracking_shuffled_objects_three_objects", "web_of_lies", "word_sorting" ]

    수학 연산

    MATH_SUBTASKS = [ "algebra", "counting_and_probability", "geometry", "intermediate_algebra", "number_theory", "prealgebra", "precalculus",

    다양한 평가 방법 및 지표를 사용하여 사용자 지정 Nova 모델을 평가합니다.