Skip to content

Latest commit

 

History

History
290 lines (233 loc) · 11.6 KB

File metadata and controls

290 lines (233 loc) · 11.6 KB

DataFlex

Data Select · Mix · Reweight — Right in the LLM Training Loop

Documents Ask DeepWiki

🎉 如果你认可我们的项目,欢迎在 GitHub 上点个 ⭐ Star,关注项目最新进展。

简体中文 | English

📰 1. 新闻

  • [2026-04-04] 🎉 我们的技术报告在 Hugging Face Daily Papers 当日榜单中排名第一。
  • [2026-03-17] 我们现已支持在 DeepSpeed ZeRO-3 下进行梯度计算,从而支持更大规模模型的训练与分析。
  • [2025-12-23] 🎉 我们很高兴地宣布首个 数据中心训练系统 DataFlex 正式发布!敬请期待后续更新。

🔍 2. 概述

DataFlex 是一个构建在 LLaMA-Factory 之上的高级动态训练框架。 它能够在训练过程中智能地调度数据,支持 动态样本选择领域比例调整 以及 动态加权,旨在同时提升训练效率与最终模型性能。

DataFlex 与 LLaMA-Factory 无缝集成,为研究人员和开发者提供更灵活、更强大的训练控制能力。关于目标与设计理念,请参考 DataFlex-Doc

我们汇总了与数据选择、数据混合和数据重加权相关的仓库。 ❌ 表示没有官方仓库; ✅ 表示有官方仓库; ⚠️ 表示有官方仓库但存在问题。

  • Dynamic Select Trainer(动态数据选择训练器)
    根据给定策略在训练过程中动态选择训练样本(例如,优先关注“困难样本”)。支持的数据选择算法总结如下:
方法 类别 是否需要模型参与 官方仓库
LESS 基于梯度 ✅ 是 ⚠️official code
NICE 基于梯度 ✅ 是 ⚠️official code
Loss 基于损失 ✅ 是
Delta Loss 基于损失 ✅ 是
NEAR 基于数据分布 ❌ 否
TSDS 基于数据分布 ❌ 否 official code
Static 无数据选择 ❌ 否
Random 随机采样 ❌ 否
  • Dynamic Mix Trainer(动态数据混合训练器)
    在训练过程中动态调整来自不同数据域的数据比例。支持的数据混合算法总结如下:
方法 类别 是否需要模型参与 官方仓库
DOREMI 离线混合 ✅ 是 ⚠️official code
ODM 在线混合 ✅ 是 ⚠️official code
  • Dynamic Weight Trainer(动态样本加权训练器)
    在反向传播过程中动态调整样本权重,以强调模型更偏好的数据。支持的数据重加权算法总结如下:
方法 类别 是否需要模型参与 官方仓库
Loss Reweighting 基于损失 ✅ 是
* **与 LLaMA-Factory 完全兼容**,可作为即插即用的替代方案。

📌 3. 快速开始

请使用以下命令进行环境配置与安装👇

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

📖 Skills

  • 如何使用 DataFlex — 安装、CLI 命令、YAML 配置、训练模式、已支持算法一览。
  • 如何添加新算法 — 架构概览、Registry 机制、基类接口、添加 Selector/Mixer/Weighter 的完整步骤。

📚 4. 实验结果

使用 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

🧩 5. 生态系统

DataFlex 主要聚焦于训练过程中的数据调度。若希望构建一条从原始数据出发的完整流水线,它可以与 DataFlow 配合使用:

DataFlow 通过可组合的算子工作流,将原始文件转换为适用于大语言模型训练的数据,包括文档解析、知识清洗、问答 / CoT 合成,以及训练格式转换等步骤。其输出的 JSON 数据可直接输入 DataFlex 进行训练。

这两个项目彼此独立,不存在代码层面的依赖关系,仅通过标准化的数据格式进行衔接。DataFlex 可以接收来自任意来源的训练数据,包括 DataFlow、人工标注、HuggingFace 数据集,或用户自定义的数据处理脚本。

🤝 6. 致谢

我们感谢 LLaMA-Factory 提供了高效且易用的大模型微调框架,极大地促进了我们在训练与实验中的快速迭代。 感谢中关村学院提供的 API 和 GPU 支持。 同时也感谢所有开源社区的贡献者——正是你们的努力共同推动了 DataFlex 的发展。

📜 7. 引用

如果您在研究中使用了 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}
}

🤝 8. 社区与支持

我们欢迎贡献新的 trainers 和 selectors! 在提交 PR 之前,请确保代码风格与现有代码保持一致。

我们也欢迎你加入 DataFlexDataFlow 开源社区,提出问题、分享想法,并与其他开发者协作!

• 📮 GitHub Issues:报告 Bug 或提出新功能建议

• 🔧 GitHub Pull Requests:贡献代码改进

• 💬 加入我们的社区群组,与我们及其他贡献者交流!