Paralelismo de contexto
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 secuencialLayerNorm y RMSNorm, el paralelismo de contexto divide las entradas de red y todas las activaciones intermedias a lo largo de la dimensión secuencial.
SMP v2 se integra con Transformer Engine
Modelos de transformador Hugging Face compatibles con paralelismo de contexto de SMP
Actualmente, SMP v2 admite paralelismo de contexto para los siguientes modelos de transformador Hugging Face.
-
GPT-NeoX
-
Llama 2 y Llama 3
Configuración de paralelismo de contexto
Defina un valor entero para el parámetro context_parallel_degree que divide equitativamente el número de GPU del clúster. 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 Uso de la biblioteca de paralelismo de modelos de SageMaker v2. No necesita hacer cambios en el modelo de PyTorch o en la configuración del PyTorch FSDPcontext_parallel_degree, consulte Parámetros de configuración de las características esenciales de SMP v2.
En el script de entrenamiento
Como parte del paso 1, inicialice el script con torch.sagemaker.init() para activar SMP v2 y encapsular el modelo con la API torch.sagemaker.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 implementación p2p utiliza llamadas de envío y recepción entre pares para acumular claves-valores durante la implementación de atención y se ejecuta de forma asíncrona, lo que permite superposiciones con computación. La implementación de all_gather, por su parte, usa la operación colectiva AllGather y se ejecuta de forma sincrónica.
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
Como parte del paso 2, añada el siguiente parámetro al diccionario de configuración de SMP para el estimador de PyTorch de SageMaker.
{ ..., # other SMP config parameters "context_parallel_degree": 2 }