훈련된 모델 평가 - Amazon SageMaker AI

훈련된 모델 평가

평가 레시피는 Amazon Nova 모델 평가 작업이 어떻게 실행될지를 지정하는 YAML 구성 파일입니다. 이 레시피를 사용하면 공통 벤치마크 또는 사용자 지정 데이터세트를 기준으로 기본 모델 또는 학습된 모델의 성능을 평가할 수 있습니다. 평가 지표는 Amazon S3 또는 TensorBoard에 저장할 수 있습니다. 이 평가는 다양한 태스크에서 모델 성능을 정량적으로 측정하여 추가 사용자 지정 필요 여부를 판단하는 데 도움을 줍니다.

모델 평가는 고정된 벤치마크와 사전 정의된 정답을 기준으로 모델을 테스트하는 오프라인 프로세스입니다. 실시간 평가나 실제 사용자 상호작용을 통한 평가는 포함되지 않습니다. 실시간 평가가 필요한 경우, 모델을 Amazon Bedrock에 배포한 후 Amazon Bedrock 런타임 API를 호출하여 평가할 수 있습니다.

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

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

다음은 지원되는 업계 표준 벤치마크 목록입니다. eval_task 파라미터에 다음 벤치마크를 지정할 수 있습니다.

벤치마크

양식

설명

Metrics

Strategy

하위 태스크 사용 가능

mmlu

텍스트

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

정확도

zs_cot

mmlu_pro

텍스트

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

정확도

zs_cot

아니요

bbh

텍스트

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

정확도

zs_cot

gpqa

텍스트

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

정확도

zs_cot

아니요

math

텍스트

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

exact_match

zs_cot

strong_reject

텍스트

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

deflection

zs

IFEval

텍스트

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

정확도

zs

아니요

gen_qa

텍스트

사용자 지정 데이터세트 평가 - 사용자가 자체 데이터세트를 가져와서 벤치마킹을 수행하고, ROUGE 및 BLEU와 같은 지표를 사용하여 모델 출력을 참조 답변과 비교합니다.

모두

gen_qa

아니요

mmmu

멀티모달

대규모 다분야 멀티모달 이해(MMMU) - 30개 학문 분야의 객관식 및 서술형 문제로 구성된 대학 수준 벤치마크입니다.

정확도

zs_cot

llm_judge

텍스트

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

모두

judge

아니요

humaneval

텍스트

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

pass@1

zs

아니요

다음 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 하위 태스크를 사용할 수 있습니다.

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

레시피 파라미터 이해

실행 구성

다음은 일반적인 실행 구성과 관련 파라미터에 대한 설명입니다.

run: name: eval_job_name model_type: amazon.nova-micro-v1:0:128k model_name_or_path: nova-micro/prod replicas: 1 data_s3_path: "" output_s3_path: s3://output_path
  • name: (필수) 평가 작업에 대한 설명이 포함된 이름입니다. AWS 콘솔에서 작업을 식별하는 데 도움이 됩니다.

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

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

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

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

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

    • nova-micro/prod

    • nova-lite/prod

    • nova-pro/prod

    • (훈련 후 체크포인트의 S3 경로) s3://<escrow bucket>/<job id>/outputs/checkpoints

  • replicas: (필수) 분산 훈련에 사용할 컴퓨팅 인스턴스의 수입니다. 다중 노드는 지원되지 않으므로 이 값은 1로 설정해야 합니다.

  • data_s3_path: (필수) 입력 데이터세트의 S3 경로입니다. 사용자 제공 데이터세트 또는 평가형 LLM 레시피를 사용하는 경우가 아니면 이 파라미터를 비워 둡니다.

  • output_s3_path: (필수) 출력 평가 아티팩트를 저장할 S3 경로입니다. 출력 S3 버킷은 작업을 생성하는 계정과 동일한 계정에서 생성해야 합니다.

평가 구성

다음은 모델 평가 구성과 관련 파라미터에 대한 설명입니다.

evaluation: task: mmlu strategy: zs_cot subtask: mathematics metric: accuracy
  • task: (필수) 사용할 평가 벤치마크 또는 태스크를 지정합니다.

    지원되는 태스크 목록:

    • mmlu

    • mmlu_pro

    • bbh

    • gpqa

    • math

    • strong_reject

    • gen_qa

    • ifeval

    • mmmu

    • llm_judge

    • humaneval

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

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

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

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

    • judge: 평가형 Amazon Nova LLM에 특화된 전략입니다.

  • subtask: (선택 사항, 제거 가능) 특정 평가 태스크에 대한 특정 하위 태스크를 지정합니다. 태스크에 하위 태스크가 없는 경우 레시피에서 이를 제거합니다.

  • metric: (필수) 사용할 평가 지표입니다.

    • accuracy: 정답 비율입니다.

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

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

    • pass@1: (humaneval 벤치마크의 경우) 모델의 최고 신뢰도 예측이 정답과 일치하는 사례의 비율을 측정하는 데 사용되는 지표입니다.

    • 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_judge 및 사용자 제공 데이터세트 벤치마크의 경우 다음 지표를 반환합니다.

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

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

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

        • b_scores_stderr: 쌍별 판단에서 response_B scores의 표준 오차입니다.

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

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

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

        • inference_error_stderr: 판단 간 추론 오류의 표준 오차입니다.

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

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

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

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

추론 구성

다음은 추론 구성과 관련 파라미터에 대한 설명입니다. 모든 파라미터는 선택 사항입니다.

inference: max_new_tokens: 200 top_k: -1 top_p: 1.0 temperature: 0
  • max_new_tokens: 생성할 최대 토큰 수입니다. 이는 정수여야 합니다.

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

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

  • temperature: 토큰 선택의 무작위성입니다. 값이 클수록 무작위성이 커집니다. 결과를 결정론적으로 만들려면 0을 사용합니다. 이 값은 최소값이 0인 부동 소수점 수여야 합니다.

humaneval의 경우 다음 추론 구성을 사용하는 것이 좋습니다.

inference: top_k: 1 max_new_tokens: 1600 temperature: 0.0

평가 레시피 예시

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

일반 텍스트 벤치마크 레시피

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

일반 멀티모달 벤치마크 레시피

이러한 레시피를 사용하면 광범위한 멀티모달 벤치마크 모음 전반에서 Amazon Nova 모델의 기본 기능을 평가할 수 있습니다. 이는 xxx_general_multi_modal_benchmark_eval.yaml 형식으로 제공됩니다.

사용자 제공 데이터세트 벤치마크 레시피

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

다음은 사용자 제공 데이터세트 요구 사항입니다.

  • 파일 형식 요구 사항

    • 평가 예시가 포함된 단일 gen_qa.jsonl 파일을 포함해야 합니다.

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

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

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

    • query: (필수) 답변이 필요한 질문 또는 지침이 포함된 문자열

    • response: (필수) 예상 모델 출력을 포함하는 문자열

    • system: (선택 사항) 쿼리를 처리하기 전에 AI 모델의 동작, 역할 또는 특성을 설정하는 시스템 프롬프트가 포함된 문자열

다음은 사용자 제공 데이터세트 예시 항목입니다.

{ "system":"You are a 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 that 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 that follows 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" }

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

evaluation: task: gen_qa strategy: gen_qa metric: all

다음과 같은 제한이 적용됩니다.

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

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

  • 컨텍스트 길이 제한: 데이터세트의 각 샘플에서, 컨텍스트 길이(시스템 + 쿼리 프롬프트 포함)는 3.5k 미만이어야 합니다.

평가형 Amazon Nova LLM 벤치마크 레시피

평가형 Amazon Nova LLM은 고객이 사용자 지정 데이터세트에서 한 모델의 응답 품질을 기준 모델 응답과 비교하는 모델 평가 기능입니다. 프롬프트, 기준 응답 및 도전자 응답이 있는 데이터세트를 가져오고 Nova Judge 모델을 사용하여 쌍별 비교를 통해 Bradley-Terry 확률로 승률 지표를 제공합니다.

이 레시피는 xxx_llm_judge_eval.yaml 형식으로 제공됩니다.

다음은 평가형 LLM 요구 사항입니다.

  • 파일 형식 요구 사항

    • 평가 예시가 포함된 단일 llm_judge.jsonl 파일을 포함합니다. 파일 이름은 llm_judge.jsonl이어야 합니다.

    • SageMaker AI HyperPod RIG가 액세스할 수 있는 S3 위치에 데이터세트를 업로드해야 합니다.

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

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

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

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

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

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

다음은 평가형 LLM 예시 항목입니다.

{ "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 파일만 허용됩니다.

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

  • Amazon Nova Judge 모델은 모든 모델 패밀리 사양(즉, Lite, Micro, Pro)에서 동일합니다.

  • 사용자 지정 판단 모델은 현재 지원되지 않습니다.

  • 컨텍스트 길이 제한: 데이터세트의 각 샘플에서, 컨텍스트 길이(시스템 + 쿼리 프롬프트 포함)는 7k 미만이어야 합니다.

평가 작업 시작

다음은 제안된 평가 인스턴스 유형 및 모델 유형 구성을 제공합니다.

# Install Dependencies (Helm - https://helm.sh/docs/intro/install/) curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 chmod 700 get_helm.sh ./get_helm.sh rm -f ./get_helm.sh # Install the HyperPod CLI git clone --recurse-submodules https://github.com/aws/sagemaker-hyperpod-cli.git git checkout -b release_v2 cd sagemaker-hyperpod-cli pip install . # Verify the installation hyperpod --help # Connect to a HyperPod Cluster hyperpod connect-cluster --cluster-name cluster-name # Submit the Job using the recipe for eval # Namespace by default should be kubeflow hyperpod start-job [--namespace namespace] --recipe evaluation/nova/nova_micro_p5_48xl_general_text_benchmark_eval --override-parameters \ '{ "instance_type":"p5d.48xlarge", "container": "708977205387.dkr.ecr.us-east-1.amazonaws.com/nova-evaluation-repo:SM-HP-Eval-latest", "recipes.run.name": custom-run-name, "recipes.run.model_type": model_type, "recipes.run.model_name_or_path" " model name or finetune checkpoint s3uri, "recipes.run.data_s3_path": s3 for input data only for genqa and llm_judge, must be full S3 path that include filename, }' # List jobs hyperpod list-jobs [--namespace namespace] [--all-namespaces] # Getting Job details hyperpod get-job --job-name job-name [--namespace namespace] [--verbose] # Listing Pods hyperpod list-pods --job-name job-name --namespace namespace # Cancel Job hyperpod cancel-job --job-name job-name [--namespace namespace]

또한 Amazon EKS 클러스터 콘솔을 통해 작업 상태를 볼 수 있어야 합니다.

평가 결과 액세스 및 분석

평가 작업이 성공적으로 완료되면 이 섹션의 정보를 사용하여 결과를 액세스하고 분석할 수 있습니다. 레시피에 정의된 output_s3_path(예: s3://output_path/)를 기반으로 출력 구조는 다음과 같습니다.

job_name/ ├── eval-result/ │ └── 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]

지표 결과는 지정된 다음 S3 출력 위치에 저장됩니다. s3://output_path/job_name/eval-result/result-timestamp.json.

Tensorboard 결과는 S3 경로에 저장됩니다. s3://output_path/job_name/eval-tensorboard-result/eval/event.out.tfevents.epoch+ip.

llm_judgestrong_reject를 제외한 모든 추론 출력은 다음 S3 경로에 저장됩니다. s3://output_path/job_name/eval-result/details/model/taskname.parquet.

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

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

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

Tensorboard에서 평가 지표를 시각화하려면 다음 단계를 완료하세요.

  1. SageMaker AI Tensorboard로 이동합니다.

  2. S3 폴더를 선택합니다.

  3. S3 폴더 경로를 추가합니다. 예: s3://output_path/job-name/eval-tensorboard-result/eval

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

시계열, 스칼라 및 텍스트 시각화를 사용할 수 있습니다.

다음 모범 사례를 따르는 것이 좋습니다.

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

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

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

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

HyperPod 작업 오류 로그는 CloudWatch 로그 그룹 /aws/sagemaker/Clusters/cluster-id에서 찾을 수 있습니다.