

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Tutorial: modelli personalizzati Amazon SageMaker HyperPod Checkpointless Pretraining o Finetuning
<a name="sagemaker-eks-checkpointless-recipes-custom"></a>

La seguente sequenza di passaggi è necessaria per eseguire l'addestramento senza checkpoint con il modello personalizzato acceso. HyperPod

## Prerequisiti
<a name="sagemaker-eks-checkpointless-recipes-custom-prereqs"></a>

Prima di iniziare a configurare l’ambiente, assicurati di avere:
+ [Supporto Amazon EKS abilitato in Amazon SageMaker HyperPod ](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-hyperpod-eks-prerequisites.html)
+ [Configura l'operatore HyperPod di formazione (v1.2\+) ](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-eks-operator.html)
+ Una posizione di archiviazione condivisa. Può essere un file system Amazon FSx o un sistema NFS accessibile dai nodi del cluster.
+ I dati in uno dei seguenti formati:
  + JSON
  + JSONGZ (JSON compresso)
  + ARROW
+ [Scarica i pesi del modello Hugging Face ](https://huggingface.co/docs/hub/models-downloading) e convertili nel formato supportato da Nemo. [https://docs.nvidia.com/nemo-framework/user-guide/latest/nemo-2.0/features/hf-integration.html#importing-from-hugging-face](https://docs.nvidia.com/nemo-framework/user-guide/latest/nemo-2.0/features/hf-integration.html#importing-from-hugging-face)
+ Configurare l’ambiente

## Configurazione dell'ambiente Kubernetes
<a name="sagemaker-eks-checkpointless-recipes-custom-kubernetes"></a>

Per configurare il tuo ambiente Kubernetes, procedi come segue:

1. Configura l’ambiente virtuale. Assicurati di utilizzare Python maggiore o uguale a 3.10 e inferiore a 3.14.

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

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

1. Connettiti al cluster Kubernetes.

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

1. Installare le dipendenze

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

## Istruzioni di modifica dell'allenamento Checkpointless
<a name="sagemaker-eks-checkpointless-recipes-custom-modification-instructions"></a>

Per adottare in modo incrementale la formazione senza checkpoint per i modelli personalizzati, segui la guida all'integrazione (qui usiamo il pretraining Llama 3 70b come esempio), che prevede:
+ Creazione rapida di un comunicatore
+ Memory-mapped dataloader (MMAP)
+ In-process & Ripristino senza controlli

### Componente 1: creazione rapida di un comunicatore
<a name="sagemaker-eks-checkpointless-recipes-custom-component1"></a>

Questo serve a ottimizzare i tempi per stabilire connessioni tra i lavoratori. Non sono necessarie modifiche al codice e richiede solo l'impostazione delle variabili 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 \
              ...
```

La modifica completa può essere trovata nella configurazione del job di avvio pretrain di [ llama3 70. ](https://github.com/aws/sagemaker-hyperpod-checkpointless-training/blob/main/examples/llama3/launch/pretrain_llama3_70b_checkpointless_p5.yaml)

### Componente 2: Memory-mapped dataloader (MMAP)
<a name="sagemaker-eks-checkpointless-recipes-custom-component2"></a>

MMAP memorizza nella cache campioni di dati precaricati e consente l'avvio immediato dell'addestramento senza dover attendere la preelaborazione dei dati. Richiede modifiche minime al codice da adottare racchiudendo il dataloader esistente.

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

### Componenti 3 e 4: e ripristino senza controlli In-process
<a name="sagemaker-eks-checkpointless-recipes-custom-components3-4"></a>

Ciò consente il ripristino in caso di guasto senza riavviare i processi di formazione o caricarli dai checkpoint. Sono necessarie ulteriori modifiche al codice (aggiornamento della strategia e della configurazione di addestramento, cancellazione della versione principale esistente)

```
@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,
)
```

La modifica completa può essere trovata nello script di immissione di [ llama3 70 pretrain ](https://github.com/aws/sagemaker-hyperpod-checkpointless-training/blob/main/examples/llama3/llama3_70b_pretrain_checkpointless.py) e la corrispondente modifica alla configurazione di addestramento può essere trovata nella configurazione di allenamento llama3 70b. [https://github.com/aws/sagemaker-hyperpod-checkpointless-training/blob/main/examples/llama3/config/llama3_70b_peft_checkpointless.yaml](https://github.com/aws/sagemaker-hyperpod-checkpointless-training/blob/main/examples/llama3/config/llama3_70b_peft_checkpointless.yaml)

### Avvia la formazione
<a name="sagemaker-eks-checkpointless-recipes-custom-launch"></a>

Ora puoi avviare la formazione senza checkpoint usando kubectl.

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