开源数据版本控制指南

580 阅读4分钟

简介

数据就是机器学习中的一切。无论您是在构建模型来推荐产品还是识别猫图片,这都是正确的。管理数据既复杂又耗时。我们的数据集通常非常大,这使得存储和与团队共享它们变得困难。数据也会随着时间的推移而发展,随时都有可能有很多人做出更改,并且每次更改都会对模型性能产生影响。

正如您可能猜到的,数据版本控制就是跟踪数据集的更改。但不仅如此:这些工具的亮点在于使人们能够共享和协作处理数据,就像 Git 等工具支持代码协作一样。

一个好的数据版本控制解决方案提供:

  • 存储数据的中央位置。
  • 数据集更改的历史记录,以便可以在需要时复制任何历史版本。
  • 能够轻松与他人共享数据集并实现协作。
  • 一个直观的工作流程,支持数据科学家的工作。

我需要它吗?

在我们看来,这是每个机器学习项目都需要的东西。鉴于数据的重要性,没有版本控制就是为失败做好准备。如果没有合适的工具,您不仅需要弄清楚如何处理不断变化的数据,还需要弄清楚如何存储这些数据并使团队成员可以使用这些数据,而这些都是数据版本控制工具可以处理的事情。

我不能只使用 Git 吗?

如果您熟悉 Git 或类似的源代码控制工具,您可能想知道为什么需要一个特殊的数据版本控制工具。主要原因是大小:Git 是为小型文本文件设计的,而机器学习中使用的典型数据集太大了。此外,Git 在设计时并未考虑到数据科学工作流程,而专业工具却考虑了。

有什么可供选择的数据版本控制?

在比较数据版本控制工具时,我们需要考虑以下几点:

  • 数据的存储方式和位置。因为我们想要共享数据,所以我们需要将数据存储在一个方便的中心位置,以便每个人都可以访问它。这通常以云存储的形式出现,例如: Amazon S3 或 Google Cloud Bucket。
  • 支持什么样的数据格式。一些工具是通才,支持所有类型的数据,而另一些则专注于一种数据,例如:仅表格数据或仅图像。
  • 可扩展性。如果您使用大数据,那么您可能需要一个专为该规模设计的工具,而如果规模不是问题,那么您有更多工具可供选择。大数据工具会带来不值得付出的复杂性花费,除非您使用的数据集大小超过 TB。

DVC

这个工具实际上简称为Data Version Control(DVC)。 它是一个在 Git 之上运行的轻量级工具,如果您已经在使用 Git 来管理代码,它会特别容易使用。

它适用于任何类型的数据,并且对于存储该数据,DVC 提供了很大的灵活性。 它可以将数据文件存储在云中,并支持 AWS、Google Cloud 和 Azure。

或者,您可以将它与 DagsHub 结合使用,您可以将其视为数据的 Github。 它使人们可以轻松地共享和协作处理数据。 与 Github 一样,DagsHub 将数据集公开为存储库,可以是公共的也可以是私有的。 这样您就可以使用 DVC,而无需自己设置任何基础架构。

优点

  • 易于安装和使用。
  • 直观的 Git 集成
  • 适用于任何数据格式、框架和数据存储。

缺点

  • 不适合大数据。
  • Git 集成并不适合所有用户场景。

Delta Lake

顾名思义,Delta Lake 专为使用数据湖而设计。它将数据版本控制、ACID 事务和schema管理带入您现有的数据湖。因此,它最适合处理大量数据并且已经实施数据湖的情况。

对于数据存储,它适用于 AWS、Google Cloud 和 Azure 云存储,以及 Apache Hadoop 使用的 HDFS。它使用 Apache Spark 来执行所有数据操作,如果你有现有的 Spark 管道,它可以很容易地与它们一起使用。

Delta Lake 是围绕称为 Lakehouse 架构的东西设计的,这是一种开源数据管理架构,旨在实现对大数据的机器学习。

优点

  • Delta Lake 实现的 Lakehouse 架构是著名的大数据管理开放标准。
  • 兼容各种数据湖技术。

缺点

  • Delta Lake 旨在处理大数据。因此,对于不需要这种规模的小型项目来说,完全没有必要。
  • 虽然它可以处理任何类型的数据,但 Delta Lake 使用自己的格式保留该数据,与其他工具不直接兼容。

原文链接:A guide to open source data version control