기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
훈련 작업 제출
훈련 작업 시작
에이전트를 배포하고 데이터 세트가 S3에 있으면 다음 방법 중 하나를 사용하여 훈련 작업을 생성합니다.
SageMaker AI Studio
-
탐색 창에서 모델로 이동하여 JumpStart 기본 모델을 선택합니다.
-
멀티턴 RL을 지원하는 모델(지원되는 모델 표 참조)을 선택하고 모델 사용자 지정을 선택한 다음 UI로 사용자 지정을 선택합니다.
-
다중 회전 강화 학습을 사용자 지정 기법으로 선택합니다.
-
에이전트 환경 구성 - Bedrock AgentCore 런타임을 선택하거나 Lambda 전달자 ARN을 제공합니다.
-
훈련 데이터 세트를 S3 URI 또는 등록된 데이터 세트로 제공합니다.
-
필요에 따라 하이퍼파라미터를 조정합니다.
-
구성을 검토하고 제출을 선택합니다.
SageMaker AI Python SDK
지원되는 모델 검색
from sagemaker.train.multi_turn_rl_trainer import MultiTurnRLTrainer supported_models = MultiTurnRLTrainer.list_supported_models() print(f"Supported MTRL models ({len(supported_models)}):") for m in supported_models: print(f" - {m}")
에이전트 환경 설정
옵션 1: Bedrock AgentCore 런타임
# List available runtimes runtimes = MultiTurnRLTrainer.list_bedrock_agentcore_runtimes() for rt in runtimes: print(f" - {rt['name']} ({rt['status']}) → {rt['arn']}")
옵션 2: 사용자 지정 Lambda 에이전트
from sagemaker.train.agent_lambda import AgentLambda # Create from inline code adapter = AgentLambda.create( source=''' import json def handler(event, context): prompt = event.get("prompt", "") return {"statusCode": 200, "body": json.dumps({"status": "ok", "agentResponse": prompt})} ''', role="arn:aws:iam::123456789012:role/AgentLambdaRole", ) # Create from a local file adapter = AgentLambda.create( source="~/my_agent_handler.py", role="arn:aws:iam::123456789012:role/AgentLambdaRole", ) # Create from S3 adapter = AgentLambda.create( source="s3://my-bucket/agent_handler.py", role="arn:aws:iam::123456789012:role/AgentLambdaRole", ) # Wrap an existing Lambda adapter = AgentLambda.get("arn:aws:lambda:us-west-2:123456789012:function:my-agent")
데이터 세트 등록(선택 사항)
from sagemaker.ai_registry.dataset import DataSet dataset = DataSet.create( name="my-mtrl-dataset", source="s3://my-bucket/prompts/training_prompts.parquet" ) print(f"Dataset ARN: {dataset.arn}")
Nova에 대한 제한된 모델 패키지 그룹 생성(선택 사항)
Nova 모델(nova-textgeneration-lite-v2)을 선택하는 경우 선택적으로 훈련 작업을 제출하기 전에 제한된 모델 패키지 그룹을 생성합니다(다음 단계). 이 단계를 건너뛰면 SDK가 자동으로 생성합니다.
제한된 모델 패키지 그룹(RMPG)은 ManagedStorageType: Restricted를 사용하는 모델 패키지 그룹입니다. 모델 가중치가에서 관리되고 고객이 직접 액세스할 수 없는 Nova AWS 와 같은 폐쇄 소스 모델에 필요합니다.
RFT 작업 스키마에는 두 개의 개별 제한 MPGs 필요합니다.
-
출력 MPG - 최종 미세 조정된 모델 패키지를 저장합니다.
-
중간 체크포인트 MPG - 중간 훈련 체크포인트용으로 예약됨(출력 MPG와 달라야 함)
from sagemaker.core.resources import Job, ModelPackageGroup from sagemaker.core.shapes import ManagedConfiguration model_name = "nova-textgeneration-lite-v2" # Restricted configuration managed_config = ManagedConfiguration(managed_storage_type="Restricted") # Output Model package group output_mpg_name = f"{model_name}-mtrl-output-mpg" create_kwargs = { "model_package_group_name": output_mpg_name, "region": "us-east-1", "managed_configuration": managed_config } output_mpg = ModelPackageGroup.create(**create_kwargs) # Intermediate Model package group intermediate_mpg_name = f"{model_name}-mtrl-inter-mpg" create_kwargs = { "model_package_group_name": intermediate_mpg_name, "region": "us-east-1", "managed_configuration": managed_config } intermediate_mpg = ModelPackageGroup.create(**create_kwargs)
모델 패키지 그룹이 생성되면 훈련 작업을 제출할 때 다음 단계에서 그룹을 전달합니다.
Bedrock AgentCore로 훈련 작업 제출
from sagemaker.train.multi_turn_rl_trainer import MultiTurnRLTrainer trainer = MultiTurnRLTrainer( model="openai-reasoning-gpt-oss-20b", agent_env="arn:aws:bedrock-agentcore:us-west-2:123456789012:runtime/my-agent-runtime", training_dataset="s3://my-bucket/prompts/prompts.parquet", mlflow_app_arn="arn:aws:sagemaker:us-west-2:123456789012:mlflow-app/mlflow-app-id", s3_output_path="s3://my-bucket/output/", role="arn:aws:iam::123456789012:role/SageMakerRole", accept_eula=True, ) # View and adjust hyperparameters trainer.hyperparameters.get_info() trainer.hyperparameters.max_epochs = 1 trainer.hyperparameters.global_batch_size = 32 trainer.hyperparameters.max_steps = 12 job = trainer.train(wait=True) print(f"Job: {job.job_name}") print(f"Status: {job.job_status}") print(f"Output Model Package: {job.output_model_package_arn}")
사용자 지정 Lambda 에이전트를 사용하여 훈련 작업 제출
trainer = MultiTurnRLTrainer( model="openai-reasoning-gpt-oss-20b", agent_env=adapter, # AgentLambda object or Lambda ARN string training_dataset="s3://my-bucket/prompts/prompts.parquet", mlflow_app_arn="arn:aws:sagemaker:us-west-2:123456789012:mlflow-app/mlflow-app-id", s3_output_path="s3://my-bucket/output/", role="arn:aws:iam::123456789012:role/SageMakerRole", accept_eula=True, ) trainer.hyperparameters.max_epochs = 1 trainer.hyperparameters.global_batch_size = 32 trainer.hyperparameters.max_steps = 12 job = trainer.train(wait=True) print(f"Job: {job.job_name}") print(f"Status: {job.job_status}") print(f"Output Model Package: {job.output_model_package_arn}")
Nova에 대한 제한된 모델 패키지 그룹을 사용하여 훈련 작업 제출
제한 모델 패키지 그룹을 생성하는 방법은 위의 단계(Nova용 제한 모델 패키지 그룹 생성)를 참조하세요.
from sagemaker.train.multi_turn_rl_trainer import MultiTurnRLTrainer trainer = MultiTurnRLTrainer( model="nova-textgeneration-lite-v2", agent_env="arn:aws:bedrock-agentcore:us-west-2:123456789012:runtime/my-agent-runtime", training_dataset="s3://my-bucket/prompts/prompts.parquet", mlflow_app_arn="arn:aws:sagemaker:us-west-2:123456789012:mlflow-app/mlflow-app-id", s3_output_path="s3://my-bucket/output/", role="arn:aws:iam::123456789012:role/SageMakerRole", accept_eula=True, output_model_package_group=output_mpg, intermediate_checkpoint_model_package_group=intermediate_mpg ) # View and adjust hyperparameters trainer.hyperparameters.get_info() trainer.hyperparameters.max_epochs = 1 trainer.hyperparameters.global_batch_size = 32 trainer.hyperparameters.max_steps = 12 job = trainer.train(wait=True) print(f"Job: {job.job_name}") print(f"Status: {job.job_status}") print(f"Output Model Package: {job.output_model_package_arn}")
AWS CLI
CreateJob API를 사용하여 훈련 작업을 생성합니다. 에서 에이전트 구성, 훈련 데이터 위치, 기본 모델 및 출력 설정을 지정합니다JobConfigDocument.
전체 JobConfigDocument 스키마를 검색하려면:
aws sagemaker list-job-schema-versions --job-category AgentRFT aws sagemaker describe-job-schema-version --job-category AgentRFT --version "1.0.0"
Bedrock AgentCore로 작업 생성
aws sagemaker create-job \ --job-category AgentRFT \ --job-name "my-agent-rft-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": [...], "OutputDataConfig": {...}, "ModelPackageConfig": {...}, "TrainingConfig": {...} }' \ --region us-west-2
사용자 지정 Lambda 에이전트를 사용하여 작업 생성
aws sagemaker create-job \ --job-category AgentRFT \ --job-name "my-custom-agent-rft-job" \ --role-arn "arn:aws:iam::account-id:role/SageMakerFineTuningJobRole" \ --job-config-schema-version "1.0.0" \ --job-config-document '{ "AgentConfig": { "CustomAgentLambdaConfig": { "LambdaArn": "arn:aws:lambda:us-west-2:account-id:function:rft-agent-forwarder" } }, "InputDataConfig": [...], "OutputDataConfig": {...}, "ModelPackageConfig": {...}, "TrainingConfig": {...} }' \ --region us-west-2
boto3
Bedrock AgentCore로 작업 생성
import json import boto3 sm = boto3.client("sagemaker") response = sm.create_job( JobName="my-agent-rft-job", RoleArn="arn:aws:iam::123456789012:role/SageMakerFineTuningJobRole", JobCategory="AgentRFT", JobConfigSchemaVersion="1.0.0", JobConfigDocument=json.dumps({ "AgentConfig": { "BedrockAgentCoreConfig": { "AgentRuntimeArn": "arn:aws:bedrock-agentcore:us-west-2:123456789012:runtime/my-agent" } }, "InputDataConfig": [...], "OutputDataConfig": {...}, "ModelPackageConfig": {...}, "TrainingConfig": {...} }) ) print(f"Job ARN: {response['JobArn']}")
사용자 지정 Lambda 에이전트를 사용하여 작업 생성
import json import boto3 sm = boto3.client("sagemaker") response = sm.create_job( JobName="my-custom-agent-rft-job", RoleArn="arn:aws:iam::account-id:role/SageMakerFineTuningJobRole", JobCategory="AgentRFT", JobConfigSchemaVersion="1.0.0", JobConfigDocument=json.dumps({ "AgentConfig": { "CustomAgentLambdaConfig": { "LambdaArn": "arn:aws:lambda:us-west-2:account-id:function:rft-agent-forwarder" } }, "InputDataConfig": [...], "OutputDataConfig": {...}, "ModelPackageConfig": {...}, "TrainingConfig": {...} }) ) print(f"Job ARN: {response['JobArn']}")
교육 모니터링
훈련 작업 모니터링
DescribeJob API를 사용하여 언제든지 작업의 현재 상태를 확인합니다. 작업 상태는를 통해 InProgress로 전환된 다음 Completed, Failed 또는 로 전환됩니다Stopped.
aws sagemaker describe-job \ --job-name "my-agent-rft-job" \ --job-category AgentRFT \ --region us-west-2
SDK를 사용합니다.
# Run without blocking job = trainer.train(wait=False) job.wait(poll=5, timeout=3000, max_log_lines=10) # Check status job.refresh() print(f"Status: {job.job_status}") print(f"Secondary Status: {job.secondary_status}") print(f"Output Model Package: {job.output_model_package_arn}") print(f"MLflow Details: {job.mlflow_details}") print(f"Billable Tokens: {job.billable_token_usage}") # Open MLflow tracking URL job.get_mlflow_url() # Stop a running job job.stop() # Attach to an existing job from a different session existing_job = MultiTurnRLTrainer.attach(job_name="my-existing-job-name") print(f"Status: {existing_job.job_status}") print(f"Output Model: {existing_job.output_model_package_arn}") # List all completed jobs from sagemaker.train.agent_rft_job import AgentRFTJob for j in AgentRFTJob.get_all(status_equals="Completed"): print(f"{j.job_name}: {j.job_status}")
MLflow에서 훈련 모니터링
SageMaker AI는 관리형 MLflow와 자동으로 통합되어 훈련 작업의 진행 상황, 지표 및 아티팩트를 추적합니다. MLflow 추적을 활성화하려면 작업의 MlflowConfig에를 포함합니다. OutputDataConfig
"OutputDataConfig": { "S3OutputPath": "s3://your-bucket/output/", "MlflowConfig": { "MlflowResourceArn": "arn:aws:sagemaker:us-west-2:123456789012:mlflow-app/my-rft-mlflow-app" } }
사전 조건
-
계정에서 관리형 MLflow 앱을 생성합니다. 설정 지침은 MLflow 앱 설정을 참조하세요.
-
SageMaker AI 실행 역할에 MLflow 앱에 쓸 수 있는 권한이 있는지 확인합니다(
sagemaker-mlflow:*작업). -
작업 구성
MlflowResourceArn에를 포함합니다.
로깅되는 항목
| # | 카테고리 | 로깅된 내용 | MLflow UI의 위치 |
|---|---|---|---|
| 1 | 훈련 지표 | 단계별 카운터, 처리량, 데이텀 및 토큰 회계, 단계의 각 단계의 40분 지속 시간, 궤적 보상 요약 롤아웃 배치, 궤적당 턴카운트 배포 | 지표 탭(시계열 차트) |
| 2 | 궤적 추적 | 도구 호출 및 보상을 통한 전체 멀티턴 대화 | 트레이스 탭 |
세부 훈련 지표 참조
각 훈련 단계에서 다음 지표가 기록됩니다.
단계 카운터 및 처리량(training/)
| 지표 | 설명 |
|---|---|
training/epoch |
현재 epoch 번호 |
training/global_step |
글로벌 훈련 단계 카운터 |
training/num_groups |
이 단계의 궤적 그룹 |
training/num_trajectories |
이 단계에서 처리된 총 궤적 |
training/total_tokens |
이 단계의 모든 마이크로 배치에서 합산된 토큰 |
training/num_datums |
궤적에서 형성된 훈련 기준 |
training/datums_per_trajectory |
궤적당 방출되는 평균 데이텀 |
training/action_tokens_mean |
궤적당 평균 작업(응답) 토큰 |
training/obs_tokens_mean |
궤적당 평균 관측(프롬프트) 토큰 |
training/trainable_token_positions |
이 단계의 훈련 가능한 총 대상 위치 |
training/nontrainable_token_positions |
이 단계에서 훈련할 수 없는 총 대상 위치 |
training/trainable_token_ratio |
비율: trainable / (trainable + nontrainable) 토큰 위치 |
단계 기간(timing_s/)
| 지표 | 설명 |
|---|---|
timing_s/step |
전체 단계의 총 시간 |
timing_s/training |
전진/후진 패스 및 옵티마이저 단계 시간 |
timing_s/policy_update |
샘플러에 대한 업데이트된 가중치 시간 절약 |
timing_s/save_checkpoint |
체크포인트 시간 절약(포인트 단계에서만 해당) |
timing_s/eval |
평가 실행 시간(평가 단계에서만) |
보상 배포(rollout/reward/)
| 지표 | 설명 |
|---|---|
rollout/reward/mean |
모든 그룹에서 평균 궤적 보상 |
rollout/reward/valid_mean |
유효한 (non-zero-advantage) 그룹에 대한 평균 보상입니다. 필터링이 발생하지 않은 mean 경우와 같습니다. |
rollout/reward/std |
궤적 보상의 표준 편차 |
rollout/reward/min |
최소 궤적 보상 |
rollout/reward/max |
최대 궤적 보상 |
rollout/reward/zero_frac |
총 보상이 정확히 0.0인 궤적 비율 |
회전 수(rollout/turns/)
| 지표 | 설명 |
|---|---|
rollout/turns/mean |
궤적당 평균 회전(전환) |
rollout/turns/min |
궤적 간 최소 회전 |
rollout/turns/max |
궤적 간 최대 회전 |
토큰 길이(rollout/tokens/)
| 지표 | 설명 |
|---|---|
rollout/tokens/prompt_mean |
전환당 평균 프롬프트 토큰 수 |
rollout/tokens/response_mean |
전환당 평균 응답 토큰 수 |
rollout/tokens/response_std |
응답 토큰 수의 표준 편차 |
rollout/tokens/response_min |
최소 응답 토큰 |
rollout/tokens/response_max |
최대 응답 토큰(에서 클러스터링 감시sampling_max_tokens) |
로그 확률 상태(rollout/logprob/)
| 지표 | 설명 |
|---|---|
rollout/logprob/zero_count |
총 제로 로그프로브 토큰 |
rollout/logprob/zero_frac |
정확히 0.0인 모든 로그프로브의 비율 |
rollout/logprob/zero_per_group |
궤적 그룹당 평균 0 logprob |
rollout/logprob/nz_mean |
0이 아닌 로그 프로브의 평균 |
rollout/logprob/nz_std |
0이 아닌 logprob의 표준 편차 |
rollout/logprob/nz_min |
최소 0이 아닌 logprob |
rollout/logprob/nz_max |
0이 아닌 최대 logprob |
어드밴티지 분포(rollout/advantage/)
| 지표 | 설명 |
|---|---|
rollout/advantage/mean |
모든 전환의 평균 이점 값 |
rollout/advantage/std |
장점의 표준 편차 |
rollout/advantage/min |
최소 이점 |
rollout/advantage/max |
최대 이점 |
rollout/advantage/n_positive |
긍정적 이점이 있는 전환 |
rollout/advantage/n_negative |
부정적인 이점이 있는 전환 |
배치 품질 분류(analysis/)
| 지표 | 설명 |
|---|---|
analysis/batch_completion_ratio |
total_completed / batch_size - 도착한 예상 그룹의 비율 |
analysis/batch_valid_ratio |
valid_count / batch_size - 전체 배치를 기준으로 non-zero-advantage 그룹 |
analysis/zero_adv_groups |
모든 전환이 거의 0에 가까운 이점이 있는 그룹 |
analysis/zero_adv_nonzero_reward |
하나 이상의 전환에 0이 아닌 보상이 있는 제로 어드밴티지 그룹(이진 보상의 경우 모두 올바른 사례) |
analysis/zero_adv_zero_reward |
모든 보상이 0인 제로 어드밴티지 그룹(모두 잘못된 경우) |
analysis/reward_variance_across_groups |
그룹당 평균 보상의 차이(높음 = 다양한 배치) |
analysis/mean_group_reward_spread |
그룹 내 평균 보상 스프레드 max - min |
평가 보상 및 pass@k(val/reward/)
기준(0단계), 모든 val_every 간격 및 최종 단계에서 내보내집니다. 프롬프트별로 집계된 그룹 보상 지표rollout/reward와 동일한 배포 지표를 포함합니다.
배포:
| 지표 | 설명 |
|---|---|
val/reward/mean |
평가 세트에 대한 평균 보상 |
val/reward/std |
보상 표준 개발 |
val/reward/min |
최소 보상 |
val/reward/max |
최대 보상 |
val/reward/zero_frac |
제로리워드 궤적의 비율 |
그룹 보상(프롬프트당 집계):
| 지표 | 설명 |
|---|---|
val/reward/min_within_groups |
프롬프트당 평균 최소 보상 |
val/reward/mean_within_groups |
프롬프트당 평균 평균 보상 |
val/reward/max_within_groups |
프롬프트당 평균 최대 보상 |
val/reward/std_within_groups |
프롬프트당 평균 보상 표준(일관성) |
val/reward/rollouts_per_prompt |
프롬프트 간 평균 롤아웃(n) |
val/reward/num_prompts |
고유한 프롬프트가 평가됨 |
Pass@k 및 성공 회계:
| 지표 | 설명 |
|---|---|
val/reward/succeeded_rollouts |
보상이 ≥인 총 롤아웃 success_threshold |
val/reward/failed_rollouts |
보상이 있는 총 롤아웃 < success_threshold |
val/reward/success_threshold |
사용된 임계값(명확성을 위해 에코됨) |
val/reward/pass_at_{k} |
k 샘플이 통과할 확률 ≥1 |
val/reward/pass_power_{k} |
확률 모든 k 샘플이 통과(신뢰성) |
평가 턴 수(val/turns/)
| 지표 | 설명 |
|---|---|
val/turns/mean |
평가 궤적당 평균 회전 |
val/turns/min |
최소 회전 |
val/turns/max |
최대 회전 |
평가 토큰 길이(val/tokens/)
| 지표 | 설명 |
|---|---|
val/tokens/prompt_mean |
전환당 평균 프롬프트 토큰 |
val/tokens/response_mean |
전환당 평균 응답 토큰 |
val/tokens/response_std |
응답 토큰의 표준 편차 |
val/tokens/response_min |
최소 응답 토큰 |
val/tokens/response_max |
최대 응답 토큰 |
평가 로그 확률 상태(val/logprob/)
| 지표 | 설명 |
|---|---|
val/logprob/zero_count |
총 제로 로그프로브 토큰 |
val/logprob/zero_frac |
0 logprobs의 비율 |
val/logprob/zero_per_group |
그룹당 제로 로그프로브 |
val/logprob/nz_mean |
0이 아닌 로그 프로브의 평균 |
val/logprob/nz_std |
0이 아닌 logprob의 표준 편차 |
val/logprob/nz_min |
최소 0이 아닌 logprob |
val/logprob/nz_max |
0이 아닌 최대 logprob |
MLflow UI 액세스
미리 서명된 URL을 통해 MLflow UI에 액세스합니다.
aws sagemaker create-presigned-mlflow-app-url \ --arn arn:aws:sagemaker:us-west-2:123456789012:mlflow-app/mlflow-app-id \ --region us-west-2
출력AuthorizedUrl에서 브라우저로를 복사합니다.
에이전트 궤적 및 추적
훈련 중에 SageMaker AI는 에이전트와 정책 모델 간의 모든 상호 작용을 하나의 롤아웃에 대한 전체 레코드인 궤적으로 기록합니다. 각 궤적은 모델로 전송된 모든 프롬프트, 생성된 모든 응답, 수행된 모든 도구 호출 및 최종 보상을 캡처합니다. 궤적은 MLflow 실험에 구조화된 트레이스로 게시됩니다.
내용 추적
-
훈련 데이터 세트의 입력 프롬프트
-
모든 모델 추론 턴(프롬프트, 응답 및 토큰 수준 데이터)
-
에이전트가 도구를 사용하는 경우 도구 호출 및 결과
-
최종 보상 점수
-
각 턴의 타이밍 정보
MLflow UI에서 궤적 보기
미리 서명된 URL을 통해 MLflow UI에 액세스합니다.
aws sagemaker create-presigned-mlflow-app-url \ --arn arn:aws:sagemaker:us-west-2:123456789012:mlflow-app/mlflow-app-id \ --region us-west-2
출력AuthorizedUrl에서 브라우저로를 복사합니다.
위의 미리 서명된 URL을 사용하여 MLflow UI를 엽니다. 실험 실행으로 이동하여 추적 탭을 선택합니다. 각 트레이스는 완료된 롤아웃 하나를 나타내며 다음을 보여줍니다.
-
시스템 프롬프트 및 사용자 프롬프트
-
각 어시스턴트 응답(해당하는 경우 사고/이유 포함)
-
호출된 도구와 해당 출력을 보여주는 도구 사용 범위
-
궤적에 할당된 보상 점수
궤적을 사용하여 낮은 보상 점수 디버깅
| 증상 | 확인할 항목 |
|---|---|
| 대부분의 롤아웃에서 낮은 보상 | 모델 응답은 일관성이 있습니까? 프롬프트 형식이 정확합니까? |
| 도구 관련 실패 | 도구 호출이 성공하고 있나요? 입력 및 출력이 잘 구성되어 있습니까? |
| 에이전트 반복 | 에이전트가 진행하지 않고 동일한 작업을 반복합니까? |
| 잘린 응답 | 응답이 maxTokens 제한에 의해 차단되고 있습니까? |
훈련 결과 가져오기
훈련 작업이 완료되면 훈련된 모델 가중치가 SageMaker AI 모델 패키지로 저장됩니다. 이 섹션에서는 결과를 찾고, 교육 중에 생성된 체크포인트 유형을 이해하고, 배포 또는 지속적인 교육에 사용하는 방법을 설명합니다.
결과 저장 방법
SageMaker AI는 훈련 출력을 모델 패키지 그룹 내에 버전 관리되고 변경 불가능한 모델 패키지로 저장합니다. 다중 회전 RL은 작업을 생성할 때 지정하는 두 개의 개별 그룹을 사용합니다.
| Group | 용도 | 내용 |
|---|---|---|
| 출력 모델 패키지 그룹 | 최종 훈련된 모델 | HuggingFace 호환 LoRA 어댑터 가중치(adapter_config.json + adapter_model.safetensors) |
| 중간 체크포인트 모델 패키지 그룹 | 재개 가능한 훈련 상태 | LoRA 어댑터 가중치 + 옵티마이저 상태 + 훈련 단계 메타데이터 |
ModelPackageConfig에서 두 그룹을 모두 구성합니다.
"ModelPackageConfig": { "OutputModelPackageGroupArn": "arn:aws:sagemaker:us-west-2:123456789012:model-package-group/my-final-models", "IntermediateCheckpointModelPackageGroupArn": "arn:aws:sagemaker:us-west-2:123456789012:model-package-group/my-intermediate-checkpoints" }
체크포인트 유형
훈련은 모든 훈련 단계에서 저장되는 두 가지 유형의 체크포인트를 생성합니다.
모델 체크포인트(가중치만 해당)
-
출력 모델 패키지 그룹에 저장됨
-
SafeTensors 형식의 HuggingFace 호환 LoRA 어댑터 가중치 포함
-
추론, 배포 또는 새 훈련 작업의 시작점으로 사용
-
모든 단계, 작업 완료 시 및 작업이 중지될 때 생성됩니다.
재개 가능한 체크포인트(전체 상태)
-
중간 체크포인트 모델 패키지 그룹에 저장됨
-
LoRA 어댑터 가중치, 최적화 프로그램 상태 및 GPU별 훈련 단계 메타데이터 포함
-
를 사용하여 중지된 정확한 단계에서 중단된 작업을 재개합니다.
-
내부 형식 - 추론에 직접 사용할 수 없음
체크포인트 수명 주기
Step 1 → Intermediate Checkpoint (resumable) Step 1 → Intermediate Checkpoint (HF-compatible) ... Step N-1 → Intermediate Checkpoint (resumable) Step N-1 → Intermediate Checkpoint (HF-compatible) ... Step N (final) → Model Checkpoint (HuggingFace LoRA) → Output Model Package Group
훈련된 모델 검색
작업이 성공적으로 완료되면 최종 모델이 출력 모델 패키지 그룹에 모델 패키지로 저장됩니다. 작업 레코드의 OutputModelPackageArn 필드에는 ARN이 포함됩니다.
작업 완료를 확인하고 출력 모델 ARN을 검색합니다.
aws sagemaker describe-job \ --job-name "my-agent-rft-job" \ --job-category AgentRFT \ --region us-west-2
응답OutputModelPackageArn에서를 찾습니다. 이를 사용하여 모델 패키지를 설명하고 가중치의 S3 위치를 가져옵니다.
aws sagemaker describe-model-package \ --model-package-name "arn:aws:sagemaker:us-west-2:123456789012:model-package/my-final-models/5"
작업이 실패하거나 완료 전에 중지되면 마지막 중간 체크포인트가 최대한 출력 모델 패키지 그룹으로 승격됩니다. OutputModelPackageArn 동일한 방법을 확인합니다.
훈련 중에 체크포인트 생성을 모니터링하려면 DescribeJob 출력에서 ResumableCheckpoint 및 ModelCheckpoint 필드를 확인합니다.
중단된 작업 재개
훈련 중 작업이 실패하거나 중지된 경우 작업이 중단된 정확한 단계에서 픽업하는 새 작업을 시작할 수 있습니다. 플랫폼은 재개 가능한 체크포인트에서 가중치, 옵티마이저 모멘텀, 단계 카운터 등 전체 훈련 상태를 복원합니다.
중간 체크포인트 모델 패키지 그룹에서 재개 가능한 체크포인트를 로 지정합니다InputModelPackageArn.
"ModelPackageConfig": { "OutputModelPackageGroupArn": "arn:aws:sagemaker:us-west-2:123456789012:model-package-group/my-final-models", "IntermediateCheckpointModelPackageGroupArn": "arn:aws:sagemaker:us-west-2:123456789012:model-package-group/my-intermediate-checkpoints", "InputModelPackageArn": "arn:aws:sagemaker:us-west-2:123456789012:model-package/my-intermediate-checkpoints/5" }
는 재개 가능한 체크포인트(모델 패키지 메타데이터IsCheckpoint=true에가 있는 체크포인트)를 가리켜InputModelPackageArn야 합니다. 예를 들어 4단계에서 체크포인트가 저장된 경우 5단계부터 훈련이 계속됩니다.
다음은 원래 작업과 재개된 작업 간에 동일하게 유지되어야 합니다.
-
기본 모델
-
LoRA 구성(순위 및 알파)
-
하이퍼파라미터(학습 속도, 배치 크기 등)
-
데이터세트
새 작업에 대한 훈련 계속(반복 훈련)
반복 훈련을 사용하면 다른 데이터 세트, 다른 하이퍼파라미터 또는 정교한 보상 함수를 사용하여 이전에 훈련된 모델을 구축할 수 있습니다. 재개와 달리 이렇게 하면 새로운 훈련 실행이 시작됩니다. 최적화 프로그램이 재설정되고 단계 카운터가 0으로 재설정되며 훈련된 LoRA 가중치만 이월됩니다.
출력 모델 패키지 그룹에서 모델 체크포인트를 로 지정합니다InputModelPackageArn.
"ModelPackageConfig": { "OutputModelPackageGroupArn": "arn:aws:sagemaker:us-west-2:123456789012:model-package-group/my-final-models", "IntermediateCheckpointModelPackageGroupArn": "arn:aws:sagemaker:us-west-2:123456789012:model-package-group/my-intermediate-checkpoints", "InputModelPackageArn": "arn:aws:sagemaker:us-west-2:123456789012:model-package/my-final-models/3" }
반복 간에 변경할 수 있는 사항:
-
하이퍼파라미터(학습 속도, 배치 크기, max_steps, group_size 등)
-
데이터 세트(다른 프롬프트 또는 데이터 배포)
-
보상 함수
-
에이전트 구성
다음을 동일하게 유지해야 합니다.
-
기본 모델 - LoRA 어댑터는 기본 모델 아키텍처에 연결됩니다.
반복 훈련의 일반적인 패턴:
-
커리큘럼 학습 - 더 쉬운 문제에 대해 먼저 훈련한 다음 더 어려운 문제에 대해 계속 훈련합니다.
-
보상 세분화 - 간단한 보상 함수로 시작한 다음 더 미묘한 보상 함수로 반복합니다.
-
하이퍼파라미터 조정 - 초기 훈련 역학을 관찰한 후 배치 크기를 늘리거나 학습률을 조정합니다.
체크포인트 모범 사례
-
체크포인트 생성을 모니터링합니다. DescribeJob을 사용하여 훈련 중에
ResumableCheckpoint및ModelCheckpoint필드를 추적하여 재개해야 하는 경우 사용할 수 있는 사항을 알 수 있습니다. -
긴 작업의 실패를 계획합니다. 작업에 여러 단계가 있는 경우 처음부터 다시 시작하지 않고 체크포인트에서 다시 시작하도록 워크플로를 설계합니다.