专家平行性 - Amazon SageMaker

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

专家平行性

混合专家 (MoE) 模型是一种采用稀疏方法的转换器模型,与训练传统的密集模型相比,它更易于训练。在这个 MoE 神经网络架构中,每个输入仅使用模型中称为专家的子集。这种方法具有多种优点,包括更高效的训练和更快的推理,即使模型大小更大。换句话说,在训练全密集模型时使用相同的计算预算,在使用 MoE 时可以拟合更大的模型或数据集。

MoE 模型由多个专家组成,每个专家都由一个神经网络组成,通常是一个前馈网络 () FFN。名为 rout er 的门禁网络决定将哪些令牌发送给哪位专家。这些专家专门处理输入数据的特定方面,使模型能够更快地训练,降低计算成本,同时实现与对应密集模型相同的性能质量。要了解有关混合专家的更多信息,请参阅NVIDIA开发者网站中的博客 “在LLM架构中应用混合专家”。

专家并行性是一种并行性,用于在设备之间拆分 MoE 模型的专家。GPU

SMPv2 与 NVIDIAMegatron 集成,用于实现专家并行性以支持训练 MoE 模型,并在之上运行。 PyTorch FSDP APIs您可以继续按原样使用 PyTorch FSDP训练代码,并激活SMP专家并行性来训练 MoE 模型。

Hugging Face Transformer 模型SMP与专家并行度兼容

SMPv2 目前为以下 Hugging Face 变压器模型提供专家并行度支持。

配置专家并行度

对于expert_parallel_degree,您可以为专家并行度选择一个值。该值必须平均除以集群GPUs中的数量。例如,要在使用带有 8 的实例时对模型进行分片GPUs,请选择 2、4 或 8。我们建议您从一个较小的数字开始,然后逐渐增加该数字,直到模型适合GPU内存为止。

以下代码片段展示了如何在遵循中介绍的两步过程的同时,将SMP初始化模块torch.sagemaker.init()添加到训练脚本中,并按照训练作业启动器的JSON格式设置SMP配置字典。开始使用 SageMaker 模型并行度库 v2您无需对 PyTorch 模型或PyTorch FSDP配置进行任何更改。有关 expert_parallel_degree 参数的更多信息,请参阅 SMPv2 核心功能配置参数

注意

您可以将专家并行性与。混合分片数据并行性请注意,专家并行性目前与张量并行性不兼容。

注意

此专家并行度训练功能可在以下库 SageMaker 和库组合中使用: PyTorch

  • SMPv2.3.0 及更高版本

  • SageMaker Python SDK v2.214.4 及更高版本

  • PyTorch v2.2.0 及更高版本

在你的训练脚本中

作为步骤 1 的一部分,使用初始化脚本torch.sagemaker.init()以激活 SMP v2,然后使用封装模型 torch.sagemaker.transformAPI,向中添加config参数API以激活 MoE。以下代码片段显示了如何使用从头开始训练的方法或微调的from_config方法为AutoModelForCausalLM拉取 MoE 变换器模型配置的通用模型类激活 SMP MoE。from_pretrained要了解有关该SMPMoEConfig课程的更多信息,请参阅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 ) )

SMP配置

作为步骤 2 的一部分,将以下参数添加到 SageMaker PyTorch 估算器的SMP配置字典中。

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