在 GitHub 上编辑

params diff

显示 DVC 仓库 中不同提交之间,或某个提交与 工作区 之间的 dvc params 变化。

要求使用 Git 对项目进行版本控制。

概要

usage: dvc params diff [-h] [-q | -v]
                       [--targets [<paths> [<paths> ...]]] [--all]
                       [--deps] [--json] [--md] [--no-path]

positional arguments:
  a_rev          Old Git commit to compare (defaults to HEAD)
  b_rev          New Git commit to compare (defaults to the
                 current workspace)

描述

提供一种快速方式来比较仓库历史中不同实验之间的 参数。该命令显示的差异包括参数名称、旧值和新值。

参数在 dvc.yamlparams 字段中定义。参见 dvc params

不带参数时,dvc params diff 会比较当前 工作区 中的参数(未提交的更改)与最新已提交版本的参数(必需)。这包括 params.yaml 文件中的所有内容(默认参数文件),以及 dvc.yaml 中使用的所有 params。比较时使用 dvc.lock 中的值。仅列出发生变更的参数。

a_revb_rev 是可选的 Git 提交哈希、标签或分支名称,用于指定要比较的版本。若只指定一个版本,则会将其与当前工作区进行比较。

默认情况下,会使用 dvc.yaml 中定义的所有参数,但可以通过 --targets 选项指定特定参数。

请注意,目标文件不一定必须在 dvc.yaml 中定义。因此,该命令不需要在现有的 DVC 项目中运行,可以在任意 Git 仓库中使用。

选项

  • --targets <paths> - 指定要比较的特定参数文件。可接受指向任意有效参数文件的 paths,无论 dvc.yaml 是否正在跟踪其中的参数。

    当在 a_rev/b_rev 之前为 --targets 指定参数时,应在该选项参数后使用 --(适用于 POSIX 终端),例如:

    $ dvc params diff --targets m1.json m2.yaml -- HEAD v1
  • --all - 列出所有参数,包括未发生变化的参数。

  • --deps - 仅包含作为阶段依赖项的参数。

  • --json - 以易于解析的 JSON 格式输出命令结果,而非人类可读的表格形式。

  • --md - 以 Markdown 表格格式输出命令结果。

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

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

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

示例

让我们创建一个名为 params.yaml 的简单 YAML 参数文件(默认参数文件名,详见 dvc params 了解更多信息):

lr: 0.0041

train:
  epochs: 70
  layers: 9

process:
  thresh: 0.98
  bow: 15000

定义一个具有参数依赖关系的管道 阶段

$ dvc stage add -n train \
                -d train.py -d users.csv -o model.pkl \
                -p lr,train \
                python train.py

现在打印我们在该项目中跟踪的参数值:

$ dvc params diff
Path         Param           HEAD   workspace
params.yaml  lr              —      0.0041
params.yaml  process.bow     —      15000
params.yaml  process.thresh  —      0.98
params.yaml  train.epochs    —      70
params.yaml  train.layers    —      9

上述命令显示了工作区与参数文件 params.yaml 的最后一次提交版本(HEAD)之间的参数差异。由于此前该文件不存在,因此所有 HEAD 值均为

在一个具有参数文件历史(即参数存在于多个 Git 提交中)的项目中,你将看到 HEADworkspace 的值。但如果参数没有变化,则不会显示:

$ dvc params diff
Path         Param         HEAD    workspace
params.yaml  lr            0.0041  0.0043
params.yaml  train.layers  9       7
params.yaml  train.epochs  70      110

使用 --all 选项可查看所有参数,包括未更改的参数:

$ dvc params diff --all
Path         Param           HEAD    workspace
params.yaml  lr              0.0041  0.0043
params.yaml  process.bow     15000   15000
params.yaml  process.thresh  0.98    0.98
params.yaml  train.layers    9       7
params.yaml  train.epochs    70      110

要与特定提交、标签或任何 版本 进行比较,可在命令行中额外指定该版本:

$ dvc params diff e12b167
Path         Param         HEAD    e12b167
params.yaml  lr            0.0038  0.0043
params.yaml  train.epochs  70      110

注意,train.layers 参数未显示,因为其值在当前工作区版本与指定版本(e12b167)之间没有变化。

要查看两个特定提交之间的差异,需要同时指定这两个提交:

$ dvc params diff e12b167 HEAD^
Path         Param         e12b167  HEAD^
params.yaml  lr            0.0038   0.0041
params.yaml  train.layers  10       9
params.yaml  train.epochs  50       70
内容

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

在 GitHub 上编辑

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

Discord 聊天