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 hybride de données fragmentées
Le parallélisme des données partitionnées est une technique d'entraînement distribuée économisant de la mémoire qui divise l'état d'un modèle (paramètres du modèle, dégradés et états de l'optimiseur) entre les appareils. Cela vous permet d'adapter un modèle plus grand ou d'augmenter la taille du lot en utilisant la mémoire GPU libérée. La bibliothèque SMP permet d'exécuter le parallélisme de données partitionné avec PyTorch Fully Sharded Data Parallel (FSDP). PyTorch Par défaut, le FSDP partage l'ensemble des GPU utilisés. Dans SMP v2, la bibliothèque propose ce parallélisme de données fragmenté en plus du PyTorch FSDP en étendant le sharding PyTorch hybride (HYBRID_SHARD
), qui est l'une des stratégiesFULL_SHARD
SHARD_GRAD_OP
HYBRID_SHARD
_HYBRID_SHARD_ZERO2
L'extension du sharding hybride de cette manière permet de mettre en œuvre, scale-aware-sharding comme décrit dans le blog, la mise à l'échelle quasi-linéaire d'un apprentissage de modèles gigantesques pour le FSDP
La bibliothèque SMP facilite son utilisation HYBRID_SHARD
_HYBRID_SHARD_ZERO2
sur n'importe quel nombre configurable de GPU, en étendant le PyTorch FSDP natif qui prend en charge le partitionnement sur un seul nœud (HYBRID_SHARD
) ou sur tous les GPU (). FULL_SHARD
PyTorch Les appels FSDP peuvent rester tels quels, et il vous suffit d'ajouter l'hybrid_shard_degree
argument à la configuration SMP, comme indiqué dans l'exemple de code suivant. Il n'est pas nécessaire de modifier la valeur de l'sharding_strategy
argument dans le wrapper PyTorch FSDP qui entoure votre modèle. PyTorch Vous pouvez passer ShardingStrategy.HYBRID_SHARD
comme valeur. La bibliothèque SMP remplace également la stratégie du script et lui attribue la valeur ShardingStrategy.HYBRID_SHARD
si vous spécifiez une valeur égale ou supérieure à 2 pour le hybrid_shard_degree
paramètre.
Les extraits de code suivants montrent comment ajouter le module d'initialisation SMP torch.sagemaker.init()
à votre script d'entraînement et configurer le dictionnaire de configuration SMP au format JSON pour le lanceur de tâches de formation, tout en suivant le processus en deux étapes introduit dans. Commencez avec la bibliothèque de parallélisme de SageMaker modèles v2 Il n'est pas nécessaire de modifier votre PyTorch modèle ou votre configuration PyTorch FSDP.hybrid_shard_degree
, consultez Paramètres de configuration des fonctionnalités principales du SMP v2.
Dictionnaire de configuration SMP
{ "hybrid_shard_degree": 16 }
Dans le script d'entraînement
import torch.sagemaker as tsm tsm.init() # Set up a PyTorch model model = ... # Wrap the PyTorch model using the PyTorch FSDP module model = FSDP( model, ... ) # Optimizer needs to be created after FSDP wrapper optimizer = ...