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 intactos los pesos individuales pero divide el conjunto de pesos, gradientes u optimizador entre dispositivos, el paralelismo tensorial fragmenta los pesos individuales. Por lo general, esto implica el cálculo distribuido de operaciones, módulos o capas específicos del modelo.
El paralelismo tensorial es necesario en los casos en que un único parámetro consume la mayor parte de la GPU memoria (por ejemplo, tablas incrustadas de gran tamaño con un vocabulario de gran tamaño o una capa softmax de gran tamaño 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.
SMPv2 se integra con Transformer Engine
En la práctica, el paralelismo tensorial es especialmente útil en los siguientes escenarios.
-
Cuando se entrena con contextos largos, ya que solo con eso se consigue una alta activación de la memoria. FSDP
-
Cuando entrenas 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 SMP tensorial
SMPActualmente, v2 ofrece soporte de paralelismo tensorial para los siguientes modelos de transformadores Hugging Face.
-
GPT-NeoX
-
Llama 2
Para ver la configuración de referencia para aplicar el paralelismo tensorial en estos modelos, consulte. Sugerencias de configuración
Configure el paralelismo tensorial
Paratensor_parallel_degree
, selecciona un valor para el grado de paralelismo tensorial. El valor debe dividir en partes iguales el número de GPUs su clúster. Por ejemplo, para fragmentar el modelo mientras usas una instancia con 8GPUs, elige 2, 4 u 8. Te recomendamos que comiences con un número pequeño y lo aumentes gradualmente hasta que el modelo quepa en la GPU memoria.
En los siguientes fragmentos de código se muestra cómo añadir el módulo de SMP inicialización torch.sagemaker.init()
a su script de formación y cómo configurar el diccionario de SMP configuración con el JSON formato adecuado para el lanzador de tareas de formación, siguiendo el proceso de dos pasos introducido en el presente documento. Utilice la biblioteca de paralelismo de SageMaker modelos v2 No es necesario realizar ningún cambio en el modelo o la configuración. PyTorch PyTorch FSDPtensor_parallel_degree
y random_seed
, consulte SMPv2: parámetros de configuración de las funciones principales.
SMPconfiguración
{ "tensor_parallel_degree": 8, "random_seed": 0 }
En tu guion de entrenamiento
Inicialice con torch.sagemaker.init()
para activar la SMP versión 2 y envuelva su modelo con. torch.sagemaker.transform API
import torch.sagemaker as tsm tsm.init() from transformers import AutoModelForCausalLM model = AutoModelForCausalLM.from_config(..) model = tsm.transform(model)
Guardar y cargar los puntos de control de Hugging Face Transformer
Una vez que la SMP biblioteca 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 control originales del Hugging Face Transformer. Para ello, la SMP biblioteca permite APIs guardar los puntos de control de un modelo transformado en la representación de Hugging Face Transformer y cargar un punto de control del modelo Hugging Face Transformer torch.sagemaker.transform
API para ajustarlos con precisión.
Para obtener más información sobre cómo guardar puntos de control mientras se utiliza la función de paralelismo tensorial de la versión 2, consulte. SMP Compruebe la posición utilizando SMP
Para obtener más información sobre cómo ajustar un modelo aplicando la función de paralelismo tensorial de la versión 2, consulte. SMP Microajuste