

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 contexte
<a name="model-parallel-core-features-v2-context-parallelism"></a>

Le *parallélisme de contexte* est un type de parallélisme des modèles qui répartit les activations du modèle selon la dimension de séquence. Contrairement aux autres techniques de [parallélisme de séquence](https://arxiv.org/abs/2205.05198), qui ne font que partitionner `LayerNorm` et `RMSNorm`, le parallélisme de contexte partitionne les entrées réseau et toutes les activations intermédiaires le long de la dimension de séquence. 

SMP v2 s'intègre à [Transformer Engine](https://docs.nvidia.com/deeplearning/transformer-engine/index.html) pour le parallélisme du contexte et peut être utilisé conjointement avec PyTorch FSDP et SMP. [Parallélisme de tenseur](model-parallel-core-features-v2-tensor-parallelism.md) Vous pouvez activer les trois parallélismes simultanément pour l’entraînement des modèles. Le parallélisme de contexte est bénéfique pour les modèles d’entraînement avec de grandes tailles d’activation et d’importantes longueurs de séquence. Il accélère le calcul des scores et des résultats de l’attention, en permettant à chaque appareil de calculer uniquement une partie des scores et des résultats le long de la dimension de séquence. Alors que le parallélisme de tenseur accélère également le calcul en partitionnant le long de la dimension cachée, l’avantage du parallélisme de contexte est d’autant plus important que les exigences de calcul augmentent de façon quadratique avec la dimension de la séquence.

## Modèles de transformeurs Hugging Face compatibles avec le parallélisme de contexte SMP
<a name="model-parallel-core-features-v2-context-parallelism-supported-models"></a>

SMP v2 prend actuellement en charge le parallélisme de contexte pour les modèles de transformeur Hugging Face suivants.
+ GPT-NeoX
+ Llama 2 et Llama 3
+ [Mistral 7B](https://huggingface.co/mistralai/Mistral-7B-v0.3)

## Configuration du parallélisme de contexte
<a name="model-parallel-core-features-v2-context-parallelism-configure"></a>

Définissez une valeur entière pour le `context_parallel_degree` paramètre qui divise uniformément le nombre de GPUs dans votre cluster. Par exemple, si vous avez une instance à 8 GPU, utilisez 2, 4 ou 8 pour `context_parallel_degree`. Nous vous recommandons de commencer par une petite valeur `context_parallel_degree` et de l’augmenter progressivement jusqu’à ce que le modèle tienne dans la mémoire du GPU avec la longueur de séquence d’entrée requise.

Les extraits de code suivants illustrent 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âche d’entraînement, tout en suivant le processus en deux étapes introduit dans [Utiliser la bibliothèque de parallélisme des SageMaker modèles v2](model-parallel-use-api-v2.md). Il n'est pas nécessaire de modifier votre PyTorch modèle ou votre configuration [PyTorch FSDP.](https://pytorch.org/docs/stable/fsdp.html#module-torch.distributed.fsdp) Pour plus d’informations sur le paramètre `context_parallel_degree`, consultez [Paramètres de configuration des caractéristiques principales de SMP v2](distributed-model-parallel-v2-reference.md#distributed-model-parallel-v2-reference-init-config).

### Dans le script d’entraînement
<a name="model-parallel-core-features-v2-context-parallelism-configure-in-script"></a>

Dans le cadre de l’[étape 1](model-parallel-use-api-v2.md#model-parallel-adapt-pytorch-script-v2), initialisez votre script avec `torch.sagemaker.init()` pour activer SMP v2 et encapsulez votre modèle avec l’API [`torch.sagemaker.transform`](distributed-model-parallel-v2-reference.md#model-parallel-v2-torch-sagemaker-reference-transform). 

À partir de SMP v2.6.0, vous pouvez utiliser l’argument `cp_comm_type` pour déterminer quelle implémentation du parallélisme de contexte utiliser. La bibliothèque SMP prend actuellement en charge deux implémentations : `p2p` et `all_gather`. L'`p2p`implémentation utilise des appels d' peer-to-peerenvoi/réception pour l'accumulation de valeurs-clés lors de l'implémentation de l'attention et s'exécute de manière asynchrone, ce qui permet des chevauchements avec le calcul. `all_gather`l'implémentation utilise plutôt l'opération `AllGather` collective et s'exécute de manière synchrone.

```
import torch.sagemaker as tsm
tsm.init()

from transformers import AutoModelForCausalLM
model = AutoModelForCausalLM.from_config(..)
model = tsm.transform(model, cp_comm_type="p2p")
```

### Configuration SMP
<a name="model-parallel-core-features-v2-context-parallelism-configure-in-estimator"></a>

Dans le cadre de l'[étape 2](model-parallel-use-api-v2.md#model-parallel-launch-a-training-job-v2), ajoutez le paramètre suivant au dictionnaire de configuration SMP pour l' SageMaker PyTorch estimateur.

```
{   
    ..., # other SMP config parameters
    "context_parallel_degree": 2
}
```