

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Paralelismo de contexto
<a name="model-parallel-core-features-v2-context-parallelism"></a>

O *paralelismo de contexto* é um tipo de paralelismo de modelo que divide as ativações do modelo ao longo da dimensão da sequência. Ao contrário de outras técnicas de [paralelismo de sequência](https://arxiv.org/abs/2205.05198), que apenas dividem `LayerNorm` e `RMSNorm`, o paralelismo de contexto divide as entradas da rede e todas as ativações intermediárias ao longo da dimensão da sequência. 

O SMP v2 se integra ao [Transformer Engine](https://docs.nvidia.com/deeplearning/transformer-engine/index.html) para paralelismo de contexto e pode ser usado em conjunto com FSDP e SMP. PyTorch [Paralelismo de tensores](model-parallel-core-features-v2-tensor-parallelism.md) Você pode ativar os três paralelismos simultaneamente para o treinamento do modelo. O paralelismo de contexto é benéfico para modelos de treinamento com grandes tamanhos de ativação e longos comprimentos de sequência. Ele acelera o cálculo das pontuações e saídas de atenção, permitindo que cada dispositivo calcule apenas uma parte das pontuações e saídas ao longo da dimensão da sequência. Embora o paralelismo de tensores também acelere a computação por meio da divisão pela dimensão oculta, a vantagem do paralelismo de contexto é mais substancial, pois os requisitos computacionais aumentam de maneira quadrática com a dimensão da sequência.

## Modelos tipo transformador da Hugging Face compatíveis com o paralelismo de contexto no SMP
<a name="model-parallel-core-features-v2-context-parallelism-supported-models"></a>

Atualmente, o SMP v2 é compatível com paralelismo de contexto para os seguintes modelo tipo transformador da Hugging Face:
+ GPT-NeoX
+ Llama 2 e Llama 3
+ [Mistral 7B](https://huggingface.co/mistralai/Mistral-7B-v0.3)

## Configurar paralelismo de contexto
<a name="model-parallel-core-features-v2-context-parallelism-configure"></a>

Defina um valor inteiro para o `context_parallel_degree` parâmetro que divide uniformemente o número de GPUs no seu cluster. Por exemplo, se você tiver uma instância de oito GPUs, use dois, quatro ou oito para `context_parallel_degree`. Recomendamos começar com um valor pequeno de `context_parallel_degree` e aumentá-lo gradativamente até que o modelo caiba na memória da GPU com o comprimento de sequência de entrada necessário.

Os trechos de código a seguir mostram como adicionar o módulo de inicialização do SMP `torch.sagemaker.init()` ao seu script de treinamento e como configurar o dicionário de configuração do SMP no formato JSON para o inicializador de tarefas de treinamento, seguindo o processo de duas etapas apresentado em [Use a biblioteca de paralelismo de SageMaker modelos v2](model-parallel-use-api-v2.md). Você não precisa fazer nenhuma alteração no PyTorch modelo ou na configuração do [PyTorch FSDP.](https://pytorch.org/docs/stable/fsdp.html#module-torch.distributed.fsdp) Para obter mais informações sobre o parâmetro `context_parallel_degree`, consulte [Parâmetros de configuração do atributo principal do SMP v2](distributed-model-parallel-v2-reference.md#distributed-model-parallel-v2-reference-init-config).

### No script de treinamento
<a name="model-parallel-core-features-v2-context-parallelism-configure-in-script"></a>

Como parte da [Etapa 1](model-parallel-use-api-v2.md#model-parallel-adapt-pytorch-script-v2), inicialize seu script `torch.sagemaker.init()` para ativar o SMP v2 e envolver seu modelo com a API [`torch.sagemaker.transform`](distributed-model-parallel-v2-reference.md#model-parallel-v2-torch-sagemaker-reference-transform). 

A partir do SMP v2.6.0, você pode usar o argumento `cp_comm_type` para determinar qual implementação de paralelismo de contexto usar. Atualmente, a biblioteca de SMP é compatível com duas implementações: `p2p` e `all_gather`. A `p2p` implementação usa chamadas de peer-to-peer envio e recebimento para acúmulo de valores-chave durante a implementação de atenção e é executada de forma assíncrona, permitindo sobreposições com a computação. `all_gather`a implementação, em vez disso, usa a operação `AllGather` coletiva e é executada de forma síncrona.

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

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

### Configuração do SMP
<a name="model-parallel-core-features-v2-context-parallelism-configure-in-estimator"></a>

Como parte da [Etapa 2](model-parallel-use-api-v2.md#model-parallel-launch-a-training-job-v2), adicione o seguinte parâmetro ao dicionário de configuração SMP do SageMaker PyTorch estimador.

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