Paralelismo experto - Amazon SageMaker

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 experto

Un modelo de mezcla de expertos (MoE) es un tipo de modelo de transformador que emplea un enfoque disperso, lo que lo hace más ligero a la hora de entrenar en comparación con el entrenamiento de los modelos densos tradicionales. En esta arquitectura de red neuronal del MoE, solo se utiliza un subconjunto de los componentes del modelo, denominados expertos, para cada entrada. Este enfoque ofrece varias ventajas, como un entrenamiento más eficiente y una inferencia más rápida, incluso con un tamaño de modelo más grande. En otras palabras, con el mismo presupuesto de cómputo para entrenar un modelo totalmente denso, puede adaptarse a un modelo o conjunto de datos más grande al utilizar el MoE.

Un modelo MoE consta de varios expertos, cada uno de los cuales consiste en una red neuronal, normalmente una red de retroalimentación ()FFN. Una red de puertas llamada router determina qué tokens se envían a cada experto. Estos expertos se especializan en procesar aspectos específicos de los datos de entrada, lo que permite que el modelo se entrene más rápido, reduzca los costos de cómputo y, al mismo tiempo, logre la misma calidad de rendimiento que su modelo denso homólogo. Para obtener más información sobre Mixture of Experts en general, consulta el blog Applying Mixture of Experts in LLM Architectures en el sitio web NVIDIA para desarrolladores.

El paralelismo experto es un tipo de paralelismo que permite dividir a los expertos de un modelo MoE entre dispositivos. GPU

SMPLa v2 se integra con NVIDIAMegatron para implementar un paralelismo experto que sirva de apoyo a la formación de modelos MoE, y funciona sobre él. PyTorch FSDP APIs Puedes seguir usando tu código de PyTorch FSDP entrenamiento tal como está y activar el paralelismo SMP experto para entrenar modelos MoE.

Modelos Hugging Face Transformer compatibles SMP con paralelismo experto

SMPActualmente, v2 ofrece soporte experto de paralelismo para los siguientes modelos de transformadores Hugging Face.

Configure el paralelismo experto

Paraexpert_parallel_degree, selecciona un valor para el grado de paralelismo experto. 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 FSDP Para obtener más información sobre el parámetro expert_parallel_degree, consulte SMPv2: parámetros de configuración de las funciones principales.

nota

Puede utilizar el paralelismo experto con. Paralelismo híbrido de datos fragmentados Tenga en cuenta que el paralelismo experto no es compatible actualmente con el paralelismo tensorial.

nota

Esta función de formación experta en paralelismo está disponible en la siguiente combinación de bibliotecas de y la biblioteca: SageMaker PyTorch

  • SMPv2.3.0 y versiones posteriores

  • SageMaker Python SDK v2.214.4 y versiones posteriores

  • PyTorch v2.2.0 y versiones posteriores

En tu guion de entrenamiento

Como parte del paso 1, inicialice el script con la versión 2 torch.sagemaker.init() para SMP activar la versión 2 y añada el torch.sagemaker.transform API config parámetro al MoE API para activar el MoE. En el siguiente fragmento de código se muestra cómo activar el SMP MoE para la clase AutoModelForCausalLM de modelo genérico mediante la configuración de un modelo de transformador de MoE mediante el from_config método de entrenamiento desde cero o el from_pretrained método de ajuste. Para obtener más información sobre la clase, consulte. SMP MoEConfig torch.sagemaker.moe.moe_config.MoEConfig

# Import the torch.sagemaker.transform API and initialize. import torch.sagemaker as tsm tsm.init() # Import transformers AutoModelForCausalLM class. from transformers import AutoModelForCausalLM # Import the SMP-implementation of MoE configuration class. from torch.sagemaker.moe.moe_config import MoEConfig # Define a transformer model with an MoE model configuration model = AutoModelForCausalLM.from_config(MoEModelConfig) # Wrap it by torch.sagemaker.transform with the SMP MoE configuration. model = tsm.transform( model, config=MoEConfig( smp_moe=True, random_seed=12345, moe_load_balancing="sinkhorn", global_token_shuffle=False, moe_all_to_all_dispatcher=True, moe_aux_loss_coeff=0.001, moe_z_loss_coeff=0.001 ) )

SMPconfiguración

Como parte del paso 2, añada el siguiente parámetro al diccionario SMP de configuración del SageMaker PyTorch estimador.

{ ..., # other SMP config parameters "expert_parallel_degree": 8 }