SageMaker meilleures pratiques en matière de parallélisme des modèles distribués - 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.

SageMaker meilleures pratiques en matière de parallélisme des modèles distribués

Suivez les instructions suivantes lorsque vous exécutez une tâche de formation distribuée avec la SageMaker Model Parallel Library v2 (SMP v2).

Configuration de la bonne configuration pour la formation distribuée

Pour estimer et trouver le meilleur point de départ pour appliquer les techniques de formation distribuées proposées par SMP v2, consultez la liste suivante. Chaque élément de la liste décrit les avantages de l'utilisation Principales fonctionnalités de la bibliothèque de parallélisme de SageMaker modèles v2 ainsi que les compromis potentiels.

Conseils de configuration

Cette section fournit des directives sur la manière de choisir les meilleures configurations de modèle pour un débit optimal tout en respectant les exigences relatives à la taille des lots à l'échelle mondiale.

Tout d'abord, nous recommandons les configurations suivantes, quelle que soit la taille de votre modèle.

  1. Utilisez le type d'instance le plus puissant que vous puissiez utiliser.

  2. Activez la précision mixte en permanence, car elle offre des avantages considérables en termes de performances et de réduction de la mémoire. Nous vous recommandons de l'utiliser bfloat16 car il est plus précis quefloat16.

  3. Activez la bibliothèque de parallélisme des données SageMaker distribuées (au lieu d'utiliser NCCL) chaque fois que cela est applicable, comme indiqué dans. Compatibilité avec la SMDDP bibliothèque optimisée pour AWS infrastructure Une exception concerne les cas tensor-parallelism-only d'utilisation (hybrid_shard_degree = 1ettensor_paralle_degree > 1).

  4. Si votre modèle comporte plus de 60 milliards de paramètres, nous vous recommandons d'utiliserInitialisation différée des paramètres. Vous pouvez également utiliser l'initialisation différée des paramètres pour accélérer l'initialisation de n'importe quel modèle.

  5. Nous vous recommandons de l'activerPoints de contrôle d'activation.

En fonction de la taille de votre modèle, nous vous recommandons de commencer par les conseils suivants.

  1. Utilisez le parallélisme de données fragmenté.

    1. En fonction de la taille du lot que vous souhaitez placer dans la mémoire du GPU, choisissez le degré de sharded data parallel approprié. Normalement, vous devez commencer par le degré le plus faible pour adapter votre modèle à la mémoire du GPU tout en minimisant le surcoût lié aux communications réseau. Si vous voyez un avertissement indiquant que le cache est vidé, nous vous recommandons d'augmenter le degré de sharding.

    2. Déterminez world_size en fonction de la taille de lot locale maximale et de la taille de lot globale requise, le cas échéant.

    3. Vous pouvez expérimenter le déchargement des activations. Selon les scénarios, il peut répondre à vos besoins en mémoire sans avoir à augmenter le degré de partitionnement, ce qui se traduit par une diminution des communications.

  2. Utilisez simultanément le parallélisme des données fragmentées du PyTorch FSDP et le parallélisme des tenseurs du SMP v2, comme indiqué dans. Parallélisme de tenseur

    1. Lors de l'entraînement sur de grands clusters, avec le seul FSDP, la taille globale du lot peut devenir trop importante, ce qui entraîne des problèmes de convergence pour le modèle. En règle générale, la plupart des travaux de recherche maintiennent la taille du lot en dessous de 4 millions de jetons. Dans ce cas, vous pouvez résoudre le problème en composant le PyTorch FSDP avec le parallélisme des tenseurs de SMP v2 afin de réduire la taille du lot.

      Par exemple, si vous avez 256 nœuds et une longueur de séquence de 4096, même une taille de lot de 1 par GPU entraîne une taille de lot globale de 8 millions de jetons. Toutefois, lorsque vous utilisez le parallélisme tensoriel avec un degré 2 et une taille de lot de 1 par groupe de tenseurs parallèles, cela devient une demi-taille de lot par GPU, ce qui se traduit par 4 millions de jetons.

    2. Lorsque vous vous entraînez avec de longues durées contextuelles, telles que 8 ou 16 000, la mémoire d'activation peut devenir très importante. Le FSDP ne partage pas les activations, et celles-ci peuvent entraîner un épuisement de la mémoire des GPU. Dans de tels scénarios, vous pouvez vous entraîner efficacement en composant le PyTorch FSDP avec le parallélisme des tenseurs de SMP v2.

Référence de configurations

L'équipe de formation au parallélisme des SageMaker modèles fournit les points de référence suivants sur la base d'expériences avec le modèle Llama 2 transformé en modèle de transformateur SMP à l'aide d'instances d'une longueur de séquence de 4096 et d'une précision mixte (torch.sagemaker.transformFP16 ou BF16) et entraînées sur des ml.p4d.24xlarge instances d'une longueur de séquence de 4096 et d'une précision mixte (FP16 ou BF16).

Modèle Taille du modèle (nombre de paramètres du modèle) Le nombre d'instances Degré de parallélisation des données partitionnées Degré de parallélisation du tenseur Points de contrôle d'activation Déchargement de l'activation Taille de lot
Lama 2 7B 1 8 1 TRUE FALSE 4
70B 32 256 1 TRUE FALSE 2
175B 64 128 4 TRUE TRUE 6

Vous pouvez extrapoler à partir des configurations précédentes pour estimer l'utilisation de la mémoire GPU pour la configuration de votre modèle. Par exemple, si vous augmentez la longueur de séquence d'un modèle de 10 milliards de paramètres ou si vous augmentez la taille du modèle à 20 milliards, vous pouvez commencer par réduire la taille du lot. Si le modèle ne convient toujours pas, essayez d'augmenter le degré de parallélisme de tenseur.

Surveillance et enregistrement d'une tâche de formation à l'aide de la SageMaker console et d'Amazon CloudWatch

Pour surveiller les indicateurs au niveau du système tels que l'utilisation de la mémoire du processeur, l'utilisation de la mémoire du processeur graphique et l'utilisation du processeur graphique, utilisez la visualisation fournie via la SageMaker console.

  1. Dans le panneau de navigation de gauche, choisissez Training (Entraînement).

  2. Choisissez Training jobs (Tâches d'entraînement).

  3. Dans le volet principal, sélectionnez le nom de la tâche d'entraînement dont vous voulez afficher plus de détails.

  4. Parcourez le volet principal et trouvez la section Monitor (Contrôler) pour voir la visualisation automatisée.

  5. Pour voir les journaux des tâches d'entraînement, choisissez View logs (Afficher des journaux)dans la section Monitor (Contrôler). Vous pouvez accéder aux journaux de tâches de formation distribués de la tâche de formation dans CloudWatch. Si vous avez lancé un entraînement distribué à plusieurs nœuds, vous devriez voir plusieurs flux de journaux avec des balises au format de algo-n-1234567890. Leflux de journaux algo-1 suit les journaux d'entraînement à partir du nœud principal (0e).

Pour plus d’informations, consultez Surveillez et analysez les offres de formation à l'aide d'Amazon CloudWatch Metrics.

Autorisations

Pour exécuter une tâche de SageMaker formation avec le parallélisme des modèles, assurez-vous de disposer des autorisations appropriées dans votre rôle IAM, telles que les suivantes :