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.yaml
的 params
字段中定义。参见 dvc params
。
不带参数时,dvc params diff
会比较当前 工作区 中的参数(未提交的更改)与最新已提交版本的参数(必需)。这包括 params.yaml
文件中的所有内容(默认参数文件),以及 dvc.yaml
中使用的所有 params
。比较时使用 dvc.lock
中的值。仅列出发生变更的参数。
a_rev
和 b_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 提交中)的项目中,你将看到 HEAD
和 workspace
的值。但如果参数没有变化,则不会显示:
$ 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