在 GitHub 上编辑

如何共享 DVC 缓存

配置 位于其他项目共享位置的项目 缓存,有助于避免文件重复,并可减少不同数据位置之间的数据传输。一些使用场景包括:

  • 多个用户在同一台机器上有同一个项目的副本。
  • 不同的项目使用相同的数据,因此集中其本地存储是合理的。
  • 存在一个通过网络挂载的共享 NAS 存储设备或存储服务器。
  • 你需要在工作机与共享 GPU 服务器(用于训练机器学习模型)之间无缝共享数据。

准备工作

在你的 DVC 项目 外部创建一个目录,作为所有人项目的共享 缓存 位置:

$ mkdir -p /home/shared/dvc-cache

确保该目录具有适当的权限,以便所有同事都能写入,并能读取其他人写入的缓存文件。最直接的方法是将所有用户设为同一组的成员,并让该组拥有共享缓存目录。

迁移现有缓存(可选)

如果你正在设置一个新的 DVC 项目,且本地 缓存目录(默认为 .dvc/cache)尚未使用,则可以跳过此部分。

如果你之前已在 DVC 项目 上工作过,并希望将其现有缓存迁移到共享缓存目录中,只需将内容从旧位置移动到新位置即可:

$ mv .dvc/cache/* /home/shared/dvc-cache

现在,请确保缓存的目录和文件具有适当的权限,以便你的同事可以访问(假设他们的用户属于同一组):

$ sudo find /home/shared/dvc-cache -type d -exec chmod 0775 {} \;
$ sudo find /home/shared/dvc-cache -type f -exec chmod 0444 {} \;
$ sudo chown -R myuser:ourgroup /home/shared/dvc-cache/

配置共享缓存

位于 工作区 外部的 缓存 目录称为外部缓存。使用 dvc cache dir 将其设置为之前创建的目录,并通过 dvc config cache 进行配置:

$ dvc cache dir /home/shared/dvc-cache

$ dvc config cache.shared group
$ dvc config cache.type symlink

上述操作中,我们首先告诉 DVC 为新的缓存文件设置组权限,然后启用符号链接,以避免从外部缓存复制文件到 工作区

更多信息请参见 dvc config cache文件链接类型

请注意,启用软链接/硬链接会导致 DVC 保护被链接的数据,因为就地编辑这些文件会破坏缓存。详见 dvc unprotect

如果你使用 Git,请将项目配置文件(通常是 .dvc/config)的更改提交:

$ git add .dvc/config
$ git commit -m "config external/shared DVC cache"

使用 dvc gc 清理共享缓存时,可能会删除其他项目所需的数据!请参阅关于如何安全地 清理共享缓存 的更多说明。

内容

🐛 发现问题?告诉我们!或者修复它:

在 GitHub 上编辑

有疑问?加入我们的聊天,我们会为您提供帮助:

Discord 聊天