FlagAI
智源自研大模型工具链,支持 30+ 预训练模型、4 种并行训练框架、10 行代码搞定分布式训练
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
智源自研大模型工具链,支持 30+ 预训练模型、4 种并行训练框架、10 行代码搞定分布式训练
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
2022 年,一位 NLP 研究者想要复现 GPT-3 的某项实验。他面临的现实是:手头只有 4 张 A100 显卡,而主流大模型的预训练动不动需要几十上百张卡。"难道只有大厂才能玩大模型?"——这个问题困扰着整个学术界。
同年,北京智源人工智能研究院(BAAI) 开源了 FlagAI(Fast LArge-scale General AI models)工具包,给出了一个务实的答案:让大模型的训练、微调和推理,对普通研究团队更友好一些。
FlagAI 并非孤立项目,而是智源「FlagOpen 悟道」大模型体系中的核心训练工具链。2021 年,智源发布了中国首个超大规模智能模型「悟道 1.0」,随后陆续推出悟道 2.0(万亿参数)、Aquila(天鹰)等系列模型。FlagAI 承担的角色,是为这些模型的训练与复现提供工程化支撑。

项目基本信息:
FlagAI 的设计哲学可以用一句话概括:用最少的代码,操作最复杂的模型。 官方喊出的口号是「10 行代码并行训练」,这在当时的开源工具中确实有竞争力。
传统方式下,加载一个 BERT 模型需要手动管理权重路径、tokenizer、配置参数。FlagAI 的 AutoLoader 封装了这套流程:
from flagai.model.loader import get_model_future
model = get_model_future("glm", "glm-large-en", checkpoint_path="./checkpoints")
支持的模型类型覆盖了 NLP 主流架构:BERT、RoBERTa、GPT2、T5、GLM、OPT、Aquila(天鹰)、EVA-CLIP、AltCLIP(多语言 CLIP)等 30+ 模型。一个 ALL_TASK 字典映射了任务类型与模型实现的对应关系,这种设计让加载新模型如同查表般简单。
FlagAI 整合了 PyTorch 生态中四个主流并行训练方案:PyTorch DDP、DeepSpeed、Megatron-LM、BMTrain(智源自研)。在 Trainer 类中,通过 env_type 参数切换:
trainer = Trainer(env_type='deepspeed', ...)
trainer.train()
这种「插拔式」架构的意义在于:不同规模的模型可以选用不同的并行策略——单卡用 DDP、中等规模用 DeepSpeed、超大规模用 Megatron+BMTrain 组合。用户无需深入理解 ZeRO 优化器或张量并行的细节,就能用上业界最优实践。
特别值得一提的是 BMTrain,这是智源团队自研的高效分布式训练框架,专为千亿参数模型设计。相比 Megatron+DeepSpeed 组合,BMTrain 在 Aquila-7B 的训练中实现了约 8 倍的训练效率提升。
当标注数据稀缺时,Prompt Learning(提示学习)比传统 Fine-tuning 更有效。FlagAI 实现了 Cloze Prompt(完形填空式)和 Prefix Prompt(前缀提示)两种范式:

图1:Cloze Prompt 原理——将分类标签映射为填空答案,通过预训练模型的 MLM 头自然推理

图2:Prefix Tuning 与 Fine-tuning 的差异——灰色部分在 Prefix Tuning 中冻结,仅优化嵌入向量
通过 GLM_ptuning、GLM_custom_pvp 等工具,研究者可以用不到百条标注样本快速构建任务模型。
FlagAI 并不重复造轮子。它直接依赖 HuggingFace Transformers 作为底层模型库,这意味着 HuggingFace 生态中的大量预训练权重可以零成本导入。同时,智源也维护了自有的模型权重仓库(model.baai.ac.cn)和 HuggingFace 官方仓库(BAAI/),用户可以选择更快的国内镜像源。
flagai/
├── auto_model/ # 自动模型加载器(AutoLoader)
├── model/ # 各模型实现(bert_model, glm_model, aquila_model...)
├── data/ # 数据处理相关
├── mpu/ # 模型并行通信原语(类似 Megatron-LM)
├── fp16/ # 混合精度训练
├── trainer.py # 统一训练循环
├── trainer_v1.py # 训练循环 v1
├── optimizers.py # 优化器封装
└── schedulers.py # 学习率调度
核心设计模式是工厂模式 + 策略模式:通过 ALL_TASK 字典将任务类型映射到具体的模型类,通过 env_type 切换底层并行策略。这种设计让工具包可以在不修改核心逻辑的情况下不断接入新模型、新并行方案。
依赖生态:
transformers >= 4.31.0:底层模型deepspeed == 0.6.5:分布式训练pytorch-lightning >= 1.6.5:训练循环辅助diffusers >= 0.7.2:文生图模型支持timm:视觉模型flash-attn == 1.0.2:高效率注意力实现FlagAI 对中文 NLP 场景有天然亲和力。悟道 GLM(最高百亿参数)是完全基于中文语料从零训练的,而非翻译自英文模型——这意味着模型对中文世界的知识理解更「原生」。配套的 tokenizer 针对中文做了优化,支持 SentencePiece 分词和 jieba 集成。
在实际任务上,FlagAI 主打的典型应用包括:
尽管 FlagAI 通过 pip 安装非常方便,但大模型本身的资源需求才是真正的门槛。以 Aquila-7B 为例,需要至少 1 张显存 24GB+ 的 GPU(7B 模型 fp16 约 14GB 显存),推荐 7B 以上显存的显卡。33B 模型则需要多卡并行。
官方提供了基于 NVIDIA CUDA 11.7 的 Dockerfile:
FROM nvcr.io/nvidia/cuda:11.7.0-devel-ubuntu20.04
# ... 安装 Python 3.9、PyTorch、BMTrain、apex 等依赖
Dockerfile 的特点是构建完整但不精简——包含了 PyTorch、DeepSpeed、BMTrain、Apex 等全套依赖,镜像体积较大,但好处是开箱即用。对于没有高端 GPU 的用户,FlagAI 也通过 BMInf 提供了推理加速方案,在消费级显卡上运行大模型。
部署路径(按难度排序):
FlagAI 作为一个活跃于 2022-2023 年的项目,也有其历史局限性:
1. 文档语言问题:早期文档以英文为主,中文文档(doc_zh)覆盖不够全面,部分高级用法需要阅读英文源码。
2. 与主流生态的竞合:随着 HuggingFace PEFT、DeepSpeed-Chat 等工具的成熟,FlagAI 的 prompt learning 和 RLHF 功能在易用性上不再具有明显优势。
3. 维护活跃度:核心开发主要依托智源研究院,项目更新频率在 2023 年后有所放缓,部分依赖库版本较旧(如 DeepSpeed 0.6.5 发布于 2022 年)。
4. 文档与示例质量参差:examples/ 目录下包含 50+ 示例,质量参差不齐,部分示例缺乏详细说明,新手上手仍需较高学习成本。
尽管有局限,FlagAI 的核心价值在于降低了大模型研究的工程门槛。它让学术团队可以在有限算力下复现和微调大模型,而不是被工程复杂性挡在门外。这种「小团队也能玩大模型」的理念,与 OpenAI、EleutherAI 等机构的开放精神一脉相承。
从行业视角看,FlagAI 代表了 2022 年中国大模型开源生态的重要尝试——不是追随硅谷,而是尝试给出自己的工程方案。智源选择开源 BMTrain、与 Megatron 正面竞争,这一决策本身值得肯定。
本报告基于 FlagAI GitHub 仓库(v1.8.5)源码及官方文档生成,图片均来自项目官方文档。