

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.

# Résolution des problèmes liés à la formation distribuée dans Amazon SageMaker AI
<a name="distributed-troubleshooting-data-parallel"></a>

Si vous rencontrez des problèmes pour exécuter une tâche d'entraînement lorsque vous utilisez la bibliothèque, utilisez la liste suivante pour tenter de résoudre le problème. Si vous avez besoin d'une assistance supplémentaire, contactez l'équipe chargée de l' SageMaker IA via le centre de [AWS support ](https://console.aws.amazon.com/support/) ou les forums des [AWS développeurs pour Amazon Amazon SageMaker AI](https://forums.aws.amazon.com/forum.jspa?forumID=285).

**Topics**
+ [Utilisation de données distribuées par SageMaker IA en parallèle avec Amazon SageMaker Debugger et les points de contrôle](#distributed-ts-data-parallel-debugger)
+ [Préfixe inattendu attaché aux clés de paramètres de modèle](#distributed-ts-data-parallel-pytorch-prefix)
+ [SageMaker La tâche de formation distribuée par l'IA se bloque lors de l'initialisation](#distributed-ts-data-parallel-efa-sg)
+ [SageMaker Une tâche de formation distribuée basée sur l'IA se bloque à la fin de la formation](#distributed-ts-data-parallel-stall-at-the-end)
+ [Observation de la dégradation de l’efficacité de mise à l’échelle due aux goulets d’étranglement affectant le débit d’Amazon FSx](#distributed-ts-data-parallel-fxs-bottleneck)
+ [SageMaker Tâche de formation distribuée par IA avec PyTorch retours et avertissements de dépréciation](#distributed-ts-data-parallel-deprecation-warnings)

## Utilisation de données distribuées par SageMaker IA en parallèle avec Amazon SageMaker Debugger et les points de contrôle
<a name="distributed-ts-data-parallel-debugger"></a>

Pour surveiller les goulots d'étranglement du système, les opérations du framework de profils et les tenseurs de sortie des modèles de débogage pour les tâches de formation utilisant des données distribuées en parallèle par SageMaker IA, utilisez Amazon Debugger. SageMaker 

Cependant, lorsque vous utilisez SageMaker Debugger, SageMaker AI distributed data parallel et SageMaker AI checkpoints, vous pouvez voir apparaître une erreur semblable à l'exemple suivant. 

```
SMDebug Does Not Currently Support Distributed Training Jobs With Checkpointing Enabled
```

Cela est dû à une erreur interne entre le débogueur et les points de contrôle, qui se produit lorsque vous activez les données distribuées par SageMaker IA en parallèle. 
+ Si vous activez les trois fonctionnalités, le SDK SageMaker Python désactive automatiquement Debugger en passant`debugger_hook_config=False`, ce qui est équivalent à l'exemple de framework suivant. `ModelTrainer`

  ```
  bucket=Session().default_bucket()
  base_job_name="sagemaker-checkpoint-test"
  checkpoint_in_bucket="checkpoints"
  
  # The S3 URI to store the checkpoints
  checkpoint_s3_bucket="s3://{}/{}/{}".format(bucket, base_job_name, checkpoint_in_bucket)
  
  model_trainer = ModelTrainer(
      ...
  
      distribution={"smdistributed": {"dataparallel": { "enabled": True }}},
      checkpoint_s3_uri=checkpoint_s3_bucket,
      checkpoint_local_path="/opt/ml/checkpoints",
      debugger_hook_config=False
  )
  ```
+ Si vous souhaitez continuer à utiliser à la fois les données distribuées SageMaker AI en parallèle et SageMaker Debugger, une solution consiste à ajouter manuellement des fonctions de point de contrôle à votre script d'entraînement au lieu de spécifier les paramètres `checkpoint_s3_uri` et `checkpoint_local_path` à partir du. ModelTrainer Pour plus d'informations sur la configuration d'un pointage manuel dans un script d'entraînement, consultez [Sauvegarde des points de contrôle](distributed-troubleshooting-model-parallel.md#distributed-ts-model-parallel-checkpoints).

## Préfixe inattendu attaché aux clés de paramètres de modèle
<a name="distributed-ts-data-parallel-pytorch-prefix"></a>

Pour les tâches de formation PyTorch distribuées, un préfixe inattendu (par `model` exemple) peut être attaché aux `state_dict` clés (paramètres du modèle). La bibliothèque parallèle de données SageMaker AI ne modifie pas directement les noms des paramètres du modèle ni ne les ajoute en tant que préfixe lorsque les tâches d' PyTorch entraînement enregistrent des artefacts de modèle. La PyTorch formation distribuée change les noms des éléments `state_dict` à utiliser sur le réseau, en ajoutant le préfixe. Si vous rencontrez un problème de défaillance du modèle en raison de noms de paramètres différents lorsque vous utilisez la bibliothèque parallèle de données SageMaker AI et que vous utilisez le point de contrôle pour l' PyTorch entraînement, adaptez l'exemple de code suivant pour supprimer le préfixe à l'étape où vous chargez les points de contrôle dans votre script d'entraînement.

```
state_dict = {k.partition('{{model.}}')[2]:state_dict[k] for k in state_dict.keys()}
```

Cela considère chaque clé `state_dict` comme une valeur de chaîne, sépare la chaîne lorsque `'model.'` est rencontré pour la première fois, et prend le troisième élément de liste (avec index 2) de la chaîne partitionnée.

Pour plus d'informations sur le problème du préfixe, consultez un fil de discussion sur les noms des paramètres de [ préfixe dans le modèle enregistré en cas d'entraînement par plusieurs GPU ? ](https://discuss.pytorch.org/t/prefix-parameter-names-in-saved-model-if-trained-by-multi-gpu/494)dans le forum de * PyTorch discussion*.

Pour plus d'informations sur les PyTorch méthodes d'enregistrement et de chargement des modèles, consultez la section [ Enregistrement et chargement du modèle sur plusieurs appareils ](https://pytorch.org/tutorials/beginner/saving_loading_models.html#saving-loading-model-across-devices) dans la * PyTorch documentation*.

## SageMaker La tâche de formation distribuée par l'IA se bloque lors de l'initialisation
<a name="distributed-ts-data-parallel-efa-sg"></a>

Si votre tâche de formation parallèle aux données distribuées par SageMaker IA se bloque lors de l'initialisation lors de l'utilisation d' EFA-enabled instances, cela peut être dû à une mauvaise configuration dans le groupe de sécurité du sous-réseau VPC utilisé pour la tâche de formation. EFA nécessite une configuration de groupe de sécurité appropriée pour permettre le trafic entre les nœuds.

**Pour configurer des règles entrantes et sortantes pour le groupe de sécurité**

1. Connectez-vous au Console de gestion AWS et ouvrez la console Amazon VPC à [ https://console.aws.amazon.com/vpc/ ](https://console.aws.amazon.com/vpc/) l'adresse.

1. Dans le panneau de navigation de gauche, sélectionnez **Security Groups** (Groupes de sécurité).

1. Sélectionnez le groupe de sécurité lié au sous-réseau VPC que vous utilisez pour l'entraînement. 

1. Dans la section **Details** (Détails), copiez la section **Security group ID** (ID du groupe de sécurité).

1. Sous l’onglet **Inbound Rules (Règles entrantes)**, sélectionnez **Edit inbound rules (Modifier les règles entrantes)**.

1. Sur la page **Edit inbound rules (Modifier les règles entrantes)**, procédez comme suit : 

   1. Choisissez **Ajouter une règle**.

   1. Pour **Type**, sélectionnez **Tout le trafic**.

   1. Pour **Source**, sélectionnez **Custom** (Personnalisé), collez l'ID du groupe de sécurité dans la zone de recherche et sélectionnez le groupe de sécurité qui s'affiche.

1. Sélectionnez **Save rules** (Enregistrer les règles) pour terminer la configuration de la règle entrante pour le groupe de sécurité.

1. Sélectionnez **Outbound rules** (Modifier les règles sortantes) sous l'onglet **Outbound rules** (Règles sortantes).

1. Répétez les étapes 6 et 7 pour ajouter la même règle en tant que règle sortante.

Après avoir terminé les étapes précédentes de configuration du groupe de sécurité avec les règles entrantes et sortantes, exécutez de nouveau la tâche d’entraînement et vérifiez si le problème de blocage est résolu.

Pour plus d’informations sur la configuration des groupes de sécurité pour VPC et EFA, consultez [Groupes de sécurité pour votre VPC](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_SecurityGroups.html) et [Elastic Fabric Adapter](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/efa.html).

## SageMaker Une tâche de formation distribuée basée sur l'IA se bloque à la fin de la formation
<a name="distributed-ts-data-parallel-stall-at-the-end"></a>

L'une des causes profondes des problèmes de blocage à la fin de l'entraînement est un décalage dans le nombre de lots traités par époque sur différents rangs. Tous les employés (GPU) synchronisent leurs gradients locaux dans la transmission en arrière pour s'assurer qu'ils ont tous la même copie du modèle à la fin de l'itération par lots. Si les tailles de lots sont attribuées de manière inégale à différents groupes d'employés au cours de la dernière période d'entraînement, la tâche d'entraînement se bloque. Par exemple, lorsqu'un groupe d'employés (groupe A) termine le traitement de tous les lots et quitte la boucle d'entraînement, un autre groupe de employés (groupe B) commence à traiter un autre lot et attend toujours la communication du groupe A pour synchroniser les gradients. Cela oblige le groupe B à attendre le groupe A, qui a déjà terminé l'entraînement et n'a aucun gradient à synchroniser. 

Par conséquent, lors de la configuration de votre jeu de données d'entraînement, il est important que chaque employé reçoive le même nombre d'échantillons de données afin de traiter le même nombre de lots pendant l'entraînement. Assurez-vous que chaque rang reçoit le même nombre de lots pour éviter ce problème de blocage.

## Observation de la dégradation de l’efficacité de mise à l’échelle due aux goulets d’étranglement affectant le débit d’Amazon FSx
<a name="distributed-ts-data-parallel-fxs-bottleneck"></a>

La limite de débit de FSx constitue une cause potentielle de la baisse de l'efficacité de la mise à l'échelle. Si vous observez une chute soudaine de l'efficacité de la mise à l'échelle lorsque vous passez à un cluster d'entraînement plus grand, essayez d'utiliser un système de fichiers FSx for Lustre plus grand avec une limite de débit plus élevée. Pour plus d'informations, consultez les sections [Aggregate file system performance](https://docs.aws.amazon.com/fsx/latest/LustreGuide/performance.html#fsx-aggregate-perf) (Performances globales du système de fichiers) et [Managing storage and throughput capacity](https://docs.aws.amazon.com/fsx/latest/LustreGuide/managing-storage-capacity.html) (Gestion de la capacité de stockage et de débit) dans le *Guide de l'utilisateur de Amazon FSx for Lustre*.

## SageMaker Tâche de formation distribuée par IA avec PyTorch retours et avertissements de dépréciation
<a name="distributed-ts-data-parallel-deprecation-warnings"></a>

Depuis la version 1.4.0, la bibliothèque de parallélisme des données distribuées SageMaker AI fonctionne comme un backend de données distribuées. PyTorch En raison du changement radical lié à l'utilisation de la bibliothèque avec PyTorch, un message d'avertissement peut s'afficher indiquant que les `smdistributed` API du package PyTorch distribué sont obsolètes. Le message d'avertissement doit ressembler au suivant :

```
smdistributed.dataparallel.torch.dist is deprecated in the SageMaker AI distributed data parallel library v1.4.0+.
Please use torch.distributed and specify 'smddp' as a backend when initializing process group as follows:
torch.distributed.init_process_group(backend='smddp')
For more information, see the library's API documentation at
https://docs.aws.amazon.com/sagemaker/latest/dg/data-parallel-modify-sdp-pt.html
```

Dans la version 1.4.0 et les versions ultérieures, la bibliothèque ne doit être importée qu'une seule fois en haut de votre script d'entraînement et définie comme backend lors de l'initialisation PyTorch distribuée. Avec une seule ligne de spécification du backend, vous pouvez conserver votre script de PyTorch formation inchangé et utiliser directement les modules PyTorch distribués. Consultez [Utilisez la bibliothèque SMDDP dans votre script d'entraînement PyTorch](data-parallel-modify-sdp-pt.md) pour en savoir plus sur les modifications majeures et la nouvelle façon d'utiliser la bibliothèque avec PyTorch.