DVC 使用指南:外部依赖

简介: 在某些情况下,数据太大,或者其处理的组织方式使其无法在本地机器磁盘中处理,最好避免将其从当前的外部位置移动。 例如,NAS 上的数据、在 HDFS 上处理数据、通过 SSH 运行 Dask,或者用于从 S3 流式传输数据以对其进行处理的脚本。

在某些情况下,数据太大,或者其处理的组织方式使其无法在本地机器磁盘中处理,最好避免将其从当前的外部位置移动。 例如,NAS 上的数据、在 HDFS 上处理数据、通过 SSH 运行 Dask,或者用于从 S3 流式传输数据以对其进行处理的脚本。

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


外部依赖如何工作


DVC 将跟踪外部依赖项,检测它们何时发生变化(例如,在 dvc repro 上触发 Stage 执行)。

要将外部位置中的文件或目录定义为 stage 依赖,请在 dvc.yamldeps 字段)。 使用与某些 dvc remote 类型的 url 相同的格式。 目前, dvc remote 命令支持的类型/协议如下:

  • Amazon S3
  • Microsoft Azure Blob Storage
  • Google Cloud Storage
  • SSH
  • HDFS
  • HTTP
  • 工作空间外的本地文件和目录

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

示例

我们定义和运行一个download_file Stage,它只是从外部位置下载文件,在所有受支持的位置类型上。

关于使用远程位置需要手动身份验证设置。更多信息,请参阅远程别名示例

Amazon S3 示例

$ dvc run -n download_file \
          -d s3://mybucket/data.txt \
          -o data.txt \
          aws s3 cp s3://mybucket/data.txt data.txt
复制代码


Microsoft Azure Blob Storage 示例

$ dvc run -n download_file \
          -d azure://mycontainer/data.txt \
          -o data.txt \
          az storage copy \
                     -d data.json \
                     --source-account-name my-account \
                     --source-container mycontainer \
                     --source-blob data.txt
复制代码


Google Cloud Storage 示例

$ dvc run -n download_file \
          -d gs://mybucket/data.txt \
          -o data.txt \
          gsutil cp gs://mybucket/data.txt data.txt
复制代码


SSH 示例

$ dvc run -n download_file \
          -d ssh://user@example.com/path/to/data.txt \
          -o data.txt \
          scp user@example.com:/path/to/data.txt data.txt
复制代码


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

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

HDFS 示例

$ dvc run -n download_file \
          -d hdfs://user@example.com/data.txt \
          -o data.txt \
          hdfs fs -copyToLocal \
                  hdfs://user@example.com/data.txt data.txt
复制代码


HTTP/HTTPS 示例

$ dvc run -n download_file \
          -d https://example.com/data.txt \
          -o data.txt \
          wget https://example.com/data.txt -O data.txt
复制代码


本地文件系统路径 示例

$ dvc run -n download_file \
          -d /home/shared/data.txt \
          -o data.txt \
          cp /home/shared/data.txt data.txt
复制代码


示例:使用 DVC 远程别名

您可能希望将外部位置封装为可独立管理的可配置实体。如果连接需要身份验证,如果多个依赖项(或  Stage )重复使用同一位置,或者如果URL将来可能会更改,这将非常有用。

DVC remotes 可以做到这一点。 您可以使用 dvc remote add 来定义它们,然后使用格式为 remote://{remote_name}/ 的特殊 URL {path}(远程别名)来定义外部依赖。

让我们看一个使用 SSH 的示例。 首先,注册并配置远程存储路径:

$ dvc remote add myssh ssh://user@example.com
$ dvc remote modify --local myssh password 'mypassword'
复制代码


请参阅 dvc remote modify 了解更多详细信息,例如:为不同的远程存储类型设置访问凭据。

现在,在定义 Stage 时使用此远程存储的别名:

$ dvc run -n download_file \
          -d remote://myssh/path/to/data.txt \
          -o data.txt \
          wget https://example.com/data.txt -O data.txt
复制代码


示例:import-url 命令

在前面的示例中,使用了特殊的下载工具:scpaws s3 cp等。dvc import-url 简化所有支持的外部路径或 URL 类型的下载。

$ dvc import-url https://data.dvc.org/get-started/data.xml
Importing 'https://data.dvc.org/get-started/data.xml' -> 'data.xml'
复制代码



上面的命令会创建导入 .dvc 文件 data.xml.dvc,其中包含一个外部依赖项(在本例中为 HTTPS URL)。

生成的 .dvc 文件如下:

# ...
deps:
  - etag: '"f432e270cd634c51296ecd2bc2f5e752-5"'
    path: https://data.dvc.org/get-started/data.xml
outs:
  - md5: a304afb96060aad90176268345e10355
    path: data.xml
    cache: true
    persist: false
复制代码


DVC 检查服务器返回的标头(Header),查找 HTTP ETagContent-MD5 标头,并使用它来确定源是否已更改,同时,我们需要重新下载文件。

示例:import 命令

dvc import 可以从任何 DVC 项目或 Git 存储库下载文件或目录。 它还在其导入 .dvc 文件中创建了一个外部依赖项。

$ dvc import git@github.com:iterative/example-get-started model.pkl
Importing 'model.pkl (git@github.com:iterative/example-get-started)'
-> 'model.pkl'
复制代码


上面的命令创建了 model.pkl.dvc,其中指定了外部依赖项(使用 repo 字段)。

生成的 .dvc 文件如下:

# ...
deps:
  - path: model.pkl
    repo:
      url: git@github.com:iterative/example-get-started
      rev_lock: 6c73875a5f5b522f90b5afa9ab12585f64327ca7
outs:
  - md5: 3863d0e317dee0a55c4e59d2ec0eef33
    path: model.pkl
    cache: true
复制代码

repo 下的 urlrev_lock 子字段分别用于保存依赖的来源和 版本


相关文章
|
6月前
|
Ubuntu 网络安全 PHP
使用Ubuntu与宝塔搭建IT资产管理系统 - Chemex
随着企业员工增多,Excel和Microsoft List已无法满足IT资产管理需求。本文对比了三款免费系统:Snipt-it、GLPi 和国产 Chemex,最终选择界面友好、易用性强的 Chemex。文章详细介绍了在宝塔环境下部署 Chemex 的全过程,包括环境搭建、网站配置、数据库设置、权限管理及后续维护方法,适合中小企业快速搭建高效的 IT 资产管理系统。
|
机器学习/深度学习 编解码 算法框架/工具
经典神经网络论文超详细解读(二)——VGGNet学习笔记(翻译+精读)
经典神经网络论文超详细解读(二)——VGGNet学习笔记(翻译+精读)
780 1
经典神经网络论文超详细解读(二)——VGGNet学习笔记(翻译+精读)
|
人工智能 安全 搜索推荐
AI与能源管理:智能电网的未来
本文探讨了AI与智能电网的融合及其对能源管理的深远影响。智能电网利用先进的信息、通信和AI技术,实现电力的自主、智能化、高效管理。AI在精准预测电力需求、实时监测与故障诊断、智能能源调度、个性化能源服务和优化可再生能源利用等方面发挥关键作用,推动能源管理的高效、智能和可持续发展。
pyqt6 绘图案例
本文介绍了三个使用 PyQt6 绘制图形的案例:绘制奥运图片、绘制五角星和绘制时钟。每个案例都提供了详细的代码示例和效果图,帮助读者更好地理解和实现这些图形绘制功能。
375 1
|
存储 缓存 监控
多级缓存有哪些级别?
【10月更文挑战第24天】多级缓存有哪些级别?
307 1
|
SQL 存储 数据管理
Hadoop-15-Hive 元数据管理与存储 Metadata 内嵌模式 本地模式 远程模式 集群规划配置 启动服务 3节点云服务器实测
Hadoop-15-Hive 元数据管理与存储 Metadata 内嵌模式 本地模式 远程模式 集群规划配置 启动服务 3节点云服务器实测
238 2
|
存储 监控 安全
ERP系统中的用户权限与安全管理
【7月更文挑战第25天】 ERP系统中的用户权限与安全管理
1090 2
|
SQL 人工智能 自然语言处理
NL2SQL进阶系列(2):DAIL-SQL、DB-GPT开源应用实践详解Text2SQL
NL2SQL进阶系列(2):DAIL-SQL、DB-GPT开源应用实践详解Text2SQL
NL2SQL进阶系列(2):DAIL-SQL、DB-GPT开源应用实践详解Text2SQL
|
Docker 容器
Docker安装ClickHouse
Docker安装ClickHouse
|
小程序 物联网 定位技术
阿里云+微信小程序+GPS定位
阿里云物联网板块是一个功能非常强大的板块,而且通俗易懂,非常容易上手,比华为的要稍微容易上手一些。本次,小编通过阿里云物联网平台,将SIM800M32的GPS经纬度坐标发送到阿里云平台,并通过规则引擎转发数据至微信小程序,然后在地图上显示位置。
5130 0

热门文章

最新文章