A Computing and Transmission Integrated Optimization Method for Cloud-Edge-End Computing First System
-
摘要:
“云—边—端”资源协同优化是算力网络部署的关键难题之一. 如何有效整合高性能云计算、低延时边缘计算和低成本用户设备等异构算力资源,对于算力网络建设具有重要意义. 基于此,提出了一种面向“云—边—端”算力网络的计算和传输联合优化方案,旨在从应用服务模型、网络状态感知和资源联合优化3方面提供一套系统性解决方案. 首先,根据通用应用服务的特性,改进了传统网络服务的链状表征模型,提出了广义图结构的通用服务模型. 其次,为表征异构网络状态的动态规律,提出了用于建模计算和传输时变负载的双虚拟队列结构. 再次,为降低在大规模算力网络中计算和传输资源联合优化的问题复杂度,提出了一种基于图概念的增广图模型,该模型能够将计算和传输联合优化问题转化为增广图的路由问题,简化了异构资源联合优化问题的形式化表征难度. 为实际解决该问题,设计了基于波利亚重球法(Polyak heavy-ball method)的异构资源协同优化算法,并给出了算法复杂度和相关理论的性能分析. 最后,通过数值仿真和原型系统实验,验证了算法理论性能的正确性,以及在服务效用和资源成本等方面对比同期3种相关解决方案的性能优势.
-
关键词:
- "云—边—端"算力网络 /
- 异构资源协同优化 /
- 队列模型 /
- 随机优化 /
- 波利亚重球梯度下降算法
Abstract:Collaborative optimization of “cloud-edge-end” resource collaboration optimization is one of the key challenges in the deployment of computing power networks. Effectively integrating heterogeneous computing resources, such as high-performance cloud computing, low-latency edge computing, and low-cost user devices, is of great significance for the construction of computing first networks. Based on this, we propose a joint optimization scheme for computing and transmission in “cloud-edge-end” computing first networks, aiming to provide a systematic solution from three aspects: application service model, network state awareness, and resource collaboration optimization. Firstly, according to the characteristics of general application services, the traditional network service chain representation model is improved, and a generalized graph structure-based universal service model is proposed. Secondly, to characterize the dynamic rules of heterogeneous network states, a dual virtual queue structure for modeling time-varying computing and transmission loads is proposed. Thirdly, to reduce the complexity of joint optimization of computing and transmission resources in large-scale computing first networks, an augmented graph model based on graph concepts is proposed. This model can transform the joint optimization problem of computing and transmission into a routing problem of the augmented graph, simplifying the formal representation difficulty of heterogeneous resource joint optimization problems. To solve this problem in practice, a heterogeneous resource collaboration optimization algorithm based on the Polyak Heavy-Ball Method is designed, and the algorithm complexity and related theoretical performance analysis are provided. Finally, through numerical simulations and prototype system experiments, the correctness of the algorithm's theoretical performance is verified, as well as the performance advantages in terms of service utility and resource cost compared to three contemporary relevant solutions.
-
近年来,深度学习模型在多个应用领域取得了令人印象深刻的成果. 然而,随着深度学习在各领域应用的持续深入,其面临的问题也越来越复杂,人们对具有更高能力模型的期待也愈加迫切.
扩展模型参数规模是增强模型容量,提高模型能力最简单、最有效的方式之一[1],因此,近年来大模型的参数规模呈现爆炸性增长趋势. 2019年发布的T5[2]还仅有110亿个参数,但到2020年发布的GPT-3[3]参数量就达到了1 750亿,2021年发布的Gopher[4]参数量则继续增长到2 800亿规模,而2022年发布的PaLM[5]参数量已经达到惊人的5 400亿. 传统稠密模型,几乎所有参数都参与计算,计算成本随着模型参数规模增长线性增加. 持续增长的模型参数为模型训练和推理的计算开销带来严峻挑战,严重阻碍了模型规模的进一步扩展,亟需新的模型架构解决这一挑战.
混合专家(mixture of experts,MoE)成为突破这一困局的有效方法之一,其概念最早在文献[6]中被提出,旨在通过分治思想将复杂问题分解为多个子问题单独求解.MoE架构将模型划分为多个规模更小的“专家”模型,并通过可学习门控网络将输入样本路由给不同专家组合分别处理. 区别于传统集成学习模型输入样本会训练所有子模块,MoE的专家模型专注于特定输入样本/任务,充分发挥不同专家的特长. 多个可选专家以及专家稀疏激活设计,使MoE在计算量次线性增加的前提下有效提高了模型的容量和性能. MoE的优势主要体现在以下4个方面:
1)灵活可扩展. 根据问题的复杂度灵活设置专家数量、专家规模、甚至专家架构,MoE模型规模可以很容易扩展至万亿级别.
2)低计算开销. 专家稀疏激活机制保证了MoE模型的计算复杂度随模型规模的扩展而次线性增加,与同等规模的传统稠密模型相比,计算开销显著降低.
3)强专业能力. 门控网络能够准确捕获输入样本的特征差异,进而分配给相应专家处理,通过对特定数据的针对性训练,专家强化对特定领域任务的预测能力,展现出高度的专业性.
4)强泛化性. 路由机制根据输入样本动态激活专家,组合多个专家预测结果,修正专家预测偏差,提高了模型的泛化能力和可靠性.
因具有上述优势,MoE目前已经广泛应用于计算机视觉[7-10]、多模态[11-13]、语音识别[14-16]以及推荐搜索系统[17-18]等众多AI细分领域,并取得巨大成功. 特别是在自然语言处理领域[19-25],MoE已经成为大模型降低计算成本的有效解决方案之一. 采用MoE架构的GLaM[24]具有最多1.2万亿参数,虽然参数规模是GPT-3的7倍,但计算量只有其1/3,并在29个自然语言处理基准任务上取得了超越GPT-3的表现. 其他大模型如Switch Transformers[19],M6[26],M6-10T[27],PANGU-Σ[28]等亦采用了MoE架构并取得令人瞩目的成果. 基于MoE架构的Mixtral 8x7B[29]在开源大模型领域取得领先性能,特别是在数学、代码生成和多语言基准测试中表现突出. 这一显著成就不仅彰显了MoE架构的巨大潜力,也为MoE的发展前景带来更多期待和启示.
虽然MoE在众多应用领域取得了显著成功,但仍然存在内存占用大、通信延迟高、计算效率低和扩展困难的关键性能问题,给MoE模型训练和推理的高可扩展性和高效性带来严峻挑战,严重阻碍了MoE模型的进一步发展.MoE系统优化研究已经如火如荼开展,特别是在近2年,涌现出大量杰出工作. 然而,目前尚缺乏文献对该领域研究进展进行全面回顾. 据统计,目前仅有少数几篇专门介绍MoE的综述文献. 其中,文献[30-32]概述了2017年之前的MoE早期发展,时间跨度较大,其内容已不能反映当前的研究前沿. 文献[33]系统介绍了MoE模型近年来的整体发展情况,特别是与深度学习模型结合后取得的长足进展,但其并未特别关注MoE系统优化研究. 文献[34]则对计算机视觉任务领域的MoE模型路由门控研究进展进行了系统论述. 最近,文献[35]对MoE模型的研究进展进行了全面梳理,但其重点关注算法方向. 据笔者所知,本文系首次系统介绍大模型时代背景下MoE系统优化研究的综述性文章,填补了现有文献的空白.
本文全面回顾了MoE系统优化技术的研究进展,并从内存、通信、计算以及并行4个系统核心方向对这些工作分别展开介绍,如图1所示. 本文讨论了这些MoE系统优化技术的核心设计思想,关键技术特征以及优势和局限性. 本文能够帮助该领域的研究人员快速全面追踪这一领域的研究进展,并引导他们开展研究工作,激发、推动该方向的研究创新.
1. MoE概述
MoE本质上是一种集成学习技术,使用多个子模块分别处理原始问题的不同子集,这些子模块被称为专家. MoE并非一个新概念,早在20世纪90年代便被提出,并应用于机器学习领域. 大模型以及多任务模型研究的持续高涨引燃了MoE研究的新一轮热潮. 本章将概述MoE的核心概念,MoE大模型的发展及其在系统端面临的问题与挑战.
1.1 MoE核心概念
本节将介绍MoE涉及到的几个核心概念,包括MoE的模型结构、专家容量、专家并行及其与集成学习的区别.
1)模型结构. 文献[20]首次提出了使用稀疏激活专家处理输入样本的稀疏门控MoE模型,在扩展模型参数规模的同时控制了计算复杂度,奠定了后续MoE模型的基本结构. 如图2所示,MoE层由一个门控网络和多个并行的子模块组成. 门控网络根据输入样本的特征将其路由到特定专家,并为专家预测结果分配权重.MoE模型的最终预测结果由各专家预测输出加权获得.
MoE模型的输出如式(1)所示:
y=n∑i=1G(x)Ei(x), (1) 其中Ei(x)表示专家i对输入x的输出,G(x)表示门控网络对输入x的输出.
当使用Top-k[20]门控网络时,门控网络从n个专家中选择k个专家处理输入样本. Softmax函数被广泛应于门控网络,门控网络的输出如式(2)所示:
G(x)=softmax(Topk(xWgate,k)), (2) 其中Wgate为门控网络参数. 使用Topk操作保留门控输出的前k个值,并设置其余专家输出为负无穷,从而通过Softmax只评估前k个专家.
2)专家容量. 为满足通信和计算的系统级约束,GShard[36]提出了专家容量(expert capacity,EC)概念,指定专家处理的样本数量,其定义如式(3)所示:
EC=k×f×TE, (3) 其中k表示使用Top-k路由策略为每个样本分配的专家数量,1≤k,T表示一个批次数据中的样本数量,E表示全局专家数量,f表示容量因子,是一个可调超参数. 容量因子值f>1,表示专家容量具有余度,为热门专家处理更多样本提供空间.f值越大,样本路由越不均衡,通信和计算浪费越严重. 当专家分配的输入样本超过专家容量时,则会丢弃多余的样本. 反之,当专家分配的样本数量未达到专家容量时,则会用0数据填充剩余容量空间. 专家容量设计被后续MoE模型广泛采用,成为一种典型配置.
3)专家并行. 专家并行概念首次在GShard[36]中被提出,其将不同专家放置在多个设备上并行执行,而非专家层则以数据并行方式执行. 由于专家位于不同设备上,需要执行All-to-All通信将输入样本分发给相应专家,并在专家处理后将专家输出恢复到样本原始位置. 专家并行策略成为MoE模型的典型并行模式,被后续众多工作采用.
专家并行的计算流程如图3所示. 其中,MoE层集成了3个专家,采用Top-1门控机制且专家容量设置为1,专家通过专家并行分布在3个GPU设备上并行执行.
采用专家并行的MoE模型计算流程如下:
①样本路由. 门控网络根据路由策略生成样本—专家映射以及每一对映射的置信概率. 常用的路由策略如Top-k.
②样本分发. 由样本—专家映射生成专家—样本映射,通过All-to-All通信对样本重新排列,将分配给同一专家的样本放置到连续的内存空间. 专家容量溢出则丢弃多余数据,专家容量有剩余则用0填充.
③专家计算. 对分配到的样本执行专家计算.
④输出组合. 通过All-to-All通信重塑专家计算结果以满足原始输入样本排序,专家计算结果经置信概率加权调整后得到最终输出结果.
专家稀疏激活是MoE最核心的特征. 一个可训练的门控网络根据输入样本特征,动态地将样本分配给不同专家.
4) MOE与集成学习. MoE作为集成学习的一个分支,通过专业化的专家网络和动态门控机制,为处理复杂和多样化任务提供了一种高效策略. 而传统集成学习方法则提供了一种更广泛和通用的途径,适用于多种机器学习任务. 尽管两者都致力于提升模型精度和泛化能力,但其在实现机制和应用场景上各有侧重,具体差异和联系如表1所示.
表 1 MoE与集成学习对比Table 1. Comparison of MoE and Ensemble Learning类别 MoE 集成学习 模型集成 都涉及整合多个模型结果以提高预测精度,都利用不同模型的优势来解决复杂问题 应用目的 不仅提高模型预测精度和泛化能力,还提高模型收敛速度和执行效率 提高模型预测精度和泛化能力 模型结构 由多个专家和门控网络组成,每个专家负责处理模型的一部分子任务,门控网络决定专家和子任务的映射关系 通常由多个独立训练的相同或不同算法模型构成 任务分解 将复杂任务分解为相对简单的子任务,专家网络专注于处理特定子任务 通常不涉及任务分解,多个学习器同时处理整个任务,通过投票、加权或平均等方法整合结果 训练方法 门控网络学习将任务分配给相应专家网络,专家网络专注于特定任务学习 各学习器独立训练,可使用不同的数据或算法,不涉及可学习的任务分配网络 应用场景 适用于复杂且任务可以分解为不同子任务的场景 适用于提升模型泛化能力和鲁棒性,尤其在数据或者特征有限的情况 稀疏性 只有少量专家在给定的时间被激活,提高计算效率 通常不具有稀疏性,所有模型都参与最终的预测 动态性 根据输入数据动态激活最适合的专家网络 通常不具有动态性,模型的集成是静态的,且在训练过程就已确定 MoE凭借专业化的专家网络集成和动态门控机制设计,不仅可以显著提升模型的精度和泛化能力,还可以极大提高模型训练和推理的效率,展现出巨大潜力.MoE是集成学习理论的一次重要创新,不仅丰富了集成学习的技术优势,而且极大扩展了集成学习的应用领域,特别是在自然语言处理领域,MoE已经成为大模型的主流架构之一.
1.2 MoE大模型
MoE模型的专家非线性特性与自然语言处理领域潜在的问题聚类结构完美契合,赋予MoE模型在处理复杂语言任务时的独特优势,并在提高模型容量、降低计算成本等方面展现出巨大优势. 这使得MoE大模型成为自然语言处理领域一个备受瞩目且具有广泛应用前景的解决方案. 随着研究的深入,各种MoE大模型相继问世,不断刷新各领域的性能记录,推动大模型技术的发展.
MoE大模型发展初期,高可扩展性和低计算开销优势是其被应用于大模型的主要初衷,而这得益于文献[20]创造性提出的稀疏门控MoE模型. 其通过稀疏激活专家设计,在扩展模型参数规模的同时显著降低了计算成本,并在自然语言处理领域的多项任务上取得了明显的性能提升. 文献[20]将MoE与LSTM模型相结合,随着自然语言模型逐渐发展到以Transformer架构为基础,GShard[36]进一步将MoE引入其中,利用专家网络替代注意力中的前馈层,开启了MoE和Transformer模型结合的大门,如图4所示. 该模型参数量达6 000亿,并以更低的计算开销、更短的训练时间实现比以往稠密模型更优的翻译质量. 此外,Switch Transformer[19]首次构建了高达万亿参数的MoE大模型,在多种自然语言处理任务上,相比T5基线模型,无论是训练速度、推理速度还是模型精度都取得显著提升,展现出MoE在处理多语言复杂任务方面的专长. 此外,其他一些工作[24,37-38]也进一步挖掘了MoE大模型的低计算开销和高可扩展优势在自然语言处理领域的潜力.
随着MoE大模型的发展,MoE的强专业能力优势也被继续挖掘,以进一步提高模型精度.ST-MoE[21]利用编码器中存在的词典级别的专家专业化优化模型表现. 进一步地,Mixtra-8x7B[29]探索了专家选择时的结构化语法行为,实现在所有评估的基准测试中表现优于或匹配稠密的Llama2-70B和GPT-3.5.特别是在数学、代码生成、多语言和偏见等特定领域展现出显著优势. 为了充分发挥MoE大模型专家的专业化能力,LLaMA-MoE[39]通过神经元独立和神经元共享的专家划分以及持续训练方法,提高模型的表示能力和灵活性,并为从现有稠密大模型转换为MoE大模型提供了一个高性能,低成本的可行框架. 一种更为极端的专家专业化方法是DeepSeekMoE[40]提出的细粒度专家分割和共享专家隔离技术,旨在解决知识混合和专家冗余问题,以提高模型精度和计算效率. 更为全面、深入的专家专业化研究工作是OpenMoE[41],其对不同层次的专家专业化进行了深入分析,发现相同ID的样本,无论上下文如何,总是被路由到相同专家,且这种专家选择偏好在训练早期就已形成. MoE大模型的专业化利用正向着细粒度方向持续发展.
近1年来,MoE大模型领域经历了井喷式发展,众多AI厂商和研究机构纷纷推出自研MoE大模型. xAI的Grok-1[42]、Google的Gemini 1.5 Pro[43]、Snowflake的Arctic[44]以及Databricks的DBRX[45]等MoE大模型在多个领域取得了令人惊喜的成绩.
MoE大模型的不断涌现不仅推动了大模型的快速发展,也加速了生成式人工智能(AIGC)领域的研究进程. 然而,专家稀疏激活特性是把双刃剑,既有益于降低模型计算开销,提升模型专业能力,又对模型的高可扩展和高效性带来极大挑战.
1.3 问题与挑战
由于模型参数规模较大,MoE大模型分布式训练和推理成为一种必然选择. 这意味着需要低效的All-to-All同步通信实现输入样本和专家输出在不同设备间的分发和收集. 此外,不同专家对样本的喜好差异也带来了专家和设备负载不均衡问题. 这些问题给MoE大模型系统端的高可扩展和高效性提出了严峻挑战,具体如下.
1)内存占用大,硬件需求较高. 一方面,MoE大模型的巨大内存需求与GPU的内存容量差距明显,且GPU内存的增长速度远落后于MoE大模型参数规模的增长速度,加剧了对GPU海量内存资源以及降低内存占用技术的需求. 另一方面,虽然MoE大模型以计算量次线性增加的代价扩展模型参数规模,但模型精度往往并不比具有同等计算量的对应稠密模型更高,MoE大模型参数效率较低,这进一步加剧了对GPU内存需求的压力. MoE大模型内存占用较大对训练和推理的硬件资源提出较高要求.
2)通信延迟高,模型执行低效. 首先,MoE大模型分布式训练和推理,所有专家都需要从其他设备上获取输入样本,这涉及节点间的同步All-to-All通信交换数据,延迟较高. 其次,考虑到异质的通信链路,这种同步通信在带宽受限的节点间以及路径较长的通信链路将产生更高延迟,滞后专家计算执行. 最后,样本分发与通信带宽不匹配、All-to-All与All-Reduce等通信并发执行竞争通信带宽、通信中存在冗余数据进一步加剧了All-to-All通信延迟.MoE大模型通信延迟较高降低了模型执行效率.
3)计算效率低,模型执行耗时. 一方面,通用的固定专家容量策略会引发专家补0问题,导致计算资源浪费. 另一方面,专家的稀疏激活特性决定专家负载不均衡,进而导致热门/冷门专家驻留设备负载过高/过低. 更为严重的是,这种负载不均衡动态变化,严重影响计算资源利用率和模型计算效率. 此外,专家选择、样本通信和专家执行同步执行,导致专家计算执行滞后,模型执行低效.MoE大模型计算低效直接增大了模型执行延迟.
4)并行扩展难,动态负载性能差. 首先,MoE大模型参数规模的覆盖范围广泛,通过分布式训练和推理,需要确保并行策略具有良好的可扩展性,以适应不同规模的模型和集群资源. 其次,专家稀疏激活特性决定一种并行策略难以为MoE大模型的动态专家负载提供最优性能,并行策略需根据专家负载动态调整,以保证高性能表现.MoE大模型并行扩展困难、动态负载性能差,严重影响模型执行效率.
上述MoE大模型在训练和推理过程中面临的系统端挑战严重阻碍了其进一步发展. 近年来,MoE系统优化技术受到研究学者的广泛关注并取得重要进展. 内存占用、通信延迟、计算效率以及并行扩展优化是解决MoE系统面临的高可扩展和高效性挑战的4个核心研究方向,其对应关系如图5所示,本文后续章节也将分别从这4个研究方向综述相关系统优化技术的进展.
特别指出,鉴于目前广泛认知的MoE模型主要就是指MoE大模型,因此,为简化叙述并保持一致性,本文后续将不再对“MoE模型”和“MoE大模型”进行区分,而统一使用“MoE模型”这一术语.
2. MoE内存占用优化
MoE模型的大规模参数对加速器内存容量提出了严峻挑战. 在过去的3年里(2021—2023),高端GPU的最大内存容量仍保持在80GB[46-47],而2021年发布的Switch Transformers[19]参数量就已达到了1.6万亿. 动辄需要数百甚至数千张最高配置高端加速器才能实现MoE模型高效运行的极高需求令人望而却步[36]. 现有文献通常通过以下方式实现MoE模型的内存占用优化:内存卸载和参数压缩.
2.1 内存卸载
内存卸载[48-52]利用CPU内存和SSD存储扩展GPU有限的内存容量,同时将非活跃张量卸载到“扩展内存”,并在需要时提前预取到GPU内存. 基于CPU内存和SSD存储在容量和价格方面的显著优势,以及GPU和CPU、CPU和SSD间的通信带宽能够支撑计算和张量传输的并行处理,内存卸载已经成为MoE模型突破GPU内存限制的有效方法.
图6展示了典型MoE模型参数卸载系统的示意结构. 其中,GPU内存、CPU内存和SSD存储构成一个3级存储系统. CPU内存作为SSD缓存,通过预取技术将一些热门专家的参数预取到CPU内存. 此外,当前计算所需的参数(专家0和专家2)也通过预取技术预先换入到GPU内存.
专家参数在MoE模型执行过程的内存占用中占据主导地位. 因此,专家参数卸载成为MoE模型内存卸载的核心研究方向. 此外,针对模型执行过程中的临时变量内存占用优化以及利用分离式内存技术扩展加速器内存方法也广泛开展.
1)专家卸载. 推理场景下,专家激活呈现出显著的时间局部性,这意味着被当前批次数据激活的专家在随后的几个批次中很可能会再次被激活. 只将这些热门专家保留在内存中,将极大缓解加速器的内存压力. 最简单的专家卸载方法是将专家分为热门和冷门专家并分别存储在GPU内存和卸载到CPU内存中[53-54]. 与文献[53]通过门控网络确定冷门和热门专家不同,PC-MoE[55]根据输入样本,门控网络和专家参数幅值的大小估计专家的重要性,将一些重要专家和非重要专家分别存储在GPU内存和卸载到CPU内存中,并仅使用一些重要专家子集进行推理. 对于GPU内存中缓存专家的维护策略,文献[53]采用了懒惰的后进先出专家驱逐策略为新专家提供所需内存空间,文献[54]则采用LRU缓存策略卸载专家. 而PC-MoE则通过定期更新重要专家子集保持使用中的最重要专家,同时高度重要专家以层的方式周期地、异步地交换到GPU内存中以平摊专家交换以及通信开销. 对于冷门专家的处理两者也截然不同. 当所需专家没有在GPU内存缓存时,文献[53]采用将冷门专家从CPU拷贝到GPU的标准方法,并将专家传输与输入样本传输并行处理,以隐藏专家传输延迟. 但这不可避免地会与样本竞争通信带宽,导致通信延迟.PC-MoE则通过跳过或与重要专家交换的方式以最小的精度损失执行非重要专家的计算请求,但该方法本质上是另一种形式的模型剪枝,不可避免地会牺牲模型精度.
非专家参数与输入无关且总是会被使用,而专家参数尽管占据MoE模型参数量的绝大部分,但在推理过程只有少部分专家被激活. 基于此,Pre-gated MoE[56]将非专家参数和专家参数分别存储在GPU内存和卸载到CPU内存. 而SE-MoE[57]则进一步将卸载对象扩展至SSD,其为减少从慢速SSD迁移专家导致的延迟,设计了2维预取调度方法以重叠专家计算和专家参数加载,并在CPU内存为SSD建立类似LFU的缓存机制以减少计算等待时间. 该方法利用NVLink和PCIe 这2个维度的带宽,同时预取稠密和稀疏参数,减少异构存储带来的调度间隙,提高模型执行效率. Janus[58]同样利用专家预取策略支持细粒度的专家获取请求. 其在自注意力计算过程利用节点间和节点内带宽空闲时段预先获取所有外部专家和内部专家分别存储到本地CPU和GPU内存. 该方法不仅避免了模型计算等待专家参数获取的延迟,同时还可以平滑突发通信提高带宽利用率. 而Pre-gated MoE并不需要专门的专家预取策略,这得益于其预先门控设计完全解耦了本层门控专家选择和专家执行的顺序依赖关系,允许本层专家执行和下一层激活专家加载并发执行. 同样不需专家预取的还有文献[59],其通过单个专家粒度的精细调度使专家参数加载、专家计算和专家参数优化流水并行执行以隐藏专家参数加载延迟.
与Pre-gated MoE利用前一MoE层输出激活当前层专家类似的工作还有文献[54]和EdgeMoE[60]. 区别在于,文献[54]利用当前层门控,直接以前一MoE层输出作为输入,预测激活专家,门控不需微调,而EdgeMoE则采用离线阶段构建的统计模型作为门控. 另一种基于统计的专家预取方法由MoE-Infinity[61]提出. 其通过专家激活矩阵记录推理过程中每个生成序列的激活专家选择,并利用聚类方法选择具有代表性的专家激活矩阵集合. 在推理过程中,根据当前的专家激活矩阵及其集合预测激活专家,实现专家预取. 然而,该方法引入了额外的存储开销,一定程度上削弱了专家卸载的内存优化收益.
Fiddler[62]采取了一个独特的研究视角,探索利用CPU执行卸载到CPU的专家计算,以减少CPU和GPU间的专家参数移动. 但专家计算通常是计算受限的,GPU仍需保留足够多的专家参数,才能最大化两者的并行处理速度. 显然其更适合模型规模较小或输入数据批处理量较小的单GPU推理场景,应用范围存在局限性.
2)激活值和临时缓存内存占用优化. 除专家参数外,激活值和临时缓存也在MoE模型执行过程中的占用大量内存,研究人员对此问题也开展了广泛研究. MPipeMoE[63]通过沿着输入序列维度切分张量,且为张量的不同切分块共享相同缓冲区以减少激活值和临时变量内存占用. 其同时设计了考虑包括计算、通信、内存拷贝速率等硬件能力和包括通信、内存拷贝速度衰减因子等模型特性的内存重用策略性能模型,在运行时评估对中间激活值和分发样本分别应用重计算[64-67]/卸载和通信/卸载的4种内存重用策略,配置最优的内存优化方法. 为解决数据并行中因模型参数在数据并行组内重复拷贝导致的内存浪费问题,文献[68]利用ZeRO-Offload[48]卸载优化器和梯度状态参数到CPU内存以突破GPU内存限制,扩展模型规模. DeepSpeed-TED[69]则提出了一个分块版本的优化器,以固定大小的块处理专家模型梯度参数,而不是一次处理所有专家模型梯度参数,并通过参数块重用降低GPU峰值内存占用.
3)利用分离式内存卸载. 上述讨论涉及的卸载设备都局限在统一内存,然而,最近的文献[70]表明,利用分离式内存(disaggregated memory)扩展GPU内存,卸载MoE模型参数是解决加速器内存限制的一种有效方法. 其提出4种利用分离式内存扩展GPU内存方法,不同程度卸载MoE模型参数. 实验结果揭示,当内存带宽需求较低时,通过为每个GPU分别扩展内存的架构能够提供与高端集成芯片系统相当的性能,为后续通过分离式内存扩展GPU内存系统实现MoE模型高效执行奠定了基础.
MoE内存卸载技术的关键是预取方法的效率,这涉及对预取数据以及预取时机的考量. 上述研究工作虽然已经显著改善了MoE模型的内存占用过大问题,但在完全隐藏专家或数据传输延迟方面尚存在不足,主要原因在于专家缓存命中率还不够准确,不能将计算所需的专家参数全部提前预取到GPU内存. 此外,目前内存卸载方法难免会影响模型的处理速度,对于性能极致需求的场景其应用也受到限制.
探索激活专家对序列样本的时间局部性,不同层专家对相同样本的相关性以及在特定任务、场景下的专家激活模式,并通过神经网络模型预测激活专家,以实现专家预取是内存卸载技术中一个有价值的研究方向. 此外,结合参数共享等方法,不依赖专家预取,而是利用本地存储的低秩矩阵和其他专家来恢复目标专家参数,也是值得探索的方向.
2.2 参数压缩
参数压缩是降低模型内存占用的另一种流行方法. 通过专家网络扩展模型参数并不能总是有效提升模型容量,MoE模型精度往往并不能优于具有同等参数量的相应稠密模型,参数存在冗余. 传统稠密模型的知识蒸馏[71]、剪枝[72-73]、量化[74-75]和参数共享[76-77]等参数压缩技术同样可以解决MoE模型的参数低效问题.
1)知识蒸馏. 通过知识蒸馏从MoE模型中提取较小的模型是压缩MoE模型冗余参数的一种直接方法. DeepSpeed-MoE[78]设计了混合同学方法,利用阶段性知识蒸馏压缩残差金字塔MoE模型. 除专家网络的深度外,还可以进一步利用知识蒸馏方法压缩专家数量,如SE-MoE[57].
2)剪枝. 通常MoE层只会稀疏激活数量有限的几个专家生成输出,因此利用剪枝移除使用率极低的专家可以降低模型参数,而不会或只轻微降低模型精度. 文献[68]利用剪枝方法基于随机选择和专家Top-k利用率移除模型中的不重要专家. 类似的工作还有针对多语种机器翻译的MoE模型NLLB-200[79],其根据多种统计粒度评估专家重要性,并结合多种剪枝策略,实现了高达80%的专家剪枝率. 文献[80]介绍了一种任务无关和特定于任务的训练后专家剪枝方法,然而,该方法基于专家组合的枚举搜索,时间复杂度过高,不适合应用于专家数量较多的模型. 类似地还可以通过任务级路由从MoE模型中提取小的子网络,利用任务标识将属于特定任务的所有数据路由到同一类专家[23]. 此外,SEER-MoE[81]提出了基于重计数指导的剪枝方法,并利用正则化的微调来恢复剪枝过程中的精度损失. 上述方法通过在微调阶段或微调后的验证数据集上统计每个专家接收样本的总数来确定非重要专家,属于经验性方法. 而文献[82]则首次在理论上证明了优先剪除在微调阶段路由门控参数L2范数变化较小的专家的合理性. 庞大的搜索空间导致确定适合的启发式剪枝方法困难,依赖梯度的剪枝方法开销巨大. 为应对这个挑战,EEP[83]利用进化策略搜索路由映射矩阵以保留最重要专家,并通过专家聚合矩阵检索专家知识将其合并到保留的专家.
3)量化. 量化方法通过减少张量表示所需的位宽来减少模型的存储开销,已经在传统神经网络模型领域被广泛讨论,同样,该方法也被应用到MoE模型. 如MoQE[84]采用2b量化专家网络参数以减少内存占用,而QMoE[85]则采用自定义格式进一步将万亿参数的MoE模型压缩到每个参数占用不到1b. 此外,还有一些量化工作探索在更高的位宽上量化MoE模型[60,86-87],以及动态确定量化专家的数量以在资源受限环境实现自适应服务[88]. 然而,与针对传统稠密神经网络模型的量化方法相比,针对MoE模型的量化方法并未展现出独特性. 例如,同时面向MoE模型和传统稠密模型,仅利用预训练模型参数的量化方法FineQuant[87].
4)参数共享. 通过利用低秩矩阵近似大矩阵的矩阵分解或其他技术共享不同专家的参数也是压缩MoE模型参数的一种有效方法. WideNet[10]提出跨MoE层共享专家以减少专家参数,实现参数效率和模型效果的共同提升. 随后的MPoE[89]并没有简单地共享现有的专家,而是通过结构化矩阵分解方法共享专家参数. 具体而言,该方法设计了矩阵乘积算子分解专家参数矩阵为专家共享的全局中心张量以及特定于专家的辅助张量. 由于中心张量有效重组、聚集原始参数矩阵的重要信息,包含了大部分矩阵乘积算子分解参数,显著降低了模型参数量. 注意到MoE模型推理的计算代价随激活专家数量呈线性增加. 因此,将激活专家合并成一个专家,然后再执行专家计算可以极大提高计算效率. 基于此,文献[90]提出按照门控网络激活值合并多个激活专家的加权模型融合方法,但该方法显然只对门控网络专家激活数量大于1的模型才有效. 此外,最近的工作[91]通过对输入特征调制来共享一个专家,其部分专家功能由调制单元代替实现,是传统MoE架构的一种变体.
为进一步压缩冗余参数,一些工作还尝试直接将稀疏MoE模型压缩为稠密模型. 文献[92]根据下游任务一边训练一边逐步剪枝非专业专家,不需要微调即可将MoE模型简化为单专家密集模型. 但这类任务相关的提炼模型方法一般只适用于多语言/多任务等特定MoE模型. Switch Transformers[19]则通过知识蒸馏来实现MoE模型稠密化. 沿着这个方向,文献[93]设计了一个包括知识收集和知识提炼的通用训练框架蒸馏稠密的学生模型,并提出了基于Top-k和奇异值分解的知识收集方法.MoE模型的稠密化丧失了多专家的专业性,通常只能在特定的子任务部署时发挥良好作用.
参数压缩方法可以有效降低模型的参数量,提高模型的执行效率,但不可避免地会对模型精度产生负面影响. 因此,这类方法通常都需要额外的微调过程,以弥补模型的精度损失. 然而,MoE模型训练成本高昂,这些巨大开销限制了此类方法的应用场景. 但对于一些内存受限的加速器部署环境,其依然提供了一个相对有效的解决办法.
3. MoE通信延迟优化
专家并行的MoE模型单次前向传播需执行2次All-to-All通信以交换数据,其通信延迟随通信节点数线性增长,而MoE模型依赖大量加速器高效并行执行,加剧了All-to-All通信延迟问题. All-to-All通信是MoE模型执行最耗时的步骤之一,已经成为性能瓶颈[58,94]. 当前对此问题的研究集中在路由无关通信优化和拓扑敏感路由2个方向.
3.1 路由无关通信优化
路由无关通信优化在保持路由策略不变的前提下,专注于通信方法的改进以提高All-to-All通信性能. 一般来说,该技术通过以下途径实现:分层通信、通信冗余消除以及诸如小批量数据频繁通信优化等其他优化.
3.1.1 分层通信
MoE模型通过专家并行执行时,All-to-All通信存在因通信数据量较小而导致带宽利用率不充分,跨多节点通信路径过长引发通信延迟增加,以及由于非连续内存访问造成额外延迟等问题. 一种最直接的优化方法是利用异质拓扑网络的通信带宽差异,先在高带宽拓扑层聚合局部信息,然后在低带宽拓扑层再统一交换全局数据,以降低通信跳数,提高通信效率,这被称为All-to-All分层通信.
表2总结了一些本章节中经常使用的符号,具体如下:
表 2 符号及其描述Table 2. Description of Symbols符号 描述 G 每个节点内GPU的数量 N 节点总数 P GPU设备总数P=GN All-to-All分层通信的一种典型实现方法是利用节点内的一个GPU收集节点内所有GPU的通信数据,进行数据布局转换后再由该节点启动All-to-All通信,并在All-to-All通信完成后再通过相应的数据布局转换和scatter通信分发数据给相应专家,如HetuMoE[95]. 该方法将节点间数据量扩大为原始通信实现的G2倍,但将节点内的所有数据分配给一个加速器统一进行通信的中心化方法,可能导致这个加速器负载过高.
上述方法侧重于减少节点间的通信轮次,以充分利用节点内和节点间的通信带宽. 另一类方法则着眼于降低通信跳数,避免不同rank GPU跨节点通信导致的不必要开销. DeepSpeed-MoE[78]先进行1次数据布局转换以及节点内GPU的All-to-All通信,再进行1次相同的数据布局转换以及节点间相同rank GPU的All-to-All通信,如图7所示. 虽然通信量变为原始方法的2倍,但通信跳数从原始的O(P)降低为O(G+P/G). 此外,Tutel[96]和SE-MoE[57]也实现了类似的分层通信机制. 这种设计对受限于延迟而非带宽的小批量数据通信扩展性更好.
不同于上述从通信方法角度着手的分层通信优化方法,SMILE[97]进一步细化了单步路由机制,将其拆分为节点间-节点内2级路由架构. 数据首先被节点间门控路由到目标节点,然后再通过节点内门控分发到该节点内的特定GPU设备,将All-to-All通信的复杂度从O(GN)降低为O(G+N). 该方法充分利用了异质网络拓扑的带宽差异提高通信效率,降低节点间的通信带宽竞争.
与HetuMoE类似,Janus[58]为减少低带宽节点通信数据量也精心设计了分层通信方法,由于其通信对象是专家参数,因此特别设计了高效的专家缓存机制. 具体而言,在CPU上缓存从其他节点获取的专家并共享给本地其他设备,同时收集、合并同一节点不同设备的相同外部专家请求以减少跨节点通信量. 在接收到专家请求后按照本地设备、CPU缓冲区和其他节点的优先顺序请求所需专家.
3.1.2 通信冗余消除
All-to-All通信的冗余数据主要存在于以下2个方面:首先,一些样本的处理结果对最终预测结果影响微乎其微,删除这些不重要样本可以降低通信开销;其次,张量并行组内设备的激活值经聚合后完全相同,全部参与通信会导致通信数据冗余. 消除All-to-All通信中的冗余数据将有效降低通信延迟.
通过稀疏化技术在通信前删除低贡献样本,压缩数据是提高通信效率的有效手段.Sparse-MLP[25]根据数据与专家间的重要性得分,在路由前排除10%具有最低得分的数据. 类似地,V-MoE[7]的数据块优先路由机制则通过与Sparse-MLP重要性得分类似的优先级得分丢弃无用数据块. 但上述的稀疏化方法通常会损害模型精度.
模型通过张量并行执行时,张量并行组设备需要聚合局部信息以获取完整激活值,作为后续算子的输入. 然而,对于MoE模型,聚合完整的激活值将导致后续的All-to-All通信数据存在冗余. 如图8所示,专家0和专家1通过张量并行方式分别部署在GPU0和GPU1以及GPU2和GPU3上. 专家0的张量并行组设备GPU0和GPU1的输入数据都是A0和A1,当这2个GPU全部参与通信时,通信数据中不可避免地会产生冗余. 为此,DeepSpeed-MoE[78]限制张量并行组中只有一组具有相同rank的GPU参与All-to-All通信(如图8中u所示),实现以张量并行度的比例减少参与通信的GPU数量. 而DeepSpeed-TED[69]则在Megatron-LM[98]张量并行组中删除重复数据以确保输出激活值没有冗余(如图8中v所示),再通过1个All-Gather通信在张量并行组内组装完整的输入激活值. 此外,由于激活检查点技术需要一次附加的前向传播过程会导致额外的通信开销,DeepSpeed-TED通过存储第1次前向传播过程中All-Reduce和All-to-All通信的输出,解决这个问题.
一种新颖的后处理方法由ExFlow[99]首次提出. 该方法通过在所有GPU上存储所有样本的上下文信息,以移除专家并行的第2个All-to-All通信,并根据跨层专家亲和性,优先在GPU内和节点内逐级放置专家,进一步减少低带宽拓扑链路的数据交换. 但这需要在推理前及每次迭代后使用All-Gather通信来确保GPU上所有样本上下文的一致性. 此外,这也增加了大量额外的内存开销.
3.1.3 其他通信优化
除上述介绍的优化方向外,路由无关通信延迟优化的其他方向还包括针对小批量数据频繁通信以及针对数据切分维度等通信优化.
连续的小批量数据通信调用开销较大,为此,SE-MoE[57]在通信前将小参数切片合并为一个较大切片,并在通信后根据切片索引重新划分为小切片. 此外,该方法还在预定数量的参数完成反向传播后再统一通信梯度,进一步降低了通信频率.
沿设备数量维度切分输入数据将使All-to-All通信划分为多个低效的点对点通信. 针对这个问题,MPipeMoE[63]采用沿输入序列维度切分数据,实现All-to-All通信的细粒度拆分,以充分利用NCCL提供的通信优化. 此外,该方法还缓解了同步过程中的高带宽设备资源浪费问题.
Janus[58]则设计了以交错顺序获取其他设备的内部专家,并确保同一时间只有1个设备从同一设备获取专家,以缓解设备出口带宽竞争. 此外,伙伴设备以交织顺序并行通过PCIe从CPU缓存获取不同外部专家,同时,利用NVLink获取已驻留在伙伴设备上的其余专家. 伙伴设备并行获取不同专家,PCIe和NVlink链路流水传递相同专家,缓解了CPU到GPU的带宽瓶颈.
目前,路由无关通信优化仍是All-to-All通信延迟优化的主流方法,分层通信方法更是几乎成为MoE系统标配的All-to-All通信优化实现. 尽管这些方法已经在降低通信延迟方面取得了显著进步,但受限于样本专家的选择偏好,通信链路数据容量不均衡问题并未得到根本解决,仍然存在通信拥塞现象. 此外,值得注意的是,近期该方向研究成果在通信延迟性能上的提升已经逐渐降低.
如果通信拥塞不可避免,探索将热门专家和冷门专家与不同带宽的拓扑网络有效结合以降低通信延迟是一个有意义的研究方向. 特别是在推理场景下,利用在模型训练过程收集到的专家热度、不同样本对专家的敏感性等数据,通过精心设计的专家放置和调度策略,有望实现路由无关通信方法难以企及的效果.
3.2 拓扑敏感路由
考虑到路由策略与通信网络拓扑间的不协调会导致严重的网络带宽竞争,设计针对性的路由策略辅助All-to-All高效通信是一种朴素的方法. 拓扑敏感路由方法根据通信网络的拓扑结构和带宽特性自动调整通信链路的数据量,避免网络拥塞. 本文总结了以下几种实现方法.
1)强制限制节点间通信量. 直接限制路由到其他节点设备专家的样本数量,将样本优先分发到高带宽的节点内设备专家是最直观的拓扑敏感路由方法. 该思想首先在Gating Dropout[100]中提出,通过设置路由到其他节点设备专家的概率减少节点间通信开销. 如图9所示,节点0和节点2的输入样本0和2均依据概率被重新映射到局部节点内.
沿着这个方向,FasterMoE[101]通过对节点内和节点间All-to-All通信数据量分析,形式化表示节点间通信的样本数量,进一步优化了Gating Dropout对模型精度的影响. Gating Dropout根据概率将样本分发到本地设备和其他节点设备驻留专家,不考虑样本和专家间的匹配得分,且这个概率需根据实验效果恰当选择. FasterMoE则在节点间通信样本超过限定数量n时,将具有最高匹配得分的n个样本路由到其他节点专家,而将剩余样本重新路由到本地专家.
2)自适应调整链路通信量. 根据网络拓扑的带宽特性自适应动态调整通信链路的通信量则是对上述方法的一种自然改进. TA-MoE[102]将样本分发抽象为最小化多跳通信中最低带宽链路的通信开销问题. 具体而言,该方法根据设备间通信的最短路径所需经过的交换机数量将对称树拓扑结构的设备分组,并平滑组内设备的通信模型系数,从而简化了原始异质网络拓扑的通信模型. 此外,环形拓扑和不规则非对称拓扑结构具有或可转化为对称拓扑结构的最优解模式. 但该方法需要对通信链路精确建模,否则将影响最终结果的准确性.
3)融合方法. 通过机器学习方法选择样本的通信拓扑链路则进一步优化了上述的数值模型方法. 基于上述研究进展,SCoMoE[103]提出了一种融合这2种策略的结构化通信MoE架构. 具体而言,该方法在序列维度采用与FasterMoE类似的强制限定策略,优先通过加速器内或节点内通信传输与本地节点专家具有最高得分的预设数量数据,而将剩余数据通过节点间通信处理. 在特征维度,则采用线性网络自适应地将特征映射为加速器内、节点内、节点间通信数据. 然而,该方法引入了新的超参数,需精细调整以优化模型性能. 此外,其自适应通信方法增加了模型的复杂性和计算开销,引入了额外的执行延迟.
拓扑敏感路由是一种融合了通信延迟优化的改进路由方法. 显而易见,对比路由无关通信优化方法,该类方法的通信延迟性能表现通常更优异,但同时也伴随着影响模型精度的风险. 此外,此方法通常只能应用于训练场景,且由于对通信拓扑敏感的固有属性,需要特殊设计的损失项以辅助损失函数收敛,这给模型训练增加了困难.
4. MoE计算效率优化
计算效率是决定模型执行效率的最直接因素. 现有文献主要从以下几个方向优化MoE模型的计算效率:专家动态容量、专家和设备负载均衡、专家激活预测、计算和通信流水调度以及计算内核优化.
4.1 动态容量
为满足All-to-All通信和专家计算的系统性约束,固定专家容量已经成为MoE模型的标准配置. 但这不可避免地需要在模型精度和计算效率间折中选择. 一种新兴的解决方案是专家动态容量方法,其根据专家的实际需求为其分配不同容量.
专家动态容量因避免处理冗余的填充数据,从而提升通信和计算效率,如图10所示. 但其面临着因数据形状不一致引发的低效编译、低效数据分发和低效批量矩阵计算所带来的挑战.
由于当前深度学习框架在处理动态数据流方面存在的低效瓶颈,为支持专家动态容量,用户只能采用一些变通方法,这不仅带来显著的运行时开销,甚至还会牺牲模型精度. 为了解决这个问题,DynaMoE[104]引入动态重编译机制,按需为动态张量重新分配资源,避免了完全重新编译整个计算图带来的巨大开销,并基于此机制按需动态调整专家容量. 对专家动态容量的编译支持本质上属于AI编译研究领域,该领域对动态张量问题取得的系列研究成果[105-108]均可为本问题的解决提供参考和借鉴.
专家动态容量导致专家接收的样本数量不一致,现行的门控样本分发机制不能高效处理此类动态样本分发. 为此,文献[53]提出支持专家动态容量的门控样本分发优化方法,通过排序、计数和索引取代原始的矩阵乘操作不仅降低了数据分发的复杂度,也减少了内存占用. 类似地,FastMoE[109]也设计了支持专家动态容量的专用数据通信内核来实现高效的样本分发和组合.
专家动态容量还意味着同一设备上的多个专家需要处理不同形状的输入数据,这要求高效的可变尺寸批量矩阵乘法实现这些专家的并行计算. 为此,MegaBlocks[110]提出了高效的块稀疏可变尺寸批矩阵乘法内核重写专家计算. 具体而言,该方法将可变尺寸批量矩阵乘法分解为多个128×128固定尺寸的基础矩阵乘法块批量处理. 同时设计了块压缩稀疏行–坐标(CSR-COO)混合格式,配合非零块行索引和转置索引等数据结构设计,优化对稀疏矩阵的访问和转置操作. 但该方法主要针对在单一设备上放置多个专家的场景,对于专家数量较多的模型,可能会面临挑战. 类似地,PIT[111]利用置换不变变换巧妙地将多个稀疏分布的微小张量块转换为GPU执行高效的稠密块,并在运行时通过精心设计的数据重排原语快速执行这些变换,从而几乎不产生额外的运行开销. 需要强调的是,该方法并不局限于解决低效的可变尺寸批量矩阵乘法问题,还为张量计算中的动态稀疏性问题提出了普适的编译优化解决方案.
上述方法将可变尺寸批矩阵乘法问题转化为稀疏矩阵形式,这涉及将索引转换为稀疏矩阵的块偏移操作,从而导致额外的计算开销. 此外,对输入执行从分散到组合的初始拷贝也会导致额外的内存开销. 为应对这些挑战,ScatterMoE[112]通过特殊设计的线性模块在分散组高效执行分组矩阵乘法. 该模块可以实现多种MoE变换的不同组合,同时还允许输入和输出张量以组合或分散的形式存在. 更重要的是,通过融合分散/组合和线性操作,其避免了对输入的拷贝和补0. 此外,该方法还具有高度的可扩展性,可以轻松将现有的MoE方法扩展到其他类型的专家模块.
此外,Tutel[96]通过在不同迭代过程动态调整容量因子以最大程度保证样本不被丢弃. 然而其并不支持为不同专家配置不同容量,这导致其无法避免因填充样本而产生的无效通信和计算.
专家动态容量与专家动态激活的固有属性相契合,但这也给系统性能带来严峻挑战. 尽管上述工作已取得一定进展,但与固定专家容量相比,专家动态容量仍然在模型执行效率方面存在不足. 究其原因,现有的加速器设计更适合处理形状规则、统一的张量,对不规则形状张量的高效处理仍是机器学习系统领域亟待解决的一个难题.
4.2 负载均衡
专家的选择偏好会导致热门专家负载过高,而冷门专家负载偏低. 这种负载不均衡使得热门专家驻留设备成为训练和推理的系统性能瓶颈,而冷门专家驻留设备则资源利用不充分,进而降低了模型的吞吐性能,增加了执行延迟. 现有的负载均衡研究方法主要包括:专家负载均衡以及设备负载均衡.
4.2.1 专家负载均衡
设备负载不均衡源于专家负载不均衡. 专家负载均衡技术直接从MoE模型负载不均衡问题的根源出发,避免了仅从系统角度出发的设备负载均衡方法的局限性. 目前,专家负载均衡研究主要集中在负载均衡损失以及路由均衡门控.
1)负载均衡损失. 通过在损失函数中引入辅助损失来抑制专家负载不均衡是一种常见的方法[7,19-21,36,113]. 但负载均衡损失的权重需要精心设计以免影响主损失函数. 即便如此,由于不可避免的样本丢弃仍会导致模型精度的下降[110,114]. 该类方法在一定程度上抑制了专家负载不均衡,但其属于单纯的算法设计方法,并不属于本文主要关注的系统优化工作,在此不过多介绍.
2)路由均衡门控. 另一种实现专家负载均衡的方法通过特殊的门控网络设计实现样本路由均衡. 相比负载均衡损失方法,路由均衡门控方法直接调控样本—专家映射,而非依赖于后续调整,提供了一种更直接且更高效的解决方案.
改进传统门控,优化专家负载的最经典方法是固定专家容量[36],其通过限制允许专家接收的最大输入样本数量来抑制专家负载不均衡. 类似地,直接在门控网络中加入高斯噪声也可以鼓励专家负载均衡[20]. 值得注意的是,最近的工作[115]采用后处理方法矫正Top-k路由. 其通过将丢弃样本重新分发到样本所在GPU的其他专家,并将专家的填充样本替换为以该专家为次最优专家选择的其他样本,从而取得有益效果.
上述工作虽然在专家负载均衡方面取得了一定成效,但仍未实现每个专家接收相同数量输入样本的绝对均衡. 鉴于此,探索更高效的均衡门控设计成为研究热点.Base layers[116]通过将输入—专家映射建模为带有约束的线性分配问题,解决了这个问题. 在此基础上,S-BASE[117]采用最优传输问题建模专家分配,并通过Sinkhorn算法求解专家选择的近似匹配,优化了Base layers的分配策略. 沿着这个方向,更进一步地,通过带有稀疏约束的最优传输问题,确保最多只有预设数量的输入样本与一个专家匹配[118],优化了S-BASE方法. 作为对传统可学习门控方法的补充,研究人员还将均衡门控的研究范围扩展到非可学习门控. 例如,使用哈希函数而不是经训练学习的通用门控网络决定输入样本—专家映射,以解决专家负载均衡问题[119]. 而THOR[120]则进一步松弛了专家和样本的映射关系,通过随机路由策略缓解负载不均衡并取得了优异的模型精度. 与上述输入样本选择专家路由策略形成鲜明对比是专家选择输入样本路由策略[114]. 该方法根据样本对专家的重要程度为每个专家分发数量相等的输入样本,但仍存在丢弃样本的问题. 一种新颖的软路由机制[121]基于可学习参数将所有输入样本的不同线性组合交由不同专家处理,从而解决了专家负载不均衡问题. 值得一提的是,该方法还是完全可微的,避免了样本路由过程的低效稀疏操作. 然而,该方法只适用于具有固定输入长度的编码器模型,在自回归解码器模型的应用存在挑战.
专家负载均衡方法因实现简单且通常对系统无额外负作用而广受青睐,尽管该类方法在一定程度上实现了均衡负载,但存在以下局限:首先,其设计理念与专家的选择偏好固有属性存在潜在冲突,可能会削弱专家的专业性. 其次,特殊的路由门控设计如果片面强调负载均衡,难免会对模型精度造成负面影响[122].
此外,上述专家负载均衡方法中的路由门控通常都是离散、稀疏的,这会导致样本—专家映射操作的低效. 虽然稠密的路由设计研究已广泛开展[123-125],但这些工作通常没有考虑专家负载均衡问题. 因此,稠密的专家负载均衡路由设计是一个值得探索而未被充分研究的课题.
4.2.2 设备负载均衡
负载均衡的另一个研究方向是通过调整专家放置策略(专家—设备映射)来均衡设备负载. 该类方法的核心思想是为高负载专家分配更多资源,而为低负载专家分配较少资源,以提高设备资源利用率.
图11提供了专家放置策略对设备负载均衡的有益效果示意图. 在图11(a)中,各专家的负载并不均衡.图11(b)展示了模型运行时未考虑专家放置策略会导致GPU0的设备负载过高,而GPU1的设备负载偏低.图11(c)则展示了经专家放置优化后的设备负载均衡显著改善.
文献[53]和SmartMoE[126]是组合高、低负载专家放置到相同设备以实现负载均衡方法的2个典型代表. 文献[53]将负载均衡问题简化为多路数划分问题,并为非相关和相关激活专家分别设计了贪婪均衡和反相关均衡方法. 具体而言,对于非相关激活专家,根据历史负载降序依次分配给负载最小的GPU.而对于相关激活专家,则在计算工作负载时考虑历史数据中专家间的皮尔逊相关系数. 但为了简化负载均衡问题,该方法假定每个GPU上都驻留相同数量的专家,这限制了其应用范围.SmartMoE在离线阶段聚类多组相互转换代价低且对动态工作负载不敏感的并行策略,其中只有专家放置是唯一可变策略,并通过性能模型枚举筛选出最优并行策略. 在运行时阶段,根据当前工作负载在选定的并行策略策上调整专家放置. 然而,依赖门控参数估计专家负载的方法在局部时间内可能并非最优.
上述方法仅调整专家的放置顺序,并未改变专家的资源分配. 对于设备的负载均衡,这常常并非是最佳选择. 另一种更为流行的解决方案是根据专家的实际负载情况动态分配资源. FasterMoE[101]通过将热门专家复制到多个设备上以减少热门专家驻留设备的工作负载,但其并不会减少冷门专家的资源分配,是一种简化的专家放置策略. 专家热度是数据依赖且动态变化的,该方法通过使用性能模型在运行时评估模型端到端延迟收益以决定是否复制专家到其他设备. Lina[94]通过专家选择分布估计调整专家资源分配. 该方法设计了一种2阶段调度方法,当实际的专家受欢迎程度偏离估计较多时再微调专家资源分配. 但专家选择分布估计依赖训练过程中的数据收集,这给没有训练过程统计信息的推理任务带来困难. 考虑到SmartMoE利用门控网络参数通常只能预测专家负载极限值的局限性,FlexMoE[127]采用了后验统计方法实时监测专家负载. 基于训练过程中专家的偏好分布变化连续且平稳,该方法在运行时实时监测专家负载趋势,并在专家负载超过阈值后,微调专家放置策略. 为缩小调度空间,该方法还设计了最小调度单元的抽象表示和专家放置专用调整指令来辅助专家放置策略调整.
文献[53]和Lina均采用基于统计信息的先验方法估计专家负载,区别在于文献[53]直接利用专家历史负载信息估计当前专家负载,而Lina则利用专家对不同输入的选择偏好,统计输入样本在连续l层窗口选择相同专家的概率,并直接用于推理过程的专家负载预测.
专家放置策略是数据依赖的,运行时动态预测专家负载,调整专家放置策略需要一个轻量级的高效方法以满足模型运行的实时性要求. SmartMoE通过离线时构建并行策略和运行时调整专家放置策略的2阶段方式,放宽了联合搜索的时间开销,并采用一个轻量级贪婪算法高效评估转换策略以满足运行时严苛的时间限制. FlexMoE则通过精确建模MoE层的执行过程预先估计计算和通信代价,利用代价模型预测放置策略调整的成本和收益以决定最优调整策略. 但其通信模型偏理想化,没有考虑通信与计算,All-to-All与All-Reduce通信并发执行的相互影响,模型精度有限. 此外,FlexMoE采用同时为高/低负载专家增加/减少资源的简单高效资源调整方法实现专家放置策略调整.
类似的工作还有SE-MoE[57],其提出了针对多任务训练场景下的负载均衡方法. 该方法根据预先估计的各任务工作量,灵活调整各训练任务节点数量,保证各节点负载均衡,但通用性不强.
设备负载均衡方法具有以下3个显著优势:首先,它保持原始门控的样本—专家映射关系不变,这通常意味着更优的模型精度;其次,虽然其负载均衡效果可能略逊于一些专家负载均衡方法,但幸运的是两者差距并不显著,且其性能也足以满足绝大多数应用场景的需求. 最后,对于那些并未考虑专家负载均衡或实际效果不佳的路由策略,设备负载均衡方法更是提供了唯一的有效解决方案. 然而,受限于实际负载的复杂性,设备负载均衡方法通常需要复杂的设计才能实现与专家负载均衡方法相匹配的均衡效果. 加之专家负载在模型执行过程中动态波动,且专家在运行时被动态激活,进一步加剧了设备负载均衡的困难. 此外,专家放置策略在线调整依赖于模型运行时的专家选择,这需要高效的评估方法来综合衡量调整成本和性能收益.
负载均衡是MoE模型高效执行的一个关键要素. 鉴于样本分布的不均匀性决定了专家选择的固有非均等分布属性,进一步探索基于专家负载均衡设计并结合神经网络模型预测专家负载的设备负载均衡方法,是一个值得深入研究的方向.
4.3 激活预测
专家选择、样本通信和专家计算的同步执行严重阻碍了MoE系统优化的潜力. 专家激活预测通过在门控网络选择专家前提前预测激活专家,为专家资源分配以及上述流程并行执行提供优化空间. 根据专家激活分布估计的方式,本文进一步将相关方法分为基于统计和基于机器学习的专家激活预测方法.
4.3.1 基于统计的激活预测
根据专家选择的统计信息可以估计专家选择模式. 一般而言,基于统计的专家激活预测方法对输入样本个例的专家选择预测不够准确,只限于估计专家的选择分布. 因此,该类方法通常只应用于系统资源分配,因为此时输入样本个例的专家激活预测是否准确并非至关重要,只要统计意义上准确即可满足需求.
图12为根据专家激活分布调整计算资源的示意图,根据输入数据的专家激活分布预测结果,将专家2和专家0的计算资源由原始平均分配的2个GPU分别增加到4个和2个,以平衡设备负载.
在基于统计的专家激活预测方向上初步做出探索的是DynaMoE[104],其研究了基于样本分发缓存预测专家激活模式的方法. 基于门控网络在训练中早期收敛的特性,该方法通过度量连续2个训练历元间一个小批量样本中被重新分发给不同专家的数量来检测门控是否收敛. 如果门控收敛,便缓存样本分发结果并用于创建后续批量专家计算.
一些门控网络参数设定了通信和专家计算负载的上限,这为我们提供了一种估计专家负载极限情况的方法. SmartMoE[126]根据负载均衡门控网络容量因子估计最高负载专家的计算开销上限,并根据拓扑敏感门控网络的通信约束估计设备间的最大通信开销,从而得到专家选择分布. 进而利用以计算负载、通信负载及专家选择分布作为参数的性能模型搜索出最优的并行策略. 但利用门控网络参数估计专家选择的统计方法略显粗略,该方法的并行策略性能预测效果还需进一步验证.
注意到MoE模型在前一层选择相同专家的样本在后一层同样倾向于选择相同专家,Lina[94]利用相邻层专家的选择模式实现专家选择分布估计. 具体而言,在训练时,收集专家选择结果,对连续l层选择相同专家的样本分组,并对每组样本统计l+1层的专家偏好分布. 在推理时,在第l+1层根据之前l层的样本分组以及训练过程统计的各组样本专家偏好估计专家选择分布,进而为专家分配资源. 但该方法中的参数l需要在预测精度和统计开销中折中选择,且浅层专家的选择偏好并不十分突出,预测效果有限.
基于统计的激活预测方法实现较为简单,预测精度也基本能够满足资源分配应用场景的需求. 但其存在以下不足:首先,严重依赖训练过程中的大量数据收集,给没有经历训练过程的推理任务带来困难. 其次,该方法略显粗糙,对输入样本个例的专家选择预测结果也不够准确.
4.3.2 基于机器学习的激活预测
提高专家激活预测准确性的流行方法是利用机器学习模型学习专家的样本选择分布,进而精准预测输入样本的专家选择. 这意味着原始门控网络的功能被取代,解耦了专家选择和专家执行的依赖关系. 基于机器学习的激活预测方法本质上是一个数据回归过程,相对于前述的统计方法更智能也更准确.
与传统MoE模型本层门控网络选择本层激活专家不同,Pre-gated MoE[56]引入了预先门控设计,当前MoE层门控网络会预先为下一MoE层选择激活专家,从而完全消除了专家选择与专家执行间的依赖. 该模型的第1层MoE层包含2个门控网络:传统门控和预先门控. 此外,最后一层MoE层没有门控网络. SiDA[128]则摒弃了Pre-gated MoE采用的模型内置门控网络,转而使用了一个独立的、离线训练的机器学习模型来提前预测输入样本的激活专家,并将预测结果存储在哈希表中,如图13所示. 这种设计允许不同批次输入样本的推理以及激活专家获取和参数加载并行执行. 由于模型的推理速度慢于哈希表构建,完全隐藏了激活专家选择和加载过程,因此,推理过程完全取消了传统门控网络.
上述2种方法的区别主要在于:Pre-gated MoE利用上一层而非本层输入特征选择本层激活专家,专家选择的合理性有待进一步理论验证;SiDA则使用LSTM模型学习门控网络的样本—专家映射过程,本质上是门控网络的离线实现.
相比于基于统计的激活预测方法,基于机器学习的激活预测方法提高了对输入样本个例的预测准确性. 利用基于机器学习的专家选择预测模型取代门控网络,为并行专家选择和专家计算提供了可能,有助于提高硬件资源利用率. 需要指出的是,尽管基于机器学习的激活预测方法对专家选择的预测较为准确,但目前尚与原始门控网络存在一定差距,这将在一定程度上影响模型精度.
受ExFlow[99]利用不同层专家的亲和性消除All-to-All通信的启发,探索利用专家间亲和性和专家专业性等特性,根据当前输入样本、当前MoE层激活专家预测下一MoE层激活专家的专家激活预测方法是一个有价值的研究方向.
4.4 流水调度
流水调度通过将连续执行的算子切分为细粒度子集并分配给不同执行单元流水并行执行,以提高算子并行性,是模型训练和推理的一种经典优化技术[129-134]. 流水调度能够充分挖掘MoE模型中All-to-All通信和专家计算的并行优化空间,提高模型执行效率. 根据流水设置方法,本文将流水调度方法分为:静态流水和自适应流水.
4.4.1 静态流水
静态流水调度通过人工确定流水粒度,拆分All-to-All通信、专家计算以及All-Reduce通信、自注意力计算为细粒度算子,并精心排布这些细粒度算子的流水执行过程,以减少流水气泡,最大程度隐藏通信延迟. 计算和通信的交织执行充分利用不同硬件资源,降低模型执行延迟.
MoE层前向传播过程中通信和专家计算流水并行执行的时间线概略示例如图14所示,可以看到细粒度的算子拆分并未带来预其的性能提升,揭示出算子拆分粒度和微算子精细排布的重要性.
FasterMoE[101]将设备划分为细粒度的组并拆分All-to-All通信,使用分组成对交换算法执行. 具体而言,这些组形成一个大小为n的环,以0~n-1的递增步长向其他组发送数据,并采用启发式方法将连接紧密的设备放在同一组,以加快同组设备间通信. 通过将执行最快的2个发送/接收输入样本和专家输出操作安排在流水队列的起始和末尾减少通信开销.
反向传播过程中,All-to-All与All-Reduce通信因竞争网络带宽而导致执行延迟被延长,进而导致后续专家计算的阻塞时间增加,是影响MoE模型通信和计算效率的重要因素. 为解决这个问题,Lina[94]通过拆分All-to-All,All-Reduce和专家计算为细粒度算子,同时并行这些细粒度算子、梯度计算和门控计算,并优先于All-Reduce执行All-to-All,以改进All-to-All通信的带宽利用率. 此外,该方法还通过打包专家计算来减少因细粒度专家计算执行快于相应通信而导致的流水气泡,最大化流水效率.
上述工作聚焦于MoE层计算和通信的调度优化,而忽视了与自注意力层联合调度优化的机会. 鉴于此,AMPIPE[135]首次将自注意力层与MoE层的计算和通信整合为一个统一的调度优化空间,并通过将自注意力计算、专家计算和All-to-All通信拆分为细粒度子块,流水执行以减少模型执行延迟. 该方法对长序列语句的处理速度提升尤其显著,而这也是大语言模型重要的现实应用场景之一.
进一步地,Lancet[136]深入到模型的训练图级探索更广泛的优化空间,以便重叠通信和计算. 具体而言,在前向传播过程,通过细粒度算子拆分,流水非MoE计算和All-to-All通信. 在反向传播过程,无需拆分算子,通过调度重叠梯度计算和All-to-All通信. 值得注意的是,基于编译优化方式的优势使其便于精确控制算子执行,并简化了算子调度和算子拆分实现的复杂度.
一般而言,静态流水方法需要对不同模型进行大量实验以确定各自的最优流水粒度,这无疑使其通用性大打折扣. 值得庆幸的是,研究表明最优流水粒度的取值范围相对有限,且所需的实验成本也尚可接受. 此外,由于专家工作负载的动态变化,静态流水方法并不能保证其流水配置在模型运行过程中始终处于最优.
尽管存在这些局限,静态流水方法因其简单性和易实现性而被众多MoE模型广泛应用. 与MoE模型或神经网络框架的良好兼容性也是其另一显著优势. 此外,尽管静态流水方法所确定的流水配置未必最优,但相比最优流水配置的性能差距并不显著,这使其在非极致性能追求的应用场景中成为一个实用的选择. 而这也是静态流水方法在MoE模型中仍广泛应用的一个重要因素,凸显了其重要价值.
4.4.2 自适应流水
自适应流水调度能够根据硬件配置和模型任务自动调整最优流水调度配置,避免了人工设置流水调度的不足. 通过暴力搜索和性能分析模型确定最优流水配置是当前主流的自适应流水方法.
一般而言,流水粒度会随着批处理量的增加而单调增加. 受此启发,Tutel[96]和MPipeMoE[63]都采用了对搜索变量划分区间的方法,以降低搜索代价. MPipeMoE将批处理量的范围分割为不相交区间,并将此区间与最优流水粒度的映射存储在查找表中. 当不能在查找表中查询到当前批处理量信息时,便通过实验搜索出最优流水配置并更新查找表. 与MPipeMoE搜索不同批处理量相对应的最优流水粒度不同,Tutel搜索的是不同专家容量对应的张量并行度、流水粒度和All-to-All通信算法的最优配置组合. 其提前通过实验,利用字典记录上述映射关系,并运行时查找字典以获取所需的最优配置.
除采用暴力搜索和查表相结合的方法外,自然地还可以进一步利用数值模型分析方法来实现自适应流水专家计算和All-to-All通信. 沿着这个方向,PipeMoE[137]形式化表达以流水粒度为参数的模型执行延迟优化问题. 通过构建计算和通信延迟预测模型,将最优流水粒度求解分别转化为数值比较、凸优化和线性规划问题,并在多项式复杂度时间内高效得到最优解. 然而,实验结果表明该方法并未实现预期的理论加速效果,虽然探讨了潜在的可能原因,但缺乏量化数据的支持
PipeMoE可以根据模型配置提前自动获得最优流水粒度,Tutel也可根据预先构建的查找表在运行时以几乎零开销的代价得到最优流水粒度,而MPipeMoE则需通过实验方法在运行时搜索查找表中未存储批处理量所对应的最优流水配置.Tutel的查找表可以提前构建,而MPipeMoE的查找表必须在线构建,其本质区别在于Tutel是根据专家容量确定最优流水配置,而MPipeMoE是任务相关的,不同任务的批处理量对应的最优流水配置并不相同,因而不能提前构建. 但对于同一任务的相同批处理量,MPipeMoE也仅需在线搜索一次.
相比于FasterMoE的性能模型,PipeMoE的性能模型考虑了计算过程GPU内核启动和通信过程All-to-All启动的时间,模型更加准确. 但为了简化最优流水粒度求解,PipeMoE限定任意2个任务不能占用相同的硬件资源,对于诸如All-to-All和All-Reduce并行执行的这种涉及同类任务间资源竞争的场景,模型预测结果不够准确. 不幸的是,此类场景在深度学习框架中普遍存在,这限制了其实用性.
上述自适应流水方法存在明显不足:暴力搜索和查表相结合方法是对静态流水方法搜索过程的一种自动化改进,但受搜索空间范围的影响,其搜索速度和模型性能通常不可兼得,需要在两者间权衡选择. 而数值模型分析方法则受限于建模的准确性,特别是在复杂通信场景下,其精度难免会受到不同程度的影响.
创新地探索利用神经网络模型辅助的自适应流水并行调度方法,是一个充满潜力的新优化方向. 此外,当前工作均致力于从现有MoE架构挖掘流水调度的潜力. 改变现有MoE模型中注意力计算和专家计算串行的基本架构,通过分支连接方式并行这2个计算单元,能够最大程度解决目前的流水调度难题. 这是一个充满挑战,同时也蕴藏巨大潜力的研究方向.
4.5 内核优化
除上述方向外,MoE模型计算效率优化还可通过内核优化实现. 常见的高性能计算库能为通用计算场景提供优异性能表现,但并不适合门控稀疏的样本—专家映射以及不同形状数据的专家并行计算等操作. 通过定制化的内核优化上述计算流程,是解决这些问题的有效手段.
1)门控内核优化. 门控网络的样本—专家映射以及专家—样本映射过程通常涉及稀疏矩阵操作,通用加速器对此并不高效. 为此,DeepSpeed-MoE[78]融合门控网络的多个算子为一个内核,配合稠密的样本—专家映射表设计,以及数据布局转换替换稀疏的einsum操作,显著减少了内核调用次数,并降低了计算和内存开销. HetuMoE[95]设计了支持多种门控策略及高度优化的内核实现. 其优化了主流Top-k算子内核,相比Pytorch实现取得25%的平均速度提升. 此外,该方法还优化了数据布局转换,设计了优化内核加速映射到同一专家的样本放置到连续内存地址的数据布局处理过程. 类似地,Tutel[96]也设计了高度优化的编码、解码内核,利用高效的单指令多线程(SIMT)稀疏操作深度优化样本分发和组合过程的einsum和矩阵乘操作,最小化非专家计算延迟,降低GPU内存占用.
2)其他内核优化. 除上述的门控内核优化方法外,还有一些其他方向的内核优化工作. 例如FastMoE[109]为MoE模型设计了高度并行优化的MoE层内核实现,并通过定制的流管理器并发执行多个专家计算,提高专家计算吞吐性能. 此外,文献[138]面向推理场景,也重点优化了计算内核.
5. MoE并行扩展优化
神经网络框架普遍应用数据并行[139]、张量并行[98,130]、流水并行[131-133]、混合并行[48,98,130,133,140-142]以及自动并行技术[143-146]扩展大模型到众多加速器,从而突破加速器的“内存墙”限制,提高训练和推理效率. 然而,这些面向传统稠密模型的并行技术缺少对稀疏MoE模型的针对性支持. 探索高效的MoE模型并行扩展技术已经成为一个亟待解决的问题,本文从静态并行和自适应并行2个方向介绍现有工作.
5.1 静态并行
静态并行在模型运行前根据模型配置确定并行策略,并在运行期间保持不变,静态地执行并行策略. 以深度学习框架成熟的并行策略为基础,结合MoE模型专家参数量占比大,专家稀疏激活等特性发展而来的静态并行技术是解决MoE模型高效并行扩展的一种直接方法.
专家并行[36]将不同专家放置在多个设备上并行执行,而非专家层则以数据并行方式执行,是MoE模型最朴素的高效并行策略. 专家并行本质上是一种针对MoE模型的数据和张量混合并行方法,如图15所示. 其中,图15 (b)中的专家00表示专家0的第1个张量划分. 专家并行将专家放置在不同设备上,因此,需要执行额外的All-to-All通信将输入样本分发给其最匹配的专家,并在专家处理后将专家输出恢复到样本原始位置,引入了额外的通信开销. 专家并行已经成为MoE模型的典型并行模式,被后续研究工作广泛采用.
一系列工作[68,69,78,109,147]并未局限于专家并行策略,而是结合神经网络框架成熟的并行策略和专家放置策略,探索更适合MoE模型的并行方法.Fairseq-MoE[147]采用完全分片数据并行(FSDP)[148]技术训练具有超万亿参数的MoE模型. 使用完全分片数据并行的一个重要步骤是选择被包装的子模块粒度,该方法选取Transformer层进行包装,以平衡通信效率和峰值内存占用. 文献[68]则精心编排了5种混合并行策略,通过支持ZeRO-2数据并行优化优化器和梯度状态冗余参数,并结合模型并行支持更大隐藏维度规模的模型,将MoE模型扩展到数万亿参数规模.FastMoE[109]对非专家层采用Megatron-LM[98]模型并行,对专家层采用专家并行方式,并设计了数据并行通信组标签,通过定制化的数据并行识别不同标签高效执行参数梯度同步. 该方法通过数据、模型和专家的组合并行方式极大提高了系统的扩展能力,但系统扩展到多节点时,会受通信开销影响而导致单GPU性能退化严重.
文献[68]提供的并行策略较多,需要用户根据模型自己选择,这无疑增加了用户的使用困难. 针对这个问题,DeepSpeed-MoE[78]采用张量并行以充分利用GPU间的聚合内存带宽,将其支持的多种混合并行策略优化为一种专家、张量和数据混合并行. 具体而言,该方法为专家层和非专家层分别设计了张量和专家混合并行、张量和数据混合并行方法,解决了张量并行因通信开销和细粒度并行导致的扩展性差问题.
DeepSpeed-TED[69]则进一步优化了DeepSpeed-MoE,提出一种结合ZeRO数据并行、Mergatron-LM张量并行、DeepSpeed-MoE专家并行的3维混合并行方法. 其为专家层设计了与张量、数据和专家混合并行方法,为非专家层设计了张量和数据混合并行方法. 相比DeepSpeed-MoE,其支持的模型规模以张量并行度的比例扩大.
需要指出的是,静态并行方法需要人为确定并行策略,这对用户提出了较高要求. 换言之,用户既需要具备一定的硬件体系结构知识,又需要对模型架构充分了解,才能为模型设置性能优异的并行策略. 同时,静态并行策略不能根据MoE工作负载的变化而动态调整,MoE模型的动态工作负载属性决定其不能保证模型的最优性能. 尽管存在这些局限,静态并行以其使用简单而应用广泛. 通过实验即可确定性能较为优异的并行策略,特别是对于模型频繁重复使用的场景,静态并行方法一旦确定并行配置便可以一直使用,因此,其仍被广泛应用于MoE模型的训练和推理.
5.2 自适应并行
不同于上一章节讨论的静态并行方法,自适应并行方法能够在运行时根据负载自动调整并行策略,是一种更具潜力的解决办法. 但在运行时动态调整并行策略会导致数据重新布局、数据迁移和GPU内存大量消耗等严重开销,这给自适应并行方法带来极大挑战.
如图16所示,自适应并行的最大优势是能够为不同批次输入数据在线动态调整并行策略,从而最大化模型的性能表现.
自适应并行的关键是确定最小的可转换并行策略集合和张量数据布局形式,从而以最小的开销代价实现并行策略转换. 基于此,Tutel[96]首次提出了动态自适应并行和流水MoE系统. 该方法通过剪枝并行策略转换空间,使其只包含数据并行以及专家、数据和模型混合并行2种并行策略,并确定了两者相互转换的执行流程. 此外,该方法还为模型参数和输入样本设计了相同的数据布局以实现运行时并行策略动态调整的零开销.
对并行策略转换空间深度剪枝,可以进一步简化自适应并行方法的复杂度. 一种简化的自适应并行方法是在运行时只调整专家放置策略,保持其他并行策略不变[126].
自适应并行方法能够根据MoE模型的工作负载变化在运行时动态调整并行策略以提供最佳性能. 但这需要满足模型运行时间的严苛限制,以避免影响模型的正常执行. 因此,需要设计高效的决策机制以评估并平衡搜索开销、转换代价和性能收益,从而决定是否转换到一个新的并行策略.Tutel开启MoE系统自适应并行技术先河,但其并未搜索专家并行粒度维度,因此,可能缺少一些更优的并行策略,这是一个值得继续探索的课题.
6. 总结与展望
近年来,MoE已经成为深度学习领域的重要研究方向之一,但其专家稀疏激活特性有其两面性,在以计算开销次线性增加为代价扩展模型参数规模的同时,也给系统端带来前所未有的挑战. 为应对MoE系统在高可扩展性和高效性方面的重大挑战,研究学者开展了广泛的系统优化研究,并取得显著进展.
如何平衡存储、通信以及计算开销,以充分利用系统资源,提高系统的可扩展性和计算效率,降低模型端到端延迟是MoE系统优化研究的核心. 本文调研分析揭示,当前研究主要通过深入探索内存、通信、计算以及并行4个系统核心维度,从而发现潜在的优化机会.MoE系统优化技术正向着精细化演进,单一维度的执行效率提升已经不足以实现显著的改进. 因此,多数工作采用多维优化策略,全面挖掘系统性能的提升潜力.表3总结了MoE系统优化研究的一些代表性工作,以及这些技术的适用场景.
表 3 MoE系统优化的代表工作总结Table 3. Summary of Representative Works on MoE System Optimization类型 子类 适用场景 文献 [69] [56] [57] [58] [63] [78] [109] [96] [126] [94] [95] [101] 内存占用 内存卸载 设备内存有限,模型参数规模大,模型推理 √ √ √ 参数压缩 √ √ 通信延迟 分层通信 通用,特别适合小批量数据通信 √ √ √ √ √ 冗余消除 模型推理或通过张量并行训练、推理 √ √ 其他* 通用,Janus除外 √ √ √ √ 拓扑敏感路由 模型训练,特别是网络拓扑复杂的集群 √ 计算效率 动态容量 通用,特别是专家数量多且偏好差异大的模型 √ √ 专家负载 负载均衡损失用于训练,路由均衡门控均可 设备负载 专家负载差异明显、变化显著,设备数量多 √ √ √ √ 激活预测 模型推理,但通常需要训练过程的统计数据 √ √ √ 静态流水 非极致性能需求 √ √ 自适应流水 模型规模大,执行开销大,极致性能需求 √ √ 内核计算 通用 √ √ √ √ 并行扩展 静态并行 同一模型频繁使用,训练、推理开销不大 √ √ √ 自适应并行 极致性能需求,模型频繁变化,大规模训练推理 √ √ 其他*代表路由无关通信迟优化中的其他优化
尽管MoE系统优化工作已取得重要进展,但仍然存在许多值得探索的开放性问题. 下面列举一些未来可能深入探索的研究方向.
1)架构创新. 尽管从系统优化角度出发的MoE系统优化方法已取得积极进展,但受限于MoE底层架构设计中注意力计算、门控决策、样本分发、专家计算的串行依赖,仍然严重制约着系统优化的潜力. DeepSpeed-MoE[78]通过改进模型架构,取得令人鼓舞的成果. 进一步探索其他可能的优化架构设计,将赋予MoE系统更大的优化潜力. 例如,通过将MoE层和自注意力层以分支并行的方式连接;或在注意力的前馈层之间间隔设置MoE层,并利用非MoE层输出作为MoE层的输入样本;以及利用数量有限的专家配合专家参数变换矩阵或者输入特征迁移矩阵,从而实现映射专家的预测效果等设计. 这些架构上的创新将进一步释放MoE模型的系统优化潜力,有望解决传统MoE架构模型在通信延迟、计算效率、流水并行等方面的不足,是一个有价值且具有挑战的研究方向.
2)路由改进. 在传统MoE模型中,由于路由机制的离散性和稀疏性尝尝导致路由的不稳定、样本丢弃以及负载不均衡等问题. 虽然近来的改进路由设计在提升稀疏操作效率、减少通信延迟、改善负载均衡等方面取得一定进展,但目前尚未有一个路由方法能够同时兼顾这些优势. 例如,旨在优化通信延迟或实现负载均衡的路由策略可能会对模型精度产生负面影响. 同样,面向稀疏操作优化的路由设计通常不能统筹负载均衡. 软路由机制[121]有效解决了传统路由的低效稀疏操作和负载不均衡难题,为改进路由方法提供了新思路. 沿着这个方向,进一步探索能够融合稀疏和稠密优势,对通信拓扑敏感且负载均衡的高效路由设计是一个有趣的研究方向.
3)高效计算. 专家间的相关性对于精准预测激活专家至关重要. 分析相同样本在不同MoE层的专家激活模式,相同样本在同一MoE层中多个激活专家的选择倾向,以及不同样本激活相同专家的一致性等特性有助于精准预测专家激活模式. 进而优化专家参数卸载中的专家精确预取和样本通信、专家计算的并行执行. 这不仅能够显著降低模型的通信延迟,还能提升计算效率,是一个值得深入探索的研究方向. 可能的研究方向还包括设计高效的可变尺寸批量计算内核. 数据形状不规整的高效批量通信和计算一直是一个困扰机器学习系统的难题,现有的解决方法通常采用变通的方式将其转变为形状规整的通信和计算,但这种方法无论是在适用性还是性能方面仍存在诸多限制. 因此,对可变尺寸批量计算内核的探索仍将继续,但从现有的研究成果来看,这需要硬件设计层面的创新支持,才有希望获得突破. 此外,探索覆盖范围更广,决策效率更高,转换代价更低以及代价模型辅助的高效自适应并行策略也是一个有价值的研究方向.
作者贡献声明:史宏志调研文献,制定了论文架构,指导论写作并修改;赵健收集和梳理相关文献,负责论文主体内容撰写;赵雅倩和李茹杨指导了论文整体框架和内容规划;魏辉补充完善论文;胡克坤、温东超以及金良对论文提出修改意见.
异构资源指不同设备的计算资源(CPU、GPU算力资源)和传输资源(带宽容量).https://buy.cloud.tencent.com/price/cvm/calculatorhttps://inet.omnetpp.org/https://github.com/uglyghost/MultNodeVirtualLivehttps://github.com/uglyghost/PaddleBoBohttps://ossrs.net/lts/zh-cn/docs/v4/doc/sample-hls-cluster -
表 1 数学符号及其定义
Table 1 Mathematical Symbols and Their Definitions
符号 定义 G=(V,E) 算力网络的拓扑无向图 V,E 算力网络节点集合和链路集合 cv(t) 节点v在时刻t的可用计算资源 ce(t) 链路e在时刻t的可用带宽资源 wv 节点v计算资源的成本权重 we 链路e的带宽成本权重 B 通用服务集合 D=(F,L) 通用应用服务模型有向图 F,L 通用应用服务模型节点集合和边集合 P 有向图D中的有向路 τfi 完成服务功能fi的单位计算资源消耗 σli 有向链路li的单位带宽资源开销 {\boldsymbol{I} }^{+}(t) 时刻 t 收到的数据流向量 {\boldsymbol{p}}^{+}(t) 针对不同数据流所确定的数据量向量 {\boldsymbol{p}}^{-}(t) 经过处理后的数据向量 {\boldsymbol{m}}^{+}(t) 数据流的资源消耗向量 {\boldsymbol{m}}^{-}(t) 处理速率向量 q(t) 时刻 t 的计算任务资源消耗队列 {\boldsymbol{s}}^{+}(t) 时刻 t 传输队列增加的数据向量 {\boldsymbol{s}}^{-}(t) 时刻 t 传输队列发送的数据向量 {\boldsymbol{q}}'(t) 时刻 t 传输队列数据向量 {{q} }_{\dagger}(t) 时刻 t 虚拟队列 \cal{U} 虚拟计算节点集合 C_{u} 虚拟节点u的总计算资源需求量 C_{{e}} 链路e的总带宽资源需求 C 系统整体资源需求 U(\cdot) 服务数据流的效用函数 x {s, m}的统一表示 \alpha 效用和资源消耗间的权重因子 V 非负均衡因子 \theta 波利亚重球法的辅助变量 \lambda_{t} , \beta_{t} 梯度步长和动量权重 R_{V_{i}, \beta} 收敛系数 \phi ,\varPhi 常数系数 -
[1] Tang Hongsheng, Zhang Xing, Fu Shucun, et al. Resource management for meteorological service in cloud-edge computing: A survey[J]. Transactions on Emerging Telecommunications Technologies, 2022, 33(6): e3844
[2] Ren Yuanming, Shen Shihao, Ju Yanli, et al. EdgeMatrix: A resources redefined edge-cloud system for prioritized services[C] //Proc of the IEEE Conf on Computer Communications (IEEE INFOCOM 2022). Piscataway, NJ: IEEE, 2022: 610−619
[3] Zhang Ruixiao, Yang Changpeng, Wang Xiaochan, et al. AggCast: Practical cost-effective scheduling for large-scale cloud-edge crowdsourced live streaming[C] //Proc of the 30th ACM Int Conf on Multimedia. New York: ACM, 2022: 3026−3034
[4] Nagesh S S, Fernando N, Loke S W, et al. Opportunistic mobile crowd computing: Task-dependency based work-stealing[C] //Proc of the 28th Annual Int Conf on Mobile Computing And Networking. 2022: 775−777
[5] Wang Mu, Xu Changqiao, Chen Xingyan, et al. BC-Mobile device cloud: A blockchain-based decentralized truthful framework for mobile device cloud[J]. IEEE Transactions on Industrial Informatics, 2020, 17(2): 1208−1219
[6] Dhelim S, Kechadi T, Chen L, et al. Edge-enabled metaverse: The convergence of metaverse and mobile edge computing[J]. arXiv preprint, arXiv: 2205.02764, 2022
[7] Thirumalaisamy M, Basheer S, Selvarajan S, et al. Interaction of secure cloud network and crowd computing for smart city data obfuscation[J]. Sensors, 2022, 22(19): 7169
[8] Gu Xiaohui, Zhang Guoan, Cao Yujie. Cooperative mobile edge computing-cloud computing in Internet of vehicle: Architecture and energy-efficient workload allocation[J]. Transactions on Emerging Telecommunications Technologies, 2021, 32(8): e4095
[9] Wang Lei, Xu Boyi, Cai Hongming , et al. Context-aware emergency detection method for edge computing-based healthcare monitoring system[J]. Transactions on Emerging Telecommunications Technologies, 2022, 33(6): e4128
[10] 李前,蔺琛皓,杨雨龙,等. 云边端全场景下深度学习模型对抗攻击和防御[J]. 计算机研究与发展,2022,59(10):2109−2129 Li Qian, Lin Chenhao, Yang Yulong, et al. Adversarial attacks and defenses against deep learning under the cloud-edge-terminal scenes[J]. Journal of Computer Research and Development, 2022, 59(10): 2109−2129 (in Chinese)
[11] 钟正仪,包卫东,王吉,等. 一种面向云边端系统的分层异构联邦学习方法[J]. 计算机研究与发展,2022,59(11):2408−2422 Zhong Zhengyi, Bao Weidong, Wang Ji, et al. A hierarchically heterogeneous federated learning method for cloud-edge-end system[J]. Journal of Computer Research and Development, 2022, 59(11): 2408−2422 (in Chinese)
[12] Chen Xingyan, Xu Changqiao, Wang Mu, et al. Augmented queue-based transmission and transcoding optimization for livecast services based on cloud-edge-crowd integration[J]. IEEE Transactions on Circuits and Systems for Video Technology, 2020, 31(11): 4470−4484
[13] Chen Xingyan, Xu Changqiao, Wang Mu, et al. A universal transcoding and transmission method for livecast with networked multi-agent reinforcement learning[C] //Proc of the IEEE Conf on Computer Communications (IEEE INFOCOM 2021). Piscataway, NJ: IEEE, 2021: 1−10
[14] Mao Yingling, Shang Xiaojun, Yang Yuanyuan. Joint resource management and flow scheduling for SFC deployment in hybrid edge-and-cloud network[C] //Proc of the IEEE Conf on Computer Communications (IEEE INFOCOM 2022). Piscataway, NJ: IEEE, 2022: 170−179.
[15] Jin Hao, Jin Yi, Lu Haiya, et al. NFV and SFC: A case study of optimization for virtual mobility management[J]. IEEE Journal on Selected Areas in Communications, 2018, 36(10): 2318−2332 doi: 10.1109/JSAC.2018.2869967
[16] Polyak B T. Some methods of speeding up the convergence of iteration methods[J]. Ussr Computational Mathematics and Mathematical Physics, 1964, 4(5): 1−17 doi: 10.1016/0041-5553(64)90137-5
[17] Liu Jia, Eryilmaz A, Shroff N B, et al. Heavy-ball: A new approach to tame delay and convergence in wireless network optimization[C] //Proc of the 35th Annual IEEE Int Conf on Computer Communications (IEEE INFOCOM 2016). Piscataway, NJ: IEEE, 2016: 1−9
[18] Niu Yipei, Luo Bin, Liu Fangming, et al. When hybrid cloud meets flash crowd: Towards cost-effective service provisioning[C] //Proc of the 2015 IEEE Conf on Computer Communications (INFOCOM). Piscataway, NJ: IEEE, 2015: 1044−1052
[19] 雷波,王江龙,赵倩颖,等. 基于计算、存储、传送资源融合化的新型网络虚拟化架构[J]. 电信科学,2020,36(7):42−54 Lei Bo, Wang Jianglong, Zhao Qianying, et al. Novel network virtualization architecture based on the convergence of computing, storage and transport resources[J]. Telecommunications Science, 2020, 36(7): 42−54 (in Chinese)
[20] 邝祝芳,陈清林,李林峰,等. 基于深度强化学习的多用户边缘计算任务卸载调度与资源分配算法[J]. 计算机学报,2022,45(4):812−824 Kuang Zhufang, Chen Qinglin, Li Linfeng, et al. Multi-user edge computing task offloading scheduling and resource allocation based on deep reinforcement learning[J]. Chinese Journal of Computers, 2022, 45(4): 812−824 (in Chinese)
[21] 许小龙,方子介,齐连永,等. 车联网边缘计算环境下基于深度强化学习的分布式服务卸载方法[J]. 计算机学报,2021,44(12):2382−2405 Xu Xiaolong, Fang Zijie, Qi Lianyong, et al. A deep reinforcement learning-based distributed service offloading method for edge computing empowered Internet of vehicles[J]. Chinese Journal of Computers, 2021, 44(12): 2382−2405 (in Chinese)
[22] 刘晓宇,许驰,曾鹏,等. 面向异构工业任务高并发计算卸载的深度强化学习算法[J]. 计算机学报,2021,44(12):2367−2381 Liu Xiaoyu, Xu Chi, Zeng Peng, et al. Deep reinforcement learning-based high concurrent computing offloading for heterogeneous industrial tasks[J]. Chinese Journal of Computers, 2021, 44(12): 2367−2381 (in Chinese)
[23] 彭青蓝,夏云霓,郑万波,等. 一种去中心化的在线边缘任务调度与资源分配方法[J]. 计算机学报,2022,45(7):1462−1477 Peng Qinglan, Xia Yunni, Zheng Wanbo, et al. A decentralized online edge task scheduling and resource allocation approach[J]. Chinese Journal of Computers, 2022, 45(7): 1462−1477 (in Chinese)
[24] Cai Yang, Llorca J, Tulino A M, et al. Joint compute-caching-communication control for online data-intensive service delivery[J]. arXiv preprint, arXiv: 2205.01944, 2022
[25] Chu N H, Hoang D T, Nguyen D N, et al. MetaSlicing: A novel resource allocation framework for metaverse[J]. arXiv preprint, arXiv: 2205.11087, 2022
[26] 雷波,赵倩颖. CPN:一种计算/网络资源联合优化方案探讨[J]. 数据与计算发展前沿,2020,2(4):55−64 Lei Bo, Zhao Qianying. CPN: A joint optimization solution of computing network resources[J]. Frontiers of Data & Computing, 2020, 2(4): 55−64 (in Chinese)
[27] 刘泽宁,李凯,吴连涛,等. 多层次算力网络中代价感知任务调度算法[J]. 计算机研究与发展,2020,57(9):1810−1822 Liu Zening, Li Kai, Wu Liantao, et al. CATS: Cost aware task scheduling in multi-tier computing networks[J]. Journal of Computer Research and Development, 2020, 57(9): 1810−1822 (in Chinese)
[28] 李铭轩,曹畅,唐雄燕,等. 面向算力网络的边缘资源调度解决方案研究[J]. 数据与计算发展前沿,2020,2(4):80−91 Li Mingxuan, Cao Chang, Tang Xiongyan, et al. Research on edge resource scheduling solutions for computing power network[J]. Frontiers of Data & Computing, 2020, 2(4): 80−91 (in Chinese)
[29] 易昕昕,马贺荣,曹畅,等. 算力网络可编程服务路由策略的分析与探讨[J]. 数据与计算发展前沿,2022,4(5):23−32 Yi Xinxin, Ma Herong, Cao Chang, et al. Analysis and discussion of routing strategy for programmable services in computing power network[J]. Frontiers of Data & Computing, 2022, 4(5): 23−32 (in Chinese)
[30] 贾庆民,胡玉姣,张华宇,等. 确定性算力网络研究[J]. 通信学报,2022,43(10):55−64 Jia Qingmin, Hu Yujiao, Zhang Huayu, et al. Research on deterministic computing power network[J]. Journal on Communications, 2022, 43(10): 55−64 (in Chinese)
[31] 蔡岳平,李天驰. 面向算力匹配调度的泛在确定性网络研究[J]. 信息通信技术,2020,14(4):9−15 Cai Yueping, Li Tianchi. Ubiquitous and deterministic networking for the matching and scheduling of computing power[J]. Information and Communications Technologies, 2020, 14(4): 9−15 (in Chinese)
[32] Neely M J. Stochastic network optimization with application to communication and queueing systems[J]. Synthesis Lectures on Communication Networks, 2010, 3(1): 1−211
[33] Saunders S. A comparison of data structures for Dijkstra's single source shortest path algorithm[J]. 1999, 1−36