小红书开源 BigMac:把多模态训练的显存与速度,从二选一中解放出来

秋强君_4336

秋强君_4336

2026-07-23

432人浏览

原创

多模态大语言模型正逐步演变为新一代人工智能的底层基石,然而其训练系统却长期受困于一个经典矛盾——算力利用率高的方案,显存压力巨大;而显存占用低的设计,又往往拖慢整体训练速度。小红书 dots infra 团队将这一困境定义为“多模态流水训练中的帕累托前沿”,而如今,他们成功在这一前沿撕开了一道突破口。7月22日,团队正式开源全新流水并行训练范式 bigmac,专为原生多模态训练场景定制,项目代码已发布于 github 的 dots-infra 仓库。

多模态模型从来不是一块整齐划一的 Transformer。典型的多模态大语言模型(MLLM)由三大组件拼接而成:负责将图像、音频等输入映射为 embedding 的模态编码器,承载核心推理能力的LLM 主干网络,以及将 LLM 输出重新投射至图像、语音等目标模态的生成器。这三者在计算特性、延迟分布与内存行为上差异显著,强行塞入同一条传统流水线,自然引发连锁问题。

☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

小红书开源 BigMac:把多模态训练的显存与速度,从二选一中解放出来

当前业界主流做法大致分为两类:
第一类追求计算效率最大化——将编码器与生成器从主 LLM 流水线中剥离,独立调度。优势在于模态模块的耗时抖动不会在 LLM 流水线中引发空泡(bubble),但代价是激活显存随 microbatch 数量线性增长,在大规模训练中尤为昂贵;
第二类侧重显存效率优先——把全部模块统一纳入单条流水线,首尾阶段严格对齐。虽能压缩激活生命周期、降低峰值显存,但只要任一编码器或生成器响应稍慢,整条 LLM 流水线便被迫停滞,“尾部空泡”随之产生。当模型与数据规模扩大,两种路径的瓶颈均会迅速暴露。

BigMac 的设计起点简洁却极具穿透力:LLM 流水线本身,仍是不可动摇的调度主干。大规模 LLM 训练早已深度依赖如 1F1B 或 interleaved 1F1B 这类高度工程化的调度策略,它们与生产级训练栈高度耦合。BigMac 并不推翻这套成熟机制,而是将其作为底层时间轴,再将编码器与生成器的计算任务,精准嵌入到“输入已就绪、且不干扰 LLM 执行顺序”的间隙中。团队将该架构命名为准依赖安全的嵌套流水线(Quasi-Dependency-Safe Nested Pipeline)。

这一设计带来两大关键性质:
其一,编码器与生成器的执行波动不再沿 LLM 流水线逐级传导,LLM 依然按既定节奏稳定推进;
其二,模态相关激活显存被算法层面压缩至 O(1) ——编码器无需为所有 microbatch 持续保留激活直至流水结束,生成器也不必拖着冗长的激活链。换言之,BigMac 并非在显存与空泡之间做权衡取舍,而是通过重构调度结构,使二者不再互斥。

小红书开源 BigMac:把多模态训练的显存与速度,从二选一中解放出来

从理论可调度,到真正落地可训,中间横亘着系统集成、接口抽象、性能调优等一系列工程挑战。BigMac 正是为此而来,它交付了三样关键能力:

Qwen Api
Qwen Api

通义千问 API 助手,熟练调用 Qwen 模型、DashScope SDK、多模态与 Agent 开发

下载

第一,全局可观察的调度视图:运行时 Scheduler 会生成一张覆盖所有 pipeline rank、microbatch 及模块类型的全局 operator 表,Executor 再据此拆解为各 rank 上的本地执行序列,并分发至 Megatron Core 等 LLM 后端、模态 runtime 与通信后端。调度逻辑从此透明、可验证,同时保持对下游后端的高度兼容性。

第二,面向算法工程师的零感知流水接口:开发者只需声明每个模块的输入输出依赖关系(即“生产什么、消费什么”),其余诸如 stage 划分、activation/gradient 交接、跨设备通信等复杂细节,均由 BigMac 在底层自动完成。这意味着一个在单卡上验证通过的多模态实验,能平滑扩展至大规模流水并行环境。

第三,深度理解调度结构的工具链:包含 profiler、simulator 与可视化模块,可将一次训练迭代精确还原至 operator 级别,清晰呈现每个 rank 在每个时刻的计算状态、空转位置及阻塞依赖;simulator 更支持在真实训练启动前,快速试跑不同 PP 配置与 microbatch 组合,预估其对空泡率与吞吐的影响。

实际效果已在两类典型负载中得到验证:
在 MLLM-Understanding 场景中,以 Qwen3-30B-A3B 为主干、搭配 1.3B ViT 编码器,BigMac 相比计算高效基线 Optimus 提速 1.08–1.1 倍,相较显存高效基线 Megatron-DistTrain 提速达 1.6–1.9 倍;更关键的是显存表现——随着 per-GPU batch size 增大,BigMac 的峰值显存维持平稳,而 Optimus 因需全程保留编码器激活,显存持续攀升,最终在更大 batch 下直接 OOM。
在更复杂的 MLLM-Generation 场景中,引入 20B 规模的 MMDiT 生成器后,差异进一步放大:Optimus 在所有测试 batch size 下均触发 OOM;BigMac 则通过及时触发 generator backward、快速释放生成侧激活,成功规避内存危机,相比 Megatron-DistTrain 仍实现 1.5–1.9 倍加速,显存曲线同样稳健。这正是嵌套流水线最具价值的战场——系统必须同时满足编码器与生成器的复杂依赖,又无法容忍大量激活驻留或严重空泡。

目前,BigMac 已作为 dots 多模态模型训练体系的核心组件之一,稳定运行于小红书生产环境。相关论文《BigMac: Breaking the Pareto Frontier of Compute and Memory in Multimodal LLM Training》已上线 arXiv,团队同步公开了交互式 PP Profiler 的 trace 示例。对于正被多模态训练中显存与速度双重挤压的研究者与工程师而言,这份经过真实业务锤炼的开源方案,或许能大幅节省重复造轮的时间成本。

小红书
小红书

小红书是一款集种草分享、生活购物、社交于一体的综合app。小红书汇集了时尚、美容、生活方式、旅行、美食等多个领域的内容,为用户提供了丰富多彩的体验和无限灵感,有需要的小伙伴快来保存下载体验吧!

下载

相关标签:

小红书 qwen

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
PixTV官网入口地址合集
PixTV官网入口地址合集

本专题汇总了 PixTV AI 一站式视频创作平台的官方入口与使用教程。无需下载软件,浏览器直接访问即可使用。平台将剧本、图像、视频、声音与剪辑整合在“无限画布”中,接入 GPT Image 2.5、Seedance 2.5 等头部模型。本专题整理了从新建画布、角色锚定、分镜拆分到视频生成与导出的完整操作指南,助你快速上手 AI 短剧与漫剧创作。

2026.10.10

20

15

Kratos框架HTTP与gRPC服务开发教程
Kratos框架HTTP与gRPC服务开发教程

本专题围绕Kratos框架双协议服务开发,涵盖HTTP路由与处理器编写、参数获取、gRPC服务实现与客户端调用、metadata上下文传递、encoding编解码注册、统一响应封装、超时控制与流式响应实现方法。

2026.10.10

20

15

Kratos框架Protobuf接口定义与代码生成合集
Kratos框架Protobuf接口定义与代码生成合集

本专题讲解Kratos框架接口定义体系,涵盖proto编写规范、proto add/client/server生成命令、http注解路由、validate校验、OpenAPI文档生成、跨服务proto复用与兼容性设计。

2026.10.10

0

15

C++虚函数怎么定义和调用
C++虚函数怎么定义和调用

C++虚函数是实现运行时多态的重要机制。本专题从virtual关键字的基本用法入手,介绍基类与派生类之间的函数重写、基类指针调用派生类方法,以及动态绑定的执行过程,帮助初学者掌握虚函数的核心语法。

2026.10.10

20

26

C++类与对象的封装方法教程
C++类与对象的封装方法教程

C++封装是面向对象编程的核心特性之一,通过类将数据与操作数据的函数组织在一起,并利用访问权限控制外部访问。本专题介绍类的定义、成员变量、成员函数以及public、private和protected的使用方法,帮助初学者掌握封装的基本原理。

2026.10.10

0

32

C++构造函数定义与调用方法
C++构造函数定义与调用方法

C++构造函数用于初始化类对象,是面向对象编程的重要基础。本专题从构造函数的定义、声明和调用入手,介绍默认构造函数、带参数构造函数、拷贝构造函数及成员初始化列表,帮助初学者掌握对象创建与初始化的基本方法。

2026.10.10

20

16

Kratos框架零基础入门教程
Kratos框架零基础入门教程

本专题整理Kratos框架入门内容,涵盖Go环境准备、kratos CLI安装升级、new命令创建项目、目录结构分层说明、服务启动与双协议端口、依赖下载报错排查,帮助开发者快速跑通第一个Kratos框架微服务应用。

2026.10.10

20

15

C++条件判断语句怎么写
C++条件判断语句怎么写

C++条件判断是控制程序执行流程的重要基础。本专题介绍if、if-else、else if和switch等常见分支语句,结合条件表达式、比较运算符与代码示例,帮助初学者掌握不同场景下的判断逻辑。

2026.10.10

0

13

C++变量怎么声明和赋值
C++变量怎么声明和赋值

C++变量是编写程序和存储数据的基础。本专题围绕变量声明、定义、初始化、赋值和类型选择等内容展开,帮助初学者理解不同变量的用法,并掌握在实际代码中定义和使用变量的方法。

2026.10.10

20

20

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
安装 Xdebug 并配置 phpstorm
安装 Xdebug 并配置 phpstorm

共1课时 | 185人学习

PostgreSQL 教程
PostgreSQL 教程

共48课时 | 20.4万人学习

好课诞生记
好课诞生记

共20课时 | 7.1万人学习