기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
자습서 - Amazon SageMaker HyperPod 체크포인트 없는 사전 훈련 또는 사용자 지정 모델 미세 조정
HyperPod에서 사용자 지정 모델을 사용하여 체크포인트 없는 훈련을 실행하려면 다음 단계 시퀀스가 필요합니다.
사전 조건
환경을 설정하기 전에 다음 조건을 충족해야 합니다.
공유 스토리지 위치가 있어야 합니다. Amazon FSx 파일 시스템 또는 클러스터 노드에서 액세스할 수 있는 NFS 시스템일 수 있습니다.
-
다음 형식 중 하나의 데이터가 있어야 합니다.
JSON
JSONGZ(압축된 JSON)
ARROW
허깅 얼굴 모델 가중치를 다운로드하고 Nemo 지원 형식으로
은폐합니다. 환경 설정
Kubernetes 환경 설정
Kubernetes 환경을 설정하려면 다음을 수행합니다.
-
가상 환경을 설정합니다. 3.10 이상 및 3.14 미만의 Python을 사용하고 있는지 확인합니다.
python3 -m venv ${PWD}/venv source venv/bin/activate -
Kubernetes 클러스터에 연결합니다.
aws eks update-kubeconfig --region "${CLUSTER_REGION}" --name "${CLUSTER_NAME}" -
종속성 설치
# install SageMaker HyperPod checkpointless training. git clone git@github.com:aws/sagemaker-hyperpod-checkpointless-training.git cd sagemaker-hyperpod-checkpointless-training
체크포인트 없는 훈련 수정 지침
사용자 지정 모델에 대한 체크포인트 없는 훈련을 점진적으로 채택하려면 통합 가이드(여기서 Llama 3 70b 사전 훈련을 예로 사용)를 따르세요. 여기에는 다음이 포함됩니다.
빠른 커뮤니케이터 생성
메모리 매핑 데이터 로더(MMAP)
처리 중 및 체크포인트 없는 복구
구성 요소 1: 빠른 커뮤니케이터 생성
이는 작업자 간에 연결을 설정하는 시간을 최적화하기 위한 것입니다. 코드 변경이 필요하지 않으며 env 변수만 설정하면 됩니다.
# Enable Rootless features export HPCT_USE_ROOTLESS=1 && \ sysctl -w net.ipv4.ip_local_port_range="20000 65535" && \ hyperpodrun --nproc_per_node=8 \ ... --inprocess-restart \ ...
전체 변경 사항은 llama3 70 훈련 전 시작 작업 구성
구성 요소 2: 메모리 매핑 데이터 로더(MMAP)
MMAP는 미리 가져온 데이터 샘플을 저장하고 데이터 사전 처리를 기다릴 필요 없이 즉시 훈련을 시작할 수 있도록 캐시합니다. 기존 데이터 로더를 래핑하여 코드 변경을 최소화해야 합니다.
data_module = MMAPDataModule( data_module=base_data_module, mmap_config=CacheResumeMMAPConfig(cache_dir=…) )
구성 요소 3 및 4: 처리 중 및 체크포인트 없는 복구
이렇게 하면 훈련 프로세스를 다시 시작하거나 체크포인트에서 로드하지 않고도 장애 복구가 가능합니다. 추가 코드 변경 필요(전략 및 훈련 구성 업데이트, 기존 기본 래핑)
@HPWrapper( health_check=CudaHealthCheck(), hp_api_factory=HPAgentK8sAPIFactory(), abort_timeout=60.0, ...) def run_main( cfg, caller: Optional[HPCallWrapper] = None): ... CheckpointlessMegatronStrategy( **self.cfg.strategy, ddp=self.ddp, )
전체 변경 사항은 llama3 70 훈련 전 항목 스크립트
훈련 시작
이제 kubectl을 사용하여 체크포인트 없는 훈련을 시작할 수 있습니다.
kubectl apply -f your_job_config.yaml