BigMac - 小红书开源的多模态大模型流水并行训练框架
来源:互联网
时间:2026-07-25 14:47:15
BigMac是什么
BigMac,这个听起来像汉堡的名字,实际上是小红书 dots infra 团队开源的多模态大模型流水并行训练框架。它要解决的核心问题很简单:多模态大模型训练时,计算效率和显存占用往往是一对矛盾——想算得快,显存容易爆;想省显存,计算效率又上不去。BigMac 给出的方案是“依赖安全的嵌套流水线范式”。通俗点说,它把成熟的 LLM 流水线当作主干,在不打乱原有执行顺序的前提下,像搭积木一样把编码器和生成器的计算嵌入进去。实际效果如何?训练速度能提升 1.08 到 1.9 倍,同时显存保持稳定。目前它已经是 dots 多模态训练的核心组件,在生产环境中跑得挺稳。
BigMac的主要功能
- :以 LLM pipeline 为稳定主干,只在依赖关系满足的位置插入 encoder / generator 计算,避免跨模块的 bubble 干扰。
依赖安全的嵌套流水线
- :编码器和生成器的激活显存被压到 O(1),LLM 的激活行为保持不变。这意味着可以支持更大的 batch size,而不用担心 OOM。
显存有界的模态激活
- :Scheduler 会生成一张覆盖所有 rank、microbatch 和模块的全局 operator 表;Executor 只负责解释本地的 operator 序列,然后分发给对应的后端执行。
全局调度与执行解耦
- :算法工程师只需要描述模块的输入输出边界,BigMac 自动处理 schedule、handoff 和跨设备通信。模型代码保持模块化,不用关心底层 pipeline 细节。
流水线无感接口
- :内置 profiler、simulator 和可视化工具,支持 per-operator 级别的 trace 导出(兼容 Perfetto UI),可以快速定位 bubble、慢算子以及通信等待。
Schedule-aware 工具链
BigMac的技术原理
- :BigMac 把 LLM pipeline 作为基础时间线。调度器会分析 encoder forward / LLM forward / generator forward 以及对应 backward 之间的数据依赖关系,只在输入已经就绪、且不会打乱 LLM 执行顺序的“空档”里插入模态计算。这样一来,LLM 按原 schedule 持续推进,encoder 和 generator 的激活也能在梯度就绪后尽快释放,backward 及时执行。结果就是打破了“计算高效必高显存、显存高效必多 bubble”的帕累托权衡。
依赖安全的嵌套流水线调度
- :系统把调度策略显式化为一张全局 operator 表,这张表包含了所有 pipeline rank 上 LLM / encoder / generator 的 forward/backward operator 以及模块边界的通信。执行层只需要解释本地的 operator 序列,LLM operator 复用 Megatron Core,模态 operator 保留自己的 data-parallel / FSDP 实现。调整 schedule 时不需要重写模型 runtime,灵活度很高。
全局 Operator 表与后端解耦
如何使用BigMac
- :按照模块化的方式编写 encoder_forward、llm_forward、generator_forward 函数,声明好每个模块的输入输出。
定义模块边界
- :通过 PP-transparent 接口注册模块,BigMac 会自动处理 pipeline stage 划分、activation handoff、gradient handoff 和跨 rank 通信。
接入 BigMac 接口
- :设置好 PP / VPP、microbatch 数量、模块放置策略等参数。
配置并行策略
- :启动 Scheduler 生成全局计划,Executor 在各 rank 上执行 operator 序列。
运行训练
- :用内置 profiler 采集 per-operator 时间,导出 rank-aligned timeline 到 Perfetto UI 分析 bubble 与瓶颈;或者用 simulator 在启动训练前快速迭代并行策略。
性能诊断
BigMac的核心优势
- :同时实现高计算效率与低显存占用,不用再二选一。
打破帕累托前沿
- :保留成熟 LLM schedule,编码器/生成器的耗时波动不会沿着 pipeline 传播。
LLM 流水线零干扰
- :encoder / generator 激活显存保持在 O(1),支持生产级的大 batch 训练。
显存可扩展
- :模型代码无需感知 pipeline runtime,单卡验证的实验可以自然扩展到流水并行。
算法友好
- :全局 schedule 可见可检查,配套 trace / simulation 工具链降低了性能优化成本。
可调试可部署
BigMac的项目地址
- :https://dots-infra.github.io/BigMac/
项目官网
- :https://github.com/Dots-Infra/BigMac/
GitHub仓库
- :https://arxiv.org/pdf/2605.25451
arXiv技术论文
BigMac的同类竞品对比
| 维度 | BigMac | Megatron-LM |
|---|---|---|
| 调度范式 | 依赖安全的嵌套流水线,LLM 为主干 | 显存高效的单条流水线,模态模块作为独立 stage |
| 计算效率 | 高,无跨模块 bubble | 中,encoder/generator 波动会引入 pipeline bubble |
| 显存占用 | 稳定,模态激活 O(1) | 较低,但随模块耦合显存优化空间有限 |
| 扩展性 | 支持理解+生成双路径大规模训练 | 生成路径扩展时 bubble 与显存压力显著 |
| 接口友好度 | PP-transparent,算法代码零侵入 | 需理解并适配 pipeline runtime 与 stage 划分 |
| 工具链 | 内置 schedule-aware profiler + simulator | 依赖传统 nsys / torch trace 手动关联分析 |
BigMac的应用场景
- :比如图文理解、视频理解这类 MLLM 的端到端预训练,需要高效处理 ViT / Whisper 等编码器与 LLM 的流水协同。
多模态理解模型预训练
- :同时包含理解与生成路径的场景(如图像生成、语音合成),需要协调 LLM 与 MMDiT / LDM 等生成器的双向依赖。
多模态生成模型训练
- :在显存受限的集群上追求更大的 global batch size,避免传统计算高效设计因 activation 累积导致 OOM。
大规模 batch 训练
- :算法团队可以在单卡或 DP 环境下验证模型结构,然后通过 BigMac 接口无缝扩展到 pipeline 并行,无需重写代码。
快速实验迭代
- :工程团队可以用 schedule-aware profiler 和 simulator 定位 pipeline bubble,优化并行配置与模块放置策略。
训练性能调优