像管代码一样管数据集:dv-platform —— 开源“Git for Datasets”
像管代码一样管数据集dv-platform —— 开源“Git for Datasets”一句话介绍dv-platform是一套面向 AI 数据集 / 标注数据 / 大文件资产的“类 Git”版本管理平台包含dvCLI、dv-server服务端与 Web UI。一条pip install即可在本地或内网私有化部署。一个vibe-coding小项目希望能帮到评测伙伴或者数据伙伴。一、为什么要做“Git for Datasets”做 AI 的同学应该都体会过这些痛数据集散落在网盘、移动硬盘、微信群、Final_v2(真的不改了).zip里没有版本概念想回退到上一版标注、想对比两个版本差了什么只能靠肉眼和文件名团队协作时谁改过、什么时候改的、改了哪些文件完全没有记录数据集动辄几十 GB、上百万个文件不适合直接塞进 GitGit 是给代码设计的大文件会撑爆仓库公司内网要求数据不出网云上“数据集管理平台”又不好私有化。dv-platform 就是来解决这些问题的把 Git 的版本管理心智搬到数据集上同时针对大文件、海量小文件做了专门的存储与浏览优化。二、它是谁长什么样组件作用dv客户端 CLIadd / commit / push / pull / clone / checkout / log / tag / diff / rollback / lsdv-server服务端FastAPI元数据 权限 审计 对象存储接入自带 Web UIWeb UIReact AntD 实现的 ModelScope 风格界面数据集卡片、文件浏览、版本历史、标签、分支、差异对比、README 展示技术栈Python / FastAPI / SQLAlchemySQLite 或 PostgreSQLReact / TypeScript存储后端支持本地目录 / MinIO / 阿里 OSS / 腾讯 COS / AWS S3。pipinstalldv-platform# 一条命令同时安装 dv CLI 与 dv-server三、核心设计值得一看的几个点1. 像 Git 一样的命令心智dv login--tokenTOKEN--urlhttp://127.0.0.1:8000 dv create team/my-dataset--visibilitypublic# 建数据集dv init team/my-dataset# 初始化工作区dvadd./images ./labels.json# 暂存文件dv commit-mv1: 初版标注数据# 本地提交dv push# 推送到服务端dv pull# 拉取最新版本会 Git 的人五分钟就能上手 dv。2. 内容寻址 跨版本去重文件以sha256(内容)作为对象名存储相同内容只存一份版本之间只保留“变化的部分”不做全量快照提交不可变删除按引用计数清理避免误删共享文件。3. 控制面 / 数据面分离大文件不经过应用服务服务端只存“版本元数据”清单、提交、权限、审计文件内容通过预签名 URL 直传对象存储大文件上传下载不占应用内存、不拖慢 Web。4. 开箱即用的审计与权限支持用户/Token、数据集级 ACLowner/editor/reader、公开/私有操作留审计日志——内网合规很省心。四、v0.1.8 重点把“海量小文件”的浏览体验做上去很多数据集是几十万个几十 KB 的小文件图片、JSON 标注。旧版 UI 是“全量清单 全量渲染”几千文件就开始卡。v0.1.8 针对十万级文件做了系统性优化数据库层新增规范化tree_entries表每个文件/目录一行 复合索引目录查询从“每次反序列化整棵 JSON 树”变成一次索引查询旧数据自动懒回填、无需迁移接口层新增/versions/{ref}/browse按目录单层分页接口目录在前、文件在后带 total/has_more单文件下载走presign/download?path…精确查询不再为下载一个文件拉全量 URL统计层storage 统计从“逐条 N1 查询”改成聚合 SQL数据集列表/详情页响应稳定在毫秒级前端层文件浏览器改为服务端分页每页 200 行去掉进页面就拉全量 manifest/presign 的坏味道README 图片按需懒加载超大数据集的“浏览器打包 ZIP”加了防卡死提示大文件请走 CLI实测 5000 文件目录翻页5~6 ms/页storage 统计0.02 s。# 升级pipinstall-Udv-platform五、怎么跑起来本地一条龙Windows / Linux / macOSpipinstalldv-platform# 免交互初始化并后台启动自带 Web UI默认 http://localhost:8000dv-server setup--rootD:/dv --non-interactive --admin-passsecret--token-name ci dv-server start --data-dir D:/dv# 登录 - 建数据集 - 提交 - 推送 - 拉取dv login--tokenTOKEN--urlhttp://127.0.0.1:8000 dv create team/my-dataset--visibilitypublic dv init team/my-dataset dvadd./images ./labels.json dv commit-mv1: 初版标注数据dv push dv pull内网 / 云端部署docker-compose 一键起 PostgreSQL MinIO仓库自带docker-compose.ymldv-server PostgreSQL MinIO 三件套数据不出内网。常见运维dv-server status / restart / logs# 服务管理dv-server token create--namemy-cli# 签发 API Tokendv-server configsetDV_STORAGE_ROOTD:/data# 调整对象存储位置改后需 restart六、适用场景单人本地管理个人数据集/标注数据随时回滚、对比团队内网统一数据集版本成员用 CLI 拉取Web 浏览分享AI 训练管线把“数据版本”和“模型版本”绑定可复现大文件资产库照片、视频帧、JSONL 等海量小文件的内容寻址存储。相关链接PyPIhttps://pypi.org/project/dv-platform/GitHubhttps://github.com/auquenton/dv-platform安装pip install dv-platform项目仍在快速迭代中欢迎试用、提 issue / PR。如果它帮你解决了“数据集版本混乱”的问题欢迎转发给同样被数据集折磨的朋友 Tags: 数据集管理 / 版本管理 / AI 数据 / 标注数据 / Git / 开源 / FastAPI / Python / 数据工程