

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Tutoriels - Modèles personnalisés de préentraînement ou de réglage précis d'Amazon SageMaker HyperPod Checkpointless
<a name="sagemaker-eks-checkpointless-recipes-custom"></a>

La séquence d'étapes suivante est requise pour exécuter une formation sans point de contrôle avec votre modèle personnalisé activé. HyperPod

## Conditions préalables
<a name="sagemaker-eks-checkpointless-recipes-custom-prereqs"></a>

Avant de commencer à configurer votre environnement, assurez-vous d’avoir :
+ [Support Amazon EKS activé sur Amazon SageMaker HyperPod](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-hyperpod-eks-prerequisites.html)
+ [Configuration de l'opérateur HyperPod de formation (v1.2\+)](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-eks-operator.html)
+ Un emplacement de stockage partagé. Il peut s’agir d’un système de fichiers Amazon FSx ou d’un système NFS accessible depuis les nœuds du cluster.
+ Des données dans l’un des formats suivants :
  + JSON
  + JSONGZ (JSON compressé)
  + ARROW
+ [Téléchargez les poids du modèle Hugging Face](https://huggingface.co/docs/hub/models-downloading) et convertissez-le au format compatible avec [Nemo.](https://docs.nvidia.com/nemo-framework/user-guide/latest/nemo-2.0/features/hf-integration.html#importing-from-hugging-face)
+ Configurez votre environnement

## Configuration de l'environnement Kubernetes
<a name="sagemaker-eks-checkpointless-recipes-custom-kubernetes"></a>

Pour configurer votre environnement Kubernetes, procédez comme suit :

1. Configurez l’environnement virtuel. Assurez-vous que vous utilisez un Python supérieur ou égal à 3.10 et inférieur à 3.14.

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

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

1. Connectez-vous à votre cluster Kubernetes.

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

1. Installation des dépendances

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

## Instructions de modification de l'entraînement sans point de contrôle
<a name="sagemaker-eks-checkpointless-recipes-custom-modification-instructions"></a>

Pour adopter progressivement la formation sans point de contrôle pour les modèles personnalisés, suivez le guide d'intégration (ici, nous utilisons le préentraînement Llama 3 70b comme exemple), qui implique :
+ Création rapide d'un communicateur
+ Memory-mapped chargeur de données (MMAP)
+ In-process & Restauration sans point de contrôle

### Composante 1 : Création rapide d'un communicateur
<a name="sagemaker-eks-checkpointless-recipes-custom-component1"></a>

Cela permet d'optimiser le temps nécessaire pour établir des liens entre les travailleurs. Aucune modification de code n'est nécessaire et il suffit de définir des variables d'environnement

```
  # 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 modification complète se trouve dans la configuration de la tâche de [lancement du prétrain llama3 70](https://github.com/aws/sagemaker-hyperpod-checkpointless-training/blob/main/examples/llama3/launch/pretrain_llama3_70b_checkpointless_p5.yaml).

### Composant 2 : Memory-mapped chargeur de données (MMAP)
<a name="sagemaker-eks-checkpointless-recipes-custom-component2"></a>

Des caches MMAP permettent de stocker des échantillons de données préextraits et de démarrer immédiatement l'entraînement sans avoir à attendre le prétraitement des données. Il nécessite un minimum de modifications de code pour être adopté en encapsulant le chargeur de données existant.

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

### Composantes 3 et 4 : In-process et restauration sans point de contrôle
<a name="sagemaker-eks-checkpointless-recipes-custom-components3-4"></a>

Cela permet de récupérer les données en cas de panne sans redémarrer les processus de formation ou sans chargement à partir des points de contrôle. Des modifications de code supplémentaires sont nécessaires (mise à jour de la configuration de la stratégie et de la formation, encapsulation du fichier principal existant)

```
@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 modification complète se trouve dans le [script d'entrée de pré-entraînement llama3 70](https://github.com/aws/sagemaker-hyperpod-checkpointless-training/blob/main/examples/llama3/llama3_70b_pretrain_checkpointless.py) et la modification de configuration d'entraînement correspondante se trouve dans la configuration d'entraînement [llama3](https://github.com/aws/sagemaker-hyperpod-checkpointless-training/blob/main/examples/llama3/config/llama3_70b_peft_checkpointless.yaml) 70b.

### Formation de lancement
<a name="sagemaker-eks-checkpointless-recipes-custom-launch"></a>

Vous pouvez désormais lancer l'entraînement sans point de contrôle à l'aide de kubectl.

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