git-lfs和dvc之间的区别

Jak*_*ský 8 git git-lfs dvc

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

Rod*_*oAP 8

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

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

DVC 与 git-lfs 有不同的用途DVC不仅用于保存大文件,而且主要用于管理由确定性过程产生的大文件。所以,除了存储大文件之外,dvc 也像Makefiles 一样,通过在 a 中定义依赖来控制处理管道,Makefile如果处理输入(也是 dvc 跟踪的文件或参数)发生变化,dvc 会计算必须重新生成哪些文件(是的,就像Makefiles)。这就是为什么 DVC 通常被描述为数据科学的 makefile 工具。如果您要生成大量的大型 AI 模型或繁重的数据文件,那就太酷了。

就个人而言,我将两者都用于大文件存储。git-lfs 简化了大文件管理,但 dvc 简化了大文件存储(这简化了管理),代价是没有这种透明度,有时会丢失数据。我仍然不使用 dvc 进行管道计算,直到现在我更喜欢我自己的实现。DVC 越来越好,也许我以后会更多地使用它。


LuV*_*uVu 6

DVC是的更好替代git-lfs

与git-lfs不同,DVC不需要安装专用服务器。它可以在本地(例如NAS,SSH)或任何主要云提供商(S3,Google Cloud,Azure)上使用。

有关更多信息:https : //dvc.org/doc/use-cases/data-and-model-files-versioning

  • 这种解释似乎是片面的。您提供了一项优势,但知道“git”得到了广泛支持,我在尝试让 DVC 在我最喜欢的 IDE 中工作时会遇到问题吗?我是否需要整个团队安装额外的软件才能使 DVC 正常工作?我的团队/贡献者是否必须学习新的 API 或工作流程?从工具的技术角度来看,这些问题可能看起来很小,但在大型组织中做出决策时,这些问题可能很重要。 (3认同)
  • 是的 实际上,DVC文档中有一节解释了这些差异:https://dvc.org/doc/understanding-dvc/related-technologies#git-lfs-large-file-storage (2认同)