일반 구성 - Amazon SageMaker AI

일반 구성

config.yaml 파일은 훈련 레시피와 클러스터를 지정합니다. 여기에는 훈련 작업에 대한 환경 변수와 같은 런타임 구성도 포함됩니다.

defaults: - _self_ - cluster: slurm - recipes: training/llama/hf_llama3_8b_seq8192_gpu instance_type: p5.48xlarge git: repo_url_or_path: null branch: null commit: null entry_script: null token: null env_vars: NCCL_DEBUG: WARN

config.yaml에서 다음 파라미터를 수정할 수 있습니다.

  1. defaults: 기본 클러스터 또는 기본 레시피와 같은 기본 설정을 지정합니다.

  2. instance_type: 사용 중인 인스턴스 유형과 동일하게 Amazon EC2 인스턴스 유형을 수정합니다.

  3. git: 훈련 작업을 위한 SageMaker HyperPod 레시피 어댑터 리포지토리의 위치를 지정합니다.

  4. env_vars: 런타임 훈련 작업에 전달할 환경 변수를 지정할 수 있습니다. 예를 들어 NCCL_DEBUG 환경 변수를 지정하여 NCCL의 로깅 수준을 조정할 수 있습니다.

레시피는 훈련 작업 아키텍처를 정의하는 핵심 구성입니다. 이 파일에는 다음과 같이 훈련 작업에 중요한 정보가 많이 포함되어 있습니다.

  • 모델 병렬화 사용 여부

  • 데이터세트의 소스

  • 혼합 정밀도 훈련

  • 체크포인트 관련 구성

레시피를 있는 그대로 사용할 수 있습니다. 다음 정보를 사용하여 수정할 수도 있습니다.

run

다음은 훈련 작업을 실행하기 위한 기본 실행 정보입니다.

run: name: llama-8b results_dir: ${base_results_dir}/${.name} time_limit: "6-00:00:00" model_type: hf
  1. name: 구성 파일에서 훈련 작업의 이름을 지정합니다.

  2. results_dir: 훈련 작업의 결과가 저장되는 디렉터리를 지정할 수 있습니다.

  3. time_limit: 훈련 작업에 최대 훈련 시간을 설정하여 하드웨어 리소스를 너무 오래 차지하지 않도록 할 수 있습니다.

  4. model_type: 사용 중인 모델 유형을 지정할 수 있습니다. 예를 들어 모델이 HuggingFace에서 가져온 것이면 hf라고 지정할 수 있습니다.

exp_manager

exp_manager는 실험을 구성합니다. exp_manager를 사용하면 출력 디렉터리 또는 체크포인트 설정과 같은 필드를 지정할 수 있습니다. 다음은 exp_manager를 구성하는 방법의 예입니다.

exp_manager: exp_dir: null name: experiment create_tensorboard_logger: True
  1. exp_dir: 실험 디렉터리에는 훈련 작업에 대한 표준 출력 및 표준 오류 파일이 포함되어 있습니다. 기본적으로 현재 디렉터리를 사용합니다.

  2. name: exp_dir에서 실험을 식별하는 데 사용되는 실험 이름입니다.

  3. create_tensorboard_logger: TensorBoard 로거를 활성화하거나 비활성화하려면 True 또는 False를 지정합니다.

체크포인트

다음은 지원하는 세 가지 유형의 체크포인트입니다.

  • 자동 체크포인트 지정

  • 수동 체크포인트 지정

  • 전체 체크포인트 지정

자동 체크포인트 지정

SageMaker HyperPod 레시피 어댑터에 의해 자동으로 관리되는 체크포인트를 저장하거나 로드하는 경우 auto_checkpoint를 활성화할 수 있습니다. auto_checkpoint를 활성화하려면 enabledTrue로 설정합니다. 훈련 및 미세 조정 모두에 자동 체크포인트 지정을 사용할 수 있습니다. 공유 파일 시스템과 Amazon S3 모두에 자동 체크포인트 지정을 사용할 수 있습니다.

exp_manager checkpoint_dir: ${recipes.exp_manager.exp_dir}/checkpoints/ auto_checkpoint: enabled: True

자동 체크포인트가 자동으로 계산된 최적의 저장 간격에 따라 비동기적으로 local_state_dict를 저장하고 있습니다.

참고

이 체크포인트 지정 모드에서는 자동 저장된 체크포인트 지정이 훈련 실행 간 리샤딩을 지원하지 않습니다. 최신 자동 저장된 체크포인트에서 재개하려면 동일한 샤드 수준을 유지해야 합니다. 자동 재개를 위해 추가 정보를 지정할 필요가 없습니다.

수동 체크포인트 지정

중간 체크포인트를 shared_state_dict에 비동기적으로 저장하도록 checkpoint_callback_params을 수정할 수 있습니다. 예를 들어 다음 구성을 지정하여 10단계마다 샤딩된 체크포인트 지정을 활성화하고 최신 체크포인트 3개를 유지할 수 있습니다.

샤딩된 체크포인트 지정을 사용하면 훈련 실행 간에 샤드 수준을 변경하고 resume_from_checkpoint를 설정하여 체크포인트를 로드할 수 있습니다.

참고
  • PEFT 미세 조정인 경우 샤딩된 체크포인트 지정은 Amazon S3를 지원하지 않습니다.

  • 자동 및 수동 체크포인트 지정은 상호 배타적입니다.

  • FSDP 샤드 수준 및 복제 수준 변경만 허용됩니다.

exp_manager: checkpoint_callback_params: # Set save_top_k = 0 to disable sharded checkpointing save_top_k: 3 every_n_train_steps: 10 monitor: "step" mode: "max" save_last: False resume_from_checkpoint: ${recipes.exp_manager.exp_dir}/checkpoints/

체크포인트 지정에 대한 자세한 내용은 SMP를 사용한 체크포인트 지정 섹션을 참조하세요.

전체 체크포인트 지정

내보낸 full_state_dict 체크포인트는 추론 또는 미세 조정에 사용할 수 있습니다. hf_model_name_or_path를 통해 전체 체크포인트를 로드할 수 있습니다. 이 모드에서는 모델 가중치만 저장됩니다.

full_state_dict 모델을 내보내려면 다음 파라미터를 설정할 수 있습니다.

참고

현재 Amazon S3 체크포인트 지정에는 전체 체크포인트 지정이 지원되지 않습니다. 전체 체크포인트 지정을 활성화하는 경우 exp_manager.checkpoint_dir에 대한 S3 경로를 설정할 수 없습니다. 그러나 exp_manager.checkpoint_dir를 Amazon S3 경로로 설정하는 동안 exp_manager.export_full_model.final_export_dir를 로컬 파일 시스템의 특정 디렉터리로 설정할 수 있습니다.

exp_manager: export_full_model: # Set every_n_train_steps = 0 to disable full checkpointing every_n_train_steps: 0 save_last: True final_export_dir : null

모델

모델 아키텍처 및 훈련 프로세스의 다양한 측면을 정의합니다. 여기에는 모델 병렬화, 정밀도 및 데이터 처리에 대한 설정이 포함됩니다. 다음은 모델 섹션에서 구성할 수 있는 주요 구성 요소입니다.

모델 병렬화

레시피를 지정한 후 훈련 중인 모델을 정의합니다. 모델 병렬화를 정의할 수도 있습니다. 예를 들어 tensor_model_parallel_degree를 정의할 수 있습니다. FP8 정밀도를 사용한 훈련과 같은 다른 특성을 활성화할 수 있습니다. 예를 들어 텐서 병렬화 및 컨텍스트 병렬화로 모델을 훈련할 수 있습니다.

model: model_type: llama_v3 # Base configs train_batch_size: 4 val_batch_size: 1 seed: 12345 grad_clip: 1.0 # Model parallelism tensor_model_parallel_degree: 4 expert_model_parallel_degree: 1 context_parallel_degree: 2

다양한 유형의 모델 병렬화 기법을 더 잘 이해하려면 다음 접근 방식을 참조할 수 있습니다.

FP8

FP8(8비트 부동 소수점 정밀도)을 활성화하려면 다음 예시에서 FP8 관련 구성을 지정할 수 있습니다.

model: # FP8 config fp8: True fp8_amax_history_len: 1024 fp8_amax_compute_algo: max

FP8 데이터 형식은 현재 P5 인스턴스 유형에서만 지원된다는 점에 유의해야 합니다. P4와 같은 이전 인스턴스 유형을 사용하는 경우 모델 훈련 프로세스에 대해 FP8 특성을 비활성화하세요. FP8에 대한 자세한 내용은 혼합 정밀도 훈련 섹션을 참조하세요.

data

데이터 아래에 데이터 경로를 추가하여 훈련 작업에 대한 사용자 지정 데이터세트를 지정할 수 있습니다. 시스템의 데이터 모듈은 다음 데이터 형식을 지원합니다.

  1. JSON

  2. JSONGZ(압축된 JSON)

  3. ARROW

그러나 사용자는 사전 토큰화된 자체 데이터세트를 준비할 책임이 있습니다. 특정 요구 사항이 있는 고급 사용자인 경우 사용자 지정 데이터 모듈을 구현하고 통합하는 옵션도 있습니다. HuggingFace 데이터세트에 대한 자세한 내용은 Datasets를 참조하세요.

model: data: train_dir: /path/to/your/train/data val_dir: /path/to/your/val/data dataset_type: hf use_synthetic_data: False

모델을 훈련하는 방법을 지정할 수 있습니다. 기본적으로 레시피는 미세 조정 대신 사전 훈련을 사용합니다. 다음 예시에서는 LoRA(낮은 순위 적응)를 사용하여 미세 조정 작업을 실행하도록 레시피를 구성합니다.

model: # Fine tuning config do_finetune: True # The path to resume from, needs to be HF compatible hf_model_name_or_path: null hf_access_token: null # PEFT config peft: peft_type: lora rank: 32 alpha: 16 dropout: 0.1

레시피에 대한 자세한 내용은 SageMaker HyperPod recipes를 참조하세요.