View a markdown version of this page

SageMaker Python SDK를 사용한 사용자 지정 - Amazon Nova

SageMaker Python SDK를 사용한 사용자 지정

SageMaker Python SDK v3.0에는 SageMaker에서 모델을 훈련, 미세 조정, 배포, 관리하기 위한 최신 모듈식 API가 도입되었습니다. SDK는 지속적인 사전 훈련(CPT), 지도형 미세 조정(SFT), 직접 선호 최적화(DPO), 강화 미세 조정(RFT), 멀티 턴 강화 학습(MTRL) 등, 다양한 훈련 방법을 지원합니다. SageMaker Training Jobs와 SageMaker HyperPod에서 훈련 작업을 실행할 수 있습니다.

다음 단계에 따라 설치에서 첫 번째 훈련 작업으로 이동합니다.

이점

  • 훈련부터 배포와 모니터링까지, 전체 모델 사용자 지정 수명 주기를 지원하는 모듈식 SDK입니다.

  • 자동 리소스 관리와 인프라 구성을 통해, SageMaker Training Jobs 및 SageMaker HyperPod에 다중 플랫폼 지원을 제공합니다.

  • 훈련 기법에 적합한 레시피 또는 컨테이너 URI를 더 이상 찾을 필요 없음.

  • 자체 훈련 레시피를 가져오거나 파라미터 재정의와 함께 기본값을 사용합니다.

  • 이 SDK는 지원되는 모델 및 인스턴스 조합에 대해 구성을 검증하여 훈련이 시작되기 전에 오류를 방지합니다.

  • 지속적인 사전 훈련(CPT), 지도 미세 조정(SFT), 직접 선호 최적화(DPO), 강화 미세 조정(RFT), 멀티 턴 강화 학습(MTRL) 등 다양한 훈련 방법을 지원하며, LoRA 및 전체 순위 접근 방식을 모두 지원합니다.

  • 통합 Amazon CloudWatch 모니터링을 사용하면 훈련 진행 상황을 실시간으로 추적할 수 있습니다.

  • MLflow를 통합하여 SageMaker AI MLflow 추적 서버로 훈련 실험을 추적합니다.

요구 사항

지원되는 Python 버전

SageMaker Python SDK는 Python 3.10 이상을 지원합니다.

설치

SageMaker Python SDK를 설치하려면 다음 명령을 실행합니다.

pip install "sagemaker>=3.19.0"

지원되는 모델 및 기법

이 SDK는 Amazon Nova 패밀리 내에서 다음과 같은 모델과 기법을 지원합니다.

방법 지원되는 모델
지속적인 사전 훈련 모든 Nova 모델(SMHP만 해당)
지도 미세 조정 LoRA 모든 Nova 모델
지도 미세 조정 전체 순위 모든 Nova 모델
직접 선호 최적화 LoRA Nova 1.0 모델
직접 선호 최적화 전체 순위 Nova 1.0 모델
강화 미세 조정 LoRA Nova Lite 2.0
강화 미세 조정 전체 순위 Nova Lite 2.0
멀티턴 강화 미세 조정 LoRA Nova Lite 2.0
멀티턴 강화 미세 조정 전체 순위 Nova Lite 2.0

멀티턴 강화 학습 출력

제한된 모델 패키지(RMP)는 플랫폼 관리형 에스크로 스토리지에서 독점 모델 아티팩트를 래핑하는 SageMaker AI 모델 패키지입니다. RMP 사용하면 기본 아티팩트에 대한 직접 액세스 권한을 부여하지 않고도 IAM 정책을 통해 이러한 모델의 사용을 승인하고 제어할 수 있습니다. 모델 데이터는 직접 다운로드, 내보내거나 볼 수 없습니다. 승인된 AWS 서비스 내에서만 사용할 수 있습니다. RMP는 StorageType: "Restricted"으로 표시된 모델 패키지 그룹 내에 존재합니다.

SageMaker 훈련 작업 서버리스에서 멀티턴 강화 학습(MTRL)을 사용하여 모델을 훈련하면 출력이 S3 경로가 아닌 모델 패키지 그룹 내의 RMP ARN으로 제공됩니다. 이는 모델 체크포인트의 S3 경로를 출력으로 제공하는 다른 훈련 방법(예: SFT, DPO 또는 RFT)과 다릅니다.

MTRL을 사용하려면, MultiTurnRLTrainer 클래스를 사용합니다. SageMaker Training Jobs Serverless에서 훈련할 경우, 선택적으로 output_model_package_group을 지정하여 출력 RMP가 등록되는 위치를 제어할 수 있습니다. 이 옵션을 생략하면 SDK가 모델 패키지 그룹을 자동으로 생성합니다. 자세한 내용과 코드 예제는 제한된 모델 패키지를 참조하세요.

시작하기

1. 인프라 구성

SDK는 세 가지 컴퓨팅 플랫폼을 지원합니다. 적절한 구성을 트레이너의 compute 파라미터에 전달합니다.

SageMaker HyperPod

from sagemaker.core.training.configs import HyperPodCompute compute = HyperPodCompute( cluster_name="my-hyperpod-cluster", instance_type="ml.p5.48xlarge", node_count=4, )

SageMaker Training Jobs(Serverful)

from sagemaker.core.training.configs import TrainingJobCompute compute = TrainingJobCompute( instance_type="ml.p5.48xlarge", instance_count=2, )

SageMaker Training Jobs(Serverless)

완전관리형이며 컴퓨팅 구성이 필요하지 않습니다. compute 파라미터를 생략하고, SDK가 기본적으로 서버리스를 사용합니다.

# No compute parameter needed as serverless is the default trainer = SFTTrainer( model="nova-textgeneration-lite", training_dataset="s3://my-bucket/sft-data.jsonl", s3_output_path="s3://my-bucket/output/", )

2. 훈련

SFTTrainer 클래스로 지도형 미세 조정을 시작합니다. 모델, 컴퓨팅 구성, 훈련 데이터세트 및 출력 경로를 제공합니다.

from sagemaker.train import SFTTrainer from sagemaker.core.training.configs import HyperPodCompute compute = HyperPodCompute( cluster_name="my-hyperpod-cluster", instance_type="ml.p5.48xlarge", node_count=4, ) trainer = SFTTrainer( model="nova-textgeneration-lite", compute=compute, training_dataset="s3://my-bucket/sft-data.jsonl", s3_output_path="s3://my-bucket/output/", ) job = trainer.train(wait=False)

또한 SDK는 지속적인 사전 훈련을 위한 CPTTrainer, 직접 선호 최적화를 위한 DPOTrainer, 강화 미세 조정을 위한 RLVRTrainer, 멀티 턴 강화 학습을 위한 MultiTurnRLTrainer를 제공합니다. 이들 각각은 모델, 컴퓨팅 구성, 훈련 데이터세트, 출력 경로를 제공하는 동일한 패턴을 따릅니다.

3. 모니터링

SDK에서 훈련 진행 상황을 직접 추적합니다. stream_logs()를 사용하여 Amazon CloudWatch 로그를 실시간으로 스트리밍하거나, show_metrics()를 사용하여 작업 완료 후 손실 및 학습률과 같은 훈련 지표를 표시합니다.

# Stream CloudWatch logs in real-time (blocks until job completes) trainer.stream_logs(poll=5) # Or stream only the last N lines trainer.stream_logs(tail_lines=50) # Plot training metrics (training_loss, lr, reward_score) df = trainer.show_metrics()

4. 평가

BenchMarkEvaluator 클래스를 사용하여 기본 제공 벤치마크 작업을 기준으로, 훈련된 모델을 평가합니다. 지원되는 벤치마크로는 MMLU(Massive Multitask Language Understanding), BBH(Advanced Reasoning Tasks), GPQA(Graduate-Level Google-Proof Q&A) 등이 있습니다. 다른 평가 옵션은 평가기를 참조하세요.

from sagemaker.train.evaluate import BenchMarkEvaluator, get_benchmarks # Get the trained model s3 path from the completed training job s3_path = job.model_artifacts.s3_model_artifacts Benchmark = get_benchmarks() evaluator = BenchMarkEvaluator( benchmark=Benchmark.MMLU, model=s3_path, s3_output_path="s3://my-bucket/eval-output/", ) execution = evaluator.evaluate()

5. 배포

훈련 후 사용자 지정 모델을 프로덕션 환경에 배포합니다. SageMaker Python SDK를 사용하면 SageMaker Real-time Inference 엔드포인트와 Amazon Bedrock On-Demand에 배포할 수 있습니다. 지연 시간, 처리량 및 비용 요구 사항에 가장 적합한 배포 옵션을 선택합니다.

SageMaker Real-time Inference

인스턴스 유형, 조정 정책 및 엔드포인트 구성을 완전하게 제어할 수 있도록 SageMaker Real-time Inference 엔드포인트에 배포합니다. ModelBuilder를 사용하여 SageMaker 엔드포인트를 생성하고 배포합니다.

from sagemaker.serve import ModelBuilder # Get the trained model checkpoint path s3_path = job.model_artifacts.s3_model_artifacts # Deploy to SageMaker Real-time Inference endpoint builder = ModelBuilder( model=s3_path, instance_type="ml.p5.48xlarge", env_vars={ "CONTEXT_LENGTH": "8000", "MAX_CONCURRENCY": "2", }, ) builder.build().deploy() # Build the model and deploy to an endpoint

Bedrock On-Demand

On-Demand 추론은 프로비저닝된 용량 없이 종량제 요금을 제공합니다. 이 옵션은 LoRA 기반 사용자 지정에 적용됩니다. 가변적이거나 예측할 수 없는 트래픽 패턴이 있는 경우 On-Demand를 사용하세요.

from sagemaker.serve import BedrockModelBuilder # Deploy with Bedrock On-Demand builder = BedrockModelBuilder( model=s3_path, throughput_type="on-demand", ) deployment = builder.deploy()

주요 기능

레시피 재정의 우선순위

SageMaker Python SDK는 훈련 레시피에 계층화된 구성 시스템을 사용합니다. 훈련 작업을 시작하면 파라미터는 다음 우선순위(높음에서 낮음 순)에 따라 결정됩니다.

  1. 파라미터 재정의 – 트레이너 생성자의 overrides 사전을 통해 직접 전달되는 값입니다. 우선순위가 가장 높으며, 레시피 YAML 또는 Hub 기본값에서 충돌하는 값을 재정의합니다.

  2. 레시피 YAML – 사용자가 제공하는 레시피 YAML 파일(S3 경로 또는 로컬 파일)입니다. 전체 훈련 구성을 정의하지만, overrides 사전에 의해 선택적으로 재정의될 수 있습니다.

  3. Hub 기본값 – 기본 레시피는 모델 및 훈련 방법에 따라 SageMaker Model Hub에서 자동으로 결정됩니다. 사용자 지정 레시피이거나 재정의가 지정되지 않은 경우, 적절한 시작 구성을 제공합니다.

예를 들어 다른 모든 파라미터에 Hub 기본값을 사용하면서 최대 훈련 단계 수와 학습률을 재정의하려면:

from sagemaker.train import SFTTrainer from sagemaker.core.training.configs import HyperPodCompute compute = HyperPodCompute( cluster_name="my-hyperpod-cluster", instance_type="ml.p5.48xlarge", node_count=2, ) trainer = SFTTrainer( model="nova-textgeneration-lite", training_dataset="s3://my-bucket/sft-data.jsonl", s3_output_path="s3://my-bucket/output/", base_job_name="my-sft-training-job", overrides={ "training_config.trainer.max_epochs": 1, "training_config.model.optim.lr": 1e-5, }, ) job = trainer.train(wait=False)

이 예에서 max_epochsoptim.lr은 재정의를 통해 명시적으로 설정됩니다. 다른 모든 훈련 파라미터(배치 크기, 워밍업 단계, 모델 병렬화 등)는 nova-textgeneration-lite 모델의 Hub 기본 레시피가 적용됩니다.

엔터프라이즈 인프라 지원

이 SDK는 여러 컴퓨팅 플랫폼을 지원하면서 인프라 구성, 검증 및 작업 오케스트레이션을 자동으로 관리합니다.

  • SageMaker Training Jobs – 인스턴스의 자동 프로비저닝 및 해제를 지원하는 완전관리형 훈련 인프라입니다. 온디맨드 모드와 서버리스 모드를 모두 지원합니다.

  • SageMaker HyperPod – 내결함성 및 자동 노드 복구 기능이 기본 지원하는 대규모 분산 훈련을 위한 영구 클러스터입니다.

모든 플랫폼에서 이 SDK는 작업을 제출하기 전에 인스턴스 유형, 레시피 구성 및 데이터세트 형식을 검증하여 워크플로 초기에 오류를 방지합니다.

포괄적인 평가

표준 벤치마크를 기준으로 사용자 지정 모델을 평가합니다. 이 SDK는 다음 평가기를 제공합니다.

  • BenchMarkEvaluator – MMLU, BBH, GPQA 등의 표준화된 성능 벤치마크 실행

  • LLMAsJudgeEvaluator – 대규모 언어 모델을 사용하여 모델 출력 평가

  • InspectAIEvaluator – InspectAI 또는 사용자 지정 벤치마크 작업 실행

  • CustomScorerEvaluator – 사용자 지정 평가기 함수 적용

  • MultiTurnRLEvaluator – 롤아웃 기반 지표를 사용하여 멀티 턴 에이전트 모델 평가

프로덕션 배포

SageMaker Python SDK에서는 여러 배포 옵션을 사용하여 사용자 지정 모델을 배포할 수 있습니다.

  • SageMaker Real-time Inference – 인스턴스 유형, 규모 조정 정책 및 엔드포인트 구성을 완전하게 제어할 수 있도록 하여 사용자 지정 호스팅 요구 사항을 지원합니다.

  • Bedrock On-Demand – 프로비저닝된 용량 없는 종량제 요금을 제공합니다. LoRA 기반 사용자 지정에 적용됩니다.

ModelBuilder 또는 BedrockModelBuilder 클래스를 사용하여, 훈련된 모델을 배포합니다.

데이터 혼합

참고

데이터 혼합 기능은 Nova Forge 구독자만 사용할 수 있습니다.

SageMaker Python SDK는 데이터 혼합을 구성하기 위한 DataMixingConfig 클래스를 제공합니다.

DataMixingConfig를 트레이너와 함께 사용하여 고객 데이터의 비율(%)과 Nova 데이터 범주 전반의 분포를 지정합니다.

from sagemaker.train import SFTTrainer from sagemaker.train.data_mixing_config import DataMixingConfig from sagemaker.core.training.configs import HyperPodCompute data_mixing = DataMixingConfig( customer_data_percent=70.0, nova_data_percentages={ "code": 40.0, "reasoning": 30.0, "instruction-following": 30.0, }, ) trainer = SFTTrainer( model="nova-textgeneration-lite", compute=HyperPodCompute( cluster_name="my-cluster", instance_type="ml.p5.48xlarge", node_count=4, ), training_dataset="s3://my-bucket/sft-data.jsonl", s3_output_path="s3://my-bucket/output/", data_mixing_config=data_mixing, ) job = trainer.train(wait=False)

자세히 알아보기

SageMaker Python SDK를 사용하여 Nova 모델 사용자 지정을 시작할 준비가 되셨나요? 자세한 가이드, API 참조 및 추가 예시는 GitHub에서 sagemaker-python-sdk를 참조하세요.