

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.

# Configuration générale
<a name="sagemaker-hyperpod-recipes-general-configuration"></a>

Le fichier config.yaml spécifie la recette et le cluster d’entraînement. Il inclut également des configurations d’exécution telles que des variables d’environnement pour la tâche d’entraînement.

```
defaults:
  - _self_
  - cluster: slurm 
  - recipes: training/llama/hf_llama3_8b_seq8192_gpu
instance_type: p5.48xlarge
git:
  repo_url_or_path: null
  branch: null
  commit: null
  entry_script: null
  token: null
env_vars:
  NCCL_DEBUG: WARN
```

Vous pouvez modifier les paramètres suivants dans `config.yaml` :

1. `defaults` : spécifiez vos paramètres par défaut, tels que le cluster par défaut ou les recettes par défaut.

1. `instance_type` : modifiez le type d’instance Amazon EC2 pour qu’il corresponde au type d’instance que vous utilisez.

1. `git`: Spécifiez l'emplacement du référentiel d'adaptateurs de SageMaker HyperPod recettes pour le travail de formation.

1. `env_vars` : vous pouvez spécifier les variables d’environnement à transmettre à votre tâche d’entraînement d’exécution. Par exemple, vous pouvez ajuster le niveau de journalisation de NCCL en spécifiant la variable d’environnement NCCL\_DEBUG.

La recette est la configuration de base qui définit l’architecture de votre tâche d’entraînement. Ce fichier contient de nombreuses informations importantes pour votre tâche d’entraînement, telles que les suivantes :
+ Utilisation ou non du parallélisme des modèles
+ Source de vos jeux de données
+ Entraînement de précision mixte
+ Configurations liées aux points de contrôle

Vous pouvez utiliser les recettes en l’état. Vous pouvez également utiliser les informations suivantes pour les modifier.

## run
<a name="run"></a>

Vous trouverez ci-dessous les informations de base relatives à l’exécution de votre tâche d’entraînement.

```
run:
  name: llama-8b
  results_dir: ${base_results_dir}/${.name}
  time_limit: "6-00:00:00"
  model_type: hf
```

1. `name` : spécifiez le nom de votre tâche d’entraînement dans le fichier de configuration.

1. `results_dir` : vous pouvez spécifier le répertoire dans lequel sont stockés les résultats de votre tâche d’entraînement.

1. `time_limit` : vous pouvez définir une durée d’entraînement maximale pour votre tâche d’entraînement afin d’éviter qu’elle n’occupe trop longtemps les ressources matérielles.

1. `model_type` : vous pouvez spécifier le type de modèle que vous utilisez. Par exemple, vous pouvez spécifier `hf` si votre modèle provient de HuggingFace.

## exp\_manager
<a name="exp-manager"></a>

L’élément exp\_manager configure l’expérience. L’élément exp\_manager vous permet de spécifier des champs tels que les paramètres du répertoire de sortie ou du point de contrôle. Voici un exemple de la façon dont vous pouvez configurer exp\_manager.

```
exp_manager:
  exp_dir: null
  name: experiment
  create_tensorboard_logger: True
```

1. `exp_dir` : le répertoire de l’expérience inclut les fichiers de sortie et d’erreur standard relatifs à votre tâche d’entraînement. Par défaut, votre répertoire actuel est utilisé.

1. `name` : le nom de l’expérience utilisé pour identifier votre expérience dans exp\_dir.

1. `create_tensorboard_logger`: Spécifiez `True` ou `False` activez ou désactivez l' TensorBoardenregistreur.

## Point de contrôle
<a name="checkpointing"></a>

Voici trois types de points de contrôle que nous prenons en charge :
+ Points de contrôle automatiques
+ Points de contrôle manuels
+ Point de contrôle complet

### Points de contrôle automatiques
<a name="auto-checkpointing"></a>

Si vous enregistrez ou chargez des points de contrôle gérés automatiquement par l'adaptateur de SageMaker HyperPod recettes, vous pouvez les activer`auto_checkpoint`. Pour activer `auto_checkpoint`, affectez à `enabled` la valeur `True`. Vous pouvez utiliser les points de contrôle automatiques à la fois pour l’entraînement et pour le peaufinage. Vous pouvez utiliser les points de contrôle automatiques pour les systèmes de fichiers partagés et Amazon S3.

```
exp_manager
  checkpoint_dir: ${recipes.exp_manager.exp_dir}/checkpoints/
  auto_checkpoint:
    enabled: True
```

Un point de contrôle automatique enregistre local\_state\_dict de manière asynchrone avec un intervalle d’enregistrement optimal calculé automatiquement.

**Note**  
Dans ce mode avec points de contrôle automatiques, les points de contrôle enregistrés automatiquement ne permettent pas un repartitionnement entre les exécutions d’entraînement. Pour repartir du dernier point de contrôle enregistré automatiquement, vous devez conserver les mêmes degrés de partition. Vous n’avez pas besoin de spécifier d’informations supplémentaires pour la reprise automatique.

### Points de contrôle manuels
<a name="manual-checkpointing"></a>

Vous pouvez modifier `checkpoint_callback_params` pour enregistrer de manière asynchrone un point de contrôle intermédiaire dans shared\_state\_dict. Par exemple, vous pouvez spécifier la configuration suivante pour activer les points de contrôle partitionnés toutes les 10 étapes et conserver les 3 derniers points de contrôle.

Les points de contrôle partitionnés vous permettent de modifier les degrés de partitionnement entre les exécutions d’entraînement et de charger le point de contrôle en définissant `resume_from_checkpoint`.

**Note**  
S’il s’agit d’un peaufinage PEFT, les points de contrôle partitionnés ne prennent pas en charge Amazon S3.
Les points de contrôle automatiques et manuels s’excluent mutuellement.
Seules les modifications des degrés de partitionnement FSDP et des degrés de réplication sont autorisées.

```
exp_manager:
  checkpoint_callback_params:
    # Set save_top_k = 0 to disable sharded checkpointing
    save_top_k: 3
    every_n_train_steps: 10
    monitor: "step"
    mode: "max"
    save_last: False
  resume_from_checkpoint: ${recipes.exp_manager.exp_dir}/checkpoints/
```

Pour en savoir plus sur les points de contrôle, consultez [Points de contrôle à l’aide de la SMP](model-parallel-core-features-v2-checkpoints.md).

### Point de contrôle complet
<a name="full-checkpointing"></a>

Le point de contrôle full\_state\_dict exporté peut être utilisé à des fins d’inférence ou de peaufinage. Vous pouvez charger un point de contrôle complet via hf\_model\_name\_or\_path. Dans ce mode, seuls les poids du modèle sont enregistrés.

Pour exporter le modèle full\_state\_dict, vous pouvez définir les paramètres suivants.

**Note**  
Actuellement, les points de contrôle complets ne sont pas pris en charge pour les points de contrôle Amazon S3. Vous ne pouvez pas définir le chemin S3 pour `exp_manager.checkpoint_dir` si vous activez les points de contrôle complets. Toutefois, vous pouvez définir `exp_manager.export_full_model.final_export_dir` sur un répertoire spécifique de votre système de fichiers local tout en définissant `exp_manager.checkpoint_dir` sur un chemin Amazon S3.

```
exp_manager:
  export_full_model:
    # Set every_n_train_steps = 0 to disable full checkpointing
    every_n_train_steps: 0
    save_last: True
    final_export_dir : null
```

## modèle
<a name="model"></a>

Définissez les différents aspects de l’architecture de votre modèle et de votre processus d’entraînement. Cela inclut les paramètres de parallélisme des modèles, de précision et de gestion des données. Vous trouverez ci-dessous les principaux composants que vous pouvez configurer dans la section du modèle :

### parallélisme des modèles
<a name="model-parallelism"></a>

Après avoir spécifié la recette, vous définissez le modèle que vous entraînez. Vous pouvez également définir le parallélisme des modèles. Par exemple, vous pouvez définir tensor\_model\_parallel\_degree. Vous pouvez activer d'autres fonctionnalités, comme l'entraînement avec FP8 précision. Par exemple, vous pouvez entraîner un modèle avec le parallélisme des tenseurs et le parallélisme des contextes :

```
model:
  model_type: llama_v3
  # Base configs
  train_batch_size: 4
  val_batch_size: 1
  seed: 12345
  grad_clip: 1.0

  # Model parallelism
  tensor_model_parallel_degree: 4
  expert_model_parallel_degree: 1
  context_parallel_degree: 2
```

Pour mieux comprendre les différents types de techniques de parallélisme des modèles, vous pouvez vous référer aux approches suivantes :

1. [Parallélisme de tenseur](model-parallel-core-features-v2-tensor-parallelism.md)

1. [Parallélisme expert](model-parallel-core-features-v2-expert-parallelism.md)

1. [Parallélisme de contexte](model-parallel-core-features-v2-context-parallelism.md)

1. [Parallélisme partitionné des données hybrides](model-parallel-core-features-v2-sharded-data-parallelism.md)

### FP8
<a name="fp8"></a>

Pour l'activer FP8 (précision à virgule flottante de 8 bits), vous pouvez spécifier la configuration correspondante dans FP8 l'exemple suivant :

```
model:
  # FP8 config
  fp8: True
  fp8_amax_history_len: 1024
  fp8_amax_compute_algo: max
```

Il est important de noter que le format de FP8 données n'est actuellement pris en charge que sur le type d'instance P5. Si vous utilisez un ancien type d'instance, tel que P4, désactivez cette FP8 fonctionnalité pour le processus de formation de votre modèle. Pour plus d'informations sur FP8, voir[Entraînement de précision mixte](model-parallel-core-features-v2-mixed-precision.md).

### data
<a name="data"></a>

Vous pouvez spécifier vos jeux de données personnalisés pour votre tâche d’entraînement en ajoutant les chemins des données sous les données. Le module de données de notre système prend en charge les formats de données suivants :

1. JSON

1. JSONGZ (JSON compressé)

1. ARROW

Toutefois, vous êtes responsable de la préparation de votre propre jeu de données pré-tokenisé. Si vous êtes un utilisateur avancé ayant des exigences spécifiques, il est également possible de mettre en œuvre et d’intégrer un module de données personnalisé. Pour plus d'informations sur les HuggingFace ensembles de données, consultez la section [Ensembles de données](https://huggingface.co/docs/datasets/v3.1.0/en/index).

```
model:
  data:
    train_dir: /path/to/your/train/data
    val_dir: /path/to/your/val/data
    dataset_type: hf
    use_synthetic_data: False
```

Vous pouvez spécifier la manière dont vous entraînez le modèle. Par défaut, la recette utilise un pré-entraînement à la place d’un peaufinage. L’exemple suivant configure la recette pour exécuter une tâche de peaufinage avec l’adaptation de rang inférieur (LoRA).

```
model:
  # Fine tuning config
  do_finetune: True
  # The path to resume from, needs to be HF compatible
  hf_model_name_or_path: null
  hf_access_token: null
  # PEFT config
  peft:
    peft_type: lora
    rank: 32
    alpha: 16
    dropout: 0.1
```

Pour plus d'informations sur les recettes, voir [SageMaker HyperPodrecettes](https://github.com/aws/sagemaker-hyperpod-recipes).