View a markdown version of this page

모델 평가 - Amazon SageMaker AI

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

모델 평가

평가는 프롬프트 세트에 대해 에이전트를 실행하고 보상, pass@k 및 궤적 지표를 보고합니다. 이를 사용하여 미세 조정된 모델을 기본 모델과 비교하거나 배포 전에 후보를 벤치마킹합니다.

참고: 평가 작업은를 사용합니다JobCategory: AgentRFTEvaluation(학습에 사용된 AgentRFT 것과 다름). CreateJob 및에서이 범주를 사용하여 평가 작업을 DescribeJob 호출합니다.

평가 데이터 준비

평가 데이터 세트는 훈련 데이터 세트와 동일한 형식과 스키마를 사용합니다. 프롬프트 데이터 세트 형식을(를) 참조하세요. 아래 지침은 평가별로 다릅니다.

  1. 훈련 데이터 세트에서 평가 데이터를 보관합니다. 점수가 성능을 과장하므로 훈련 프롬프트를 평가하지 마세요. 홀드아웃 세트에 대한 데이터 부분을 예약하거나 별도의 평가 데이터 세트를 유지 관리합니다. 결과가 비슷하도록 반복 간에 동일한 평가 세트를 유지합니다.

  2. 훈련 프롬프트 형식과 일치시킵니다. 에이전트는 훈련 프롬프트를 구문 분석한 것과 동일한 방식으로 평가 프롬프트를 구문 분석해야 합니다. 훈련 중에 인코딩 또는 암호화를 사용한 경우 여기에서 동일한 구조를 사용합니다. 동일한 코드 경로에서 둘 다 생성하면 드리프트가 방지됩니다.

  3. 관심 있는 행동을 다룹니다. 에이전트가 사용하는 각 도구와 도구 조합을 연습합니다. 회귀가 표시되도록 이전에 장애를 일으킨 프롬프트를 포함합니다.

  4. 서비스가 검사 없이 프롬프트를 전달하는 것과 동일한 방식으로 민감한 콘텐츠를 보호합니다.

평가 작업 시작

훈련이 완료되면 다음 방법 중 하나를 사용하여 모델을 평가합니다.

SageMaker AI Studio

  • 사용자 지정 모델의 세부 정보 페이지로 이동합니다(모델 > 내 모델 > MTRL 모델 선택).

  • 평가를 선택하여 평가 구성 페이지를 엽니다.

  • 평가 유형으로 Multi-Turn RL을 선택합니다.

  • 에이전트 환경 구성 - Bedrock AgentCore 런타임을 선택하거나 Lambda 전달자 ARN을 제공합니다.

  • 평가 데이터 세트(S3 URI 또는 보류된 평가 프롬프트가 포함된 등록된 데이터 세트)를 제공합니다.

  • 제출을 선택하여 평가 작업을 시작합니다.

SageMaker AI Python SDK

는 평가 작업을 시작하기 위한 상위 수준 인터페이스를 MultiTurnRLEvaluator 제공합니다. 완료된 트레이너를 전달하면 평가자는 모델 패키지 ARN, 에이전트 구성 및 에이전트 한정자를 자동으로 확인합니다.

미세 조정된 모델 평가

from sagemaker.train.evaluate import MultiTurnRLEvaluator from sagemaker.train.multi_turn_rl_trainer import MultiTurnRLTrainer # Attach to a completed training job trainer = MultiTurnRLTrainer.attach(job_name="my-mtrl-job-20260512082005") # Minimal evaluator — everything else inferred from trainer evaluator = MultiTurnRLEvaluator( model=trainer, dataset="s3://my-bucket/eval-prompts.parquet", s3_output_path="s3://my-bucket/eval-output/", ) execution = evaluator.evaluate() print(f"Evaluation started: {execution.arn}") # Wait for completion execution.wait() print(f"Status: {execution.status.overall_status}") print(f"S3 Output: {execution.s3_output_path}") print(f"MLflow: {execution.mlflow_url}")

기본 모델 평가(훈련 없음)

기본 모델을 직접 평가할 때는 다음에서 상속할 트레이너가 없으므로가 agent_config 필요합니다.

from sagemaker.train.evaluate import MultiTurnRLEvaluator # With Bedrock AgentCore evaluator_base = MultiTurnRLEvaluator( model="openai-reasoning-gpt-oss-20b", dataset="s3://my-bucket/eval-prompts.parquet", agent_config="arn:aws:bedrock-agentcore:us-west-2:123456789012:runtime/my-agent", s3_output_path="s3://my-bucket/eval-output/base/", mlflow_resource_arn="arn:aws:sagemaker:us-west-2:123456789012:mlflow-tracking-server/my-mlflow", role="arn:aws:iam::123456789012:role/SageMakerRole", accept_eula=True, ) execution = evaluator_base.evaluate() execution.wait()

Side-by-side 비교(기본 비교와 미세 조정 비교)

하나의 파이프라인에서 기본 모델과 미세 조정된 모델을 모두 평가하는 단일 evaluate() 호출:

comparison_evaluator = MultiTurnRLEvaluator( model=trainer, dataset="s3://my-bucket/eval-prompts.parquet", s3_output_path="s3://my-bucket/eval-output/comparison/", evaluate_base_model=True, ) execution = comparison_evaluator.evaluate() execution.wait() print(f"Status: {execution.status.overall_status}")

결과 모니터링 및 검색

# Refresh status execution.refresh() print(f"Status: {execution.status.overall_status}") # Step-level detail for step in execution.status.step_details: print(f" {step.name}: {step.status}") if step.job_arn: print(f" Job ARN: {step.job_arn}") # MLflow URL print(f"MLflow: {execution.mlflow_url}")

AWS CLI 및 boto3

CreateJob API를 사용하여 직접 평가 작업을 생성할 수도 있습니다.

평가 작업 생성(Bedrock AgentCore)

평가 작업을 생성하려면가 로 JobCategory 설정된 CreateJob API를 호출합니다AgentRFTEvaluation. 에이전트 설정 및 구성은 훈련 작업과 동일한 프로세스를 따릅니다.

AWS CLI 사용

aws sagemaker create-job \ --job-category AgentRFTEvaluation \ --job-name "my-agent-rft-eval-job" \ --role-arn "arn:aws:iam::123456789012:role/SageMakerFineTuningJobRole" \ --job-config-schema-version "1.0.0" \ --job-config-document '{ "AgentConfig": { "BedrockAgentCoreConfig": { "AgentRuntimeArn": "arn:aws:bedrock-agentcore:us-west-2:123456789012:runtime/my-agent" } }, "InputDataConfig": [{ "ChannelName": "evaluation", "DataSource": { "S3DataSource": { "S3DataType": "S3Prefix", "S3Uri": "s3://your-bucket-name/eval-prompts/" } } }], "OutputDataConfig": { "S3OutputPath": "s3://your-bucket-name/eval-output/", "MlflowConfig": { "MlflowResourceArn": "arn:aws:sagemaker:us-west-2:123456789012:mlflow-app/my-rft-mlflow-app" } }, "EvaluationConfig": { "BaseModelArn": "arn:aws:sagemaker:us-west-2:aws:hub-content/SageMakerPublicHub/Model/openai-reasoning-gpt-oss-20b", "AcceptEula": true, "HyperParameters": {"batch": { "eval_group_size": 1 }, "eval_metrics_config": { "pass_k_values": [1, 2, 4, 8, 16, 32], "success_threshold": 1 }} } }' \ --region us-west-2

SageMaker AI Python SDK(boto3) 사용

import json import boto3 sm = boto3.client("sagemaker") response = sm.create_job( JobName="my-agent-rft-eval-job", RoleArn="arn:aws:iam::123456789012:role/SageMakerFineTuningJobRole", JobCategory="AgentRFTEvaluation", JobConfigSchemaVersion="1.0.0", JobConfigDocument=json.dumps({ "AgentConfig": { "BedrockAgentCoreConfig": { "AgentRuntimeArn": "arn:aws:bedrock-agentcore:us-west-2:123456789012:runtime/my-agent" } }, "InputDataConfig": [{ "ChannelName": "evaluation", "DataSource": { "S3DataSource": { "S3DataType": "S3Prefix", "S3Uri": "s3://your-bucket-name/eval-prompts/" } } }], "OutputDataConfig": { "S3OutputPath": "s3://your-bucket-name/eval-output/", "MlflowConfig": { "MlflowResourceArn": "arn:aws:sagemaker:us-west-2:123456789012:mlflow-app/my-rft-mlflow-app" } }, "EvaluationConfig": { "BaseModelArn": "arn:aws:sagemaker:us-west-2:aws:hub-content/SageMakerPublicHub/Model/openai-reasoning-gpt-oss-20b", "AcceptEula": True, "HyperParameters": {"batch": { "eval_group_size": 1 }, "eval_metrics_config": { "pass_k_values": [1, 2, 4, 8, 16, 32], "success_threshold": 1 }} } }) ) print(f"Eval Job ARN: {response['JobArn']}")

미세 조정된 모델 평가

훈련 작업에서 생성된 모델을 평가하려면 InputModelPackageArnModelPackageConfig에를 포함합니다.

import json import boto3 sm = boto3.client("sagemaker") response = sm.create_job( JobName="my-agent-rft-eval-finetuned", RoleArn="arn:aws:iam::123456789012:role/SageMakerFineTuningJobRole", JobCategory="AgentRFTEvaluation", JobConfigSchemaVersion="1.0.0", JobConfigDocument=json.dumps({ "AgentConfig": {...}, "InputDataConfig": [...], "OutputDataConfig": {...}, "ModelPackageConfig": { "InputModelPackageArn": "arn:aws:sagemaker:us-west-2:123456789012:model-package/my-final-models/1" }, "EvaluationConfig": {...} }) ) print(f"Eval Job ARN: {response['JobArn']}")

평가 작업 생성(Lambda 전달자를 사용하는 사용자 지정 에이전트)

Bedrock AgentCore 평가와 동일한 접근 방식을 사용하지만 CustomAgentLambdaConfig에서를 지정합니다AgentConfig.

"AgentConfig": { "CustomAgentLambdaConfig": { "LambdaArn": "arn:aws:lambda:us-west-2:account-id:function:rft-agent-forwarder" } }

평가 하이퍼파라미터

카테고리 파라미터 유형 기본값 설명
일괄 eval_group_크기 정수 1 프롬프트당 롤아웃 수입니다. 참고: pass@k를 계산하려면 eval_group_size >= k를 설정합니다.
eval_metrics_config pass_k_값 배열 [1, 2, 4, 8, 16, 32] pass@k 및 pass^k 지표를 계산하기 위한 k 값 목록입니다. pass@k = 샘플링된 k 롤아웃 중 하나 이상이 성공할 확률입니다. pass^k = 모든 k 롤아웃이 성공할 확률입니다.
eval_metrics_config success_threshold 실수 1 보상 >= success_threshold인 경우 롤아웃은 “성공”입니다. 이는 pass@k, pass^k, 성공/실패 개수 지표에 적용됩니다.
eval_샘플링_파라미터 temperature 실수 0 평가 롤아웃의 샘플링 온도입니다. 참고: 결정적 동작을 방지하려면 pass@k 및 pass^k 지표에 대해이 값을 0 이상으로 늘리는 것이 좋습니다.
eval_샘플링_파라미터 샘플링_탑_p 실수 1 평가 롤아웃을 위한 Nucleus 샘플링 컷오프입니다.
eval_샘플링_파라미터 샘플링_최대_토큰 정수 4096 평가 롤아웃 중에 모델이 턴당 생성할 수 있는 최대 토큰입니다.
롤아웃 제한 시간 실수 600 평가 롤아웃이 실패로 처리되고 재시도될 수 있는 시간(초)입니다.
롤아웃 최대_동시성 int 96 병렬로 실행할 수 있는 최대 평가 롤아웃 수입니다.
롤아웃 max_retries int 3 영구 실패로 표시하기 전에 실패한 평가 롤아웃에 대한 재시도 횟수입니다.

모니터링 평가

aws sagemaker describe-job \ --job-name "my-agent-rft-eval-job" \ --job-category AgentRFTEvaluation \ --region us-west-2

평가 결과 해석

MLflow 앱을 열어 평가 실행에 대해 로깅된 지표, 보상 분포 및 궤적 시각화를 봅니다. 각 지표의 의미에 대한 설명은 아래를 참조하세요.

보상 지표(eval/reward/)

지표 설명
eval/reward/mean 모든 롤아웃의 평균 보상 점수입니다.
eval/reward/min 모든 롤아웃에 대한 최소 보상 점수입니다.
eval/reward/max 모든 롤아웃의 최대 보상 점수입니다.
eval/reward/std 모든 롤아웃에서 보상 점수의 표준 편차입니다.
eval/reward/zero_frac 정확히 0점을 받은 롤아웃 비율(완전 실패).
eval/reward/pass_at_1 프롬프트당 샘플 1개 중 1개 이상이 성공할 확률입니다. 이는 주요 성공 지표입니다.
eval/reward/pass_power_1 전력 가중치를 통한 통과율.
eval/reward/succeeded_rollouts 긍정적인 보상을 달성한 총 롤아웃 수입니다.
eval/reward/failed_rollouts 0점을 받은 총 롤아웃 수입니다.
eval/reward/num_prompts 평가된 고유 프롬프트 수입니다.
eval/reward/rollouts_per_prompt 프롬프트당 생성된 시도 횟수(샘플)입니다.
eval/reward/success_threshold 롤아웃을 "성공"으로 계산하는 데 필요한 보상 값입니다.
eval/reward/mean_within_groups 프롬프트 그룹당 평균 보상(rollouts_per_prompt > 1 설정 필요).
eval/reward/std_within_groups 각 프롬프트 그룹 내 보상의 표준 편차입니다.
eval/reward/min_within_groups 각 프롬프트 그룹 내의 최소 보상입니다.
eval/reward/max_within_groups 각 프롬프트 그룹 내의 최대 보상입니다.

토큰 지표(eval/tokens/)

지표 설명
eval/tokens/prompt_mean 토큰의 평균 프롬프트 길이(시스템 프롬프트, 도구 설명 및 멀티턴 컨텍스트 포함).
eval/tokens/response_mean 턴당 토큰의 평균 모델 응답 길이입니다.
eval/tokens/response_min 토큰에서 가장 짧은 모델 응답입니다.
eval/tokens/response_max 토큰에서 가장 긴 모델 응답입니다.
eval/tokens/response_std 응답 길이의 표준 편차입니다. 분산이 높으면 에이전트 동작이 일관되지 않을 수 있습니다.

턴 지표(eval/turns/)

지표 설명
eval/turns/mean 롤아웃당 평균 회전 수입니다. 값이 높으면 에이전트가 반복되거나 과도하게 재시도하고 있음을 나타낼 수 있습니다.
eval/turns/min 페스트는 모든 롤아웃을 전환합니다.
eval/turns/max 대부분의는 모든 롤아웃을 전환합니다. 매우 높은 값은 에이전트가 작업을 해결하지 않고 멈췄음을 나타냅니다.

로그 확률 지표(eval/logprob/)

지표 설명
eval/logprob/nz_mean 0이 아닌(패딩되지 않은) 토큰의 평균 로그 확률입니다. 값이 0에 가까우면 모델 신뢰도가 높음을 나타냅니다.
eval/logprob/nz_min 가장 낮은 로그 확률 토큰(가장 신뢰도가 낮은 예측).
eval/logprob/nz_max 가장 높은 로그 확률 토큰(가장 신뢰할 수 있는 예측).
eval/logprob/nz_std 0이 아닌 로그 확률의 표준 편차입니다. 값이 낮으면 일관되게 높은 신뢰도를 의미합니다.
eval/logprob/zero_frac 로그 확률이 정확히 0인 토큰 비율(확률 1.0), 일반적으로 패딩 또는 강제 토큰.
eval/logprob/zero_count 제로 로그프로브 토큰의 총 수입니다.
eval/logprob/zero_per_group 프롬프트 그룹당 평균 제로 로그프로브 토큰입니다.

타이밍 지표(timing_s/)

지표 설명
timing_s/eval 평가의 총 벽시계 시간을 초 단위로 표시합니다. 프롬프트당 평균 시간을 eval/reward/num_prompts 로 나눕니다.

일반적인 패턴을 진단하는 방법

패턴 가능한 원인
pass_at_1 = 0, 높음 turns/mean 에이전트가 작업을 해결하지 않고 반복되고 있습니다. 궤적에서 도구 사용 및 작업 패턴을 확인합니다.
pass_at_1 = 0, 낮음 tokens/response_mean 에이전트가 매우 짧은(비어 있거나 잘못된 형식일 수 있음) 응답을 생성합니다. 프롬프트 형식 및 모델 호환성을 확인합니다.
높음 turns/max 및 낮음 turns/min 에이전트가 프롬프트 간에 일관되지 않은 동작을 보이고 있습니다. 일부 작업은 훨씬 더 어렵거나 에이전트가 특정 도구 상호 작용에서 실패할 수 있습니다.
높은 신뢰도(logprob/nz_mean0에 가까움)이지만 낮은 보상 모델이 잘못된 출력을 자신 있게 생성하고 있습니다. 더 많은 훈련 데이터 다양성 또는 보상 신호 구체화가 필요할 수 있습니다.
zero_frac = 1.0 보상 전체 실패. 에이전트 배포, 도구 연결 및 평가 데이터 세트 형식이 올바른지 확인합니다.

원시 결과의 경우에 S3OutputPath 지정된에 기록된 아티팩트를 검토합니다OutputDataConfig.

평가 한도 및 할당량

AWS 서비스 할당량을 사용하여 최대 동시 평가 작업 수에 대한 한도 증가를 요청합니다.

할당량 기본값
rft-evaluation-job 최대 동시 작업 1