Questions fréquentes concernant la bibliothèque Amazon SageMaker AI de parallélisme distribué des données
Utilisez les éléments suivants pour trouver des réponses aux questions fréquemment posées sur la bibliothèque SMDDP.
Q : Lors de l'utilisation de la bibliothèque, comment les instances CPU prenant en charge allreduce sont-elles gérées ? Dois-je créer des clusters CPU-GPU hétérogènes, ou le service SageMaker AI crée-t-il des instances C5 supplémentaires pour les tâches utilisant la bibliothèque SMDDP ?
La bibliothèque SMDDP prend en charge les instances GPU, en particulier les instances P4d et P4de équipées de GPU NVIDIA A100 et d’un EFA. Aucune instance C5 ou CPU supplémentaire n’est lancée. Si votre tâche d’entraînement SageMaker AI utilise des clusters P4d de 8 nœuds, seules 8 instances ml.p4d.24xlarge sont utilisées. Aucune instance supplémentaire n'est allouée.
Q : J'ai une tâche d'entraînement qui prend 5 jours sur une seule instance ml.p3.24xlarge avec un ensemble d'hyperparamètres H1 (taux d'apprentissage, taille de lot, optimiseur, etc.). L’utilisation de la bibliothèque SageMaker AI de parallélisme des données et d’un cluster cinq fois plus grand suffit-elle pour bénéficier d’une vitesse approximativement quintuplée ? Ou dois-je revoir les hyperparamètres d’entraînement après avoir activé la bibliothèque SMDDP ?
La bibliothèque modifie la taille globale du lot. La nouvelle taille globale du lot est mise à l'échelle de façon linéaire avec le nombre d'instances d'entraînement utilisées. Il convient par conséquent de modifier des hyperparamètres, tels que le taux d'apprentissage, pour assurer la convergence.
Q : La bibliothèque SMDDP prend-elle en charge les instances Spot ?
Oui. Vous pouvez utiliser l'entraînement d'instances Spot gérées. Vous spécifiez le chemin d'accès au fichier de point de contrôle dans la tâche d'entraînement SageMaker. Vous enregistrez et restaurez les points de contrôle dans leur script d'entraînement, comme indiqué dans les dernières étapes de Utilisation de la bibliothèque SMDDP dans votre script d’entraînement TensorFlow (obsolète) et de Utilisation de la bibliothèque SMDDP dans un script d’entraînement PyTorch.
Q : La bibliothèque SMDDP est-elle pertinente dans une configuration à hôte unique et à dispositifs multiples ?
La bibliothèque peut être utilisée pour l'entraînement à un seul hôte et avec plusieurs appareils, mais elle n'offre des améliorations de performance que pour l'entraînement à plusieurs hôtes.
Q : Où le jeu de données d'entraînement doit-il être stocké ?
Le jeu de données d'entraînement peut être stocké dans un compartiment Amazon S3 ou sur un lecteur Amazon FSx. Consultez ce document relatif au différents systèmes de fichiers d’entrée pris en charge pour une tâche d’entraînement
Q : Lorsque la bibliothèque SMDDP est utilisée, les données d’entraînement doivent-elles être obligatoirement situées dans FSx pour Lustre ? Amazon EFS et Amazon S3 peuvent-ils être utilisés ?
Nous vous recommandons généralement d'utiliser Amazon FSx en raison de sa faible latence et de son débit plus élevé. Si vous préférez, vous pouvez utiliser Amazon EFS ou Amazon S3.
Q : La bibliothèque peut-elle être utilisée avec des nœuds CPU ?
Non. Pour connaître les types d’instances pris en charge par la bibliothèque SMDDP, consultez Types d’instance pris en charge.
Q : Quels cadres et versions de cadre sont actuellement pris en charge par la bibliothèque SMDDP au lancement ?
La bibliothèque SMDDP prend actuellement en charge PyTorch v1.6.0 ou versions ultérieures, et TensorFlow v2.3.0 ou versions ultérieures. Elle ne prend pas en charge TensorFlow 1.x. Pour plus d’informations sur la version de la bibliothèque SMDDP empaquetée dans les conteneurs de deep learning AWS, consultez les notes de mise à jour de Deep Learning Containers.
Q : La bibliothèque prend-elle en charge l'AMP ?
Oui. La bibliothèque SMDDP prend en charge la précision mixte automatique (AMP). Pour utiliser l'AMP, il vous suffit de modifier le cadre de votre script d'entraînement. Si les gradients sont en FP16, la bibliothèque SageMaker AI de parallélisme des données exécute son opération AllReduce en FP16. Pour plus d'informations sur la mise en œuvre des API AMP dans votre script d'entraînement, consultez les ressources suivantes :
-
Cadres – PyTorch
dans la Documentation sur la performance deep learning NVIDIA -
Cadres – TensorFlow
dans la Documentation sur la performance deep learning NVIDIA -
Précision mixte automatique pour deep learning
dans les Documents du développeur NVIDIA -
Présentation de la précision mixte automatique PyTorch pour un entraînement plus rapide sur les GPU NVIDIA
dans le Blog PyTorch -
API de précision mixte TensorFlow
dans la Documentation TensorFlow
Q : Comment savoir si ma tâche d'entraînement distribuée est ralentie en raison d'un goulet d'étranglement des I/O ?
Avec un cluster plus grand, la tâche d'entraînement nécessite un débit d'I/O plus important et, par conséquent, le débit d'entraînement peut prendre plus de temps (plus d'époques) pour atteindre les performances maximales. Cela indique que les I/O sont engorgées et que le cache est plus difficile à créer à mesure que vous faites évoluer les nœuds (exigence de débit plus élevée et topologie de réseau plus complexe). Pour plus d’informations sur la surveillance du débit d’Amazon FSx sur CloudWatch, consultez Surveillance de FSx for Lustre dans le Guide de l’utilisateur FSx for Lustre.
Q : Comment résoudre les goulets d'étranglement d'I/O lors de l'exécution d'une tâche d'entraînement distribuée avec parallélisme des données ?
Nous vous recommandons vivement d'utiliser Amazon FSx comme canal de données si vous utilisez Amazon S3. Si vous utilisez déjà Amazon FSx, mais que vous rencontrez toujours des problèmes de goulet d'étranglement d'I/O, vous avez peut-être configuré votre système de fichiers Amazon FSx avec un faible débit d'I/O et une petite capacité de stockage. Pour plus d’informations sur l’estimation et le choix de la capacité de débit d’I/O appropriée, consultez Utiliser Amazon FSx et configurer une capacité de stockage et de débit optimale.
Q : (pour la bibliothèque v1.4.0 ou ultérieure) comment puis-je résoudre l'erreur lors de l'initialisation du groupe de processus.
Si vous rencontrez le message d’erreur ValueError: Invalid backend: 'smddp' lors de l’appel à init_process_group, cela est dû à au changement critique apporté aux versions 1.4.0 et ultérieures de la bibliothèque. Vous devez importer le client PyTorch de la bibliothèque smdistributed.dataparallel.torch.torch_smddp, qui enregistre smddp comme un backend pour PyTorch. Pour en savoir plus, consultez Utilisation de la bibliothèque SMDDP dans un script d’entraînement PyTorch.
Q : (Pour la bibliothèque SMDDP v1.4.0 ou ultérieure) Je voudrais appeler les primitives collectives de l’interface torch.distributedsmddp prend-il en charge ?
Dans la version 1.4.0, la bibliothèque SMDDP prend en charge all_reduce, broadcast, reduce, all_gather et barrier de l’interface torch.distributed.
Q : (Pour la bibliothèque SMDDP v1.4.0 ou ultérieure) Cette nouvelle API fonctionne-t-elle avec d’autres bibliothèques ou classes DDP personnalisées comme Apex DDP ?
La bibliothèque SMDDP est testée avec d’autres bibliothèques de parallélisme distribué des données et implémentations de cadres tierces qui utilisent les modules torch.distribtued. L’utilisation de la bibliothèque SMDDP avec des classes DDP personnalisées fonctionne tant que les opérations collectives utilisées par les classes DDP personnalisées sont prises en charge par la bibliothèque SMDDP. Reportez-vous à la question précédente pour obtenir une liste des collectifs pris en charge. Si vous êtes confronté à ces cas d’utilisation et que vous avez besoin d’une assistance supplémentaire, contactez l’équipe SageMaker AI via le Centre de support AWS
Q : La bibliothèque SMDDP prend-elle en charge l’option « apportez votre propre conteneur (BYOC) » ? Si c'est le cas, comment installer la bibliothèque et exécuter une tâche d'entraînement distribuée en écrivant un Dockerfile personnalisé ?
Si vous souhaitez intégrer la bibliothèque SMDDP et ses dépendances minimales dans votre propre conteneur Docker, l’option BYOC est la bonne approche. Vous pouvez créer votre propre conteneur en utilisant le fichier binaire de la bibliothèque. Le processus recommandé consiste à écrire un Dockerfile personnalisé avec la bibliothèque et ses dépendances, à créer le conteneur Docker, à l’héberger dans Amazon ECR et à utiliser l’URI ECR de l’image pour lancer une tâche d’entraînement en utilisant la classe d’estimateur générique SageMaker AI. Pour obtenir plus d’instructions sur la préparation d’un Dockerfile personnalisé pour l’entraînement distribué dans SageMaker AI avec la bibliothèque SMDDP, consultez Création de votre propre conteneur Docker avec la bibliothèque SageMaker AI de parallélisme distribué des données.