本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
混合专家 (MoE) 模型是一种采用稀疏方法的转换器模型,与训练传统的密集模型相比,训练起来更轻松。在此 MoE 神经网络架构中,每个输入只使用模型中称为专家的组件子集。这种方法具有多种优点,包括更高效的训练和更快的推理,即使模型规模更大也是如此。换句话说,使用相同的计算预算来训练全密集模型,使用 MoE 可以拟合出更大的模型或数据集。
MoE 模型由多个专家组成,每个专家都由一个神经网络组成,通常是一个前馈网络 (FFN)。一个称为路由器的网关网络决定将哪些令牌发送给哪些专家。这些专家专门处理输入数据的特定方面,使模型的训练速度更快,计算成本更低,同时达到与其对应的密集模型相同的性能质量。要了解有关混合专家的更多信息,请参阅博客在 NVIDIA 开发者网站
专家并行性是一种用于处理在 GPU 设备上拆分 MoE 模型的专家并行性。
SMP v2 与 NVIDIA 威震天
Hugging Face 转换器模型兼容 SMP 专家并行性
SMP v2 目前可为以下 Hugging Face 转换器模型提供专家并行性支持。
配置专家并行性
对于 expert_parallel_degree
,您可以为专家并行性选择一个值。该值必须平均除以集群 GPUs 中的数量。例如,要在使用带有 8 的实例时对模型进行分片 GPUs,请选择 2、4 或 8。我们建议您从一个较小的数字开始,然后逐渐增加,直到模型适合 GPU 内存。
以下代码片段显示了如何在训练脚本中添加 SMP 初始化模块 torch.sagemaker.init()
,并按照 使用 SageMaker 模型并行度库 v2 中介绍的两步流程,为训练作业启动器设置 JSON 格式的 SMP 配置字典。您无需对 PyTorch 模型或 PyTorch FSDPexpert_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,然后使用 torch.sagemaker.transform API 封装模型,在 API 中添加 config
参数以激活 MoE。下面的代码片段显示了如何激活通用模型类 AutoModelForCausalLM
的 SMP MoE 使用 from_config
方法从头开始训练,或使用 from_pretrained
方法进行微调,来拉取 MoE 转换器模型配置。要了解有关 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
}