Configuration générale - Amazon SageMaker AI

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

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.

  2. instance_type: modifiez le type d' EC2 instance Amazon pour qu'il corresponde au type d'instance que vous utilisez.

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

  4. 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

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.

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

  3. 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.

  4. 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

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é.

  2. name : le nom de l’expérience utilisé pour identifier votre expérience dans exp_dir.

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

Point de contrôle

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

Si vous enregistrez ou chargez des points de contrôle gérés automatiquement par l'adaptateur de SageMaker HyperPod recettes, vous pouvez les activerauto_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

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.

Point de contrôle complet

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

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

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 :

FP8

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, voirEntraînement de précision mixte.

data

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

  2. JSONGZ (JSON compressé)

  3. 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.

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.