Data Select · Mix · Reweight — Right in the LLM Training Loop
- [2026-04-04] 🎉 我们的技术报告在 Hugging Face Daily Papers 当日榜单中排名第一。
- [2026-03-17] 我们现已支持在 DeepSpeed ZeRO-3 下进行梯度计算,从而支持更大规模模型的训练与分析。
- [2025-12-23] 🎉 我们很高兴地宣布首个 数据中心训练系统 DataFlex 正式发布!敬请期待后续更新。
DataFlex 是一个构建在 LLaMA-Factory 之上的高级动态训练框架。 它能够在训练过程中智能地调度数据,支持 动态样本选择、领域比例调整 以及 动态加权,旨在同时提升训练效率与最终模型性能。
DataFlex 与 LLaMA-Factory 无缝集成,为研究人员和开发者提供更灵活、更强大的训练控制能力。关于目标与设计理念,请参考 DataFlex-Doc。
我们汇总了与数据选择、数据混合和数据重加权相关的仓库。
❌ 表示没有官方仓库;
✅ 表示有官方仓库;
- Dynamic Select Trainer(动态数据选择训练器):
根据给定策略在训练过程中动态选择训练样本(例如,优先关注“困难样本”)。支持的数据选择算法总结如下:
| 方法 | 类别 | 是否需要模型参与 | 官方仓库 |
|---|---|---|---|
| LESS | 基于梯度 | ✅ 是 | |
| NICE | 基于梯度 | ✅ 是 | |
| Loss | 基于损失 | ✅ 是 | ❌ |
| Delta Loss | 基于损失 | ✅ 是 | ❌ |
| NEAR | 基于数据分布 | ❌ 否 | ❌ |
| TSDS | 基于数据分布 | ❌ 否 | ✅official code |
| Static | 无数据选择 | ❌ 否 | ❌ |
| Random | 随机采样 | ❌ 否 | ❌ |
- Dynamic Mix Trainer(动态数据混合训练器):
在训练过程中动态调整来自不同数据域的数据比例。支持的数据混合算法总结如下:
| 方法 | 类别 | 是否需要模型参与 | 官方仓库 |
|---|---|---|---|
| DOREMI | 离线混合 | ✅ 是 | |
| ODM | 在线混合 | ✅ 是 |
- Dynamic Weight Trainer(动态样本加权训练器):
在反向传播过程中动态调整样本权重,以强调模型更偏好的数据。支持的数据重加权算法总结如下:
| 方法 | 类别 | 是否需要模型参与 | 官方仓库 |
|---|---|---|---|
| Loss Reweighting | 基于损失 | ✅ 是 | ❌ |
请使用以下命令进行环境配置与安装👇
pip install dataflex或者从源码安装(适用于开发):
git clone https://github.com/OpenDCAI/DataFlex.git
cd DataFlex
pip install -e .
# 在 Python 3.10 环境中,请安装 v0.9.3 以确保兼容性
pip install llamafactory==0.9.3
# 在 Python 3.11+ 环境中,推荐安装最新的 v0.9.4
pip install llamafactory==0.9.4启动命令与 LLaMA-Factory 类似。 下面给出一个使用 LESS 的示例:
dataflex-cli train examples/train_lora/selectors/less.yaml与原生 LLaMA-Factory 不同的是,你的 .yaml 配置文件中还必须包含 DataFlex 特有的参数,具体请参考 DataFlex-Doc。
- 如何使用 DataFlex — 安装、CLI 命令、YAML 配置、训练模式、已支持算法一览。
- 如何添加新算法 — 架构概览、Registry 机制、基类接口、添加 Selector/Mixer/Weighter 的完整步骤。
使用 DataFlex 可以在默认 LLaMA-Factory 训练的基础上提升模型性能。
我们使用 Open-Hermes-2.5 的一个子集作为训练数据集。实验结果表明,相较于随机选择(random selector)基线,所采用的数据选择算法和数据重加权算法在与训练数据集相关的 MMLU 基准测试子集上均取得了更优的性能。对于 LESS 和 NICE 算法,我们将 MMLU-Validation-Set 作为验证集,并使用由 GPT-5 生成的推理轨迹(trajectory)进行验证。
我们使用 SlimPajama-627B 的子集进行数据配比实验。数据配比算法在 MMLU 准确率上超过了基线方法,同时在不同数据域上也取得了更低的困惑度(PPL)。
| 方法 | Acc ↑ | Perplexity (PPL) ↓ | |||||||
|---|---|---|---|---|---|---|---|---|---|
| MMLU | ALL | CC | C4 | SE | Wiki | GitHub | ArXiv | Book | |
| Slim-Pajama-6B | |||||||||
| Baseline | 25.27 | 4.217 | 4.278 | 4.532 | 3.402 | 3.546 | 2.640 | 3.508 | 4.778 |
| DoReMi | 25.84 | 4.134 | 4.108 | 4.358 | 3.788 | 3.997 | 3.420 | 3.413 | 4.661 |
| ODM | 26.04 | 4.244 | 4.326 | 4.555 | 3.243 | 3.699 | 2.704 | 2.904 | 4.613 |
| Slim-Pajama-30B | |||||||||
| Baseline | 25.51 | 3.584 | 3.723 | 3.505 | 2.850 | 3.215 | 3.163 | 4.540 | 5.329 |
| DoReMi | 25.97 | 3.562 | 3.731 | 3.503 | 2.706 | 2.985 | 2.973 | 4.441 | 5.214 |
| ODM | 25.63 | 3.429 | 3.598 | 3.519 | 2.382 | 2.713 | 2.255 | 3.487 | 4.746 |
DataFlex 主要聚焦于训练过程中的数据调度。若希望构建一条从原始数据出发的完整流水线,它可以与 DataFlow 配合使用:
DataFlow 通过可组合的算子工作流,将原始文件转换为适用于大语言模型训练的数据,包括文档解析、知识清洗、问答 / CoT 合成,以及训练格式转换等步骤。其输出的 JSON 数据可直接输入 DataFlex 进行训练。
这两个项目彼此独立,不存在代码层面的依赖关系,仅通过标准化的数据格式进行衔接。DataFlex 可以接收来自任意来源的训练数据,包括 DataFlow、人工标注、HuggingFace 数据集,或用户自定义的数据处理脚本。
我们感谢 LLaMA-Factory 提供了高效且易用的大模型微调框架,极大地促进了我们在训练与实验中的快速迭代。 感谢中关村学院提供的 API 和 GPU 支持。 同时也感谢所有开源社区的贡献者——正是你们的努力共同推动了 DataFlex 的发展。
如果您在研究中使用了 DataFlex,欢迎引用我们的项目。
@article{liang2026dataflex,
title={DataFlex: A Unified Framework for Data-Centric Dynamic Training of Large Language Models},
author={Liang, Hao and Zhao, Zhengyang and Qiang, Meiyi and Chen, Mingrui and Ma, Lu and Yu, Rongyi and Feng, Hengyi and Sun, Shixuan and Meng, Zimo and Ma, Xiaochen and others},
journal={arXiv preprint arXiv:2603.26164},
year={2026}
}
@article{liang2026towards,
title={Towards Next-Generation LLM Training: From the Data-Centric Perspective},
author={Liang, Hao and Zhao, Zhengyang and Han, Zhaoyang and Qiang, Meiyi and Ma, Xiaochen and Zeng, Bohan and Cai, Qifeng and Li, Zhiyu and Tang, Linpeng and Zhang, Wentao and others},
journal={arXiv preprint arXiv:2603.14712},
year={2026}
}我们欢迎贡献新的 trainers 和 selectors! 在提交 PR 之前,请确保代码风格与现有代码保持一致。
我们也欢迎你加入 DataFlex 与 DataFlow 开源社区,提出问题、分享想法,并与其他开发者协作!
• 📮 GitHub Issues:报告 Bug 或提出新功能建议
• 🔧 GitHub Pull Requests:贡献代码改进
• 💬 加入我们的社区群组,与我们及其他贡献者交流!



