LMMs-Engine 是一个用于训练统一多模态模型的精简、高效框架,旨在支持大规模的多模态模型训练。它由 EvolvingLMMs-Lab 维护,采用 Apache 2.0 许可证,代码托管在 GitHub 上。
用途 LMMs-Engine 主要用于多模态模型的预训练和微调,支持视觉-语言、音频-语言、扩散模型等多种模态组合。它适用于研究和大规模训练场景,提供从数据集准备到模型训练的一站式解决方案。
主要能力
- 支持 20 多种模型架构,包括 Qwen2.5-VL、Qwen3-VL、Qwen3-VL MoE、Qwen2.5-Omni、Qwen3-Omni MoE、LLaVA-OneVision、Bagel、Aero 等视觉语言和多模态模型,以及 dLLM、WanVideo、SiT、RAE-SigLip 等扩散和生成模型,还有 Qwen 系列语言模型和线性注意力模型。
- 提供多种分布式训练优化:FSDP2(基于 DTensor 的参数、梯度、优化器状态分片)、Ulysses 序列并行(跨 GPU 分割序列维度,支持超长上下文)、张量并行、专家并行(用于 MoE 模型)和多维并行组合。
- 内存与计算优化:Flash Attention + Unpadding、原生稀疏注意力(NSA)、Liger 内核(Triton 融合内核,减少内存占用)、Monkey Patching 系统(运行时内核注入)、序列打包(首次适应装箱,提升 MFU)。
- 高级优化器:Muon 优化器(Newton-Schulz 正交化,Triton 内核,通过 DTensor 分布式,选择性应用于 2D 参数)。
- 支持流式数据集(IterableDataset),适用于万亿级 token 预训练。
- 提供 Docker 镜像,预装 PyTorch、CUDA、FlashAttention 和训练依赖。
- 支持通过 torchrun 或 Accelerate 启动训练。
- 提供详细的 MFU 参考指标和示例配置。
使用方式
- 数据集准备:将数据集处理为 OpenAI 聊天格式(JSONL/JSON/Arrow/CSV),可使用 hf download 命令下载示例数据集。
- 配置数据集 YAML(单数据源可选),指定路径、数据文件夹和数据类型。
- 配置训练:参考 examples/qwen3_vl/example_config.yaml 或 examples/ 下的模型特定配置。
- 启动训练:推荐使用 torchrun(原生 PyTorch),或使用 Accelerate。
- 每个 run.sh 文件包含详细的设置说明、先决条件和配置选项。
适用场景
- 视觉-语言预训练:在大型多模态数据集上训练 Qwen-VL、LLaVA 等。
- 视频理解:在 3D 视频数据上训练 AERO。
- 扩散模型:训练 DLLM、SiT、WanVideo 用于生成任务。
- 表示学习:训练 RAE 用于视觉表示。
- 语言模型预训练:使用 Muon 优化器训练 DGN、Qwen。
- 多模态微调:使用序列打包进行高效 SFT。
限制
- 原生稀疏注意力(NSA)目前仅支持 BAGEL 模型。
- 线性注意力模型需要先安装 FLA。
- Muon 优化器默认排除包含特定子串的模块(如 emb、norm、lm_head 等)以及维度不等于 2 的参数。
- 部分功能可能需要特定的依赖和配置,具体请参考官方文档。
文档与支持 提供详细的文档,包括数据集准备、训练指南、设计原则和 API 参考。项目欢迎贡献,并提供了设计原则指导代码风格。感谢多个开源项目的支持。