Paralelismo especializado
Um modelo Mixture of Experts (MoE) é um modelo tipo transformador que utiliza uma abordagem esparsa, tornando-o mais leve para treinamento em comparação com o treinamento tradicional de modelos densos. Nessa arquitetura de rede neural de MoE, apenas um subconjunto dos componentes do modelo, chamados especialistas, é utilizado para cada entrada. Essa abordagem oferece várias vantagens, incluindo treinamento mais eficiente e inferência mais rápida, mesmo com um tamanho de modelo maior. Ou seja, com o mesmo orçamento computacional para treinar um modelo totalmente denso, você pode ajustar um modelo ou conjunto de dados maior ao usar o MoE.
Um modelo de MoE é composto por vários especialistas, cada um composto por uma rede neural, normalmente uma rede de feed-forward (FFN). Uma rede de portas chamada roteador determina quais tokens são enviados para qual especialista. Esses especialistas são especializados no processamento de aspectos específicos dos dados de entrada, o que permite que o modelo seja treinado mais rapidamente, reduza o custo de computação e, ao mesmo tempo, alcance a mesma qualidade de desempenho do modelo denso equivalente. Para saber mais sobre o Mixture of Experts em geral, consulte o blog Aplicação da combinação de especialistas em arquiteturas de LLM
O paralelismo especializado é um tipo de paralelismo que divide especialistas de um modelo de MoE em dispositivos de GPU.
O SMP v2 se integra ao NVIDIA Megatron
Modelos tipo transformador da Hugging Face compatíveis com o paralelismo especializado no SMP
Atualmente, o SMP v2 é compatível com paralelismo especializado para os seguintes modelos tipo transformador da Hugging Face:
Configurar o paralelismo especializado
Para expert_parallel_degree
, você seleciona um valor para o grau de paralelismo especializado. O valor deve dividir uniformemente o número de GPUs em seu cluster. Por exemplo, para fragmentar o modelo ao usar uma instância com oito GPUs, escolha dois, quatro ou oito. Recomendamos que você comece com um número pequeno e aumente gradativamente até que o modelo caiba na memória da GPU.
Os trechos de código a seguir mostram como adicionar o módulo de inicialização do SMP torch.sagemaker.init()
ao seu script de treinamento e como configurar o dicionário de configuração do SMP no formato JSON para o inicializador de tarefas de treinamento, seguindo o processo de duas etapas apresentado em Utilize a biblioteca de paralelismo de modelos do SageMaker v2. Você não precisa fazer nenhuma alteração no modelo PyTorch nem na configuração do FSDP do PyTorchexpert_parallel_degree
, consulte Parâmetros de configuração do atributo principal do SMP v2.
nota
Você pode usar o paralelismo especializado com Paralelismo de dados híbridos compartilhados. Observe que o paralelismo especializado atualmente não é compatível com o paralelismo de tensores.
nota
Esse atributo de treinamento de paralelismo especializado está disponível na seguinte combinação de bibliotecas do SageMaker e da biblioteca do PyTorch:
-
SMP v2.3.0 e versões posteriores
-
O SageMaker Python SDK v2.214.4 e versões posteriores
-
PyTorch v2.2.0 e versões posteriores
No script de treinamento
Como parte da Etapa 1, inicialize seu script com o torch.sagemaker.init()
para ativar o SMP v2 e envolver seu modelo com a API torch.sagemaker.transform, ao adicionar o parâmetro config
à API para ativar a MoE. O trecho de código a seguir mostra como ativar o a MoE do SMP para a função de modelo genérico AutoModelForCausalLM
com uso de uma configuração de modelo tipo transformador de MoE, pelo método from_config
de treinamento do zero ou o método de ajuste from_pretrained
. Para saber mais sobre a função MoEConfig
do SMP, consulte 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
) )
Configuração do SMP
Como parte da Etapa 2, adicione o seguinte parâmetro ao dicionário de configuração do SMP do estimador do PyTorch do SageMaker:
{ ..., # other SMP config parameters "expert_parallel_degree":
8
}