지도 미세 조정 - Amazon Nova

지도 미세 조정

소개

지도 미세 조정은 관심 태스크에 입력-출력 페어가 있는 데이터세트를 사용합니다. 즉, 올바른 응답이나 원하는 응답과 함께 프롬프트의 예제(질문, 지침 등)를 제공하고 이를 기반으로 모델을 계속 훈련합니다. 모델의 가중치는 지도 손실, 일반적으로 예측과 대상 응답 토큰 간 교차 엔트로피를 최소화하도록 조정됩니다.

SFT는 언제 사용하나요?

SFT는 원하는 출력이 명확한 잘 정의된 태스크가 있는 경우에 가장 적합합니다. 'X 입력 제공, 올바른 출력/원하는 출력은 Y'라고 명시적으로 말할 수 있고 이러한 X-Y 매핑의 예제를 수집할 수 있는 경우 지도 미세 조정이 가장 적합합니다. SFT가 탁월한 일부 시나리오는 다음과 같습니다.

  • 구조화되거나 복잡한 분류 태스크: 예를 들어 내부 문서 또는 계약을 여러 사용자 지정 범주로 분류. SFT를 사용하면 모델은 프롬프트만 사용할 때보다 이러한 특정 범주를 훨씬 더 잘 학습할 수 있습니다.

  • 알려진 답변이 있는 질문 답변 또는 변환 태스크: 예를 들어 회사의 지식 베이스를 통해 질문에 답변하거나 각 입력에 올바른 응답이 있는 경우 여러 형식 사이에서 데이터를 변환하도록 모델 미세 조정.

  • 형식 지정 및 스타일 일관성: 모델이 항상 특정 형식 또는 어조로 응답해야 하는 경우 올바른 형식/어조의 예제를 미세 조정할 수 있습니다. 예를 들어 특정 브랜드 음성 또는 스타일을 보여주는 프롬프트-응답 페어를 훈련하는 경우 출력에서 해당 스타일로 모델을 학습시킬 수 있습니다. 지침 준수 동작은 종종 처음에 SFT를 통해 선별된 올바른 어시스턴트 동작 예제를 통해 학습됩니다.

SFT는 올바른 동작을 지정할 수 있는 경우 LLM에 새로운 기술이나 동작을 가르치는 가장 직접적인 방법입니다. 그리고 모델의 기존 언어 이해를 활용하고 태스크에 집중합니다. 동작이 아닌 지식에서 격차가 있는 경우 SFT를 사용하지 마세요. 모델은 새로운 사실, 전문 용어 또는 최근 이벤트를 학습하지는 않습니다. 이 경우 추론 시 외부 지식을 제공하기 위해 대규모 도메인 내 코포라 또는 검색 증강 생성에 대한 지속적인 사전 훈련이 선호됩니다. 품질을 측정할 수 있지만 하나의 올바른 답변에 레이블을 지정할 수 없는 경우 SFT보다 검증 가능한 보상 또는 평가형 LLM을 사용한 강화 미세 조정이 더 선호될 수 있습니다.

조정 없이 Nova 모델의 태스크 복잡성과 성능에 따라 원시 볼륨보다 더 중요한 데이터 품질, 일관성 및 다양성을 고려하여 태스크당 수천에서 수만 개의 데모를 계획합니다.

언제 파라미터 효율적 미세 조정을 사용하고, 언제 전체 순위 SFT를 사용해야 하나요?

Nova 사용자 지정 레시피를 사용하면 파라미터 효율적 미세 조정, 특히 LoRA 또는 전체 순위 SFT를 수행할 수 있습니다. 간단하고 비용 효율적인 모델 업데이트를 원하거나 데이터가 거의 없는 경우 대부분의 백본을 그대로 유지하면서 소형 어댑터를 훈련할 수 있도록 파라미터 효율적 미세 조정 방법을 선호합니다(전체 순위 SFT는 모든 모델 파라미터를 업데이트함).

SFT에 대한 데이터 혼합

데이터 혼합을 사용하면 사용자 지정 훈련 데이터세트를 Nova의 독점 훈련 데이터와 결합할 수 있습니다. 이 기능은 Nova 1.0 및 Nova 2.0 모델 모두에서 사용할 수 있습니다.

Nova 독점 데이터 유형: Nova는 텍스트 및 멀티모달 SFT 데이터 유형을 모두 지원합니다. 각각 해당 범주와 관련된 태스크 혼합을 포함하는 여러 데이터 범주로 구성됩니다.

Nova 독점 데이터 범주: 이 텍스트 데이터세트에는 자율 의사 결정, 태스크 완료, 목표 중심 데이터세트(에이전트), 추론 및 비추론과 관련된 정확한 태스크 실행 데이터세트(추론 지침 준수, 지침 준수), 전략적 사고 및 단계별 태스크 분류를 보여주는 시퀀스(계획), 책임 있는 AI(rai), 긴 컨텍스트, 사실성, 수학, 어간 등을 비롯한 여러 범주가 포함됩니다. 마찬가지로 멀티모달 데이터세트에는 비디오, 스크린샷, 차트 등이 포함됩니다.

데이터 혼합 기능을 사용하면 자체 미세 조정 훈련 샘플을 Nova를 미세 조정하는 데 사용되는 Nova 데이터세트의 샘플과 혼합할 수 있습니다. 이를 통해 사용자 지정 훈련의 과적합과 Nova 기능의 '파괴적 망각'을 방지하거나 사전 훈련된 새 체크포인트에서 훈련할 때 기능을 빌드하는 데 도움이 될 수 있습니다.

Nova 데이터를 혼합하려면 training_config 섹션 아래에서 레시피 YAML 파일에 data_mixing 블록을 추가하기만 하면 됩니다. 텍스트 및 멀티모달 데이터 혼합 블록에서는 콘텐츠가 서로 다르며, 데이터 혼합 블록은 Nova 1.0과 Nova 2.0에서 약간 다릅니다. 해당 레시피를 참조하세요.

지원되는 모델

  • Nova 1.0(Micro, Lite, Pro)

  • Nova 2.0 Lite

지원되는 모달리티

  • 텍스트

  • 멀티모달

YAML 구성 예제

Nova 1.0 텍스트 혼합에 대한 데이터 혼합 블록 예제

## Run config run: name: "my-lora-run" # A descriptive name for your training job model_type: "amazon.nova-lite-v1:0:300k" # Model variant specification, do not change model_name_or_path: "nova-lite/prod" # Base model path, do not change replicas: 4 # Number of compute instances for training, allowed values are 4, 8, 16 data_s3_path: "" # Customer data path output_s3_path: "" # Output artifact path, SageMaker HyperPod job-specific configuration - not compatible with standard SageMaker Training jobs ## MLFlow configs mlflow_tracking_uri: "" # Required for MLFlow mlflow_experiment_name: "my-lora-experiment" # Optional for MLFlow. Note: leave this field non-empty mlflow_run_name: "my-lora-run" # Optional for MLFlow. Note: leave this field non-empty ## Training specific configs training_config: max_length: 32768 # Maximum context window size (tokens). global_batch_size: 64 # Global batch size, allowed values are 16, 32, 64 trainer: max_epochs: 2 # Number of training epochs model: hidden_dropout: 0.0 # Dropout for hidden states, must be between 0.0 and 1.0 attention_dropout: 0.0 # Dropout for attention weights, must be between 0.0 and 1.0 ffn_dropout: 0.0 # Dropout for feed-forward networks, must be between 0.0 and 1.0 optim: lr: 1e-5 # Learning rate name: distributed_fused_adam # Optimizer algorithm, do not change adam_w_mode: true # Enable AdamW mode eps: 1e-06 # Epsilon for numerical stability weight_decay: 0.0 # L2 regularization strength, must be between 0.0 and 1.0 betas: # Adam optimizer betas, must be between 0.0 and 1.0 - 0.9 - 0.999 sched: warmup_steps: 10 # Learning rate warmup steps constant_steps: 0 # Steps at constant learning rate min_lr: 1e-6 # Minimum learning rate peft: peft_scheme: "lora" # Enable LoRA for parameter-efficient fine-tuning lora_tuning: loraplus_lr_ratio: 8.0 # LoRA+ learning rate scaling factor, must be between 0.0 and 100.0 alpha: 32 # Scaling factor for LoRA weights. Allowed values are 32, 64, 96, 128, 160 and 192 adapter_dropout: 0.01 # Regularization for LoRA parameters. Must be between 0.0 and 1.0 data_mixing: dataset_catalog: sft_text # Nova text dataset catalog sources: customer_data: percent: 50 # Percent of overall mix to draw from customer data nova_data: # The remainder will be drawn from Nova data. The categories below must add to 100 agents: 1 # autonomous decision-making, task completion, goal-oriented behavior in AI systems chat: 51 # Conversational exchanges demonstrating natural dialogue flow code: 8 # Programming examples and solutions spanning multiple languages rai: 1 # ethical AI principles, safety considerations, and responsible technology deployment instruction-following: 13 # precise task execution based on varying levels of user prompts and directives stem: 6 # science, technology, engineering, and mathematics content planning: 2 # sequences demonstrating strategic thinking and step-by-step task breakdown reasoning: 8 # logical problem-solving and analytical thinking demonstrations rag: 1 # retrieval-augmented generation examples translation: 9 # language translation tasks

Nova 2.0 구성 예제

run: name: my-lora-sft-run model_type: amazon.nova-2-lite-v1:0:256k model_name_or_path: nova-lite-2/prod data_s3_path: s3://my-bucket-name/train.jsonl replicas: 4 output_s3_path: s3://my-bucket-name/outputs/ mlflow_tracking_uri: "" mlflow_experiment_name: "my-lora-sft-experiment" mlflow_run_name: "my-lora-sft-run" training_config: max_steps: 100 save_steps: 10 save_top_k: 5 max_length: 32768 global_batch_size: 32 reasoning_enabled: true lr_scheduler: warmup_steps: 15 min_lr: 1e-6 optim_config: lr: 1e-5 weight_decay: 0.0 adam_beta1: 0.9 adam_beta2: 0.95 peft: peft_scheme: "lora" lora_tuning: alpha: 64 lora_plus_lr_ratio: 64.0

Nova 2.0 텍스트 데이터 혼합

data_mixing: dataset_catalog: sft_1p5_text_chat sources: customer_data: percent: 50 nova_data: agents: 1 baseline: 10 chat: 0.5 code: 10 factuality: 0.1 identity: 1 long-context: 1 math: 2 rai: 1 instruction-following: 13 stem: 0.5 planning: 10 reasoning-chat: 0.5 reasoning-code: 0.5 reasoning-factuality: 0.5 reasoning-instruction-following: 45 reasoning-math: 0.5 reasoning-planning: 0.5 reasoning-rag: 0.4 reasoning-rai: 0.5 reasoning-stem: 0.4 rag: 1 translation: 0.1

Nova 1.0 멀티모달 데이터 혼합

data_mixing: dataset_catalog: sft_mm sources: customer_data: percent: 50 nova_data: agents: 11 docs: 17 perception: 10 rag: 4 rai: 3 reasoning: 10 stem: 17 text: 10 video: 18

Nova 2.0 멀티모달 데이터 혼합

data_mixing: dataset_catalog: sft_1p5_mm_chat sources: customer_data: percent: 50 nova_data: charts: 1 chat: 38 code: 20 docs: 3 general: 2 grounding: 1 rag: 4 screenshot: 4 text: 8 translation: 4 video: 15

모델 체크포인트

Nova 1.0 체크포인트

  • 사전 훈련[nova-<micro/lite/pro>/pretraining-text-partial]: 수조 단위의 텍스트 토큰에서 모델을 훈련하는 Nova 사전 훈련의 일정한 학습 속도 단계 이후 체크포인트. [1단계 결과]

  • 중간 훈련[nova-<micro/lite/pro>/pretraining-text-full]: 수조 단위의 텍스트 토큰을 사용하는 Nova 사전 훈련 및 중간 훈련의 모든 단계를 완료한 후 텍스트 전용 체크포인트. 모델이 멀티모달 데이터를 보지 않도록 하려는 경우에 사용합니다. [3단계 결과]

  • 중간 훈련[nova-<lite/pro>/pretraining-mm-full]: 멀티모달 데이터를 포함하여 수조 단위의 토큰을 사용하는 Nova 사전 훈련 및 중간 훈련의 모든 단계를 완료한 후 체크포인트. [멀티모달 데이터를 사용하는 3단계의 결과]

  • 최종[nova-<micro/lite/pro>/prod]: 모든 사전 훈련 및 사후 훈련 단계를 거친 완전히 조정된 최종 체크포인트. [4단계 결과]

Nova 2.0 체크포인트

  • 사전 훈련[nova-lite-2/pretraining-text-RD]: 수조 단위의 토큰에서 모델을 훈련하는 일정한 학습 속도 및 감소 단계 이후 체크포인트. [2단계 결과]

  • 중간 훈련[nova-lite-2/pretraining-text-CE]: 중간 볼륨의 비정형 데이터를 사용하는 고객이 사전 훈련보다 더 보수적인 학습 속도로 데이터를 도입하여 도메인별 지식을 흡수하는 동시에 파괴적 망각을 방지할 수 있습니다. [3단계 결과]

  • 최종[nova-lite-2/prod]: 모든 사전 훈련 및 사후 훈련 단계를 거친 완전히 조정된 최종 체크포인트. [4단계 결과]

훈련 단계:

  • 1단계: PT Ckpt, 일정한 학습 속도의 초기 사전 훈련

  • 2단계: PT Ckpt, 학습 속도 감소

  • 3단계: PT Ckpt, 컨텍스트 확장 훈련

  • 4단계: 지침 준수 조정 및 안전 교육

훈련 접근 방식

훈련 접근 방식 선택 가이드
데이터 형식 데이터 볼륨 수행 체크포인트 사용
대규모 비정형 원시 도메인 데이터(문서, 로그, 문서, 코드 등) 1T 이상의 토큰 지속적인 사전 훈련 일정한 학습 속도CLR) 종료
대규모 비정형 원시 도메인 데이터 100B 이상의 토큰 중간 훈련 CLR 종료
더 작은 양의 비정형 원시 데이터, 정형 추론 트레이스/CoT 데이터 1B 이상의 토큰 중간 훈련 Nova 기본 모델
비정형 데모(고품질 입력-출력 페어, 선별된 태스크 지침, 멀티턴 대화) 1K 이상의 예제 지도 미세 조정(SFT) Nova 기본 모델

시작하기 전 사전 조건

  • 이 경우 활성 용량이 있는 제한된 인스턴스 그룹(RIG)으로 SMHP 클러스터를 이미 설정했다고 가정합니다. 그렇지 않으면 여기를 참조하여 SMHP 클러스터 및 RIG 설정을 완료하세요. [문서 링크, 워크숍 링크]

  • 이 레시피를 실행하려면 p5.48xlarge EC2 인스턴스가 필요합니다. 이 레시피를 효율적으로 실행하는 데 필요한 최소 인스턴스 수는 다음과 같습니다.

    • Nova Lite 2.0 - 4 p5.48xlarge

    • Nova Lite 1.0 - 4 p5.48xlarge

    • Nova Micro 1.0 - 4 p5.48xlarge

    • Nova Pro 1.0 - 6 p5.48xlarge

  • 여기에 제공된 지침을 사용하여 Forge 특정 SageMaker HyperPod CLI 설치

  • hyperpod get-clusters를 사용하여 클러스터에 연결할 수 있는지 확인

    • 이 명령은 계정의 모든 SMHP 클러스터를 나열함

  • SMHP 클러스터의 실행 역할이 액세스할 수 있는 S3 버킷에서 훈련 및 검증 데이터(선택 사항)를 사용할 수 있는지 확인합니다. 데이터 준비는 다음 섹션을 참조하세요.

  • 설정을 완료합니다. 설정을 완료하지 않은 경우 아래 가이드를 따르세요.

  • 확인: 설정을 완료한 후 아래 명령을 성공적으로 실행할 수 있는지 확인

    aws sagemaker describe-cluster --cluster-name <cluster-name> --region <region> hyperpod connect-cluster --cluster-name cluster-name

성공적인 SFT를 달성하기 위한 체계적인 접근 방식

  • 데이터 준비: 정해진 지침에 따라 데이터세트를 생성, 정리 또는 필요한 구조로 다시 포맷합니다. 입력, 출력 및 보조 정보(예: 추론 트레이스 또는 메타데이터)가 올바르게 조정되고 형식이 지정되었는지 확인합니다.

  • 훈련 구성: 모델 훈련 방법을 정의합니다. Amazon SageMaker HyperPod를 사용하는 경우 이 구성은 다음을 포함하는 YAML 레시피 파일로 작성됩니다.

    • 데이터 소스 경로(훈련 및 검증 데이터세트)

    • 주요 하이퍼파라미터(훈련 단계 수, 학습 속도, 배치 크기)

    • 선택적 구성 요소(분산 훈련 파라미터 등)

    • 데이터 혼합 설정(고객 및 Nova 데이터 범주의 비율 정의)

  • SFT 하이퍼파라미터 최적화: 권장하는 SFT 레시피 파라미터 값은 훌륭한 출발점이며 강력한 선택지입니다. 사용 사례에 맞게 더 최적화하려면 다양한 파라미터 조합으로 여러 SFT 실행을 수행하고 가장 적합한 항목을 선택합니다. 선택한 하이퍼파라미터 최적화 방법에 따라 파라미터 조합을 선택할 수 있습니다. 단순한 접근 방식은 다른 파라미터에 대한 다른 기본값을 유지하면서 한 파라미터의 값(기본값*0.5, 기본값, 기본값*2)을 변경한 다음, 최적화하려는 각 파라미터에 대해 이 작업을 다시 수행하고, 필요한 경우 이를 반복하는 것입니다. LoRA에 대해 가장 관련성이 높은 파라미터는 학습 속도, 알파(스케일링 파라미터), 훈련할 에포크 수 및 워밍업 단계입니다. 전체 순위의 경우 주로 학습 속도, 에포크 수 및 워밍업 단계입니다.

실험 시퀀싱 및 데이터 혼합

  • 태스크 세트에 대한 SFT 데이터(train/dev/test)만 있고 이러한 태스크에서 테스트 성능에만 주의를 기울이는 경우

    • [최종] Nova 체크포인트에서 혼합하지 않고 SFT를 수행합니다. 기본 SFT 하이퍼파라미터를 사용하고 선택적으로 사용 사례에 맞게 최적화합니다. 검증 지표를 모니터링하고 또는 더 큰 데이터세트에 대한 중간 체크포인트를 평가합니다.

  • 태스크 세트에 대한 SFT 데이터(train/dev/test)만 있고 이러한 태스크에서 테스트 성능 및 관심 도메인의 일반 벤치마크에 주의를 기울이는 경우

    • 먼저 사전 훈련 체크포인트(사전 훈련 또는 중간 훈련 체크포인트에 해당하며, 최종 체크포인트가 아님)에서 Nova 데이터 혼합으로 SFT를 수행합니다. 중간 체크포인트를 사용하면 모델이 강력한 일반 기능을 유지 관리하면서 사용자 지정 데이터를 Nova의 독점 데이터와 더 잘 통합할 수 있습니다.

    • 혼합에서 Nova 데이터의 양(예: 10%, 25%, 50%, 75%)을 달리하고 사용 사례를 보완하는 Nova 데이터 범주(예: 일반 지침 준수 기능에 관심이 있는 경우 지침 준수 범주 선택)를 선택하여 더 짧은 SFT 훈련 실행을 수행합니다. 검증 지표를 모니터링하고 혼합이 일반 벤치마크의 성능에 도움이 되는지 평가합니다. 태스크 성능 및 일반 성능에서 최상의 조합을 구성하는 훈련 혼합 및 체크포인트를 선택합니다. 사용 사례에 따라 강화 미세 조정(RFT)을 사용하여 태스크 및 일반 성능을 더욱 개선할 수 있습니다.

SFT에 대한 데이터세트 준비

Nova 1.0: 관련 데이터 준비는 https://docs.aws.amazon.com/sagemaker/latest/dg/nova-fine-tune.html에서 설명합니다.

Nova 2.0: Nova 1.0에 대해 Converse API 형식을 사용합니다(https://docs.aws.amazon.com/bedrock/latest/userguide/conversation-inference-call.html). Nova 2.0 데이터 형식에는 추가 추론 필드가 포함될 수 있습니다(https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_ReasoningContentBlock.html).

추론 콘텐츠는 최종 답변을 생성하기 전에 모델의 중간 사고 단계를 캡처합니다. assistant 턴에서 reasoningContent 필드를 사용하여 추론 트레이스를 포함합니다. 추론 콘텐츠에 일반 텍스트를 사용하고, 태스크에 특별히 필요하지 않은 한 <thinking></thinking>과 같은 마크업 태그를 피하며, 추론 콘텐츠가 명확하고 문제 해결 프로세스와 관련이 있는지 확인합니다.

책임 있는 AI 도구 키트 및 콘텐츠 조정

콘텐츠 조정 설정: Nova Forge 고객은 Nova Lite 1.0 및 Pro 1.0 모델의 사용자 지정 가능한 콘텐츠 조정 설정(CCMS)에 액세스할 수 있습니다. CCMS를 사용하면 특정 비즈니스 요구 사항에 맞게 콘텐츠 조정 제어를 조정하는 동시에 핵심적인 책임 있는 AI 보호를 유지 관리할 수 있습니다. 비즈니스 사용 사례가 CCMS에 적합한지 확인하려면 Amazon Web Services 계정 관리자에게 문의하세요.

Nova Forge는 Nova의 책임 있는 AI 지침에 맞게 모델을 조정하는 데 도움이 되는 훈련 데이터, 평가 벤치마크 및 런타임 제어가 포함된 책임 있는 AI 도구 키트를 제공합니다.

훈련 데이터: 데이터 혼합의 'RAI' 범주에는 책임 있는 AI 원칙, 안전 고려 사항 및 책임 있는 기술 배포를 강조하는 사례와 시나리오가 포함됩니다. 이를 사용하여 지속적인 사전 훈련 중에 모델을 책임감 있게 조정합니다.

평가: 벤치마크 태스크를 사용하여 부적절하거나 유해하거나 잘못된 콘텐츠를 감지 및 거부하는 모델의 기능을 테스트할 수 있습니다. 이러한 평가를 사용하여 기본 모델 성능과 사용자 지정 모델 성능의 차이를 측정합니다.

런타임 제어: 기본적으로 Nova의 런타임은 추론 중에 중간 모델 응답을 제어합니다. 특정 비즈니스 사례에 맞게 이러한 제어를 수정하려면 Amazon Web Services 계정 관리자에게 문의하여 사용자 지정 가능한 콘텐츠 조정 설정(CCMS)을 요청합니다.

안전에 대한 공동 책임

안전은 Amazon Web Services와 고객 간의 공동 책임입니다. 기본 모델을 변경하거나 지속적인 사전 훈련을 사용하여 특정 사용 사례의 성능을 개선하면 새 모델의 안전성, 공정성 및 기타 속성에 영향을 미칠 수 있습니다.

강력한 적응 방법을 사용하여 기본 모델에 빌드된 안전, 공정성 및 기타 보호 기능의 변경을 최소화하는 동시에 모델이 사용자 지정되지 않은 태스크의 모델 성능에 미치는 영향을 최소화합니다.

다음과 같은 작업을 담당합니다.

  • 사용 사례를 대표하는 데이터세트에서 애플리케이션의 포괄적인 테스트

  • 테스트 결과가 안전, 공정성 및 기타 속성과 전반적인 효과에 대한 구체적인 기대치를 충족하는지 확인

자세한 내용은 Amazon Web Services 책임 있는 AI 사용 가이드, Amazon Web Services 책임 있는 AI 정책, AWS 이용 정책, 사용하려는 서비스의 AWS 서비스 약관을 참조하세요.

사용자 지정 가능한 콘텐츠 조정 설정(CCMS)

CCMS를 사용하면 AI의 책임 있는 사용을 보장하는 필수적이고 구성 불가능한 제어를 유지 관리하면서 비즈니스 요구 사항과 관련된 제어를 조정할 수 있습니다.

이러한 설정을 사용하면 다음과 같은 세 가지 구성을 통해 콘텐츠를 생성할 수 있습니다.

  • 보안 전용

  • 안전, 민감한 콘텐츠 및 공정성이 결합됨

  • 모든 범주가 결합됨

4개의 콘텐츠 조정 범주는 다음과 같습니다.

  1. 안전 - 위험한 활동, 무기 및 규제 물질 포괄

  2. 민감한 콘텐츠 - 욕설, 노출, 괴롭힘 등 포함

  3. 공정성 - 편향 및 문화적 고려 사항 처리

  4. 보안 - 사이버 범죄, 맬웨어 및 악성 콘텐츠 포괄

CCMS 구성에 상관없이 Amazon Nova는 아동에 대한 피해 방지 및 개인 정보 보호와 같은 AI의 책임 있는 사용을 보장하기 위한 필수적이고 구성 불가능한 제어를 시행합니다.

CCMS 사용에 대한 권장 사항

CCMS를 사용하는 경우 GA/최종 체크포인트 대신 지속적인 사전 훈련(CPT)을 사용하고 사전 RAI 조정 체크포인트(PRE-TRAINING-Early, PRE-TRAINING-Mid 또는 PRE-TRAINING-Final)에서 시작하는 것이 좋습니다. 이러한 체크포인트는 안전 훈련을 거치지 않았거나 특정 RAI 동작에 편향되지 않았으므로 콘텐츠 조정 요구 사항에 맞게 보다 효율적으로 사용자 지정할 수 있습니다.

: 데이터 혼합과 함께 CCMS를 사용하는 경우 특정 콘텐츠 조정 요구 사항에 맞게 nova_data 구성에서 'rai' 범주 백분율을 조정하는 방법을 고려합니다.

가용성

CCMS는 현재 다음을 사용하는 승인된 고객에게 제공됩니다.

  • Nova Lite 1.0 및 Pro 1.0 모델

  • Amazon Bedrock 온디맨드 추론

  • us-east-1(버지니아 북부) 리전

Forge 모델에 대해 CCMS를 활성화하려면 Amazon Web Services 계정 관리자에게 문의하세요.

평가 지표

사전 조건

  • 훈련 작업 manifest.json 파일의 체크포인트 S3 URI(훈련된 모델의 경우)

  • 올바른 형식으로 S3에 업로드된 평가 데이터세트

  • 평가 결과에 대한 출력 S3 경로

즉시 사용 가능한 벤치마크: 즉시 사용 가능한 벤치마크를 통해 일반 태스크의 성능을 검증합니다. 자세한 내용은 https://docs.aws.amazon.com/sagemaker/latest/dg/nova-hp-evaluate.html을 확인하세요.

자체 데이터 사용

또한 아래 형식으로 지정한 다음 아래에 언급된 컨테이너를 사용하여 필요한 경우 보정에 대한 로그 확률과 함께 추론 결과를 가져와 사용자 지정 데이터를 제공할 수 있습니다.

다음 구조를 사용하여 태스크당 jsonl을 생성합니다.

{ "metadata": "{key:4, category:'apple'}", "system": "arithmetic-patterns, please answer the following with no other words: ", "query": "What is the next number in this series? 1, 2, 4, 8, 16, ?", "response": "32" }

평가 작업의 추론 단계 중에 생성된 출력의 구조는 다음과 같습니다.

{ "prompt": "[{'role': 'system', 'content': 'arithmetic-patterns, please answer the following with no other words: '}, {'role': 'user', 'content': 'What is the next number in this series? 1, 2, 4, 8, 16, ?'}]", "inference": "['32']", "gold": "32", "metadata": "{key:4, category:'apple'}" }

필드 설명:

  • prompt: 모델로 전송된 형식 지정된 입력

  • inference: 모델의 생성된 응답

  • gold: 입력 데이터세트의 예상되는 정답, 입력의 응답 필드

  • metadata: 입력에서 전달되는 선택적 메타데이터

평가 구성 준비

평가 작업을 시작하는 명령. 레시피에서 항목을 수정하려면 "--override-parameters"를 사용합니다.

hyperpod start-job -n kubeflow \ --recipe evaluation/nova/nova_micro_p5_48xl_bring_your_own_dataset_eval \ --override-parameters '{ "instance_type": "p5.48xlarge", "container": "708977205387.dkr.ecr.us-east-1.amazonaws.com/nova-evaluation-repo:SM-HP-Eval-latest", "recipes.run.name": "<your-eval-job-name>", "recipes.run.model_name_or_path": "<checkpoint-s3-uri>", "recipes.run.output_s3_path": "s3://<your-bucket>/eval-results/", "recipes.run.data_s3_path": "s3://<your-bucket>/eval-data.jsonl" }'

모범 사례

  • 볼륨보다 데이터 품질 우선: 고품질의 다양한 대표 훈련 데이터는 대량의 저품질 데이터보다 더 유용합니다.

  • 추론 지침 준수 범주 포함: 데이터 혼합을 사용하는 경우 '추론 지침 준수' 범주를 포함하여 태스크 전반에서 강력한 일반 성능을 유지 관리합니다.

  • 기본 학습 속도 사용: 기본 학습 속도(LoRA의 경우 1e-5, 전체 순위 SFT의 경우 5e-6)로 시작하고 검증 지표에 따라 필요한 경우에만 조정합니다.

  • Nova 데이터 혼합 균형 조정: 최적의 지연 시간과 성능 균형을 위해 최대 50% Nova 데이터를 혼합합니다. 비율이 높을수록 일반적인 기능이 향상될 수 있지만 훈련 시간이 늘어날 수 있습니다.

  • 검증 지표 모니터링: 훈련 중에 중간 체크포인트를 정기적으로 평가하여 과적합 또는 성능 저하를 조기에 감지합니다.

  • 대표 데이터세트에서 테스트: 평가 데이터세트가 의미 있는 성능 평가를 위한 프로덕션 사용 사례를 정확하게 대표하도록 보장합니다.

훈련 작업 구성 준비

하이퍼 파라미터

데이터 혼합 이외의 전체 하이퍼파라미터 세트:

## Run config run: name: my-lora-sft-run model_type: amazon.nova-2-lite-v1:0:256k model_name_or_path: nova-lite-2/prod data_s3_path: s3://my-bucket-name/train.jsonl # SageMaker HyperPod (SMHP) only and not compatible with SageMaker Training jobs. Note replace my-bucket-name with your real bucket name for SMHP job replicas: 4 # Number of compute instances for training, allowed values are 4, 8, 16, 32 output_s3_path: s3://my-bucket-name/outputs/ # Output artifact path (Hyperpod job-specific; not compatible with standard SageMaker Training jobs). Note replace my-bucket-name with your real bucket name for SMHP job ## MLFlow configs mlflow_tracking_uri: "" # Required for MLFlow mlflow_experiment_name: "my-lora-sft-experiment" # Optional for MLFlow. Note: leave this field non-empty mlflow_run_name: "my-lora-sft-run" # Optional for MLFlow. Note: leave this field non-empty training_config: max_steps: 100 # Maximum training steps. Minimal is 4. save_steps: 10 # This parameter suggests after how many training steps the checkpoints will be saved. Should be less than or equal to max_steps(please override this value with a numerical value equal or less than max_steps value; min: 4) save_top_k: 5 # Keep top K best checkpoints. Note supported only for SageMaker HyperPod jobs. Minimal is 1. max_length: 32768 # Sequence length (options: 8192, 16384, 32768 [default], 65536) global_batch_size: 32 # Golbal batch size (options: 32, 64, 128) reasoning_enabled: true # If data has reasoningContent, set to true; otherwise False lr_scheduler: warmup_steps: 15 # Learning rate warmup steps. Recommend 15% of max_steps min_lr: 1e-6 # Minimum learning rate, must be between 0.0 and 1.0 optim_config: # Optimizer settings lr: 1e-5 # Learning rate, must be between 0.0 and 1.0 weight_decay: 0.0 # L2 regularization strength, must be between 0.0 and 1.0 adam_beta1: 0.9 # Exponential decay rate for first-moment estimates, must be between 0.0 and 1.0 adam_beta2: 0.95 # Exponential decay rate for second-moment estimates, must be between 0.0 and 1.0 peft: # Parameter-efficient fine-tuning (LoRA) peft_scheme: "lora" # Enable LoRA for PEFT lora_tuning: alpha: 64 # Scaling factor for LoRA weights ( options: 32, 64, 96, 128, 160, 192), lora_plus_lr_ratio: 64.0 # LoRA+ learning rate scaling factor (0.0–100.0)

LoRA에 대해 가장 관련성이 높은 파라미터는 학습 속도, 알파(스케일링 파라미터), 훈련할 에포크 수 및 워밍업 단계입니다. 전체 순위의 경우 주로 학습 속도, 에포크 수 및 워밍업 단계입니다. 레시피는 권장되는 기본값으로 미리 채워집니다.

데이터 혼합 블록 설정

여러 데이터세트 범주에서 적절한 백분율 분포를 사용하여 레시피에 data_mixing 섹션을 추가합니다.

아래에서는 사용 가능한 각 Nova 데이터 범주를 설명합니다.

데이터 혼합을 사용하는 Nova 1.0 구성

data_mixing: dataset_catalog: sft_text # Nova text dataset catalog sources: customer_data: percent: 50 # Percent of overall mix to draw from customer data nova_data: # The remainder will be drawn from Nova data. The categories below must add to 100 agents: 1 # autonomous decision-making, task completion, goal-oriented behavior in AI systems chat: 51 # Conversational exchanges demonstrating natural dialogue flow code: 8 # Programming examples and solutions spanning multiple languages rai: 1 # ethical AI principles, safety considerations, and responsible technology deployment instruction-following: 13 # precise task execution based on varying levels of user prompts and directives stem: 6 # Technical content covering science, technology, engineering, and mathematics planning: 2 # Sequences demonstrating strategic thinking and step-by-step task breakdown reasoning: 8 # Logical deduction, critical thinking, and analytical problem-solving scenarios rag: 1 # combining retrieved external knowledge with generated responses translation: 9 # Multi-language content pairs showing accurate translation

이러한 범주는 무엇을 의미하나요?

Nova 1.0 텍스트 데이터 범주
범주 이름 세부 정보
에이전트 AI 시스템의 자율 의사 결정, 태스크 완료 및 목표 지향적 동작에 초점을 맞춘 훈련 데이터
chat 자연스러운 대화 흐름, 컨텍스트 유지 관리 및 적절한 사회적 상호 작용을 보여주는 대화식 교환
code 여러 언어, 디버깅 시나리오 및 소프트웨어 개발 모범 사례를 포괄하는 프로그래밍 예제 및 솔루션
rai 윤리적 AI 원칙, 안전 고려 사항 및 책임 있는 기술 배포를 강조하는 사례 및 시나리오
instruction-following 다양한 수준의 사용자 프롬프트 및 지침에 기반한 정확한 태스크 실행 예제
어간 문제 해결 및 이론적 개념을 포함하여 과학, 기술, 엔지니어링 및 수학을 다루는 기술 콘텐츠
계획 전략적 사고, 단계별 태스크 분석 및 효율적인 리소스 할당을 보여주는 시퀀스
추론 명확한 추론 체인에 기반한 논리적 연역, 비판적 사고 및 분석 문제 해결 시나리오
rag 검색된 외부 지식을 생성된 응답과 효과적으로 결합하여 상황에 맞는 정확한 정보를 제공하는 예제
변환 컨텍스트, 어조 및 문화적 뉘앙스를 유지하면서 정확한 번역을 보여주는 다국어 콘텐츠 페어

멀티모달 데이터 혼합(Nova 1.0)

data_mixing: dataset_catalog: sft_mm # Nova multi-modal dataset catalog sources: customer_data: percent: 50 # Percent of overall mix to draw from customer data nova_data: # The remainder will be drawn from Nova data. The categories below must add to 100 agents: 11 # Combining visual and textual inputs docs: 17 # Document-centric data combining text, images, layouts, and formatting perception: 10 # Visual-linguistic pairs t rag: 4 # Combining retrieved external knowledge with generated responses rai: 3 # Ethical AI principles, safety considerations, and responsible technology deployment reasoning: 10 # Logical analysis, problem-solving, and drawing conclusions stem: 17 # Technical content pairing visual elements (diagrams, charts, equations) with text text: 10 # A balanced pool of contextual text data create from the text-only SFT datasets video: 18 # Video datasets

이러한 범주는 무엇을 의미하나요?

Nova 1.0 멀티모달 데이터 범주
범주 이름 세부 정보
에이전트 AI 시스템이 다중 감지 환경 정보를 해석하고 관련 조치를 수행하며 상호 작용하는 방법을 보여주는 시각적 입력과 텍스트 입력을 결합한 훈련 페어
docs PDF 콘텐츠 인식과 같은 개념에 도움이 되도록 다양한 문서 유형 및 구조를 이해하고 처리하는 모델을 훈련하기 위해 텍스트, 이미지, 레이아웃 및 형식을 결합한 문서 중심 데이터
지각 이미지, 비디오 및 기타 시각적 입력을 자연어로 정확하게 설명, 해석 및 추론하도록 모델을 훈련시키는 시각적 언어 페어
rag 시각적 및 텍스트 외부 지식을 효과적으로 결합하고 참조하여 정확한 컨텍스트 기반 응답을 생성하는 방법을 보여주는 멀티모달 검색 예제
추론 논리적 분석, 문제 해결 및 여러 모달리티에서 결론 도출을 보여주는 시각적 요소와 텍스트 요소를 결합한 사례
어간 과학적, 수학적, 기술적 개념 및 문제 해결을 훈련시키기 위해 텍스트와 시각적 요소(다이어그램, 차트, 수식)를 페어링하는 기술 콘텐츠
텍스트 일반론적 기능을 제공하기 위해 텍스트 전용 SFT Nova 데이터세트 범주에서 생성된 컨텍스트 기반 텍스트 데이터의 균형 잡힌 풀
비디오 시간적 이해와 순차적인 시각적 서술 이해에 초점을 둔 모션 기반 시각적 콘텐츠

데이터 혼합을 사용하는 Nova 2.0 구성

data_mixing: dataset_catalog: sft_1p5_text_chat # Nova text dataset catalog sources: customer_data: percent: 50 # Percent of overall mix to draw from customer data nova_data: # The remainder will be drawn from Nova data. The categories below must add to 100 agents: 1 # autonomous decision-making, task completion, goal-oriented behavior in AI systems baseline: 10 # [New in Nova 1.5] chat: 0.5 # Conversational exchanges demonstrating natural dialogue flow code: 10 # Programming examples and solutions spanning multiple languages factuality: 0.1 # [New in Nova 1.5] identity: 1 # [New in Nova 1.5] long-context: 1 # [New in Nova 1.5] math: 2 # [New in Nova 1.5] rai: 1 # ethical AI principles, safety considerations, and responsible technology deployment instruction-following: 13 # precise task execution based on varying levels of user prompts and directives stem: 0.5 # Technical content covering science, technology, engineering, and mathematics planning: 10 # Sequences demonstrating strategic thinking and step-by-step task breakdown reasoning-chat: 0.5 reasoning-code: 0.5 reasoning-factuality: 0.5 reasoning-instruction-following: 45 reasoning-math: 0.5 reasoning-planning: 0.5 reasoning-rag: 0.4 reasoning-rai: 0.5 reasoning-stem: 0.4 rag: 1 # combining retrieved external knowledge with generated responses translation: 0.1

이러한 범주는 무엇을 의미하나요?

Nova 2.0 텍스트 데이터 범주
범주 이름 세부 정보
에이전트 AI 시스템의 자율 의사 결정, 태스크 완료 및 목표 지향적 동작에 초점을 맞춘 훈련 데이터
기준 일반적인 이해, 기본 커뮤니케이션 및 핵심 언어 기능에 초점을 맞춘 기초적인 언어 데이터
chat 자연스러운 대화 흐름, 컨텍스트 유지 관리 및 적절한 사회적 상호 작용을 보여주는 대화식 교환
code 다양한 프로그래밍 언어 및 플랫폼의 프로그래밍 소스 코드, 설명서 및 기술 토론
factuality 정확성, 소스 검증 및 사실 평가에 초점을 둔 참조 자료 및 확인된 정보
identity 일관된 캐릭터 특성, 가치 및 상호 작용 스타일에 초점을 둔 성격 프레임워크 및 행동 패턴
long-context 여러 긴 교환에서 일관성과 관련성을 유지 관리하는 데 초점을 둔 확장된 텍스트 및 복잡한 서술
math 교과서, 문제, 솔루션, 수학적 토론을 포함한 수학 콘텐츠
rai 윤리적 AI 원칙, 안전 고려 사항 및 책임 있는 기술 배포를 강조하는 사례 및 시나리오
instruction-following 다양한 수준의 사용자 프롬프트 및 지침에 기반한 정확한 태스크 실행 예제
어간 문제 해결 및 이론적 개념을 포함하여 과학, 기술, 엔지니어링 및 수학을 다루는 기술 콘텐츠
계획 전략적 사고, 단계별 태스크 분석 및 효율적인 리소스 할당을 보여주는 시퀀스
reasoning-chat 논리적 토론 및 구조화된 대화 흐름에 초점을 둔 분석 대화 시나리오
reasoning-code 체계적인 솔루션 개발에 초점을 둔 프로그래밍 문제 및 알고리즘 문제
reasoning-factuality 중요한 평가 및 확인 프로세스에 초점을 둔 정보 평가 시나리오
reasoning-instruction-following 체계적인 해석 및 실행에 초점을 둔 복잡한 태스크 분석
reasoning-math 논리적 진행 및 솔루션 전략에 초점을 둔 수학적 문제 해결 시나리오
reasoning-planning 목표 달성에 대한 체계적인 접근 방식에 초점을 둔 전략적 의사 결정 시나리오
reasoning-rag 컨텍스트 이해 및 관련 애플리케이션에 초점을 둔 정보 검색 및 가상 시나리오
reasoning-rai AI 안전 및 공정성에 대한 체계적인 평가에 초점을 둔 윤리적 의사 결정 시나리오
reasoning-stem 체계적인 분석 및 솔루션 개발에 초점을 둔 과학적 문제 해결 시나리오
rag 검색된 외부 지식을 생성된 응답과 효과적으로 결합하여 상황에 맞는 정확한 정보를 제공하는 예제
변환 컨텍스트, 어조 및 문화적 뉘앙스를 유지하면서 정확한 번역을 보여주는 다국어 콘텐츠 페어

멀티모달 데이터 혼합(Nova 2.0)

data_mixing: dataset_catalog: sft_1p5_mm_chat # Nova text dataset catalog sources: customer_data: percent: 50 # Percent of overall mix to draw from customer data nova_data: # The remainder will be drawn from Nova data. The categories below must add to 100 charts: 1 chat: 38 code: 20 docs: 3 general: 2 grounding: 1 rag: 4 screenshot: 4 text: 8 translation: 4 video: 15

참고: Nova 2.0에는 Nova 1.0에서 사용할 수 없는 비디오 데이터 범주 지원이 포함되어 있습니다.

이러한 범주는 무엇을 의미하나요?

Nova 2.0 멀티모달 데이터 범주
범주 이름 세부 정보
차트 모델이 정량적 정보를 효과적으로 이해하고 전달하는 데 도움이 되는 그래프, 파이 차트, 막대 차트, 선형 플롯 및 기타 통계 시각화의 시각적 표현 및 설명
chat 컨텍스트 기반 대화 이해 및 이미지 기반 상호 작용에 초점을 둔 시각적 요소와 페어를 이루는 대화 데이터
code 시각적 코드 해석, IDE 스크린샷 및 기술 다이어그램에 초점을 둔 프로그래밍 인터페이스 및 개발 환경
docs PDF 콘텐츠 인식과 같은 개념에 도움이 되도록 다양한 문서 유형 및 구조를 이해하고 처리하는 모델을 훈련하기 위해 텍스트, 이미지, 레이아웃 및 형식을 결합한 문서 중심 데이터
일반 이미지, 그래픽 및 수반되는 설명 텍스트의 광범위한 이해에 초점을 둔 다양한 시각적-텍스트 콘텐츠
그라운딩 언어 개념을 실제 시각적 표현에 연결하는 데 초점을 둔 시각적 참조 자료 및 레이블이 지정된 이미지
rag 시각적 및 텍스트 외부 지식을 효과적으로 결합하고 참조하여 정확한 컨텍스트 기반 응답을 생성하는 방법을 보여주는 멀티모달 검색 예제
screenshot 소프트웨어 인터페이스 및 디지털 상호 작용을 이해하는 데 초점을 둔 애플리케이션 인터페이스 캡처 및 디지털 표시 이미지
텍스트 일반론적 기능을 제공하기 위해 텍스트 전용 SFT Nova 데이터세트 범주에서 생성된 컨텍스트 기반 텍스트 데이터의 균형 잡힌 풀
변환 이미지 및 문화적 시각적 요소 내 텍스트의 다국어 해석에 초점을 둔 교차 언어 시각적 콘텐츠
비디오 시간적 이해와 순차적인 시각적 서술 이해에 초점을 둔 모션 기반 시각적 콘텐츠

작업을 시작하는 방법

첫 번째 SFT 실행을 시작하는 데 필요한 핵심 세부 정보만 가져오는 경우 README를 참조할 수도 있습니다.

컨테이너 정보:

컨테이너 정보 및 시작 명령
모델 기술 Subcategory 이미지 URI Hyperpod 런처 명령
Nova 1.0 미세 조정 SFT/PEFT 708977205387.dkr.ecr.us-east-1.amazonaws.com/nova-fine-tune-repo:SM-HP-SFT-latest hyperpod start-job \ -n kubeflow \ --recipe fine-tuning/nova/nova_1_0/nova_micro/SFT/nova_micro_1_0_p5_gpu_sft \ --override-parameters '{ "instance_type": "ml.p5.48xlarge", "container": "708977205387.dkr.ecr.us-east-1.amazonaws.com/nova-fine-tune-repo:SM-HP-SFT-latest" }'
Nova 1.0 미세 조정 데이터 혼합을 사용하는 SFT 708977205387.dkr.ecr.us-east-1.amazonaws.com/nova-fine-tune-repo:HP-SFT-DATAMIX hyperpod start-job \ -n kubeflow \ --recipe fine-tuning/nova/forge/nova_1_0/nova_micro/SFT/nova_micro_1_0_p5_gpu_sft_text_with_datamix \ --override-parameters '{ "instance_type": "ml.p5.48xlarge", "container": "708977205387.dkr.ecr.us-east-1.amazonaws.com/nova-fine-tune-repo:HP-SFT-DATAMIX" }'
Nova 2.0 미세 조정 SFT 텍스트 708977205387.dkr.ecr.us-east-1.amazonaws.com/nova-fine-tune-repo:SM-HP-SFT-V2-latest hyperpod start-job \ -n kubeflow \ --recipe fine-tuning/nova/nova_2_0/nova_lite/SFT/nova_lite_2_0_p5_gpu_sft \ --override-parameters '{ "instance_type": "ml.p5.48xlarge", "container": "708977205387.dkr.ecr.us-east-1.amazonaws.com/nova-fine-tune-repo:SM-HP-SFT-V2-latest" }'
Nova 2.0 미세 조정 SFT 텍스트 + 데이터 혼합 708977205387.dkr.ecr.us-east-1.amazonaws.com/nova-fine-tune-repo:SM-HP-SFT-V2-DATAMIXING-latest hyperpod start-job \ -n kubeflow \ --recipe fine-tuning/nova/forge/nova_2_0/nova_lite/SFT/nova_lite_2_0_p5_gpu_sft_text_with_datamix \ --override-parameters '{ "instance_type": "ml.p5.48xlarge", "container": "708977205387.dkr.ecr.us-east-1.amazonaws.com/nova-fine-tune-repo:SM-HP-SFT-V2-DATAMIXING-latest" }'
Nova 2.0 미세 조정 SFT MM 708977205387.dkr.ecr.us-east-1.amazonaws.com/nova-fine-tune-repo:SM-HP-SFT-V2-latest hyperpod start-job \ -n kubeflow \ --recipe fine-tuning/nova/nova_2_0/nova_lite/SFT/nova_lite_2_0_p5_gpu_sft \ --override-parameters '{ "instance_type": "ml.p5.48xlarge", "container": "708977205387.dkr.ecr.us-east-1.amazonaws.com/nova-fine-tune-repo:SM-HP-SFT-V2-latest" }'
Nova 2.0 미세 조정 SFT MM + 데이터 혼합 708977205387.dkr.ecr.us-east-1.amazonaws.com/nova-fine-tune-repo:SM-HP-SFT-V2-DATAMIXING-latest hyperpod start-job \ -n kubeflow \ --recipe fine-tuning/nova/forge/nova_2_0/nova_lite/SFT/nova_lite_2_0_p5_gpu_sft_mm_with_datamix \ --override-parameters '{ "instance_type": "ml.p5.48xlarge", "container": "708977205387.dkr.ecr.us-east-1.amazonaws.com/nova-fine-tune-repo:SM-HP-SFT-V2-DATAMIXING-latest" }'

설정이 모두 완료되면 sagemaker-hyperpod-cli 리포지토리의 루트에서 시작하여 기본 nova sft 레시피 폴더로 이동합니다.

  • cd /src/hyperpod_cli/sagemaker_hyperpod_recipes/recipes_collection/recipes/training/nova/

  • 여기서 기본 모델 선택에 따라 nova 1 또는 nova 2 레시피를 실행할지를 선택할 수 있습니다.

Nova 1.0 sft의 경우:

  • 일반 sft 작업을 사용하려면 이 폴더에서 레시피 하나를 볼 수 있어야 함

    • cd /src/hyperpod_cli/sagemaker_hyperpod_recipes/recipes_collection/recipes/fine-tuning/nova_1_0/nova_lite/SFT and then you should be able to see one recipe under this folder called nova_lite_1_0_p5x8_gpu_sft.yaml

  • 데이터 혼합 sft 작업을 사용하려면 sft Forge 레시피 폴더로 이동할 수 있음

    • cd /src/hyperpod_cli/sagemaker_hyperpod_recipes/recipes_collection/recipes/fine-tuning/nova/forge/nova_1_0/nova_lite/SFT and you should be able to see one recipe under this folder called: nova_lite_1_0_p5x8_gpu_sft_with_datamix.yaml

  • name, data_s3_path, validation_s3_path, output_s3_path, max_steps와 같은 작업에 필요한 레시피의 섹션을 편집합니다. sft를 수행하므로 에포크 개념은 여기에 적용되지 않습니다.

Nova 2.0 sft의 경우:

  • 일반 sft 작업을 사용하려면 이 폴더에서 레시피 하나를 볼 수 있어야 함

    • cd /src/hyperpod_cli/sagemaker_hyperpod_recipes/recipes_collection/recipes/fine-tuning/nova_2_0/nova_lite/SFT and then you should be able to see one recipe under this folder called nova_lite_2_0_p5x8_gpu_sft.yaml

  • 데이터 혼합 sft 작업을 사용하려면 sft Forge 레시피 폴더로 이동할 수 있음

    • cd /src/hyperpod_cli/sagemaker_hyperpod_recipes/recipes_collection/recipes/fine-tuning/nova/forge/nova_2_0/nova_lite/SFT and you should be able to see one recipe under this folder called: nova_lite_2_0_p5x8_gpu_sft_with_datamix.yaml

  • name, data_s3_path, validation_s3_path, output_s3_path, max_steps와 같이 작업에 필요한 레시피의 섹션을 편집합니다. sft를 수행하므로 여기에 epoch 개념은 적용되지 않습니다.

데이터 혼합 구성이 동일하게 보이지만 하단에 이와 비슷한 추가 데이터 혼합 섹션이 있습니다.

data_mixing: dataset_catalog: sft_text_lite sources: nova_data: # percent inputs for Nova data must sum to 100%; use 0% if you want to exclude a data grouping agents: 20 business-and-finance: 20 scientific: 20 code: 20 factual-and-news: 20 longform-text: 0 health-and-medicine: 0 humanities-and-education: 0 legal: 0 math: 0 additional-languages: 0 social-and-personal-interest: 0 entertainment: 0 reasoning: 0 other: 0 tables: 0 customer_data: # percent input of customer data. 100 = use only customer data, 0 = use only the nova_data mix above percent: 25

여기에는 두 가지 최상위 데이터 범주가 있습니다.

  • nova_data : 실제 데이터 혼합이며 더 많은 범주로 세분화됩니다. 100%까지 합산해야 합니다.

    • 토큰 수를 포함한 이러한 범주의 전체 분석은 아래에서 확인할 수 있음

  • customer_data : yaml 상단의 data_s3_path 키에서 참조되는 훈련 데이터입니다. 여기에 제공된 백분율은 nova_data에 대한 결과 백분율을 결정합니다. 예를 들어 위의 백분율 선택에서 훈련 중에 customer_data로 25%, nova_data로 75%(이때 15%는 agents, 15%는 business-and-finance, 15%는 scientific, 15%는 code, 15%는 factual-and-news)를 사용함

팁: pip install -e를 다시 한 번 실행합니다. 그러면 작업을 제출할 준비가 됩니다!

여기서는 데이터 혼합을 사용하기 위해 몇 가지 파라미터를 재정의합니다.

hyperpod start-job \ -n kubeflow \ --recipe fine-tuning/nova/forge/nova_2_0/nova_lite/SFT/nova_lite_2_0_p5x8_gpu_sft_with_datamix \ --override-parameters '{ "instance_type": "ml.p5.48xlarge", "recipes.run.name": "nova-sft-datamixing", "container": "708977205387.dkr.ecr.us-east-1.amazonaws.com/nova-fine-tune-repo:SM-HP-SFT-V2-Datamix", "recipes.run.data_s3_path": "s3://sft-data/sft_train_data.jsonl", "recipes.run.validation_data_s3_path": "s3://sft-data/sft_val_data.jsonl", "recipes.run.output_s3_path": "s3://sft-data/output/ }'

출력에는 다음과 같은 작업 이름이 포함됩니다.

⚡ MY Desktop ⚡ % hyperpod start-job \ -n kubeflow \ --recipe training/nova/forge/nova_2_0/nova_lite/sft/nova_lite_2_0_p5x8_gpu_pretrain_with_datamix \ --override-parameters '{ "instance_type": "ml.p5.48xlarge", "recipes.run.name": "nova-sft-datamixing", "container": "708977205387.dkr.ecr.us-east-1.amazonaws.com/nova-fine-tune-repo:SM-HP-SFT-V2-Datamix", "recipes.run.data_s3_path": "s3://sft-data/sft_train_data.jsonl", "recipes.run.validation_data_s3_path": "3://sft-data/sft_val_data.jsonl", "recipes.run.output_s3_path": "3://sft-data/output/ }'

출력은 다음과 같습니다.

Final command: python3 /local/home/my/Downloads/sagemaker-hyperpod-cli/src/hyperpod_cli/sagemaker_hyperpod_recipes/main.py recipes=training/nova/nova_micro_p5x8_gpu_pretrain cluster_type=k8s cluster=k8s base_results_dir=/local/home/niphaded/Downloads/sagemaker-hyperpod-cli/results cluster.pullPolicy="IfNotPresent" cluster.restartPolicy="OnFailure" cluster.namespace="kubeflow" instance_type="p5d.48xlarge" container="900867814919.dkr.ecr.us-east-1.amazonaws.com/nova-fine-tune-repo:sft-datamix-rig-final" Prepared output directory at /local/home/my/Downloads/sagemaker-hyperpod-cli/results/my-sft-run-wzdyn/k8s_templates Found credentials in shared credentials file: ~/.aws/credentials Helm script created at /local/home/my/Downloads/sagemaker-hyperpod-cli/results/my-sft-run-wzdyn/niphaded-sft-run-wzdyn_launch.sh Running Helm script: /local/home/my/Downloads/sagemaker-hyperpod-cli/results/my-sft-run-wzdyn/niphaded-sft-run-wzdyn_launch.sh NAME: my-sft-run-wzdyn LAST DEPLOYED: Tue Aug 26 16:21:06 2025 NAMESPACE: kubeflow STATUS: deployed REVISION: 1 TEST SUITE: None Launcher successfully generated: /local/home/my/Downloads/sagemaker-hyperpod-cli/src/hyperpod_cli/sagemaker_hyperpod_recipes/launcher/nova/k8s_templates/SFT { "Console URL": "https://us-east-1.console.aws.amazon.com/sagemaker/home?region=us-east-1#/cluster-management/hyperpod-eks-ga-0703" }

hyperpod list-pods -n kubeflow --job-name my-sft-run-wzdyn을 사용하여 작업 상태를 볼 수 있습니다.

hyperpod list-pods -n kubeflow --job-name my-sft-run-wzdyn { "pods": [ { "PodName": "my-sft-run-wzdyn-master-0", "Namespace": "kubeflow", "Status": "Pending", "CreationTime": "2025-08-26 16:21:06+00:00" }, { "PodName": "my-sft-run-wzdyn-worker-0", "Namespace": "kubeflow", "Status": "Pending", "CreationTime": "2025-08-26 16:21:06+00:00" } ] }

또는 kubectl 명령을 직접 사용하여 찾습니다.

예:

kubectl get pods -o wide -w -n kubeflow | (head -n1 ; grep my-sft-run) NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES my-sft-run-5suc8-master-0 0/1 Completed 0 3h23m 172.31.32.132 hyperpod-i-00b3d8a1bf25714e4 <none> <none> my-sft-run-5suc8-worker-0 0/1 Completed 0 3h23m 172.31.44.196 hyperpod-i-0aa7ccfc2bd26b2a0 <none> <none> my-sft-run-5suc8-worker-1 0/1 Completed 0 3h23m 172.31.46.84 hyperpod-i-026df6406a7b7e55c <none> <none> my-sft-run-5suc8-worker-2 0/1 Completed 0 3h23m 172.31.28.68 hyperpod-i-0802e850f903f28f1 <none> <none>

전문가 팁: 작업이 실행되는 EKS 노드는 AWS UI에서 로그를 더 빨리 찾는 데 도움이 되므로 항상 -o wide 플래그를 사용해야 합니다.

작업을 모니터링하는 방법

다음과 같은 세 가지 방법 중 하나로 로그를 볼 수 있습니다.

a) CloudWatch 사용

로그는 CloudWatch 아래의 하이퍼포드 클러스터를 포함하는 Amazon Web Services 계정에서 사용할 수 있습니다. 브라우저에서 보려면 계정의 CloudWatch 홈페이지로 이동하여 클러스터 이름을 검색합니다. 예를 들어 my-hyperpod-rig라고 하는 클러스터가 있으면 로그 그룹에 다음과 같은 접두사가 붙습니다.

  • 로그 그룹: /aws/sagemaker/Clusters/my-hyperpod-rig/{UUID}

  • 로그 그룹에 있으면 - hyperpod-i-00b3d8a1bf25714e4와 같은 노드 인스턴스 ID를 사용하여 특정 로그를 찾을 수 있습니다.

    • 여기서, i-00b3d8a1bf25714e4는 훈련 작업이 실행 중인 Hyperpod 친화적인 시스템 이름을 나타냅니다. 이전 명령 kubectl get pods -o wide -w -n kubeflow | (head -n1 ; grep my-cpt-run) 출력에서 NODE 열을 캡처한 방법을 떠올려 보세요.

    • 이 경우에 '마스터' 노드 실행은 hyperpod-i-00b3d8a1bf25714e4에서 실행되었으므로 해당 문자열을 사용하여 보려는 로그 그룹을 선택합니다. SagemakerHyperPodTrainingJob/rig-group/[NODE]라고 표시된 항목을 선택합니다.

로그는 다음과 같아야 합니다.

b) CloudWatch Insights 사용

작업 이름이 유용하고 위의 모든 단계를 진행하지 않으려는 경우 /aws/sagemaker/Clusters/my-hyperpod-rig/{UUID}에서 모든 로그를 쿼리하여 개별 로그를 찾을 수 있습니다.

CPT

fields @timestamp, @message, @logStream, @log | filter @message like /(?i)Starting CPT Job/ | sort @timestamp desc | limit 100

작업 완료 시 Starting SFT Job을 SFT Job completed로 바꾸기

그런 다음 결과를 클릭하고 'Epoch 0'이라고 표시된 결과를 선택할 수 있습니다. 마스터 노드가 되기 때문입니다.

c) aws cli 사용

다음을 사용하여 로그를 테일링하도록 선택할 수 있습니다. 이렇게 하기 전에 aws --version을 사용하여 aws cli 버전을 확인하세요. 또한 터미널에서 라이브 로그를 추적하는 데 도움이 되는 이 유틸리티 스크립트를 사용하는 것이 좋습니다.

V1의 경우:

aws logs get-log-events \ --log-group-name /aws/sagemaker/YourLogGroupName \ --log-stream-name YourLogStream \ --start-from-head | jq -r '.events[].message'

V2의 경우:

aws logs tail /aws/sagemaker/YourLogGroupName \ --log-stream-name YourLogStream \ --since 10m \ --follow

d) ML 흐름 설정:

MLFlow를 통해 지표를 추적할 수 있습니다.

MLflow 앱 생성

Studio UI 사용: Studio UI를 통해 훈련 작업을 생성하는 경우 기본 MLflow 앱이 자동으로 생성되고 고급 옵션에서 기본적으로 선택됩니다.

CLI 사용: CLI를 사용하는 경우 MLflow 앱을 생성하고 이를 훈련 작업 API 요청에 대한 입력으로 전달해야 합니다.

mlflow_app_name="<enter your MLflow app name>" role_arn="<enter your role ARN>" bucket_name="<enter your bucket name>" region="<enter your region>" mlflow_app_arn=$(aws sagemaker create-mlflow-app \ --name $mlflow_app_name \ --artifact-store-uri "s3://$bucket_name" \ --role-arn $role_arn \ --region $region)

MLflow 앱에 액세스

CLI 사용: 미리 서명된 URL을 생성하여 MLflow 앱 UI에 액세스합니다.

aws sagemaker create-presigned-mlflow-app-url \ --arn $mlflow_app_arn \ --region $region \ --output text

ML 흐름이 설정되면 레시피에서 URI를 전달하거나 작업을 시작할 때 재정의를 사용할 수 있습니다. 이를 수행하는 방법에 대한 한 가지 예제는 README에서 확인할 수 있습니다.

SFT 이후 모델을 평가하려면 어떻게 해야 하나요?

사전 조건

  • 훈련 작업 manifest.json 파일의 체크포인트 S3 URI(훈련된 모델의 경우)

  • 올바른 형식으로 S3에 업로드된 평가 데이터세트

  • 평가 결과에 대한 출력 S3 경로

즉시 사용 가능한 벤치마크: 즉시 사용 가능한 벤치마크를 통해 일반 태스크의 성능을 검증합니다. 자세한 내용은 여기에서 확인하세요.

자체 데이터 사용:

또한 아래 형식으로 지정한 다음 아래에 언급된 컨테이너를 사용하여 필요한 경우 보정에 대한 로그 확률과 함께 추론 결과를 가져와 사용자 지정 데이터를 제공할 수 있습니다.

다음 구조를 사용하여 태스크당 jsonl을 생성합니다.

{ "metadata": "{key:4, category:'apple'}", "system": "arithmetic-patterns, please answer the following with no other words: ", "query": "What is the next number in this series? 1, 2, 4, 8, 16, ?", "response": "32" }

평가 작업의 추론 단계 중에 생성된 출력의 구조는 다음과 같습니다.

{ "prompt": "[{'role': 'system', 'content': 'arithmetic-patterns, please answer the following with no other words: '}, {'role': 'user', 'content': 'What is the next number in this series? 1, 2, 4, 8, 16, ?'}]", "inference": "['32']", "gold": "32", "metadata": "{key:4, category:'apple'}" }

필드 설명:

  • prompt: 모델로 전송된 형식 지정된 입력

  • 추론: 모델의 생성된 응답

  • gold: 입력 데이터세트의 예상되는 정답, 입력의 응답 필드

  • 메타데이터: 입력에서 전달되는 선택적 메타데이터

평가 구성 준비

평가 작업을 시작하는 명령. '--override-parameters'를 사용하여 레시피의 모든 항목을 수정합니다.

hyperpod start-job -n kubeflow \ --recipe evaluation/nova/nova_micro_p5_48xl_bring_your_own_dataset_eval \ --override-parameters '{ "instance_type": "p5.48xlarge", "container": "708977205387.dkr.ecr.us-east-1.amazonaws.com/nova-evaluation-repo:SM-HP-Eval-latest", "recipes.run.name": "<your-eval-job-name>", "recipes.run.model_name_or_path": "<checkpoint-s3-uri>", "recipes.run.output_s3_path": "s3://<your-bucket>/eval-results/", "recipes.run.data_s3_path": "s3://<your-bucket>/eval-data.jsonl" }'

평가 작업 시작

해당되는 이미지를 포함하는 여러 레시피에 대한 명령을 시작하는 작업.

평가 작업 시작 명령
모델 기술 Subcategory 이미지 URI Command
Nova 1.0 평가 Eval 708977205387.dkr.ecr.us-east-1.amazonaws.com/nova-evaluation-repo:SM-HP-Eval-latest hyperpod start-job \ -n kubeflow \ --recipe evaluation/nova/nova_1_0/nova_lite/nova_lite_2_0_p5_48xl_gpu_ft_eval \ --override-parameters '{ "instance_type": "ml.p5.48xlarge", "container": "708977205387.dkr.ecr.us-east-1.amazonaws.com/nova-evaluation-repo:SM-HP-Eval-latest" }'
Nova 2.0 평가 Eval 708977205387.dkr.ecr.us-east-1.amazonaws.com/nova-evaluation-repo:SM-HP-Eval-latest hyperpod start-job -n kubeflow \ --recipe evaluation/nova/nova_2_0/nova_lite/nova_lite_2_0_p5_48xl_gpu_ft_eval \ --override-parameters '{ "instance_type": "ml.p5.48xlarge", "container": "708977205387.dkr.ecr.us-east-1.amazonaws.com/nova-evaluation-repo:SM-HP-Eval-latest" }'

학습한 교훈 및 팁

  • SFT 데이터세트의 품질은 매우 중요합니다. 저품질 데이터를 필터링하기 위해 모든 노력을 기울여야 합니다. 복잡성과 정확성 측면에서 예외적으로 품질이 뛰어난 데이터의 하위 세트가 작은 경우 모델이 더 잘 수렴될 수 있도록 훈련이 끝날 때 배치하는 것이 좋습니다.

  • 데이터 혼합을 위해 텍스트 및 멀티모달(MM) 데이터세트를 모두 활용합니다. 텍스트 데이터세트를 사용하는 실험에서는 Nova의 독점 '추론 지침 준수' 범주를 추가할 때 일반 벤치마크 전반에서 성능이 크게 향상되는 것으로 나타났습니다. 사용자 데이터세트로 SFT를 수행한 후 회귀되는 일반 벤치마크에 관심이 있는 경우 데이터 혼합 전략에 이 범주를 포함하는 것이 좋습니다.

  • MM 데이터세트의 경우 실험에서는 비디오 범주를 20% 넘게 혼합에 통합하면 일반적인 벤치마크 성능을 유지 관리하는 데 도움이 되는 것으로 나타났습니다.

  • 또한 데이터 혼합을 사용하는 SFT는 학습 속도에 매우 민감하므로 연구 결과에 따라 기본 학습 속도(LoRA의 경우 1e-5, FR의 경우 5e-6)에서 미세 조정할 것을 제안합니다.

  • 마지막으로 Nova 독점 데이터세트를 혼합하면 지연 시간과 성능이 절충되므로 조사 결과에 따라 바람직한 균형 수치로 최대 50%를 혼합할 것을 제안합니다.