Résolution des problèmes liés à la formation distribuée sur Amazon SageMaker - Amazon SageMaker

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 sur Amazon SageMaker

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' SageMaker équipe via le centre de AWS support ou les forums de AWS développeurs pour Amazon Amazon SageMaker.

Utilisation de données SageMaker distribuées en parallèle avec Amazon SageMaker Debugger et les points de contrôle

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

Toutefois, lorsque vous utilisez SageMaker Debugger, SageMaker distributed data parallel et SageMaker checkpoints, une erreur semblable à l'exemple suivant peut s'afficher.

SMDebug Does Not Currently Support Distributed Training Jobs With Checkpointing Enabled

Cela est dû à une erreur interne entre le Debugger et les points de contrôle, qui se produit lorsque vous activez Distributed SageMaker Data Parallel.

  • Si vous activez les trois fonctionnalités, le SDK SageMaker Python désactive automatiquement Debugger en passantdebugger_hook_config=False, ce qui est équivalent à l'exemple de framework suivant. estimator

    bucket=sagemaker.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) estimator = TensorFlow( ... 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 SageMaker distributed data parallel 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 checkpoint_local_path paramètres checkpoint_s3_uri et à partir de l'estimateur. Pour plus d'informations sur la configuration d'un pointage manuel dans un script d'entraînement, consultez Sauvegarde des points de contrôle.

Un préfixe inattendu attaché aux clés de paramètres du modèle

Pour les tâches d'entraînement 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 SageMaker data parallel ne modifie ni n'ajoute directement les noms des paramètres du modèle lorsque les tâches d' PyTorch entraînement enregistrent des artefacts du modèle. La PyTorch formation distribuée change les noms du state_dict pour passer sur le réseau, en préfixant le préfixe. Si vous rencontrez un problème de défaillance du modèle dû à des noms de paramètres différents lorsque vous utilisez la bibliothèque SageMaker data parallel 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 des préfixes, consultez un fil de discussion sur Noms des paramètres de préfixe dans le modèle enregistré s'il est entraîné par plusieurs GPU ? 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 Enregistrer et charger le modèle sur plusieurs appareils dans la PyTorchdocumentation.

SageMaker blocage de la tâche de formation distribuée lors de l'initialisation

Si votre tâche d'entraînement parallèle SageMaker aux données distribuées s'arrête pendant l'initialisation lorsque vous utilisez des instances compatibles EFA, cela peut être dû à une mauvaise configuration du 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 à la console Amazon VPC AWS Management Console et ouvrez-la à l'adresse https://console.aws.amazon.com/vpc/.

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

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

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

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

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

    1. Choisissez Ajouter une règle.

    2. Pour Type, sélectionnez Tout le trafic.

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

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

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

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

Après avoir effectué les étapes précédentes pour configurer le groupe de sécurité avec les règles entrantes et sortantes, relancez le travail de formation 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, veuillez consulter Groupes de sécurité pour votre VPC et Elastic Fabric Adapter.

SageMaker poste de formation distribué qui stagne à la fin de la formation

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é du dimensionnement due aux goulots d'étranglement liés au débit d'Amazon FSx

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 (Performances globales du système de fichiers) et Managing storage and throughput capacity (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 avec PyTorch renvois des avertissements d'obsolescence

Depuis la version 1.4.0, la bibliothèque de parallélisme des données SageMaker distribuées fonctionne comme un backend de distributed. PyTorch En raison du changement radical lié à l'utilisation de la bibliothèque PyTorch, vous pouvez recevoir un message d'avertissement 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 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 v1.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 SMDDP bibliothèque dans votre script PyTorch d'entraînement pour en savoir plus sur les modifications majeures et la nouvelle façon d'utiliser la bibliothèque avec PyTorch.