Paralelismo de tensores - Amazon SageMaker AI

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

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 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

Actualmente, SMP v2 ofrece compatibilidad de paralelismo de tensores para los siguientes modelos de Hugging Face Transformer.

Para ver la configuración de referencia para aplicar paralelismo de tensores a estos modelos, consulte Sugerencias de configuración.

Configuración de paralelismo de tensores

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. No es necesario realizar ningún cambio en el PyTorch modelo ni en la configuración del PyTorch 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.

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.

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

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.

Para obtener más información sobre cómo afinar un modelo aplicando la característica de paralelismo de tensores de SMP v2, consulte Ajuste.