DVC 使用指南:管理外部数据

简介: ⚠️ 这是针对特定情况的高级功能,除非绝对没有其他选择,否则不推荐使用。 在大多数情况下,dvc add 和 dvc import-url 的 to-cache 或 to-remote 策略更方便。

⚠️ 这是针对特定情况的高级功能,除非绝对没有其他选择,否则不推荐使用。 在大多数情况下,dvc adddvc import-urlto-cacheto-remote 策略更方便。

注意:外部输出不会从 远程存储pushpull

在某些情况下,数据如此之大,或者其处理的组织方式使其无法在本地机器磁盘中处理。 例如,对 NAS 上的现有数据进行版本控制、在 HDFS 上处理数据、通过 SSH 运行 Dask ,或任何直接生成大量文件到云端的代码。

外部输出(和 外部依赖 提供了在项目外部跟踪和版本化数据的方法。


外部输出如何工作


DVC 将跟踪外部输出以进行版本控制,检测它们何时发生变化(由 dvc status 报告)。

要将外部位置中的现有文件或目录用作输出,请将其远程 URL 或外部路径提供给 dvc add,或将它们放入 dvc.yaml中的 deps 字段。

对于以下 dvc remote 命令支持的类型/协议,使用相同的格式作为url

  • Amazon S3
  • SSH
  • HDFS
  • 工作空间外的本地文件和目录

避免将用于 dvc pushdvc pull 等命令的 DVC 远程存储 用作外部缓存,因为这可能会导致数据冲突:外部输出的哈希值可能与具有不同内容的本地文件的哈希值发生冲突。

注意:远程存储 是一项不同的功能。


设置外部缓存

DVC 需要将项目的缓存配置在与将要跟踪的数据(外部输出)相同的外部位置。 这样可以避免将文件传输到本地环境,并在外部存储中启用 文件链接

例如,让我们在工作区外部创建一个目录并将其设置为缓存:

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


请参阅 dvc cache dirdvc config cache 了解更多信息。

注意: 在现实生活场景中,目录通常位于远程位置,例如:s3://mybucket/cachessh://user@example.com/cache(请参见下面的示例)。

可以在 DVC 项目的副本之间共享外部缓存。 但不要在这种情况下使用外部输出,因为任何项目中使用 dvc checkout  都会覆盖所有项目的工作数据。

样例


对所有支持的远程存储类型的操作如下:

  1. 使用 dvc config 在与外部数据相同的位置配置一个外部缓存目录(需要先添加一个 dvc remote*)。
  2. 使用 dvc add(需要--external 选项)跟踪外部位置的现有数据。这会生成一个 .dvc 文件,其 outs 字段中有一个外部 URL 或路径。
  3. 使用 dvc run (需要--external 选项)创建一个简单的 Stage ,将本地文件移动到外部位置。 这会在 dvc.yaml 中产生一个外部输出。

注意: 对于某些远程存储身份验证方法,需要额外的配置步骤(有关的详细信息,请参阅 dvc remote modify)。 一旦设置访问权限后,请在第 2 步中使用特殊的 remote:// URL 格式。例如:dvc add --external remote://myxcache/existing-data

Amazon S3 示例

$ dvc remote add s3cache s3://mybucket/cache
$ dvc config cache.s3 s3cache
$ dvc add --external s3://mybucket/existing-data
$ dvc run -d data.txt \
          --external \
          -o s3://mybucket/data.txt \
          aws s3 cp data.txt s3://mybucket/data.txt
复制代码


SSH 示例

$ dvc remote add sshcache ssh://user@example.com/cache
$ dvc config cache.ssh sshcache
$ dvc add --external ssh://user@example.com/existing-data
$ dvc run -d data.txt \
          --external \
          -o ssh://user@example.com/data.txt \
          scp data.txt user@example.com:/data.txt
复制代码


DVC 需要 SSH 和 SFTP 可访问才能使用远程 SSH 位置。 请检查您是否能够使用 sshsftp (GNU/Linux) 等工具进行双向连接。

注意: 您服务器的 SFTP 根目录可能与其物理根目录 (/) 不同。

HDFS 示例

$ dvc remote add hdfscache hdfs://user@example.com/cache
$ dvc config cache.hdfs hdfscache
$ dvc add --external hdfs://user@example.com/existing-data
$ dvc run -d data.txt \
          --external \
          -o hdfs://user@example.com/data.txt \
          hdfs fs -copyFromLocal \
                  data.txt \
                  hdfs://user@example.com/data.txt
复制代码


注意: 只要您的数据有一个hdfs://... URL,DVC 就可以处理它。 因此,支持像 Hadoop、Hive 和 HBase 等系统!

WebHDFS 示例

$ dvc remote add webhdfscache webhdfs://user@example.com/cache
$ dvc config cache.webhdfs webhdfscache
$ dvc add --external webhdfs://user@example.com/existing-data
$ dvc run -d data.txt \
          --external \
          -o webhdfs://user@example.com/data.txt \
          curl --upload-file data.txt \
              "http://user@example.com:50075/webhdfs/v1/data.txt?op=CREATE"
复制代码


本地文件系统路径示例

默认情况,缓存位于 .dvc/cache 中,因此无需为项目之外的本地路径设置自定义缓存位置。

不同存储设备或安装在同一文件系统上的分区(例如,/mnt/raid/data)上的外部数据除外。 在这种情况下,请在同一驱动器中设置外部缓存以启用 文件链接 并避免复制数据。

$ dvc add --external /home/shared/existing-data
$ dvc run -d data.txt \
          --external \
          -o /home/shared/data.txt \
          cp data.txt /home/shared/data.txt


相关文章
|
6天前
|
存储 API 持续交付
云效产品使用报错问题之使用自定义镜像构建,看不到构建日志要如何解决
本合集将整理呈现用户在使用过程中遇到的报错及其对应的解决办法,包括但不限于账户权限设置错误、项目配置不正确、代码提交冲突、构建任务执行失败、测试环境异常、需求流转阻塞等问题。阿里云云效是一站式企业级研发协同和DevOps平台,为企业提供从需求规划、开发、测试、发布到运维、运营的全流程端到端服务和工具支撑,致力于提升企业的研发效能和创新能力。
|
6天前
Dataphin功能Tips系列(5)-手工表上传及长期维护
有些业务数据是手工excel维护的,这时我们要如何将数据上传至dataphin并进行维护?
|
10月前
|
数据可视化 前端开发 API
漏刻有时数据可视化大屏常见问题(11):调整api地址解除根目录安装权限适应子目录安装
漏刻有时数据可视化大屏常见问题(11):调整api地址解除根目录安装权限适应子目录安装
68 0
|
C# 容器
旧项目集成
旧项目集成
109 0
旧项目集成
|
存储 Linux 网络安全
DVC 使用指南:外部依赖
在某些情况下,数据太大,或者其处理的组织方式使其无法在本地机器磁盘中处理,最好避免将其从当前的外部位置移动。 例如,NAS 上的数据、在 HDFS 上处理数据、通过 SSH 运行 Dask,或者用于从 S3 流式传输数据以对其进行处理的脚本。
|
存储
学习笔记jira项目22usecontent存储全局信息
学习笔记jira项目22usecontent存储全局信息
58 0
学习笔记jira项目22usecontent存储全局信息
|
存储 缓存 文件存储
DVC 使用指南:如何共享 DVC 缓存?
具体场景如下: 多个用户在一台机器上拥有同一个项目的副本。 不同的项目使用相同的数据,因此集中在本地存储是有意义的。 有一个共享的 NAS 驱动或存储服务器安装在网络上。 您需要在工作的机器和共享的 GPU 服务器之间无缝共享数据(用于训练 ML 模型)
|
存储 机器学习/深度学习 数据可视化
DVC 使用指南:与相关技术进行比较
DVC 将许多现有的想法结合到一个工具中,目标是将软件工程的最佳实践带入数据科学领域。
|
存储 机器学习/深度学习 API
快速入门DVC(四):下载数据与模型文件
你可能会有如下的问题: 我们如何在项目之外使用这些制品? 我们如何下载模型来部署它? 我们如何下载特定版本的模型? 我们如何在不同的项目中重用数据集?
|
存储 机器学习/深度学习 缓存
DVC 使用案例(一):数据与模型版本管理
数据科学团队常常面临着数据和机器学习模型进行版本化的数据管理问题。我们应该如何一起跟踪数据、源代码和ML模型中的变化?组织和存储这些文件和目录变更的最佳方式是什么?