趋近智
有效管理数据是创建可复现的机器学习工作流程的必要条件。像Git这样的标准版本控制系统擅长追踪基于文本的代码文件的变化,但它们难以应对典型机器学习数据集的规模和特性。那么,团队如何管理不断演变的数据集呢?我们来考察一些常见方法,从简单的手动方式到更复杂的方法,并指出它们的优缺点。
也许最基本的方法就是简单地重命名文件或目录来表示不同版本。你可能遇到过类似data_processed_v1、data_processed_v2这样的文件夹,或者features_final.csv、features_final_really_final.csv这样的文件。
虽然简单,但手动版本控制缺乏进行认真机器学习开发和复现所需的严谨性。
云存储提供商(AWS S3、Google Cloud Storage、Azure Blob Storage)通常提供自己的版本控制功能。你可以在存储桶上启用版本控制,提供商将在对象被覆盖或删除时保留其旧版本。
云存储版本控制对备份和灾难恢复有用,但并未直接解决机器学习中代码、数据和实验之间所需紧密关联的问题。
Git LFS是一个旨在更高效处理大文件的Git扩展。Git LFS不是将大型二进制文件直接存储在Git仓库历史中(这会迅速使仓库膨胀),而是将指针(小型文本文件)存储在Git中。实际的大文件存储在单独的LFS服务器上(可以是自托管的,或由GitHub、GitLab、Bitbucket等服务提供)。当你检出一个提交时,Git LFS会根据指针下载所需的大文件。
git add、git commit、git push、git pull)中运行得比较顺畅。Git LFS无疑是比直接在Git中存储大文件更好的方案,但它是一个处理大文件的通用方案,并非针对机器学习中数据版本控制具体需求的定制方案。
认识到上述方法的局限性,出现了专门用于机器学习项目中数据和模型版本控制的专用工具。数据版本控制(DVC),本章的重点,就是一个很好的例子。这些工具通常与Git并行工作,使用Git进行代码版本控制,同时为数据提供专用机制。
dvc add、dvc push、dvc pull)。以下是一个简化对比:
| 特点 | 手动复制 | 云版本控制 | Git LFS | 专用工具 (DVC) |
|---|---|---|---|---|
| Git 集成 | 无 | 差 | 好 | 优秀(并行) |
| 存储 | 本地副本 | 云提供商 | 单独的LFS服务器 | 灵活(云/本地) |
| 复现性 | 很低 | 低 | 中等 | 高 |
| ML流水线感知 | 否 | 否 | 否 | 是 |
| 可扩展性 | 差 | 好 | 中等 | 好 |
| 粒度 | 手动 | 文件级 | 文件级 | 文件/目录/数据集 |
鉴于上述挑战,专用工具提供了在可复现的机器学习环境中管理数据的最全面方案。它们弥补了Git和通用文件存储系统留下的不足。在接下来的部分,我们将了解DVC如何实现这些原则,提供一种实用且有效的方式来对数据和代码进行版本控制。
这部分内容有帮助吗?
© 2026 ApX Machine Learning用心打造