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.
Parallélisme de tenseur
Le parallélisme de tenseur est un type de parallélisme de modèle dans lequel des poids, des gradients et des états d'optimiseur spécifiques sont répartis entre les appareils. Contrairement au parallélisme des pipelines, qui permet de conserver les poids individuels intacts tout en répartissant l'ensemble des poids, des dégradés ou de l'optimiseur entre les appareils, le parallélisme tensoriel divise les poids individuels. Cela implique généralement un calcul distribué d'opérations, de modules ou de couches spécifiques du modèle.
Le parallélisme tensoriel est requis dans les cas où un seul paramètre consomme la majeure partie de la GPU mémoire (par exemple, de grandes tables d'intégration avec un vocabulaire important ou une grande couche softmax contenant un grand nombre de classes). Dans ce cas, le traitement de ce tenseur ou de cette opération de grande taille comme une unité atomique est inefficace et nuit à l'équilibre de la charge mémoire.
SMPLa v2 s'intègre à Transformer Engine
En pratique, le parallélisme tensoriel est particulièrement utile dans les scénarios suivants.
-
Lorsque vous vous entraînez avec de longues durées de contexte, cela entraîne une mémoire d'activation élevée en FSDP solo.
-
Lorsque vous vous entraînez avec de très grands clusters sur lesquels la taille globale du lot dépasse les limites souhaitées.
Modèles Hugging Face Transformer compatibles avec le parallélisme SMP des tenseurs
SMPLa v2 prend actuellement en charge le parallélisme des tenseurs pour les modèles de transformateurs Hugging Face suivants.
-
GPT-NéOx
-
Lama 2
Pour la configuration de référence permettant d'appliquer le parallélisme des tenseurs à ces modèles, voir. Conseils de configuration
Configurer le parallélisme des tenseurs
Pourtensor_parallel_degree
, vous sélectionnez une valeur pour le degré de parallélisme des tenseurs. La valeur doit diviser de manière égale le nombre de GPUs dans votre cluster. Par exemple, pour partager votre modèle lorsque vous utilisez une instance avec 8GPUs, choisissez 2, 4 ou 8. Nous vous recommandons de commencer par un petit nombre, puis de l'augmenter progressivement jusqu'à ce que le modèle soit intégré à la GPU mémoire.
Les extraits de code suivants montrent comment ajouter le module d'SMPinitialisation torch.sagemaker.init()
à votre script de formation et configurer le dictionnaire de SMP configuration JSON au format pour le lanceur de tâches de formation tout en suivant le processus en deux étapes introduit dans. Utiliser la bibliothèque de parallélisme des SageMaker modèles v2 Il n'est pas nécessaire d'apporter des modifications à votre PyTorch modèle ou à votre PyTorch FSDPtensor_parallel_degree
et random_seed
, consultez SMPparamètres de configuration des fonctionnalités principales de la v2.
SMPconfiguration
{ "tensor_parallel_degree": 8, "random_seed": 0 }
Dans votre script d'entraînement
Initialisez avec torch.sagemaker.init()
pour activer la SMP v2 et enveloppez votre modèle avec le torch.sagemaker.transformAPI.
import torch.sagemaker as tsm tsm.init() from transformers import AutoModelForCausalLM model = AutoModelForCausalLM.from_config(..) model = tsm.transform(model)
Enregistrer et charger les points de contrôle du Hugging Face Transformer
Une fois que la SMP bibliothèque a transformé un modèle, elle modifie le dictionnaire d'état (state_dict
) du modèle. Cela signifie que le modèle devient incompatible avec les fonctionnalités de point de contrôle d'origine du Hugging Face Transformer. Pour gérer cela, la SMP bibliothèque permet d'APIsenregistrer les points de contrôle d'un modèle transformé dans la représentation de Hugging Face Transformer, et de charger un point de contrôle du modèle Hugging Face Transformer torch.sagemaker.transform
API pour un réglage précis.
Pour plus d'informations sur la sauvegarde des points de contrôle lors de l'utilisation de la fonction de parallélisme des tenseurs de la SMP version 2, consultez. Point de contrôle à l'aide de SMP
Pour plus d'informations sur le réglage précis d'un modèle en appliquant la fonction de parallélisme tensoriel de la SMP v2, consultez. Affinement