专家平行性 - Amazon SageMaker
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

专家平行性

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

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

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

SMP v2 与 NVIDIA 威震天集成,可实现专家并行性以支持训练 MoE 模型,并在 FSDP API 之上运行。 PyTorch 您可以继续按原样使用 PyTorch FSDP 训练代码,并激活 SMP 专家并行度来训练 MoE 模型。

Hugging Face Transformer 型号兼容 SMP 专家并行性

SMP v2 专家并行度支持以下 Hugging Face Transformer 模型。

配置专家并行度

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

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

注意

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

注意

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

  • SMP v2.3.0 及更高版本

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

  • PyTorch v2.2.0 及更高版本

在你的训练脚本中

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

SMP 配置

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

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