FAQ sur la bibliothèque parallèle de données Amazon SageMaker - Amazon SageMaker

FAQ sur la bibliothèque parallèle de données Amazon SageMaker

Utilisez les éléments suivants pour trouver des réponses aux questions fréquemment posées sur la bibliothèque de données parallèles de SageMaker.

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 crée-t-il des instances C5 supplémentaires pour les tâches utilisant la bibliothèque?

La bibliothèque utilise les CPU disponibles avec les instances GPU. Aucune instance C5 ou CPU supplémentaire n'est lancée. Si votre tâche d'entraînement SageMaker utilise des clusters ml.p3dn.24xlarge de 8 nœuds, seules 8 instances ml.p3dn.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 de parallélisme de données de SageMaker et d'un cluster cinq fois plus grand suffit-elle pour obtenir une vitesse pratiquement quintuplée ? Ou dois-je revoir ses hyperparamètres d'entraînement après avoir activé la bibliothèque ?

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 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 Modifier un script d'entraînement TensorFlow et de Modifier un script d'entraînement PyTorch.

Q : la bibliothèque est-elle pertinente dans une configuration à hôte unique et à appareils 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 : La bibliothèque peut-elle être utilisée avec PyTorch Lightning?

Non. Cependant, avec le DDP PyTorch de la bibliothèque, vous pouvez écrire un DDP personnalisé pour la fonctionnalité.

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. Veuillez consulter 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 est utilisée, les données d'entraînement doivent-elles être obligatoirement dans FSx for 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. Actuellement, la bibliothèque prend en charge les instances ml.p3.16xlarge, ml.p3dn.24xlarge et ml.p4d.24xlarge.

Q : quels cadres et versions de cadre sont actuellement pris en charge par la bibliothèque au lancement?

La bibliothèque 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 qui est empaquetée dans les conteneurs AWS Deep Learning Containers, consultez les notes de mise à jour des conteneurs Deep Learning Containers.

Q : La bibliothèque prend-elle en charge l'AMP?

Oui. La bibliothèque d'entraînement distribué pour le parallélisme des données de SageMaker 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 de parallélisme de données SageMaker 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 :

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, veuillez consulter 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, veuillez consulter 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û à une modification avec rupture dans la bibliothèque v1.4.0 et ultérieures. 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 Utiliser la bibliothèque parallèle de données distribuées SageMaker comme backend de torch.distributed.

Q : (pour la bibliothèque v1.4.0 ou ultérieure) je voudrais appeler les primitives collectives de l'interface torch.distributed. Quelles primitives le backend smddp prend-il en charge ?

Dans la version 1.4.0, la bibliothèque prend en charge all_reduce, broadcast, reduce,all_gather, et barrier.

Q : (pour la bibliothèque v1.4.0 ou ultérieure) cette nouvelle API fonctionne-t-elle avec d'autres classes ou bibliothèques DDP personnalisées comme Apex DDP ?

La bibliothèque de données parallèles SageMaker est testée avec d'autres bibliothèques de données parallèles distribuées tierces et des mises en œuvre de cadres qui utilisent les modules torch.distribtued. L'utilisation de la bibliothèque parallèle de données SageMaker avec des classes DDP personnalisées fonctionne tant que les collectifs utilisés par les classes DDP personnalisées sont pris en charge par la bibliothèque. 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 via le Centre de support AWS ou les forums de développeurs AWS pour Amazon SageMaker.

Q : la bibliothèque prend-elle en charge l'option BYOC (bring-your-own-container) ? 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 parallèle de données SageMaker et ses dépendances minimales dans votre propre conteneur Docker, 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 de l'image ECR pour lancer une tâche d'entraînement en utilisant la classe d'estimateur générique SageMaker. Pour obtenir plus d'instructions sur la préparation d'un Dockerfile personnalisé pour l'entraînement distribué dans SageMaker avec la bibliothèque parallèle de données SageMaker, reportez-vous à Créez votre propre conteneur Docker avec la bibliothèque de données parallèles distribuées SageMaker.