Déchargement de l'activation - 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.

Déchargement de l'activation

Lorsque les points de contrôle d'activation et le parallélisme de pipeline sont activés et que le nombre de microlots est supérieur à un, le déchargement de l'activation est une fonction supplémentaire qui peut réduire davantage l'utilisation de la mémoire. Le déchargement de l'activation déplace de manière asynchrone les activations avec points de contrôle correspondant à leurs microlots qui ne sont pas en cours d'exécution dans le CPU. Juste avant que le GPU n'ait besoin des activations pour le transfert vers l'arrière du microlot, cette fonctionnalité récupère au préalable les activations déchargées du CPU.

Note

Cette fonctionnalité est disponible PyTorch dans la bibliothèque de parallélisme des SageMaker modèles v1.6.0 et versions ultérieures.

Utilisation du déchargement de l'activation

Utilisez le déchargement de l'activation pour réduire l'utilisation de la mémoire lorsque le nombre de microlots est supérieur à 1 et que les points de contrôle d'activation sont activés (consultez Points de contrôle d'activation). Si les points de contrôle d'activation ne sont pas utilisés, le déchargement de l'activation n'a aucun effet. Si cette fonctionnalité est utilisée avec un seul microlot, elle ne permet pas d'économiser de la mémoire.

Pour utiliser le déchargement de l'activation, définissez "offload_activations": True dans la configuration modelparallel.

Le déchargement de l'activation déplace les activations avec points de contrôle dans des modules nn.Sequential vers le CPU de manière asynchrone. Le transfert de données via la liaison PCIe chevauche le calcul GPU. Le déchargement se produit immédiatement, dès que la transmission vers l'avant d'une couche avec points de contrôle donnée est calculée. Les activations sont rechargées sur le GPU peu de temps avant qu'elles ne soient nécessaires pour la transmission vers l'arrière d'un microlot particulier. Le transfert CPU-GPU chevauche également le calcul.

Pour régler le début du rechargement des activations dans le GPU, vous pouvez utiliser le paramètre de configuration "activation_loading_horizon" (la valeur par défaut est 4, doit être un int supérieur à 0). Avec un horizon de chargement d'activation plus grand, le rechargement des activations sur le GPU se produirait plus tôt. Si l'horizon est trop grand, l'efficacité du déchargement de l'activation pour réduire la mémoire utilisée pourrait être réduite. Si l'horizon est trop petit, il se peut que les activations ne soient pas rechargées à temps, ce qui réduirait la quantité de chevauchement et nuirait aux performances.

Astuce

Le déchargement de l'activation peut être utile pour les grands modèles comportant plus de cent milliards de paramètres.

Configuration d'un SageMaker PyTorch estimateur

mpi_options = { "enabled" : True, "processes_per_host" : 8, # 8 processes "custom_mpi_options" : "--mca btl_vader_single_copy_mechanism none " } smp_options = { "enabled":True, "parameters": { "microbatches": 4, "pipeline_parallel_degree": 2, # alias for "partitions" "placement_strategy": "cluster", "tensor_parallel_degree": 2, # tp over 2 devices "ddp": True, "offload_activations": True, "activation_loading_horizon": 4 # optional. default is 4. } }