为什么Git对于数据科学来说还不够
博士TL;Git几乎在每个软件开发项目中都被用于跟踪代码和文件的更改。基于这种跟踪每一个变化的能力,数据科学项目对Gits的采用也有了巨大的增加。在这篇文章中,我们讨论;
- Git对数据科学的好处
- Git的缺陷和限制
- 在数据科学项目中使用Git的最佳实践
如果您熟悉Git,请跳转到“为什么学习Git对于数据科学很重要”一节。
Git是什么?它是如何工作的?
“Git是一个免费的开源分布式版本控制系统,设计用于快速高效地处理从小到大的所有项目。”- - -Git
正如描述所述,Git是一个版本控制系统。它有助于记录、跟踪和保存对源代码所做的任何更改,并快速轻松地恢复任何以前的状态。
Git使用分布式版本控制模型。这意味着可以有许多存储库的副本(或者在GitHub世界中的分支/远程)。在本地工作时,Git是用于跟踪存储库更改的程序。
GitHub.com是Internet上的一个位置,它充当存储库的远程位置。GitHub为你的工作提供了一个备份,如果你的本地副本丢失了(例如,如果你的电脑从码头上掉了下来),它可以被恢复。GitHub还允许你在一个项目上与他人分享你的工作和协作。
与GitHub类似的工具有GitLab,Bitbucket都.
Git和Github, GitLab或Bitbucket如何帮助你更好地工作
Git可以通过几种实际的方式帮助开发项目。
- 使用git在本地跟踪代码的更改。
- 同步不同版本之间的代码(即你自己的版本或其他人的版本)。
- 测试对代码的更改,而不丢失原始代码。
- 如果需要,恢复到较老版本的代码。
- 在云端备份你的文件(GitHub/GitLab/Bitbucket)。
- 在GitHub/GitLab/Bitbucket上分享你的文件,并与他人协作。
到目前为止,我们已经清楚了为什么Git是一个强大的工具,它可以帮助您记录、跟踪和存储对项目中几乎所有文件所做的任何更改。我们理解了Git如何帮助团队更好地工作,这也是Git在软件开发项目中被广泛使用的主要原因之一。
这些好处也与数据科学项目相关,可以管理支持其工作的代码,但不能1:1转换。
对于数据科学来说,学习Git很重要吗?
如果你想加入一个数据科学项目作为合作者,你将不得不面对一些挑战,例如;
- 回顾所有正在进行的研究和存储在一个特定的主题,并选择最有前途的一个。(如果你正在做一个开源项目)雷竞技技官网下载
- 您需要了解该项目的当前状态,以及它是如何随着时间的推移而发展的。
- 确定哪些方向是有前途的,仍然值得探索的。在这个步骤中,回顾尝试过和放弃过的想法和方法也很重要,因为您不想重复别人尝试过但没有成功的工作。通常情况下,这些失败的方法没有被记录和遗忘,这是一个巨大的挑战。
- 你需要收集可能分布在多个平台上的项目的所有部分(数据、代码等),有时不能完全访问。
- 最后但并非最不重要的是,一旦你做出了一些改进或探索了一个新的方向,就没有简单的方法来将你的结果回馈到项目中。最佳电子竞技即时竞猜平台。
总而言之,现在的工具无法很好地处理许多挑战。
现在,让我们看看Git如何帮助我们填补一些缺失的部分。
Git能够跟踪我们对文件所做的每一个更改,我们可以显示所有的方向、何时进行的更改以及由谁进行的更改!我们可以将整个Git历史看作一个真实的故事,了解每一步(提交)都做了什么,并拥有一些文档(提交消息)。您还可以使用前面提到的平台与其他合作者共享它。
通过使用更传统的软件开发工作流,您开始将您的模型更像一个应用程序而不是一个脚本,这使它更容易管理,并导致更高质量的结果。
不过,Git也有局限性
尽管使用Git这样的版本控制工具有很大的好处,但它们也带来了很高的开销。
这种开销来自于需要确保每个更改都经过“提交”过程,这通常意味着使用命令行和终端。由于大多数分析师(甚至数据科学家)都不熟悉终端,所以您不仅需要学习Git,还需要学习终端!这不是很快的,而且在努力记住要写入什么命令的同时,您的效率会受到极大的影响。如果这是你的情况,你可以看看这篇博客文章有效的Linux和Bash的数据科学家
另外,Git不能单独完成所有的繁重工作。这是什么意思呢?
- Git不支持实验跟踪。下面是一篇比较现有工具的文章。适合您的数据科学工作流程的ML实验跟踪工具
- Git不能跟踪大文件(数据集和模型)。你可以在这篇文章中找到更多关于这方面的信息比较数据版本控制工具
使用Git构建数据科学项目的最佳实践。

综上所述,我提出了一个将Git思维模式整合到DS项目中的解决方案。它由几个组件组成:实验跟踪、版本控制和使用数据作为源代码。
实验跟踪
您可以通过两种方法实现实验跟踪,一种是使用专用工具,一种是使用Git。你也可以在上面找到更多相关信息适合您的数据科学工作流程的ML实验跟踪工具
外部跟踪
你必须把所有的实验信息记录在一个外部系统上。
这种方法有一些优点:
- 已经开发了许多优秀的工具
- 这是一种直观的方法。在git项目上创建一个新的提交之前,不需要停下来
但是,优点也有缺点:
- 代码和实验结果之间没有明显的联系
- 很难回顾
- 再现性。要重现导致实验结果的原因并不容易
版本控制与Git跟踪
你认为每个实验都是git提交的,这意味着项目的任何更改都将创建一个新版本,因为代码、数据和参数都是源代码的一部分
一些优势是:
- 复制是很容易的,只做一个git签出,你有代码,参数,数据,模型。
- 你得到了所有与实验相关的背景
- 协作。正如本文中所提到的,Git与其他一些平台相结合使您能够并行工作
- 如果与数据版本控制工具结合使用,还可以接受数据贡献
- GitOps, CI/CD -使它更容易与现有的git生态系统集成CI/CD, PRs
它也有一些缺点:
- 当有很多实验意味着有很多承诺时可能会很混乱吗
- 改变心态,开始把任何新的方向当作一种承诺
当然,您可以将这两种想法混合使用。
数据作为源代码
正如我之前提到的,Git被开发用来跟踪文本文件中的更改,而不是大型二进制文件。所以跟踪项目数据集是不可取的。这就是为什么我推荐使用两个选项:
- 对于不变的数据集,您可以将其上传到服务器并通过URL访问它
- 如果您的数据集可能发生变化,您应该考虑使用一个工具对其进行版本控制。你可以在这里找到一个很好的对比比较数据版本控制工具.
您还可以在这篇博客文章中找到更多关于为什么对数据集进行版本管理是个好主意的信息数据集的行为应该像Git存储库
结论
为Git实现这些建议的实践有以下几个好处:
- 将所有项目文件、数据和模型合并到一个地方
- 评审工具可以使对正在进行的项目做出贡献变得更容易,并更容易检查这些贡献。
- 更容易再现和重用以前项目中的工作
- CI/CD,如果您对所做的贡献感到满意,那么您可以有一种自动的方式来合并它们,获取代码和数据,测试它们,并将它们交付生产。
Git在越来越多的数据科学项目中得到了应用。我希望通过阅读本文,您能够更好地理解它的局限性和优点,以及如何与您的同事一起使用它。好运!