

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

# 자습서 - Amazon SageMaker HyperPod 체크포인트리스 PEFT-LoRA GPT OSS 120b
<a name="sagemaker-eks-checkpointless-recipes-peft"></a>

HyperPod에서 체크포인트 없는 훈련 레시피를 실행하려면 다음 단계 시퀀스가 필요합니다.

## 사전 조건
<a name="sagemaker-eks-checkpointless-recipes-peft-prereqs"></a>

환경을 설정하기 전에 다음 조건을 충족해야 합니다.
+ [ Amazon SageMaker HyperPod에서 Amazon EKS 지원 활성화](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-hyperpod-eks-prerequisites.html)
+ [ HyperPod 훈련 연산자 설정(v1.2 이상)](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-eks-operator.html)
+ 공유 스토리지 위치가 있어야 합니다. Amazon FSx 파일 시스템 또는 클러스터 노드에서 액세스할 수 있는 NFS 시스템일 수 있습니다.
+ 다음 형식 중 하나의 데이터가 있어야 합니다.
  + JSON
  + JSONGZ(압축된 JSON)
  + ARROW
+ [소스](https://github.com/aws/sagemaker-hyperpod-recipes/tree/main/recipes_collection)에서 Llama 70B 또는 GPT-OSS 120B에 대해 지원되는 체크포인트 없는 훈련 레시피를 선택합니다.
+ [ 허깅 얼굴 모델 가중치를 다운로드](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-eks-checkpointless-release-notes.html)하고 [ Nemo 지원 형식으로](https://docs.nvidia.com/nemo-framework/user-guide/latest/nemo-2.0/features/hf-integration.html#importing-from-hugging-face) 은폐합니다.
+ 환경 설정

## Kubernetes 환경 설정
<a name="sagemaker-eks-checkpointless-recipes-peft-kubernetes"></a>

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

1. 가상 환경을 설정합니다. 3.10 이상 및 < 3.14 이상의 Python을 사용하고 있는지 확인합니다.

   ```
   python3 -m venv ${PWD}/venv
   source venv/bin/activate
   ```

1. [ kubectl 및 eksctl 설정](https://docs.aws.amazon.com/eks/latest/userguide/install-kubectl.html)

1. [ Helm 설치](https://helm.sh/docs/intro/install/)

1. 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
     ```
   + 미리 정의된 작업 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을 사용하여 체크포인트 없는 훈련 레시피를 시작할 수 있습니다.

## 레시피 런처를 사용하여 훈련 작업 시작
<a name="sagemaker-eks-checkpointless-recipes-peft-recipes-launcher"></a>

또는 SageMaker HyperPod 레시피를 사용하여 훈련 작업을 제출할 수 있습니다. 레시피를 사용하려면 k8s.yaml, config.yaml을 업데이트하고 시작 스크립트를 실행해야 합니다.

1. `launcher_scripts/gpt_oss/run_checkpointless_gpt_oss_120b_lora.sh` 업데이트

   your\$1contrainer: 딥 러닝 컨테이너. 체크포인트 없는 훈련 컨테이너의 최신 릴리스를 찾으려면 체크[포인트 없는 훈련 릴리스 정보를](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-eks-checkpointless-release-notes.html) 참조하세요.

   ```
   #!/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/gpt_oss/checkpointless_gpt_oss_120b_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 \
   ```

1. 훈련 작업 시작

   ```
   bash launcher_scripts/gpt_oss/run_checkpointless_gpt_oss_120b_lora.sh
   ```

훈련 작업을 제출한 후 다음 명령을 사용하여 성공적으로 제출했는지 확인할 수 있습니다.

```
kubectl get pods

NAME                             READY   STATUS             RESTARTS        AGE
gpt-oss-120b-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 포드를 실행하면 상태가 완료됨으로 바뀝니다.

## 미리 정의된 yaml을 사용하여 kubectl로 훈련 작업 시작
<a name="sagemaker-eks-checkpointless-recipes-peft-kubectl"></a>

또 다른 옵션은 미리 정의된 작업 yaml을 사용하여 kubectl을 통해 교육을 시작하는 것입니다.

1. examples/gpt\$1oss/launch/peft\$1gpt\$1oss\$1120b\$1checkpointless\$1p5.yaml 업데이트
   + 이미지: 딥 러닝 컨테이너. 체크포인트 없는 훈련 컨테이너의 최신 릴리스를 찾으려면 체크[포인트 없는 훈련 릴리스 정보를](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-eks-checkpointless-release-notes.html) 참조하세요.
   + resume.restore\$1config.path=<path\$1to\$1pretrained\$1weights>: [ 사전 조건](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-eks-checkpointless-recipes-peft.html#sagemaker-eks-checkpointless-recipes-peft-prereqs) 단계에서 Nemo 형식으로 사전 훈련된 모델 가중치를 다운로드한 경로입니다.
   + dataset.dataset\$1path=<path\$1to\$1dataset>: 공유 스토리지에 저장된 데이터 세트의 경로

1. peft\$1gpt\$1oss\$1120b\$1checkpointless\$1p5.yaml과 함께 kubectl을 사용하여 작업 제출

   ```
   kubectl apply -f examples/gpt_oss/launch/peft_gpt_oss_120b_checkpointless_p5.yaml
   ```

훈련 작업을 제출한 후 다음 명령을 사용하여 성공적으로 제출했는지 확인할 수 있습니다.

```
kubectl get pods

NAME                                             READY   STATUS             RESTARTS        AGE
gpt-120b-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 포드를 실행하면 상태가 완료됨으로 바뀝니다.