

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

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

El *paralelismo de contexto* es un tipo de paralelismo de modelos que divide las activaciones de modelos a lo largo de la dimensión secuencial. A diferencia de otras técnicas de [paralelismo secuencial](https://arxiv.org/abs/2205.05198), que solo dividen `LayerNorm` y `RMSNorm`, el paralelismo de contexto divide las entradas de red y todas las activaciones intermedias a lo largo de la dimensión secuencial. 

El SMP v2 se integra con [Transformer Engine](https://docs.nvidia.com/deeplearning/transformer-engine/index.html) para lograr el paralelismo contextual y se puede utilizar junto con el FSDP y el SMP. PyTorch [Paralelismo de tensores](model-parallel-core-features-v2-tensor-parallelism.md) Puede habilitar los tres paralelismos simultáneamente para entrenamiento de modelos. El paralelismo de contexto es beneficioso para entrenar modelos con grandes tamaños de activación y longitudes de secuencia largas. Acelera la computación de puntuaciones de atención y salidas de atención, ya que permite que cada dispositivo compute solo una parte de las puntuaciones y las salidas a lo largo de la dimensión secuencial. Si bien el paralelismo de tensores también acelera la computación mediante la partición a lo largo de la dimensión oculta, la ventaja del paralelismo de contexto es más sustancial, ya que los requisitos de computación aumentan cuadráticamente con la dimensión secuencial.

## Modelos de transformador Hugging Face compatibles con paralelismo de contexto de SMP
<a name="model-parallel-core-features-v2-context-parallelism-supported-models"></a>

Actualmente, SMP v2 admite paralelismo de contexto para los siguientes modelos de transformador Hugging Face.
+ GPT-NeoX
+ Llama 2 y Llama 3
+ [Mistral 7B](https://huggingface.co/mistralai/Mistral-7B-v0.3)

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

Defina un valor entero para el `context_parallel_degree` parámetro que divide equitativamente el número de en su clúster. GPUs Por ejemplo, si tiene una instancia de 8 GPU, utilice 2, 4 u 8 para `context_parallel_degree`. Recomendamos empezar con un valor de `context_parallel_degree` pequeño y aumentarlo gradualmente hasta que el modelo se ajuste a la memoria de la GPU con la longitud de secuencia de entrada requerida.

En los siguientes fragmentos de código, se muestra cómo añadir el `torch.sagemaker.init()` del módulo de inicialización de SMP al script de entrenamiento y cómo configurar el diccionario de configuración de SMP en formato JSON para el lanzador de trabajos de entrenamiento mientras se sigue el proceso de dos pasos descrito en [Utilice la biblioteca de paralelismo de SageMaker modelos v2](model-parallel-use-api-v2.md). No es necesario realizar ningún cambio en el PyTorch modelo ni en la configuración del [PyTorch FSDP](https://pytorch.org/docs/stable/fsdp.html#module-torch.distributed.fsdp). Para obtener más información sobre el parámetro `context_parallel_degree`, consulte [Parámetros de configuración de las características esenciales de SMP v2](distributed-model-parallel-v2-reference.md#distributed-model-parallel-v2-reference-init-config).

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

Como parte del [paso 1](model-parallel-use-api-v2.md#model-parallel-adapt-pytorch-script-v2), inicialice el script con `torch.sagemaker.init()` para activar SMP v2 y encapsular el modelo con la API [`torch.sagemaker.transform`](distributed-model-parallel-v2-reference.md#model-parallel-v2-torch-sagemaker-reference-transform). 

A partir de SMP v2.6.0, puede usar el argumento `cp_comm_type` para determinar qué implementación de paralelismo de contexto debe usar. La biblioteca de SMP admite actualmente dos implementaciones: `p2p` y `all_gather`. La `p2p` implementación utiliza llamadas de peer-to-peer envío y recepción para acumular valores clave durante la implementación de atención y se ejecuta de forma asíncrona, lo que permite superposiciones con la computación. `all_gather`La implementación, en cambio, usa la operación colectiva y se ejecuta de forma sincrónica. `AllGather`

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

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

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

Como parte del [paso 2](model-parallel-use-api-v2.md#model-parallel-launch-a-training-job-v2), añada el siguiente parámetro al diccionario de configuración SMP del SageMaker PyTorch estimador.

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