DVC 使用指南:如何共享 DVC 缓存?

简介: 具体场景如下:多个用户在一台机器上拥有同一个项目的副本。不同的项目使用相同的数据,因此集中在本地存储是有意义的。有一个共享的 NAS 驱动或存储服务器安装在网络上。您需要在工作的机器和共享的 GPU 服务器之间无缝共享数据(用于训练 ML 模型)

在其他项目可以共享的位置配置项目的缓存,有助于避免文件重复,并可以减少不同数据位置之间的数据传输。

具体场景如下:

  • 多个用户在一台机器上拥有同一个项目的副本。
  • 不同的项目使用相同的数据,因此集中在本地存储是有意义的。
  • 有一个共享的 NAS 驱动或存储服务器安装在网络上。
  • 您需要在工作的机器和共享的 GPU 服务器之间无缝共享数据(用于训练 ML 模型)。

准备工作

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

$ mkdir -p /home/shared/dvc-cache
复制代码


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


传输现有的缓存(可选)

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

如果您之前处理过 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 {} ;
# 更改DVC缓存目录的用户名和用户组
$ 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 config命令,首先,告诉 DVC 为新的缓存文件设置组权限,用户组下的用户都可以共享 DVC 缓存。然后,我们启用符号链接(symlinks)以避免将副本从外部缓存复制到工作空间。

注意: 启用软/硬链接会导致 DVC 保护链接数据(跟踪数据文件成为只读链接),因为就地编辑它们会损坏缓存数据。详情请查看dvc unprotect。运行 dvc unprotect 保证工作空间中的目标文件或目录在物理上与缓存文件“取消链接”,并且可以安全地更新。

提交缓存配置

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

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


相关文章
|
5月前
|
存储 jenkins 持续交付
git文件过大导致构建失败的解决方案(快速提升jenkins构建速度)
git文件过大导致构建失败的解决方案(快速提升jenkins构建速度)
67 0
|
11月前
|
存储
【版本控制】GitHub图床服务Action---自动监视图床仓库的目录下的文件数
【版本控制】GitHub图床服务Action---自动监视图床仓库的目录下的文件数
84 0
|
Linux 测试技术 数据库
Python 一键上传下载&一键提交文件到SVN入基线工具
Python 一键上传下载&一键提交文件到SVN入基线工具
153 0
|
存储 机器学习/深度学习 缓存
DVC 使用案例(四):快速且安全的数据缓存仓库
数据科学中使用的数据集往往超过平常的存储和网络容量。 随着越来越多的人获取相同的数据,存储需求迅速扩大,从而产生重复数据(增加成本)。 并且在每个环境中都等待下载,浪费了大量宝贵的时间。
|
存储 SQL 缓存
DVC 使用指南:管理外部数据
⚠️ 这是针对特定情况的高级功能,除非绝对没有其他选择,否则不推荐使用。 在大多数情况下,dvc add 和 dvc import-url 的 to-cache 或 to-remote 策略更方便。
|
存储 机器学习/深度学习 API
快速入门DVC(四):下载数据与模型文件
你可能会有如下的问题: 我们如何在项目之外使用这些制品? 我们如何下载模型来部署它? 我们如何下载特定版本的模型? 我们如何在不同的项目中重用数据集?
|
存储 缓存 网络安全
DVC 使用指南:项目结构中.dvc文件详解
您可以使用 dvc add 来跟踪位于当前工作空间中的数据文件或目录。 此外,dvc import 和 dvc import-url 允许您将数据从外部的位置带到您的项目,并开始在本地跟踪它。 以 .dvc 扩展名结尾的文件由这些命令创建为可以使用 Git 进行版本控制的数据占位符。 它们包含随时跟踪目标数据所需的信息。
|
存储 机器学习/深度学习 数据可视化
DVC 使用指南:与相关技术进行比较
DVC 将许多现有的想法结合到一个工具中,目标是将软件工程的最佳实践带入数据科学领域。
|
存储 Linux 网络安全
DVC 使用指南:外部依赖
在某些情况下,数据太大,或者其处理的组织方式使其无法在本地机器磁盘中处理,最好避免将其从当前的外部位置移动。 例如,NAS 上的数据、在 HDFS 上处理数据、通过 SSH 运行 Dask,或者用于从 S3 流式传输数据以对其进行处理的脚本。
|
存储 缓存 网络安全
DVC 使用案例(二):共享数据与模型文件
与 Git 一样,DVC 允许在分布式环境进行协作。 我们可以轻松地将所有数据文件、目录以及匹配的源代码完全一样地导入任何机器。 您需要做的就是为您的 DVC 项目设置远程存储库,并将数据推送到那里,以便其他人可以访问它。 目前 DVC 支持 Amazon S3、Microsoft Azure Blob Storage、Google Drive、Google Cloud Storage、SSH、HDFS 和其他远程存储地址,并且该列表还在持续增长。 (一个完整的列表和配置说明,请参阅 dvc remote add。)