

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

El *paralelismo de tensores* es un tipo de paralelismo de modelos en el que las ponderaciones, gradientes y estados del optimizador específicos del modelo se dividen entre los dispositivos. A diferencia del paralelismo por canalización, que mantiene intactas las ponderaciones individuales pero divide el *conjunto* de ponderaciones, gradientes o el optimizador entre los dispositivos, el paralelismo de tensores particiona ponderaciones *individuales*. Por lo general, esto implica el cálculo distribuido de operaciones, módulos o capas específicos del modelo.

El paralelismo de tensores es necesario en los casos en los que un único parámetro consume la mayor parte de la memoria de la GPU (por ejemplo, tablas de incrustación grandes con un gran tamaño de vocabulario o una capa softmax grande con un gran número de clases). En este caso, tratar este gran tensor u operación como una unidad atómica es ineficiente e impide equilibrar la carga de memoria.

SMP v2 se integra con [Transformer Engine](https://docs.nvidia.com/deeplearning/transformer-engine/index.html) para implementar el paralelismo tensorial y se ejecuta sobre el FSDP. PyTorch APIs Puede habilitar el paralelismo tensorial PyTorch FSDP y SMP simultáneamente y determinar el mejor paralelismo del modelo para obtener el mejor rendimiento.

En la práctica, el paralelismo de tensores es especialmente útil en los siguientes escenarios.
+ Cuando se entrena con contextos largos, se obtiene una memoria de activación elevada solo con FSDP.
+ Cuando se entrena con clústeres muy grandes en los que el tamaño del lote global supera los límites deseados.

## Modelos de Hugging Face Transformer compatibles con el paralelismo de tensores de SMP
<a name="model-parallel-core-features-v2-tensor-parallelism-supported-models"></a>

Actualmente, SMP v2 ofrece compatibilidad de paralelismo de tensores para los siguientes modelos de Hugging Face Transformer.
+ GPT-NeoX
+ Llama 2
+ Llama 3
+ [Mistral 7B](https://huggingface.co/mistralai/Mistral-7B-v0.3)
+ [Mixtral 8x7B](https://huggingface.co/mistralai/Mixtral-8x7B-v0.1)
+ [Mixtral 8x22B](https://huggingface.co/mistralai/Mixtral-8x22B-v0.1)

Para ver la configuración de referencia para aplicar paralelismo de tensores a estos modelos, consulte [Sugerencias de configuración](model-parallel-best-practices-v2.md#model-parallel-best-practices-v2-config-tips).

## Configuración de paralelismo de tensores
<a name="model-parallel-core-features-v2-tensor-parallelism-configuration"></a>

En `tensor_parallel_degree`, seleccione un valor para el grado de paralelismo de tensores. El valor debe dividir en partes iguales el número de unidades del clúster. GPUs Por ejemplo, para fragmentar el modelo mientras usas una instancia con 8 GPUs, elige 2, 4 u 8. Le recomendamos que comience con un número pequeño y vaya aumentado poco a poco hasta que el modelo se ajuste a la memoria de la GPU.

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 acerca de los parámetros `tensor_parallel_degree` y `random_seed`, 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).

**Configuración de SMP**

```
{
    "tensor_parallel_degree": 8,
    "random_seed": 0 
}
```

**En el script de entrenamiento**

Inicialice 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).

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

from transformers import AutoModelForCausalLM
model = AutoModelForCausalLM.from_config(..)
model = tsm.transform(model)
```

## Guardado y carga de puntos de comprobación de Hugging Face Transformer
<a name="model-parallel-core-features-v2-tensor-parallelism-checkpoints"></a>

Una vez que la biblioteca de SMP transforma un modelo, cambia el diccionario de estados (`state_dict`) del modelo. Esto significa que el modelo deja de ser compatible con las funcionalidades de puntos de comprobación originales de Hugging Face Transformer. Para ello, la biblioteca SMP permite APIs guardar los puntos de control de un modelo transformado en la representación de Hugging Face Transformer, y la API permite cargar un punto de control `torch.sagemaker.transform` del modelo Hugging Face Transformer para ajustarlos con precisión.

Para obtener más información sobre cómo guardar puntos de comprobación mientras se utiliza la característica de paralelismo de tensores de SMP v2, consulte [Puntos de comprobación mediante SMP](model-parallel-core-features-v2-checkpoints.md).

Para obtener más información sobre cómo refinar un modelo aplicando la característica de paralelismo de tensores de SMP v2, consulte [Ajuste](model-parallel-core-features-v2-fine-tuning.md).