Trainium Kubernetes 클러스터 훈련 전 자습서 - Amazon SageMaker AI

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

Trainium Kubernetes 클러스터 훈련 전 자습서

다음 방법 중 하나를 사용하여 Trainium Kubernetes 클러스터에서 훈련 작업을 시작할 수 있습니다.

사전 조건

환경 설정을 시작하기 전에 다음을 확인해야 합니다.

  • HyperPod Trainium Kubernetes 클러스터 설정

  • 클러스터 노드에서 액세스할 수 있는 Amazon FSx 파일 시스템 또는 NFS 시스템일 수 있는 공유 스토리지 위치입니다.

  • 다음 형식 중 하나의 데이터:

    • JSON

    • JSONGZ(압축 JSON)

    • 화살표

  • (선택 사항) 사전 훈련 또는 미세 조정에 HuggingFace의 모델 가중치를 사용하는 경우 HuggingFace 토큰을 받아야 합니다. 토큰 가져오기에 대한 자세한 내용은 사용자 액세스 토큰을 참조하세요.

Trainium Kubernetes 환경 설정

Trainium Kubernetes 환경을 설정하려면 다음을 수행합니다.

  1. 데이터 세트 다운로드부터 시작하는 HuggingFace Llama3-8B 사전 훈련 자습서의 단계를 완료합니다.

  2. 모델 구성을 준비합니다. Neuron 리포지토리에서 사용할 수 있습니다. 이 자습서에서는 llama3 8b 모델 구성을 사용할 수 있습니다.

  3. 가상 환경 설정. Python 3.9 이상을 사용하고 있는지 확인합니다.

    python3 -m venv ${PWD}/venv source venv/bin/activate
  4. 종속성 설치

    • (권장) 다음 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
  5. kubectl 및 eksctl 설정

  6. Helm 설치

  7. Kubernetes 클러스터에 연결

    aws eks update-kubeconfig --region "${CLUSTER_REGION}" --name "${CLUSTER_NAME}" hyperpod connect-cluster --cluster-name "${CLUSTER_NAME}" [--region "${CLUSTER_REGION}"] [--namespace <namespace>]
  8. 컨테이너: 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

STATUSPENDING 또는 인 경우 다음 명령을 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

STATUSPENDING 또는에 있는 경우 다음 명령을 ContainerCreating실행하여 자세한 내용을 확인합니다.

kubectl describe pod name_of_pod

작업 상태가 실행 중으로 변경되면 다음 명령을 사용하여 로그를 검사할 수 있습니다.

kubectl logs name_of_pod

를 실행Completed하면가 로 전환STATUS됩니다kubectl get pods.

k8s 클러스터 구성에 대한 자세한 내용은 섹션을 참조하세요Trainium Kubernetes 클러스터 훈련 전 자습서.