简述
DVC的开发者为iterative.ai,成立于2017年。它是一款开源的,针对机器学习项目的版本控制系统,同时也提供企业服务。起初,DVC从数据版本化管理概念切入,之后,提供对机器学习全方位的支持。
从上图,我们可以看到 DVC 通过跟踪机器学习模型和数据集,目的是使机器学习模型可共享和可重现。它能够处理大型文件、数据集、机器学习模型、指标以及代码。
DVC三大核心价值
对机器学习项目进行版本控制
DVC 对机器学习的模型、数据集和中间文件进行版本控制。通过代码来组装它们,并使用 Amazon S3
、Microsoft Azure Blob Storage
、Google Drive
、Google Cloud Storage
、Aliyun OSS
、SSH/SFTP
、HDFS
、HTTP
、网络连接存储(NAS)
或磁盘
来存储这些文件内容。
完整的代码和数据来源有助于跟踪每个机器学习模型的完整演进。这保证了模型的可重复性,并且可以轻松地在实验之间来回切换。
对机器学习实验进行管理
利用 Git 的分支来尝试不同的想法,而不是在代码中草率的使用文件后缀和注释。 使用自动度量跟踪的方式来找到正确的方法,而不是使用纸张和铅笔。
DVC的设计目的是使分支保持与Git一样,简单和快速---无论数据文件的大小如何。指标随同ML流水线一起作为一等公民,这意味着项目具有更清晰的结构。比较想法和选择最好的想法很容易。通过缓存中间制品,使迭代变得更快。
对模型部署与团队协作提供支撑
DVC使用push/pull命令将连续的将一批ML模型、数据和代码移动到生产环境、远程机器或同事的计算机中,而不是临时脚本。
DVC在Git中引入了轻量级流水线作为一级公民,它们与语言无关,并将多个步骤连接成DAG。 这些流水线用于消除将代码投入生产环境而产生分歧。
DVC九个主要特性
DVC能够为您现有的数据科学工作流程带来敏捷性、可重复性和协作性。
兼容 Git
DVC 可以在任何 Git 存储库之上运行,并与任何标准的 Git 服务器或提供者(GitHub、GitLab 等)兼容。 数据文件内容可以通过网络访问存储或者任何支持的云解决方案进行共享。 DVC 提供了分布式版本控制系统的所有优点——无锁、本地分支和版本控制。
对存储没有限制
可以使用 Amazon S3
、Microsoft Azure Blob Storage
、Google Drive、Google Cloud Storage
、Aliyun OSS
、SSH/SFTP
、HDFS
、HTTP
、网络连接存储(NAS)
或磁盘
存储数据。同时,支持的远程存储列表还在不断的增加。
可复现实验
一个dvc repro
命令即可端到端地再现实验。 DVC 通过始终如一地维护输入数据、配置和最初用于运行实验的代码的组合来保证可重复性。
低冲突分支
DVC 操作 Git 分支是瞬时的,即使是操作大文件。分支出色地反映了一个机器学习过程的非线性结构和高度迭代的特性。
同时,数据不会重复,一个文件版本可以属于几十个实验。 支持创建任意数量的实验,并且即时来回切换,并保存所有实验的历史记录。
指标跟踪
指标是 DVC 中的一等公民。 DVC 有一个命令,用于列出所有分支以及指标值,以跟踪取得的进展或选择最佳版本。
机器学习流水线框架
DVC 通过内置方法的将 ML 步骤(step)连接成 DAG, 并端到端的运行完整的流水线。 DVC 能够处理缓存中间结果,如果一个步骤输入数据或代码相同,则不会再次运行这个步骤。
与语言和框架无关
无论使用哪种编程语言或库,或者代码的结构如何,可再现性和流水线都基于输入和输出文件或目录。 对于Python、R、Julia、Scala Spark、自定义二进制文件、Notebooks、flatfiles/TensorFlow、PyTorch 等都能够支持。
支持HDFS、Hive 和 Apache Spark
在 DVC 数据版本控制周期中,可以包含 Spark 和 Hive 作业以及本地 ML 建模步骤,或通过 DVC 端到端管理 Spark 和 Hive 作业。 通过将繁重的集群作业分解为更小的 DVC 流水线步骤,大幅减少反馈循环。针对依赖项,可以独立地迭代这些步骤。
故障跟踪
与成功的想法相比,糟糕的想法有时会在同事之间激发更多的想法。保留失败尝试的知识可以在未来节省时间。 DVC 旨在以可重现且易于访问的方式跟踪所有内容。
使用案例
保存并复现您的实验
DVC可以随时获取有关您或您的同事运行的任何实验的完整上下文。DVC 保证所有文件和指标都将保持一致,并在正确的位置重现实验或将其用作新迭代的基线。
对模型和数据进行版本控制
DVC 将元文件保存在 Git,而不是在 Google Docs 中,以描述和版本控制您的数据集和模型。 同时,DVC 支持多种外部存储类型作为你的大文件的远程缓存。
建立部署和协作的工作流程
DVC 定义了在一个团队内有效的和一致地工作的规则和流程。它可以用于协作、共享结果以及在生产环境中获取和运行已完成的模型。