기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
자습서 - Amazon SageMaker HyperPod 체크포인트리스 PEFT-LoRA Llama 3 70b
HyperPod에서 체크포인트 없는 훈련 레시피를 실행하려면 다음 단계 시퀀스가 필요합니다.
사전 조건
환경을 설정하기 전에 다음 조건을 충족해야 합니다.
공유 스토리지 위치가 있어야 합니다. Amazon FSx 파일 시스템 또는 클러스터 노드에서 액세스할 수 있는 NFS 시스템일 수 있습니다.
-
다음 형식 중 하나의 데이터가 있어야 합니다.
JSON
JSONGZ(압축된 JSON)
ARROW
소스
에서 Llama 70B 또는 GPT-OSS 120B에 대해 지원되는 체크포인트 없는 훈련 레시피를 선택합니다. 허깅 얼굴 모델 가중치를 다운로드하고 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}" -
다음 방법 중 하나를 사용하여 종속성을 설치합니다.
-
방법 1: SageMaker HyperPod 레시피 방법:
# install SageMaker HyperPod Recipes. git clone --recursive git@github.com:aws/sagemaker-hyperpod-recipes.git cd sagemaker-hyperpod-recipes pip3 install -r requirements.txt -
방법 2: 미리 정의된 작업 yaml 메서드를 사용한 kubectl
# install SageMaker HyperPod checkpointless training. git clone git@github.com:aws/sagemaker-hyperpod-checkpointless-training.git cd sagemaker-hyperpod-checkpointless-training
-
이제 NeMo 스타일 시작 관리자 또는 kubectl을 사용하여 체크포인트 없는 훈련 레시피를 시작할 수 있습니다.
방법 1: 레시피 시작 관리자를 사용하여 훈련 작업 시작
또는 SageMaker HyperPod 레시피를 사용하여 훈련 작업을 제출할 수 있습니다. 레시피를 사용하려면 k8s.yaml, config.yaml을 업데이트하고 시작 스크립트를 실행해야 합니다.
-
launcher_scripts/llama/run_checkpointless_llama3_70b_lora.sh업데이트딥 러닝 컨테이너. 체크포인트 없는 훈련 컨테이너의 최신 릴리스를 찾으려면 체크포인트 없는 훈련 릴리스 정보를 참조하세요.
#!/bin/bash SAGEMAKER_TRAINING_LAUNCHER_DIR=${SAGEMAKER_TRAINING_LAUNCHER_DIR:-"$(pwd)"} TRAIN_DIR="${TRAIN_DIR}" VAL_DIR="${VAL_DIR}" EXP_DIR="${EXP_DIR}" LOG_DIR="${LOG_DIR}" CONTAINER_MOUNT="/data" CONTAINER="${CONTAINER}" MODEL_NAME_OR_PATH="${MODEL_NAME_OR_PATH}" HYDRA_FULL_ERROR=1 python3 "${SAGEMAKER_TRAINING_LAUNCHER_DIR}/main.py" \ recipes=fine-tuning/llama/checkpointless_llama3_70b_lora \ recipes.dataset.dataset_path="${TRAIN_DIR}" \ recipes.exp_manager.exp_dir="${EXP_DIR}" \ recipes.log_dir="${LOG_DIR}" \ recipes.resume.restore_config.path="${MODEL_NAME_OR_PATH}" \ base_results_dir="${SAGEMAKER_TRAINING_LAUNCHER_DIR}/results" \ git.use_default=false \ cluster=k8s \ cluster_type=k8s \ container="${CONTAINER}" \ +cluster.hostNetwork=true \ +cluster.persistent_volume_claims.0.claimName=fsx-claim \ +cluster.persistent_volume_claims.0.mountPath="${CONTAINER_MOUNT}" \ +recipes.dataset.val_dataset_path="${VAL_DIR}" \ ++recipes.callbacks.3.test_fault_config.fault_prob_between_lock=1 \ -
훈련 작업 시작
bash launcher_scripts/llama/run_checkpointless_llama3_70b_lora.sh -
훈련 작업을 제출한 후 다음 명령을 사용하여 성공적으로 제출했는지 확인할 수 있습니다.
kubectl get pods NAME READY STATUS RESTARTS AGE llama-3-70b-worker-0 0/1 running 0 36s -
STATUS가 PENDING 또는 ContainerCreating 상태인 경우 다음 명령을 실행하여 자세한 내용을 확인합니다.
kubectl describe pod <name of pod> -
작업 STATUS가 Running으로 변경되면 다음 명령을 사용하여 로그를 검사할 수 있습니다.
kubectl logs <name of pod>kubectl get 포드를 실행하면 상태가 완료됨으로 바뀝니다.
방법 2: 미리 정의된 yaml을 사용하여 kubectl로 훈련 작업 시작
또 다른 옵션은 미리 정의된 작업 yaml을 사용하여 kubectl을 통해 교육을 시작하는 것입니다.
-
examples/llama3/launch/peft_llama3_70b_checkpointless_p5.yaml업데이트image: 딥 러닝 컨테이너. 체크포인트 없는 훈련 컨테이너의 최신 릴리스를 찾으려면 체크포인트 없는 훈련 릴리스 정보를 참조하세요.resume.restore_config.path=<path_to_pretrained_weights>: 사전 조건 단계에서 Nemo 형식으로 사전 훈련된 모델 가중치를 다운로드한 경로입니다.dataset.dataset_path=<path_to_dataset>: 공유 스토리지에 저장된 데이터 세트의 경로
-
에서 kubectl을 사용하여 작업 제출
peft_llama3_70b_checkpointless_p5.yamlkubectl apply -f examples/llama3/launch/peft_llama3_70b_checkpointless_p5.yaml -
훈련 작업을 제출한 후 다음 명령을 사용하여 성공적으로 제출했는지 확인할 수 있습니다.
kubectl get pods NAME READY STATUS RESTARTS AGE llama3-70b-lora-checkpointless-worker-0 0/1 running 0 36s -
STATUS가 PENDING 또는 ContainerCreating 상태인 경우 다음 명령을 실행하여 자세한 내용을 확인합니다.
kubectl describe pod <name of pod> -
작업 STATUS가 Running으로 변경되면 다음 명령을 사용하여 로그를 검사할 수 있습니다.
kubectl logs <name of pod>kubectl get 포드를 실행하면 상태가 완료됨으로 바뀝니다.