기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
Trainium Kubernetes 클러스터 훈련 전 자습서
다음 방법 중 하나를 사용하여 Trainium Kubernetes 클러스터에서 훈련 작업을 시작할 수 있습니다.
-
(권장) HyperPod 명령줄 도구
-
NeMo 스타일 시작 관리자
사전 조건
환경 설정을 시작하기 전에 다음을 확인해야 합니다.
-
HyperPod Trainium Kubernetes 클러스터 설정
-
클러스터 노드에서 액세스할 수 있는 Amazon FSx 파일 시스템 또는 NFS 시스템일 수 있는 공유 스토리지 위치입니다.
-
다음 형식 중 하나의 데이터:
-
JSON
-
JSONGZ(압축 JSON)
-
화살표
-
-
(선택 사항) 사전 훈련 또는 미세 조정에 HuggingFace의 모델 가중치를 사용하는 경우 HuggingFace 토큰을 받아야 합니다. 토큰 가져오기에 대한 자세한 내용은 사용자 액세스 토큰을 참조하세요
.
Trainium Kubernetes 환경 설정
Trainium Kubernetes 환경을 설정하려면 다음을 수행합니다.
-
데이터 세트 다운로드부터 시작하는 HuggingFace Llama3-8B 사전 훈련
자습서의 단계를 완료합니다. -
모델 구성을 준비합니다. Neuron 리포지토리에서 사용할 수 있습니다. 이 자습서에서는 llama3 8b 모델 구성을 사용할 수 있습니다.
-
가상 환경 설정. Python 3.9 이상을 사용하고 있는지 확인합니다.
python3 -m venv ${PWD}/venv source venv/bin/activate
-
종속성 설치
-
(권장) 다음 HyperPod 명령줄 도구 사용
# install HyperPod command line tools git clone https://github.com/aws/sagemaker-hyperpod-cli cd sagemaker-hyperpod-cli pip3 install .
-
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
-
-
Kubernetes 클러스터에 연결
aws eks update-kubeconfig --region "${CLUSTER_REGION}" --name "${CLUSTER_NAME}" hyperpod connect-cluster --cluster-name "${CLUSTER_NAME}" [--region "${CLUSTER_REGION}"] [--namespace <namespace>]
-
컨테이너: Neuron 컨테이너
SageMaker HyperPod CLI를 사용하여 훈련 작업 시작
SageMaker HyperPod 명령줄 인터페이스(CLI) 도구를 사용하여 구성과 함께 훈련 작업을 제출하는 것이 좋습니다. 다음 예시에서는 hf_llama3_8b_seq8k_trn1x4_pretrain
Trainium 모델에 대한 훈련 작업을 제출합니다.
-
your_neuron_container
: Neuron 컨테이너입니다. -
your_model_config
: 환경 설정 섹션의 모델 구성 -
(선택 사항) 다음 키-값 페어를 설정하여 HuggingFace에서 사전 훈련된 가중치가 필요한 경우 HuggingFace 토큰을 제공할 수 있습니다.
"recipes.model.hf_access_token": "
<your_hf_token>
"
hyperpod start-job --recipe training/llama/hf_llama3_8b_seq8k_trn1x4_pretrain \ --persistent-volume-claims fsx-claim:data \ --override-parameters \ '{ "cluster": "k8s", "cluster_type": "k8s", "container": "
<your_neuron_contrainer>
", "recipes.run.name": "hf-llama3", "recipes.run.compile": 0, "recipes.model.model_config": "<your_model_config>
", "instance_type": "trn1.32xlarge", "recipes.data.train_dir": "<your_train_data_dir>
" }'
훈련 작업을 제출한 후 다음 명령을 사용하여 성공적으로 제출했는지 확인할 수 있습니다.
kubectl get pods NAME READY STATUS RESTARTS AGE hf-llama3-<your-alias>-worker-0 0/1 running 0 36s
STATUS
가 PENDING
또는 인 경우 다음 명령을 ContainerCreating
실행하여 자세한 내용을 확인합니다.
kubectl describe pod
name_of_pod
작업이 로 STATUS
변경되면 다음 명령을 사용하여 로그를 검사Running
할 수 있습니다.
kubectl logs
name_of_pod
를 실행Completed
하면가 로 전환STATUS
됩니다kubectl get pods
.
레시피 시작 관리자를 사용하여 훈련 작업 시작
또는 SageMaker HyperPod 레시피를 사용하여 훈련 작업을 제출합니다. 레시피를 사용하여 훈련 작업을 제출하려면 k8s.yaml
및를 업데이트합니다config.yaml
. 모델의 bash 스크립트를 실행하여 시작합니다.
-
에서 persistent_volume_claims를
k8s.yaml
업데이트하여 Amazon FSx 클레임을 컴퓨팅 노드의 /data 디렉터리에 탑재합니다.persistent_volume_claims: - claimName: fsx-claim mountPath: data
-
launcher_scripts/llama/run_hf_llama3_8b_seq8k_trn1x4_pretrain.sh 업데이트
-
your_neuron_contrainer
: 환경 설정 섹션의 컨테이너 -
your_model_config
: 환경 설정 섹션의 모델 구성
(선택 사항) 다음 키-값 페어를 설정하여 HuggingFace에서 사전 훈련된 가중치가 필요한 경우 HuggingFace 토큰을 제공할 수 있습니다.
recipes.model.hf_access_token=
<your_hf_token>
#!/bin/bash #Users should set up their cluster type in /recipes_collection/config.yaml IMAGE="
<your_neuron_contrainer>
" MODEL_CONFIG="<your_model_config>
" SAGEMAKER_TRAINING_LAUNCHER_DIR=${SAGEMAKER_TRAINING_LAUNCHER_DIR:-"$(pwd)"} TRAIN_DIR="<your_training_data_dir>
" # Location of training dataset VAL_DIR="<your_val_data_dir>
" # Location of talidation dataset HYDRA_FULL_ERROR=1 python3 "${SAGEMAKER_TRAINING_LAUNCHER_DIR}/main.py" \ recipes=training/llama/hf_llama3_8b_seq8k_trn1x4_pretrain \ base_results_dir="${SAGEMAKER_TRAINING_LAUNCHER_DIR}/results" \ recipes.run.name="hf-llama3-8b" \ instance_type=trn1.32xlarge \ recipes.model.model_config="$MODEL_CONFIG" \ cluster=k8s \ cluster_type=k8s \ container="${IMAGE}" \ recipes.data.train_dir=$TRAIN_DIR \ recipes.data.val_dir=$VAL_DIR -
-
작업 시작
bash launcher_scripts/llama/run_hf_llama3_8b_seq8k_trn1x4_pretrain.sh
훈련 작업을 제출한 후 다음 명령을 사용하여 성공적으로 제출했는지 확인할 수 있습니다.
kubectl get pods NAME READY STATUS RESTARTS AGE hf-llama3-<your-alias>-worker-0 0/1 running 0 36s
STATUS
가 PENDING
또는에 있는 경우 다음 명령을 ContainerCreating
실행하여 자세한 내용을 확인합니다.
kubectl describe pod
name_of_pod
작업 상태가 실행 중으로 변경되면 다음 명령을 사용하여 로그를 검사할 수 있습니다.
kubectl logs
name_of_pod
를 실행Completed
하면가 로 전환STATUS
됩니다kubectl get pods
.
k8s 클러스터 구성에 대한 자세한 내용은 섹션을 참조하세요Trainium Kubernetes 클러스터 훈련 전 자습서.