View a markdown version of this page

SageMaker HyperPod에서 Nova 2.0에 대한 지속적 사전 학습(CPT) - Amazon Nova

SageMaker HyperPod에서 Nova 2.0에 대한 지속적 사전 학습(CPT)

Amazon Nova Lite 2.0은 Nova Lite 1.0보다 더 크고 다양한 데이터세트에서 훈련된 모델입니다. Nova Lite 2.0은 더 큰 모델이지만 Nova Lite 1.0보다 더 빠른 추론을 제공하는 동시에, 향상된 추론 기능, 더 긴 컨텍스트 길이 및 향상된 다국어 성능을 제공합니다.

Nova 2.0 Lite에서 CPT를 사용하면 도메인별 데이터로 이러한 고급 기능을 확장하고, 모델이 우수한 추론 및 분석 능력을 유지하면서 전문 분야에 대한 심층적인 전문 지식을 개발할 수 있습니다.

다음은 CPT에 대한 레시피 샘플입니다. 이 레시피 및 기타 레시피는 GitHub의 SageMaker HyperPod recipes 리포지토리에서 찾을 수 있습니다.

# Note: # This recipe can run on p5.48xlarge # Run config run: name: "my-cpt-run" # A descriptive name for your training job model_type: "amazon.nova-2-lite-v1:0:256k" # Model variant specification, do not change model_name_or_path: "nova-lite-2/prod" # Base model path, do not change replicas: 8 # Number of compute instances for training, allowed values are 4, 8, 16, 32 data_s3_path: "" # Customer data paths validation_data_s3_path: "" # Customer validation data paths output_s3_path: "" # Output artifact path, SageMaker HyperPod job-specific configuration - not compatible with standard SageMaker Training Jobs mlflow_tracking_uri: "" # Required for MLFlow mlflow_experiment_name: "my-cpt-experiment" # Optional for MLFlow. Note: leave this field non-empty mlflow_run_name: "my-cpt-run" # Optional for MLFlow. Note: leave this field non-empty ## Training specific configs training_config: task_type: cpt max_length: 8192 # Maximum context window size (tokens) global_batch_size: 256 # Global batch size, allowed values are 32, 64, 128, 256. trainer: max_steps: 10 # The number of training steps to run total val_check_interval: 10 # The number of steps between running validation. Integer count or float percentage limit_val_batches: 2 # Batches of the validation set to use each trigger 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 optim: optimizer: adam 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 adam_beta1: 0.9 # Beta1 for Adam optimizer adam_beta2: 0.95 # Beta2 for Adam optimizer sched: warmup_steps: 10 # Learning rate warmup steps constant_steps: 0 # Steps at constant learning rate min_lr: 1e-6 # Minimum learning rate, must be lower than lr

SageMaker HyperPod에서 지속적인 사전 훈련 작업 시작하기

데이터 준비

데이터 형식, 지원되는 기능, 제약 조건 및 CPT 훈련 데이터 준비 모범 사례에 대한 자세한 내용은 CPT on Amazon Nova 2용 데이터 준비하기 섹션을 참조하세요.

데이터 업로드

훈련 및 검증 데이터세트를 S3 버킷에 업로드합니다. 레시피의 run 블록에서 다음 위치를 지정합니다.

## Run config run: ... data_s3_path: "s3://<bucket-name>/<training-directory>/<training-file>.jsonl" validation_data_s3_path: "s3://<bucket-name>/<validation-directory>/<validation-file>.jsonl"
참고

<bucket-name>, <training-directory>, <validation-directory>, <training-file>, <validation-file>을 실제 S3 경로로 바꿉니다.

구성 정의

run 블록의 model_typemodel_name_or_path 필드를 사용하여 기본 모델을 정의합니다.

## Run config run: ... model_type: amazon.nova-2-lite-v1:0:256k model_name_or_path: nova-lite-2/prod ...

CPT 파라미터 조정

CPT를 통해 미세 조정할 수 있는 파라미터는 다음과 같습니다.

실행 구성

  • name: 훈련 작업을 설명하는 이름입니다. AWS Management Console에서 작업을 식별하는 데 도움이 됩니다.

  • model_type: 사용할 Amazon Nova 모델 변형입니다. 사용할 수 있는 옵션은 amazon.nova-2-lite-v1:0:256k입니다.

  • model_name_or_path: 훈련에 사용할 기본 모델의 경로입니다. 사용 가능한 옵션은 nova-lite-2/prod 또는 사후 훈련 체크포인트의 S3 경로(s3://customer-escrow-bucket-unique_id/training_run_name)입니다.

  • replicas: 분산 훈련에 사용할 컴퓨팅 인스턴스의 수입니다. 사용 가능한 값은 선택한 모델에 따라 다릅니다. Amazon Nova Lite 2.0은 4개, 8개, 16개 또는 32개의 복제본을 지원합니다.

  • data_s3_path: 훈련 데이터세트(JSONL 파일)의 S3 위치입니다. 이 파일은 클러스터와 동일한 AWS 계정 및 리전에 있어야 합니다. 제공된 모든 S3 위치는 동일한 계정 및 리전에 있어야 합니다.

  • validation_data_s3_path: (선택 사항) 검증 데이터세트(JSONL 파일)의 S3 위치입니다. 이 파일은 클러스터와 동일한 계정 및 리전에 있어야 합니다. 제공된 모든 S3 위치는 동일한 계정 및 리전에 있어야 합니다.

  • output_s3_path: 매니페스트 및 TensorBoard 로그가 저장되는 S3 위치입니다. 제공된 모든 S3 위치는 동일한 AWS 계정 및 AWS 리전에 있어야 합니다.

  • mlflow_tracking_uri: MLFlow 로깅에 사용할 MLFlow 앱의 ARN

  • mlflow_experiment_name: MLFlow 실험 이름

  • mlflow_run_name: MLFlow 실행 이름

훈련 구성

  • max_length: 토큰 단위의 최대 시퀀스 길이입니다. 이는 훈련을 위한 컨텍스트 창 크기를 결정합니다. CPT에 대해 지원되는 최대 값은 8,192개의 토큰입니다.

    시퀀스가 길어지면 훈련 효율성이 향상되지만 메모리 요구 사항이 증가합니다. max_length 파라미터를 데이터 분포와 일치시키는 것이 좋습니다.

  • global_batch_size: 모든 디바이스 및 워커에서 한 번의 순방향 또는 역방향 패스 동안 함께 처리되는 전체 훈련 샘플 수입니다.

    이 값은 디바이스당 배치 크기와 디바이스 수를 곱한 값입니다. 이는 훈련의 안정성과 처리량에 영향을 미칩니다. 메모리 내에서 적절한 배치 크기로 시작하여 점진적으로 스케일 업하는 것이 좋습니다. 도메인별 데이터의 경우 배치 크기가 크면 그라디언트가 과도하게 평활화될 수 있습니다.

트레이너 설정

  • max_steps: 실행할 훈련 단계 수입니다. 각 단계는 global_batch_size개의 요소를 사용하여 모델을 훈련합니다.

모델 설정

  • hidden_dropout: 숨겨진 상태 출력이 삭제될 확률입니다. 작은 데이터세트에서 과적합을 줄이려면 이 값을 약 0.0~0.2 늘립니다. 유효한 값은 0~1입니다.

  • attention_dropout: 어텐션 가중치가 삭제될 확률입니다. 이 파라미터는 일반화에 도움이 될 수 있습니다. 유효한 값은 0~1입니다.

옵티마이저 구성

  • lr: 최적화 동안 단계 크기를 제어하는 학습률입니다. 성능 향상을 위해 1e-6에서 1e-4 사이의 값을 권장합니다. 유효한 값은 0~1입니다.

  • name: 옵티마이저 알고리즘입니다. 현재 distributed_fused_adam만 지원됩니다.

  • weight_decay: L2 정규화 강도입니다. 값이 높을수록(0.01에서 0.1 사이) 정규화가 증가합니다.

  • warmup_steps: 학습률을 점진적으로 높이는 단계 수입니다. 이는 훈련의 안정성을 향상시킵니다. 유효한 값은 1~20입니다.

  • min_lr: 감소 종료 시의 최소 학습률입니다. 유효한 값은 0~1이지만 설정된 학습률보다 작아야 합니다.