gpt4 book ai didi

git - git-lfs 和 dvc 之间的区别

转载 作者:行者123 更新时间:2023-12-02 18:41:19 24 4
gpt4 key购买 nike

这两者有什么区别?我们在上一份工作中使用了 git-lfs,并且在当前的工作中开始将 dvc 与 git 一起使用。它们都放置某种索引而不是文件,并且可以按需下载。 dvc 比前一个有一些改进吗?

最佳答案

DVC 并不比 git-lfs 更好:它们完全不同。所选答案很大程度上有偏见。两者只是不同的工具,用于不同的目的。

  • git-lfs 的目的是对 git 透明,因此它需要一个定制的服务器。它的学习过程短而快。一些配置命令,然后砰!它正在运行,独立于 git 存储库存储大文件。这是它唯一的功能,而且效果很好。拥有额外的服务器并不是一个缺点,而是对这种透明度的要求。配置完成后,文件将由 git 通过 git hooks(在 git 操作后激活的端点)进行处理。
  • dvc 旨在为最终用户提供大文件的独立管理。 dvc 的基本作用是这样的:它只是让 git 忽略您想要控制的文件(将它们添加到 .gitignore 中),而是生成一个具有相同名称和扩展名的附加文件 .dvc。因此,为了推送带有相应文件的提交,用户需要手动“添加”(相当于git commit,而不是git add;没有等效的对于 dvc 中的 git 阶段)并“推送”到两个系统。这不是缺点,而是必要的控制水平。作为交换,远程大文件持有者只是任何远程文件系统,可以通过其路径、通过 ssh 或通过多个驱动程序(谷歌驱动器、亚马逊等)直接访问。无论如何,钩子(Hook)也可用于 dvc,这将简化大文件的使用,如果有额外的文件对一个人来说并不烦人,并且将文件保存到远程将需要额外的操作,请记住它们是 .gitignored!因此,如果您修改存储在 dvc 中的文件,git status 不会注意到此类更改,并且您可能会丢失此类更改,除非您使用 dvc 进行额外检查。

DVC 的用途与 git-lfs 不同DVC 不仅用于保存大文件,而且主要用于管理由确定性过程产生的大文件。因此,除了存储大文件之外,dvc 还可以像 Makefile 一样,通过在 Makefile 中定义依赖项来控制处理管道,并且如果处理输入(也是当 dvc 跟踪的文件或参数发生变化时,dvc 会计算哪些文件必须重新生成(是的,如 Makefile)。这就是为什么 DVC 通常被描述为数据科学的 makefile 工具。如果您要大量生成大型人工智能模型或繁重的数据文件,那就太酷了。与编译大型应用程序完全相同:每个局部更改都意味着只编译整体的一小部分。

就我个人而言,我将两者都用于大文件存储。 git-lfs 简化了大文件的管理(典型案例:构建一个 AI docker 容器,里面有一个大的模型文件,同时有一个小的 git repo,几乎不需要任何 git 知识,而 dvc 需要一些),但是 dvc 简化了大文件存储(这简化了管理,例如,我可以轻松地在 DVC 存储库中找到并删除我不想要的文件,而我不能/它对 git-lfs 来说很复杂),但代价是没有这样的透明度,有时会丢失数据。我仍然不使用 dvc 进行管道计算,直到现在我更喜欢自己的实现。 DVC越来越好了,也许以后我会更多地使用它。两者只是不同;我目前根据目的使用两者。

关于git - git-lfs 和 dvc 之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58541260/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com