← 返回博客

个人博客

03 数据集版本管理与数据治理:把数据集像代码一样管起来

这是「高质量数据集」专题的第三篇。

上一篇我们横向对比了五款开源标注工具——Label Studio、CVAT、Argilla、doccano、Prodigy,帮你把"原油"炼成"汽油"的工序选对了兵器。但工具只是起点。数据集一旦开始建,真正的麻烦才刚来:版本乱了回不去、质量烂了查不出、多人改了分不清、换个人接手看不懂。这跟写代码早期"没有 Git"的状态一模一样——而今天没人会裸写代码不版本管理,数据集也该如此。

这篇我们就把"数据集怎么管、怎么不烂尾"这件事讲透,介绍五款各有所长的工具:DVC、DataHub、LakeFS、Cleanlab、Great Expectations。它们不是互相替代,而是分别补上"版本、目录、血缘、清洗、质检"五块不同的短板。

一、先建立一把"评测尺"

工具没有绝对好坏,只有"补不补得上你的短板"。在逐个看之前,先摆四把尺——后面每款都按这个框架过:

  • 版本与可回溯:能不能像 Git 一样记录"数据集在某个时间点的样子",改坏了能一键回到上个版本?这是防烂尾的底线。
  • 血缘与溯源:一份数据从哪来、经过哪些加工、被谁改过,能不能一条线追到底?这直接对应政策里"来源合法、过程可溯源"的合规要求。
  • 质量门禁:能不能写一组自动检查(字段类型对不对、有没有空值、分布漂没漂移),在"入库前"就把脏数据挡住?呼应上一篇的"AI-Ready 四项标准"。
  • 治理与发现:成千上万份数据集 / 字段,团队怎么搜、怎么看懂、怎么管权限?这是"管得住"的那根支柱。

四把尺一摆,五款工具的分工就清楚了:DVC 和 LakeFS 主攻"版本",DataHub 主攻"治理与血缘",Cleanlab 和 Great Expectations 主攻"质量"。

二、五款工具逐一点评

1. DVC —— 给数据装上 Git(Apache 2.0)

定位:DVC(Data Version Control)由 Iterative 公司开源,思路非常直白:用 Git 管代码和元数据,用外部存储管真正的大文件。它在 Git 仓库里只放一个轻量的 .dvc 指针文件(记录文件名、大小、内容哈希),真正的图片、模型、CSV 存在 S3、GCS、Azure、NAS 或本地缓存里。

解决什么痛点:你改了一版标注,push 之后同事 dvc pull 就能拿到完全一致的版本;训练脚本、数据版本、模型输出三者靠 dvc.yaml 串成一条可复现的 pipeline。它本质上是把"机器学习工程"当软件工程来管。

坑点:

  • 存储后端要自己配(remote 指向哪、凭证怎么给),新手第一次接 S3 容易卡在权限;
  • 它管的是"文件版本",不是"数据库里的行级变更"——如果你要的是数据湖里对象的 Git 式分支,那是 LakeFS 的活;
  • 团队大了之后,.dvc 文件散落、缓存空间膨胀,需要约定好清理策略。

适合谁:已经用 Git 的团队,想把"数据 + 模型 + 代码"做成一条可复现链路。它是"版本管理"这条路线上最通用的那一个。

2. DataHub —— 数据的"通讯录 + 家谱"(Apache 2.0)

定位:DataHub 由 Acryl Data 维护(最早源自 LinkedIn 的 WhereHows),是一个元数据治理与数据目录平台。它的核心不是"存数据",而是"描述和连接数据"——把表、字段、数据集、流水线、负责人、业务术语统统登记进一个统一的元数据图。

解决什么痛点:当你有几百份数据集,没人说得清"哪份数据在哪、谁负责、字段什么意思、被哪些任务依赖"时,DataHub 提供搜索、血缘可视化(这张表被哪条 pipeline 消费、改动会影响谁)、schema 变更追踪。它对应政策里"管理服务 / 管得住"那根支柱。

坑点:

  • 它是一个偏平台的系统,部署依赖 Kafka、数据库、索引服务,初次搭建不轻;
  • 价值取决于"元数据填得全不全"——录得敷衍,搜出来也是一堆废条目;
  • 它和"版本 / 质检"是不同维度,不能拿它当 DVC 或 Great Expectations 的替代品。

适合谁:中大型团队,数据资产多到"找都找不着、改都不敢改"的阶段。它是"治理与发现"的默认答案。

3. LakeFS —— 给数据湖装上 Git 分支(Apache 2.0)

定位:LakeFS 的思路最"极客":它让对象存储(S3 兼容)拥有 Git 一样的 branch / commit / merge / revert。你在数据湖上开个分支做实验,随便改,搞砸了 lakefs revert 一键回滚,不影响主干;验证没问题再 merge 进主分支。

解决什么痛点:传统数据湖"改了就是改了",没有中间态、没有隔离。LakeFS 把"先开分支再改、改完再合并"的软件工程纪律,原样搬到了 PB 级对象存储上,而且零拷贝(靠元数据指针,不真的复制数据),成本极低。

坑点:

  • 前提是你的存储得是 S3 兼容的对象存储,否则用不了;
  • 它管的是"对象存储层"的版本与隔离,不做元数据目录(那是 DataHub 的事),也不做内容质检(那是 GX 的事);
  • 概念虽简单,但和既有数据管道集成、权限模型对接需要规划。

适合谁:已经在用对象存储 / 数据湖,想要"实验隔离 + 可回滚"的团队。它是"数据湖版 Git"。

4. Cleanlab —— 自动揪出"脏标签"的质检员(开源)

定位:Cleanlab 是一个 Python 库,专攻数据质量自动检测,最出名的能力是"用置信学习(confident learning)找出标注错误的样本"——也就是在不人工复查全部数据的前提下,给你排出"最可能标错"的那一批。

解决什么痛点:标注再认真也难免出错,而错标签会悄悄拖垮模型。Cleanlab 直接告诉你"这 200 张图里大概有 30 张标错了,优先看这些",把有限的人力用在刀刃上。它还覆盖离群点检测、重复样本、文本 / 图像的各种质量问题。

坑点:

  • 它聚焦"检测与排序",不负责"版本管理"和"目录治理",是工具链里的一颗螺丝;
  • 检测质量依赖你喂的模型 / 特征够不够好,"垃圾进垃圾出";
  • 对超大规模数据要做采样或分批,否则内存吃紧。

适合谁:已经有一批标注数据、怀疑里面有错、但没人力全量复查的团队。它是"标签质量"的守门员。

5. Great Expectations —— 给数据写"单元测试"(开源,核心 Apache 2.0)

定位:Great Expectations(社区常称 GX)把"数据质量"变成一组可执行的断言(Expectation):这一列不应该有空值、这个字段的取值必须在某个枚举里、这张表行数不能比昨天少 20%……写好之后,每次新数据进来跑一遍,自动生成一份"数据文档"报告哪里过关、哪里翻车。

解决什么痛点:它把"质量门禁"自动化——对应政策"AI-Ready 四项标准"里的结构完整性、内容干净性。把 Expectation 接进 pipeline,脏数据在"入库训练前"就被挡下,而不是等模型训崩了才回头查。

坑点:

  • 期望规则要靠人先定义、随业务演进持续维护,前期投入不小;
  • 核心开源,但云版 / 调度等高级能力在向商业产品倾斜;
  • 它验证"数据长什么样",不做"数据从哪来、被谁改"的治理。

适合谁:想把"数据质量"变成 CI 里一道自动卡口的工程团队。它是"质量门禁"的事实标准。

三、一张清单看懂五款差异

  • DVC:许可证——Apache 2.0;主攻——数据 / 模型版本与可复现 pipeline;最强项——和 Git 无缝衔接、轻量指针;最该警惕的坑——只管文件版本、存储后端要自配
  • DataHub:许可证——Apache 2.0;主攻——元数据目录与血缘治理;最强项——搜索 + 血缘可视化 + 权限;最该警惕的坑——平台重、价值取决于元数据填充质量
  • LakeFS:许可证——Apache 2.0;主攻——对象存储的 Git 式分支 / 回滚;最强项——零拷贝分支、PB 级可回滚;最该警惕的坑——需 S3 兼容、只管存储层
  • Cleanlab:许可证——开源;主攻——标签错误与脏数据自动检测;最强项——用模型挑出最该复查的样本;最该警惕的坑——只做检测、依赖喂入的模型质量
  • Great Expectations:许可证——开源(核心 Apache 2.0);主攻——数据质量断言与门禁;最强项——把质量变成自动测试、出文档;最该警惕的坑——规则需人维护、商业能力分化

一句话总结分工:DVC / LakeFS 管"版本与隔离",DataHub 管"目录与血缘",Cleanlab / GX 管"质量"。 它们不打架,常常是被一起用进同一条数据平台里。

四、怎么选:一张决策树

flowchart TD Q0["你最痛的点是什么?"] --> Q1["数据/模型版本回不去?"] Q1 -->|是| Q2["存的是对象存储/S3?"] Q2 -->|是| LakeFS["LakeFS 对象存储的 Git 分支"] Q2 -->|否| DVC["DVC 文件级版本 + pipeline"] Q1 -->|否| Q3["找不到/看不懂数据资产?"] Q3 -->|是| DataHub["DataHub 元数据目录与血缘"] Q3 -->|否| Q4["担心数据脏/标错?"] Q4 -->|标错为主| Cleanlab["Cleanlab 标签错误检测"] Q4 -->|结构/规则为主| GX["Great Expectations 质量门禁"]

再看一眼它们怎么拼成一条"管得住"的数据链路——这正是政策"管理服务行动"的技术落点:

flowchart LR S["原始数据"] --> V["DVC / LakeFS 版本锁定"] V --> C["Cleanlab / GX 质量门禁"] C --> H["DataHub 登记目录与血缘"] H --> T["AI-Ready 数据集"]

五、落到你自己的项目

给你四条最实用的落地规则:

  • 个人或小团队刚起步 → 先把 DVC 接上,哪怕只是 git + .dvc 管住训练数据和模型,就已经甩开"裸奔"一大截;
  • 数据已经在对象存储 / 数据湖,要做实验隔离 → 上 LakeFS,分支随便开、搞砸就回滚,零拷贝不怕贵;
  • 团队数据多到找不着、改不敢改 → 上 DataHub,把目录和血缘建起来,搜索和权限才有抓手;
  • 质量总在训练后才爆雷 → Cleanlab 排错标签 + Great Expectations 立规则,把"质量门禁"卡进 pipeline 最前面。

最后提醒一句合规(呼应前两篇的"红线"):无论用哪款工具,版本可追溯、来源可证明、质量可验证这三件事,本身就是政策合规的"技术证据"。工具帮你"管得住",而管得住,才敢谈"流得动、卖得掉"。