多模态大语言模型(MLLM)的应用场景:MLLM已广泛应用于多种AI应用,如GPT-4o【34, OpenAI, 2024】, Qwen2.5-VL【5, Qwen2.5-vl technical report, 2025】和Seedream-3.0【14, Seedream 3.0 technical report, 2025】。在我们的生产环境中,典型的训练场景包括:(1) 视觉-语言(Vision-Language)【7, An introduction to visionlanguage modeling, 2024】,集成视觉编码器(如用于图像的ViT【12, An image is worth 16x16 words: Transformers for image recognition at scale, 2021】和用于视频的VideoSwin【31, Video swin transformer, 2021】)与LLM主干;(2) 视觉理解与生成【29, Mogao: An omni foundation model for interleaved multi-modal generation, 2025】,通过变分自编码器(VAE)【24, Auto-encoding variational bayes, 2022】理解视觉信息并根据文本提示合成图像;(3) 三模态【54, Google usm: Scaling automatic speech recognition beyond 100 languages, 2023】,使用通用语音模型(USM)【54】和离散语音编码器【44, A comparative study of discrete speech tokens for semanticrelated tasks with large language models, 2024】统一处理视觉、听觉和文本模态。
并行化策略:大规模MLLM训练涉及多种并行策略。(1) 数据并行(DP)将全局批次数据划分到多个GPU上,每个GPU复制模型参数和优化器状态。ZeRO【37, Zero: Memory optimizations toward training trillion parameter models, 2020】【57, Pytorch fsdp: experiences on scaling fully sharded data parallel, 2023】通过在GPU间分发模型状态来扩展DP。(2) 张量并行(TP)【40, Megatron-lm: Training multi-billion parameter language models using model parallelism, 2019】沿隐藏维度切分层参数。(3) 流水线并行(PP)【32, Pipedream: Generalized pipeline parallelism for dnn training, 2019】【33, Efficient large-scale language model training on gpu clusters using megatron-lm, 2021】将层分组为阶段,并将全局批次拆分为多个微批次进行流水线执行。(4) 序列并行(SP)沿序列维度切分输入和激活值,其主要变体包括Megatron SP【25, Reducing activation recomputation in large transformer models, 2022】、Ulysses SP【20, Deepspeed ulysses: System optimizations for enabling training of extreme long sequence transformer models, 2023】和上下文并行(CP)【3, Nvidia context parallel package, 2025】。(5) 专家并行(EP)【38, Deepspeedmoe: Advancing mixture-of-experts inference and training to power next-generation ai scale, 2022】专为混合专家(MoE)模型设计。
动态的数据分布:混合不同模态和任务领域的数据集加剧了样本长度分布的偏斜,如图5所示。例如,OpenImages【26, The open images dataset v4, 2020】数据集的平均样本长度为3.8K,而LibriSpeech【35, Librispeech: An asr corpus based on public domain audio books, 2015】和BytedLong(一个生产数据集)的平均长度分别为0.34K和6K。即使在同一模态内,RefCOCOg【53, Modeling context in referring expressions, 2016】的平均长度为1.4K,比OpenImages短2.71倍。这种样本长度的差异导致编码器在不同模态之间以及同一模态内部的工作负载不平衡。数据加载器通常按固定的样本数量比例(如1:1的图文样本比例)检索数据,忽略了偏斜的数据分布,导致一些编码器处理过长的样本,而另一些只处理短样本。
模态计算的动态性:不同模态间的计算异构性进一步放大了动态多模态数据集的影响。以一个三模态训练为例,序列长度为16K,批大小为32,图-音-文比例为4:4:2。ViT-1B【12】、USM-2B【54】和LLaMA-12B【41, Llama: Open and efficient foundation language models, 2023】分别消耗14.7K、4.54K和29.0K TFLOPs,因为它们包含不同的计算操作(例如USM中的卷积层)。考虑到音频样本通常比图像样本短,这种异构性进一步加剧了不同模态计算时间的方差。此外,一些特定于模态的操作也引入了工作负载的动态性。例如,ViT处理动态分辨率的图像【11, Patch n’ pack: Navit, a vision transformer for any aspect ratio and resolution, 2023】,通过固定的下采样策略(例如每token 3x14x14像素)生成可变长度的token。
2.3 动态工作负载下的编码器-LLM多路复用
2.3.1 为什么现有系统效率低下?
现有系统的局限性:当前的MLLM训练系统主要分为两类。第一类是类单模态(unimodal-like)系统(如Megatron-LM【40】, Transformers【49】),它们将编码器前置于第一个LLM流水线阶段,以替代文本嵌入层。这种方式下,整个MLLM像单模态LLM一样进行并行化,即编码器和第一阶段共享相同的资源和并行策略。当编码器工作负载增加时(例如,占MLLM总TFLOPs的30%),第一阶段会成为严重的计算和内存瓶颈,导致高达2.84倍的吞吐量下降和OOM问题(图2(c))。第二类是解聚(disaggregation)系统(如DistMM【18, DISTMM: Accelerating distributed multimodal model training, 2024】, DistTrain【55, Disttrain: Addressing model and data heterogeneity with disaggregated training for multimodal large language models, 2024】),它们静态地将编码器和LLM主干解耦为两个独立的模型,各自拥有固定、不同的资源和并行策略。当编码器和LLM之间的相对工作负载变化时,这种静态解聚会面临编码瓶颈(当编码器负载超出其分配资源时)或长时间的设备空闲(当编码器样本不足时)。另一个近期系统Optimus【13, Optimus: Accelerating large-scale multi-modal llm training by bubble exploitation, 2024】,虽然解耦了资源分配和并行化决策,但它是基于静态、合成的工作负载进行并行化,无法处理生产环境中的动态变化。
解耦MLLM并行化:为编码器和LLM主干采用不同的并行策略。具体来说,编码器应以高并发度和足够的资源进行并行化,例如在所有GPU上使用数据并行(DP),以避免成为LLM流水线的瓶颈。对于LLM,理想方式是继承单模态训练中所有成熟的并行技术,如虚拟流水线【33】和高效算子【9, Flux: Fast software-based communication overlap on gpus through kernel fusion, 2024】【10, Flashattention-2: Faster attention with better parallelism and work partitioning, 2023】。
并行策略选择的理由:编码器并行化的原则是高并发且不干扰LLM的执行。因此,数据并行(DP)是首选,因为它能提升编码并发性且通信密集度低。对于长上下文样本,我们结合DP采用Ulysses序列并行(SP)【20】,在每个DP组内将patch后的token沿序列维度分片。这主要基于两个原因:首先,对于长上下文样本和中等大小的编码器,激活值是内存消耗的主要部分,Ulysses SP可以将其分片,实现SP倍的内存缩减。其次,Ulysses SP相比其他SP变体具有更好的兼容性和工作负载平衡性。它不像Megatron SP那样与TP紧密耦合,可以灵活地与其他并行策略(如ZeRO3)集成。与因果注意力掩码而易于负载不平衡的CP【48, Wlb-llm: Workload-balanced 4d parallelism for large language model training, 2025】相比,Ulysses SP通过沿头维度分片注意力来保持每个计算单元的完整注意力,实现最优平衡。当扩展到更大的编码器时,我们采用ZeRO2/3来分发编码器状态和参数。为避免超大规模部署中的P2P死锁风险并支持复杂的LLM流水线【33】【36, Zero bubble pipeline parallelism, 2023】,我们不为编码器采用PP,因为它会使编码器-LLM的数据依赖和联合流水线调度变得复杂【13】。
稻草人方案:嵌套代码插入:一种自然的并置方式是嵌套地将编码器操作插入到LLM代码的指定位置。然而,LLM流水线遵循“单程序,多数据”(SPMD)范式,具有复杂的调度【39, Deepspeed: System optimizations enable training deep learning models with over 100 billion parameters, 2020】【40】,如图9(a)所示。为了精确定位插入点,需要额外的(PP rank, microbatch index)信息(如图9(b)中的condition_1(pp, i)),这使得编码器-LLM的代码难以开发、维护和优化。更糟糕的是,工业代码库在多个项目间共享训练基础设施,阻碍了对LLM代码的侵入式修改。
具有工作负载弹性的统一流水线:尽管上述表示带来了灵活性,但激进地将编码器插入LLM流水线会给后面的LLM阶段分配更多的微批次,如图10(a)所示。当编码器工作负载增加时,这种非均匀插入会破坏原始LLM流水线的结构。具体来说,当第一阶段的编码时间增加Δt时,最后阶段会经历(Nm-1/Nm0)Δt的延迟,导致原本紧密配合的LLM微批次严重错位(图10(a)中的红色箭头),从而引入1.63倍的气泡和P2P死锁风险【22, Dynapipe: Optimizing multitask training through dynamic pipelines, 2024】【50, Adaptra: Straggler-resilient hybrid-parallel training with pipeline adaptation, 2025】。为了实现工作负载弹性,我们提出在LLM各阶段均匀地插入编码器,如图10(b)所示。我们发现,由于混合打包中使用了统一的序列长度,LLM阶段的延迟在工作负载变化下保持相对稳定。相反,由于编码器之间的工作负载是平衡的,它们的延迟会随着工作负载的变化而均匀地增减,从而保持结构稳定性,避免干扰LLM的执行。
去中心化分组重排序:先前的工作如DistTrain【55】和DynaPipe【22】依赖于全局重排序来平衡微批次间的训练样本,因为它们在第一个流水线阶段采用中心化数据加载器。相比之下,MegaScale-Omni将编码器分布在所有流水线阶段(即所有GPU),使得中心化数据加载器易于受限于存储读取并发性,并因向所有GPU大规模分发而产生高昂开销。为解决此问题,我们采用去中心化数据加载器来增强数据加载并发性。然而,全局重排序因昂贵的跨节点乃至跨机架通信和all-to-all挂起风险而变得不可行。为了协调工作负载均衡与开销,我们提出了去中心化分组重排序,该方法根据网络局部性将GPU计算单元划分为重排序组,如图11所示。在每个组内,我们首先进行元数据all-gather操作交换数据大小信息,然后使用Karp算法【6, Analysis of the karmarkar-karp differencing algorithm, 2008】重排序模态样本,并通过all-to-all操作重新分发数据。该技术不会对收敛性产生负面影响,因为编码器数据加载遵循i.i.d.采样原则,且梯度同步后,跨DP副本的样本重排序等效于不重排序。
图11 去中心化分组重排序工作流程。8个GPU,组大小为4,微批次大小为4。
零冗余过滤:为了缓解远程存储的I/O带宽拥塞,工业实践通常只将数据加载到PP0的第一个TP rank,然后本地广播到其他TP rank【56】。然而,在MegaScale-Omni中,每个阶段都应先加载整个批次,然后根据PP rank进行分片,这导致了冗余的数据传输和内存占用。为了减少数据冗余,我们在远程数据加载器中集成了一个过滤器,利用元数据(如PP world size, batch size)来预取每个阶段将要消耗的数据。虽然有效,但零冗余加载器无法像通常那样进行检查点和恢复。我们通过在DP0上维护一个数据缓冲区来跟踪过滤前的数据来解决这个问题,在检查点操作中保存完整的预过滤数据,并在恢复时重新加载和过滤,以确保与原始执行流的一致性。
自适应样本分片:为了在可变长度样本下平衡数据重分片,我们根据LLM并行化所用的SP变体采用自适应分片策略。(1) 对于Ulysses SP(图12(a)),我们沿序列维度均匀分片数据。(2) 对于上下文并行(CP,图12(b)),沿序列维度分片数据会导致LLM CP rank间的注意力不平衡。我们因此只对长样本(如图中的图像和文本)进行分片,并集成混合数据并行【15, Bytescale: Efficient scaling of llm training with a 2048k context length on more than 12,000 gpus, 2025】来处理分片样本(使用CP)和未分片样本(使用DP)。
MFU优化: 通过将非训练通信(如多源token计数器)与模型计算重叠,解决了网络干扰问题,避免了2.2%的吞吐量下降。对于512K长序列训练,采用“forward-then-backward”流水线【19, Gpipe: Efficient training of giant neural networks using pipeline parallelism, 2019】并结合更激进的内存优化,显著提高了MFU,节省了约2/3的GPU小时。
大型模型训练框架:许多工作致力于提升大模型训练效率,如Megatron-LM【40】、DeepSpeed【39, Deepspeed: System optimizations enable training deep learning models with over 100 billion parameters, 2020】和PyTorch FSDP【57】等是最流行的开源训练框架,它们提供了多种并行策略。一些工作【1, Nvidia transformer engine, 2022】【9, Flux: Fast software-based communication overlap on gpus through kernel fusion, 2024】【46, Overlap communication with dependent computation via decomposition in large deep learning models, 2022】探索了通信与计算的重叠。Alpa【58, Alpa: Automating inter-and intra-operator parallelism for distributed deep learning, 2022】、nnScaler【30, {nnScaler}:{ConstraintGuided} parallelization plan generation for deep learning training, 2024】和Unity【42, Unity: Accelerating {DNN} training through joint optimization of algebraic transformations and parallelization, 2022】则自动寻找最优的混合并行策略。然而,这些框架主要关注通用大模型,缺乏针对MLLM架构、编码器-LLM编排和动态多模态工作负载的专门设计。
多模态训练系统:随着多模态任务的兴起,近期有工作开始研究为MLLM构建专门的训练系统。Megatron-LM【40】和Transformers【49】以单模态的方式支持MLLM训练。DistMM【18】和DistTrain【55】提出将编码器和LLM主干解聚为两个独立模型,并探索了异构感知的模型划分、资源分配和数据均衡。Optimus【13】、GraphPipe【21, Graphpipe: Improving performance and scalability of dnn training with graph pipeline parallelism, 2024】、Spindle【47, Spindle: Efficient distributed training of multi-task large models via wavefront scheduling, 2025】和PipeWeaver【51, Pipeweaver: Addressing data dynamicity in large multimodal model training with dynamic interleaved pipeline, 2025】提出了细粒度的多层气泡利用或动态流水线调度算法来减少执行