在 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"