大模型数据生成、清洗与准备,一站式搞定
可视化、低代码流水线,支持跨领域和用例的灵活编排。💪
将原始数据转化为高质量的 LLM 训练数据集。🔧
🎉 以更低的成本获得更智能的 LLM —— 在 GitHub 上给我们点个Star ⭐ 以获取最新更新。
初学者友好学习资源(持续更新): [🎬 视频教程] [📚 文字教程]
简体中文 | English
[2026-02-02] 🖥️ DataFlow WebUI 正式发布!
通过一条命令 dataflow webui 即可启动可视化流水线构建器,在直观的网页界面中构建并运行 DataFlow 流水线。👉 WebUI 文档
[2026-01-20] 🌟 DataFlow Awesome Works 上线! 新增板块用于展示基于 DataFlow 的开源项目与研究工作,欢迎提交 Pull Request 分享你的成果!👉 Awesome Works
[2025-12-19] 🎉 DataFlow 技术报告正式发布! 欢迎阅读并引用我们的 arXiv 论文:https://arxiv.org/abs/2512.16676
[2025-11-20] 🤖 DataFlow 全新 Data Agents 发布! 现在即可体验,并通过 Bilibili 教程快速上手:https://space.bilibili.com/3546929239689711/lists/6761342?type=season
[2025-06-28] 🎉 DataFlow 正式开源发布! 我们全新发布的以数据为中心的系统DataFlow已开源 —— 敬请关注后续更新!
DataFlow 是一个专门为从嘈杂来源(PDF、纯文本、低质量 QA)中生成、精炼、评估和过滤高质量 AI 数据而设计的数据准备和训练系统,从而通过针对性训练(预训练、指令微调 SFT、强化学习训练 RL)或 RAG 系统,提升大语言模型 (LLM) 在医疗、金融、法律和学术研究等特定领域的性能。
通过“基于算子 (operator-based)”的设计,DataFlow 将整个数据清洗工作流转化为可重现、可重用且可共享的“流水线 (pipeline)”,为以数据为中心的 AI 社区提供核心基础设施。此外,我们开发了智能化的 DataFlow-agent,能够根据需求通过重新组合现有算子或创建新算子来动态组装新的“流水线”。
通过 AgenticRAG 和 Text2SQL 等工具进行数据生成
结构化数据提取
大规模书籍 PDF → 视觉 QA 转换
科学数据工作流管理
DataFlow 套件提供了基本的算力设施,以配合 DataFlow 主仓库实现 LLM 数据准备的自动化和规模化。它由四个紧密集成的层组成:
这些组件共同构成了一个统一、可扩展的环境,将原始数据转化为模型就绪的智能信息。
数据生成和清洗对于高质量模型至关重要,但对于企业和个人而言,这些任务往往耗时、耗力且成本高昂。DataFlow 提供了一站式解决方案,高效应对这些挑战。 与 Nemo-Curator 和 Data-Juicer 等系统相比,DataFlow 提供:
DataFlow 算子的设计秉持简单与清晰的原则。
算子接收结构化输入(JSON, JSONL, CSV),经过智能化处理后产生高质量输出。 每个算子封装了一个特定的数据处理任务,提供简洁且一致的 API,易于理解和集成。类 PyTorch 的设计使其直观且开箱即用,让您可以快速构建、组合和自定义流水线,无需处理复杂的模板代码。
更多详情请参考 算子文档。下面是一个演示如何调用 PromptedGenerator 算子的极简示例:
示例输入数据 (json/jsonl 样式):
// input.json
[
{"problem": "What is 17 + 25?"},
{"problem": "If x = 3, compute 2x^2 + 1."}
]
算子调用代码:
from dataflow.operators.core_text import PromptedGenerator
from dataflow.utils.storage import FileStorage
from dataflow.serving import APILLMServing_request
# 将输入文件设置到全局存储类
storage = FileStorage(first_entry_file_name="./input.json",)
# 配置 LLM 服务(例如 OpenAI API)
# api key 需要通过 `export DF_API_KEY=sk-xxx` 设置
llm_serving = APILLMServing_request(
api_url="https://api.openai.com/v1/chat/completions",
)
prompted_generator = PromptedGenerator(
llm_serving=llm_serving, # 预配置的 LLM 后端
system_prompt="Please solve this math problem."
)
prompted_generator.run(
storage=self.storage.step(), # 数据管理(细节省略)
input_key="problem", # 从该列读取
output_key="solution" # 写入该列
)
运行后,算子会将生成的结果追加到 output_key 中。例如,输出数据 (json/jsonl 样式) 变为:
// dataflow_step1.json
[
{"problem":"What is 17 + 25?","solution":"42"},
{"problem":"If x = 3, compute 2x^2 + 1.","solution":"19"}
]
DataFlow 目前包含的流水线如下:
- 📝 文本处理流水线(Text Pipeline):从大规模纯文本(多为网络爬取)中挖掘问答对,用于监督微调和强化学习训练。
-
- [HuggingFace🤗 示例数据]
🗃️ Text2SQL 流水线:将自然语言问题转化为 SQL 查询,辅以解释、思维链推理和数据库结构上下文信息。
📚 知识库清洗流水线:从表格、PDF 和 Word 文档等非结构化数据源中提取并整理知识,将其转化为可用于下游 RAG 或 QA 配对生成的可用条目。
🤖 Agent式RAG流水线:从已有问答或知识库中挖掘需要外部知识才能作答的问答对,用于训练 Agentic RAG 模型。
在此框架下,算子被分为基础算子、通用算子、特定领域算子和评估算子等,支持数据处理和评估功能。详情请参考 文档。
DataFlow 支持 Python >= 3.10 环境,已在 Windows、Linux 和 MacOS 上的 Python 3.10, 3.11, 3.12 版本通过测试。
请使用以下命令进行环境配置与安装👇
我们推荐使用 uv 安装 DataFlow 以加速下载。
pip install uv
uv pip install open-dataflow
如果您想使用自己的 GPU 进行本地推理,请使用:
pip install uv
uv pip install open-dataflow[vllm]
安装完成后,可以使用以下命令检查 DataFlow 是否安装正确:
dataflow -v
如果安装成功,您将看到:
open-dataflow codebase version: 1.0.0
Checking for updates...
Local version: 1.0.0
PyPI newest version: 1.0.0
You are using the latest version: 1.0.0.
我们也提供了 Dockerfile 以便部署,并提供 预构建的 Docker 镜像 以便立即使用。
您可以直接拉取并使用我们的预构建 Docker 镜像:
# 拉取预构建镜像
docker pull molyheci/dataflow:cu124
# 运行带有 GPU 支持的容器
docker run --gpus all -it molyheci/dataflow:cu124
# 在容器内验证安装
dataflow -v
或者,您可以根据提供的 Dockerfile 构建 Docker 镜像:
# 克隆仓库 (HTTPS)
git clone https://github.com/OpenDCAI/DataFlow.git
# 或使用 SSH
# git clone git@github.com:OpenDCAI/DataFlow.git
cd DataFlow
# 构建 Docker 镜像
docker build -t dataflow:custom .
# 运行容器
docker run --gpus all -it dataflow:custom
# 在容器内验证安装
dataflow -v
注意: Docker 镜像包含 CUDA 12.4.1 支持,并预装了 vLLM 以实现 GPU 加速。请确保您已安装 NVIDIA Container Toolkit 以使用 GPU 功能。
您可以直接在 Google Colab 上开始您的第一个 DataFlow 翻译项目。 按照提供的指南,您可以无缝地从简单的翻译示例扩展到更复杂的 DataFlow 流水线。
有关详细的使用说明和入门指南,请访问我们的 DataFlow 文档。
DataFlow 提供了一个基于 Web 的 UI (WebUI),用于可视化流水线的构建与执行。
安装 DataFlow 主仓库后,只需运行以下命令即可启动 DataFlow-WebUI:
dataflow webui
这将自动下载并启动最新的 DataFlow-WebUI 并在浏览器中打开(如果未自动打开,请访问 http://localhost:8000/)。
DataFlow-Instruct-10K 是一个由 DataFlow 框架生成的统一多领域指令数据集。它通过跨越数学推理、代码和通用文本指令的多个自动化数据准备流水线构建。每个流水线遵循“生成-评估-过滤-精炼”工作流,以合成和策划高质量的“指令-响应”对。最终的数据集包含约 10K 个样本,为指令微调提供高质量监督,使基座模型能够以更少的训练样本达到全量训练指令模型的性能水平。
有关详细的实验设置,请访问我们的 DataFlow 技术报告。
| 模型 | 数学平均 (Math-Avg) | 代码平均 (Code-Avg) | 知识平均 (Knowledge-Avg) |
|---|---|---|---|
| Qwen2-7B 系列 | |||
| Base | 20.1 | 66.3 | 76.2 |
| + Infinity-Instruct-10K | 29.0 | 67.8 | 76.2 |
| + Infinity-Instruct-1M | 27.9 | 68.2 | 76.2 |
| + DataFlow-Instruct-10K | 32.4 | 66.2 | 76.1 |
| Qwen2.5-7B 系列 | |||
| Base | 37.1 | 76.5 | 76.0 |
| + Infinity-Instruct-10K | 22.6 | 77.6 | 75.8 |
| + Infinity-Instruct-1M | 33.3 | 78.0 | 75.8 |
| + DataFlow-Instruct-10K | 46.7 | 78.6 | 76.2 |
从 SlimPajama-627B 语料库中,我们提取了一个 100B-token 子集,并应用了多个 DataFlow 文本预训练过滤器。我们使用 Megatron-DeepSpeed 框架从头开始训练了一个 Qwen2.5-0.5B 模型,训练量为 30B tokens,结果如下:
| 方法 | ARC-C | ARC-E | MMLU | HellaSwag | WinoGrande | Gaokao-MathQA | 平均 |
|---|---|---|---|---|---|---|---|
| Random-30B | 25.26 | 43.94 | 27.03 | 37.02 | 50.99 | 27.35 | 35.26 |
| Qurating-30B | 25.00 | 43.14 | 27.50 | 37.03 | 50.67 | 26.78 | 35.02 |
| FineWeb-Edu-30B | 26.45 | 45.41 | 27.41 | 38.06 | 50.43 | 25.64 | 35.57 |
| DataFlow-30B | 25.51 | 45.58 | 27.42 | 37.58 | 50.67 | 27.35 | 35.69 |
为了研究小规模 SFT 数据质量,我们使用 LLaMA-Factory 在 WizardLM 和 Alpaca 数据集上对
$ claude mcp add DataFlow \
-- python -m otcore.mcp_server <graph>