在 GitHub 上编辑

update

更新从外部 DVC 仓库URL 导入的文件或目录,以及相应的导入 .dvc 文件。

概要

usage: dvc update [-h] [-q | -v] [-R] [--rev <commit>]
                  [--to-remote] [-r <name>]
                  [--no-download] [-j <number>]
                  targets [targets ...]

positional arguments:
  targets      Import .dvc files to update. Using -R, directories
               to search for .dvc files can also be given.

描述

使用 dvc importdvc import-urldvc import-db 创建导入阶段(.dvc 文件)后,数据源可能会发生变化。请使用 dvc update 将这些导入的文件或目录更新至最新状态。

要指定需要更新的导入阶段,可以在命令参数中提供对应的 .dvc 文件 targets

请注意,导入阶段始终被视为冻结状态,这意味着如果你运行 dvc repro,它们不会被更新。dvc update 是唯一可以更新它们的命令。

不带标志的 dvc update 对固定到提交哈希(.dvc 文件中的 rev 字段)的导入阶段无效。请使用 --rev 选项将导入的产物更新到不同的版本。

$ dvc update --rev master

选项

  • --rev <version> - 指定要从中更新文件或目录的仓库的提交哈希、分支或标签名称等(任何 Git 版本)。默认使用默认分支中的最新提交。

    对于通过 dvc import-url --version-aware 获取的数据,此选项可用于指定对象版本 ID。默认情况下,将使用云存储中的当前版本。

    该操作会更改导入的 .dvc 文件中的 rev 字段。

  • -R, --recursive - 通过搜索每个目标目录及其子目录中的导入 .dvc 文件来确定要更新的文件。如果目标中没有目录,则此选项无效。

  • --no-download - 更新 .dvc 文件中的数据校验和(md5etagchecksum 字段),但不实际下载最新数据。更多上下文请参见 dvc import-url --no-downloaddvc import --no-download。不能与 --to-remote 同时使用。

  • --to-remote - 更新使用 dvc import-url 创建的 .dvc 文件,并将数据直接传输到远程存储(除非使用 -r 指定,否则为默认远程),而不保存在本地。使用 dvc pull 可将数据拉取到本地。

  • -r <name>, --remote <name> - 指定 dvc remote 的名称(只能与 --to-remote 一起使用)。

  • -j <number>, --jobs <number> - DVC 从源下载数据时的并行级别。默认值为 4 * cpu_count()。使用更多任务可能加快操作速度。

  • -h, --help - 打印使用说明/帮助信息,然后退出。

  • -q, --quiet - 不向标准输出写入任何内容。如果没有问题则以 0 退出,否则以 1 退出。

  • -v, --verbose - 显示详细的跟踪信息。

示例

我们首先从我们的 入门示例仓库 中导入一个数据产物:

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

正如 DVC 所提到的,导入阶段(.dvc 文件)model.pkl.dvc 已被创建。不过此 阶段 默认是冻结的,因此要重新生成它,我们需要先对其运行 dvc unfreeze,然后运行 dvc repro(之后可再次运行 dvc freeze)。我们不妨直接在此阶段上运行 dvc update

$ dvc update model.pkl.dvc
Output 'model.pkl' didn't change. Skipping saving.
Saving information to 'model.pkl.dvc'.

这次没有任何变化,因为源项目本身相当稳定。

请注意,dvc update 会在有新变更需要引入时,更新相应 .dvc 文件中的 rev_lock 字段。

示例:将固定版本更新为另一个版本

另请参阅 导入并更新固定版本

我们先从我们的快速入门示例仓库的特定版本中导入一个模型:

$ dvc import --rev baseline-experiment \
            git@github.com:iterative/example-get-started \
            model.pkl
Importing 'model.pkl (git@github.com:iterative/example-get-started)'
-> 'model.pkl'

执行后,导入阶段(.dvc 文件)model.pkl.dvc 被创建。现在尝试在此文件上运行 dvc update,看看会发生什么。

$ dvc update model.pkl.dvc

没有任何输出,意味着 model.pkl 文件未被更新。这是因为我们将导入阶段绑定到了一个未发生变化的 rev(即标签 baseline-experiment 指向某个特定的 Git 提交)。因此,该文件不会被更新。

现在我们尝试将模型更新到另一个版本:

$ dvc update --rev bigrams-experiment model.pkl.dvc
Importing 'model.pkl (git@github.com:iterative/example-get-started)'
-> 'model.pkl'

导入阶段将被覆盖,并从指定提交中的最新更改中获取更新(标签 bigrams-experiment)。

内容

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

在 GitHub 上编辑

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

Discord 聊天