

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

# 자습서 - Amazon SageMaker HyperPod 체크포인트 없는 사전 훈련 또는 사용자 지정 모델 미세 조정
<a name="sagemaker-eks-checkpointless-recipes-custom"></a>

HyperPod에서 사용자 지정 모델을 사용하여 체크포인트 없는 훈련을 실행하려면 다음 단계 시퀀스가 필요합니다.

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

환경을 설정하기 전에 다음 조건을 충족해야 합니다.
+ [ Amazon SageMaker HyperPod에서 Amazon EKS 지원 활성화](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-hyperpod-eks-prerequisites.html)
+ [ HyperPod 훈련 연산자 설정(v1.2\$1)](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-eks-operator.html)
+ 공유 스토리지 위치가 있어야 합니다. Amazon FSx 파일 시스템 또는 클러스터 노드에서 액세스할 수 있는 NFS 시스템일 수 있습니다.
+ 다음 형식 중 하나의 데이터가 있어야 합니다.
  + JSON
  + JSONGZ(압축된 JSON)
  + ARROW
+ [ 허깅 얼굴 모델 가중치를 다운로드](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-custom-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. Kubernetes 클러스터에 연결합니다.

   ```
   aws eks update-kubeconfig --region "${CLUSTER_REGION}" --name "${CLUSTER_NAME}"
   ```

1. 종속성 설치

   ```
   # install SageMaker HyperPod checkpointless training.
   git clone git@github.com:aws/sagemaker-hyperpod-checkpointless-training.git
   cd sagemaker-hyperpod-checkpointless-training
   ```

## 체크포인트 없는 훈련 수정 지침
<a name="sagemaker-eks-checkpointless-recipes-custom-modification-instructions"></a>

사용자 지정 모델에 대한 체크포인트 없는 훈련을 점진적으로 채택하려면 통합 가이드(여기서 Llama 3 70b 사전 훈련을 예로 사용)를 따르세요. 여기에는 다음이 포함됩니다.
+ 빠른 커뮤니케이터 생성
+ 메모리 매핑 데이터 로더(MMAP)
+ 처리 중 및 체크포인트 없는 복구

### 구성 요소 1: 빠른 커뮤니케이터 생성
<a name="sagemaker-eks-checkpointless-recipes-custom-component1"></a>

이는 작업자 간에 연결을 설정하는 시간을 최적화하기 위한 것입니다. 코드 변경이 필요하지 않으며 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 훈련 전 시작 작업 구성](https://github.com/aws/sagemaker-hyperpod-checkpointless-training/blob/main/examples/llama3/launch/pretrain_llama3_70b_checkpointless_p5.yaml)에서 확인할 수 있습니다.

### 구성 요소 2: 메모리 매핑 데이터 로더(MMAP)
<a name="sagemaker-eks-checkpointless-recipes-custom-component2"></a>

MMAP는 미리 가져온 데이터 샘플을 저장하고 데이터 사전 처리를 기다릴 필요 없이 즉시 훈련을 시작할 수 있도록 캐시합니다. 기존 데이터 로더를 래핑하여 코드 변경을 최소화해야 합니다.

```
data_module = MMAPDataModule(
  data_module=base_data_module,
  mmap_config=CacheResumeMMAPConfig(cache_dir=…)
)
```

### 구성 요소 3 및 4: 처리 중 및 체크포인트 없는 복구
<a name="sagemaker-eks-checkpointless-recipes-custom-components3-4"></a>

이렇게 하면 훈련 프로세스를 다시 시작하거나 체크포인트에서 로드하지 않고도 장애 복구가 가능합니다. 추가 코드 변경 필요(전략 및 훈련 구성 업데이트, 기존 기본 래핑)

```
@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 훈련 전 항목 스크립트](https://github.com/aws/sagemaker-hyperpod-checkpointless-training/blob/main/examples/llama3/llama3_70b_pretrain_checkpointless.py)에서 확인할 수 있으며 해당 훈련 구성 변경은 [ llama3 70b 훈련 구성](https://github.com/aws/sagemaker-hyperpod-checkpointless-training/blob/main/examples/llama3/config/llama3_70b_peft_checkpointless.yaml)에서 확인할 수 있습니다.

### 훈련 시작
<a name="sagemaker-eks-checkpointless-recipes-custom-launch"></a>

이제 kubectl을 사용하여 체크포인트 없는 훈련을 시작할 수 있습니다.

```
kubectl apply -f your_job_config.yaml
```