

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Parallelizzazione del contesto
<a name="model-parallel-core-features-v2-context-parallelism"></a>

La *parallelizzazione del contesto* è un tipo di parallelizzazione del modello che partiziona le attivazioni del modello lungo la dimensione della sequenza. A differenza di altre tecniche di [parallelizzazione delle sequenze](https://arxiv.org/abs/2205.05198), che si limitano a partizionare `LayerNorm` e `RMSNorm`, la parallelizzazione del contesto partiziona gli input di rete e tutte le attivazioni intermedie lungo la dimensione della sequenza. 

SMP v2 si integra con [Transformer Engine](https://docs.nvidia.com/deeplearning/transformer-engine/index.html) per il parallelismo di contesto e può essere utilizzato insieme a FSDP e SMP. PyTorch [Parallelizzazione tensoriale](model-parallel-core-features-v2-tensor-parallelism.md) Per l’addestramento dei modelli è possibile abilitare tutti e tre i parallelismi contemporaneamente. La parallelizzazione del contesto è utile per addestrare modelli con grandi dimensioni di attivazione e maggiori lunghezze di sequenza. Accelera il calcolo dei punteggi e degli output di attenzione, consentendo a ciascun dispositivo di calcolare solo una parte dei punteggi e degli output lungo la dimensione della sequenza. Sebbene la parallelizzazione tensoriale acceleri anche il calcolo attraverso il partizionamento lungo la dimensione nascosta, il vantaggio della parallelizzazione del contesto è più sostanziale, poiché i requisiti di calcolo aumentano quadraticamente con la dimensione della sequenza.

## Modelli di Hugging Face Transformers compatibili con la parallelizzazione del contesto SMP
<a name="model-parallel-core-features-v2-context-parallelism-supported-models"></a>

SMP v2 offre attualmente il supporto per la parallelizzazione del contesto per i seguenti modelli di Hugging Face Transformers.
+ GPT-NeoX
+ Llama 2 e Llama 3
+ [Mistral 7B](https://huggingface.co/mistralai/Mistral-7B-v0.3)

## Configurazione della parallelizzazione del contesto
<a name="model-parallel-core-features-v2-context-parallelism-configure"></a>

Imposta un valore intero per il parametro che divide equamente il numero di nel cluster`context_parallel_degree`. GPUs Ad esempio, se disponi di un’istanza con 8 GPU, utilizza 2, 4 o 8 per `context_parallel_degree`. È consigliabile iniziare con un valore `context_parallel_degree` basso e aumentarlo gradualmente fino a quando il modello risulta adatto alla memoria della GPU con la lunghezza della sequenza di input richiesta.

I seguenti frammenti di codice mostrano come aggiungere il modulo di inizializzazione SMP `torch.sagemaker.init()` allo script di addestramento e impostare il dizionario di configurazione di SMP in formato JSON per il programma di avvio del job di addestramento seguendo il processo in due fasi introdotto in [Usa la libreria di parallelismo dei SageMaker modelli v2](model-parallel-use-api-v2.md). Non è necessario apportare modifiche al PyTorch modello o alla configurazione [PyTorch FSDP](https://pytorch.org/docs/stable/fsdp.html#module-torch.distributed.fsdp). Per ulteriori informazioni sul parametro `context_parallel_degree`, vedi [Parametri di configurazione delle funzionalità principali di SMP v2](distributed-model-parallel-v2-reference.md#distributed-model-parallel-v2-reference-init-config).

### Nello script di addestramento
<a name="model-parallel-core-features-v2-context-parallelism-configure-in-script"></a>

Durante la [Fase 1](model-parallel-use-api-v2.md#model-parallel-adapt-pytorch-script-v2), inizializza lo script con `torch.sagemaker.init()` per attivare SMP v2 ed eseguire il wrapping del modello con l’API [`torch.sagemaker.transform`](distributed-model-parallel-v2-reference.md#model-parallel-v2-torch-sagemaker-reference-transform). 

A partire da SMP v2.6.0, è possibile utilizzare l’argomento `cp_comm_type` per determinare quale implementazione di contesto utilizzare. La libreria SMP attualmente supporta due implementazioni: `p2p` e `all_gather`. L'`p2p`implementazione utilizza chiamate di peer-to-peer invio e ricezione per l'accumulo di valori-chiave durante l'implementazione dell'attenzione e viene eseguita in modo asincrono, consentendo sovrapposizioni con l'elaborazione. `all_gather`l'implementazione, invece, utilizza l'operazione collettiva e viene eseguita in modo sincrono. `AllGather`

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

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

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

Come parte della [Fase 2](model-parallel-use-api-v2.md#model-parallel-launch-a-training-job-v2), aggiungete il seguente parametro al dizionario di configurazione SMP per lo SageMaker PyTorch stimatore.

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