在 GitHub 上编辑

exp apply

实验的结果应用到工作区中。

概要

usage: dvc exp apply [-h] [-q | -v] experiment

positional arguments:
  experiment     Experiment to be applied

描述

experiment恢复到工作区。实验可通过名称或哈希值引用(详情请参见dvc exp run)。

具体而言,dvc exp apply 会将实验中存在的所有文件或目录恢复到其在实验中的确切状态。这包括由 DVC 和 Git 跟踪的文件:代码、原始数据、参数指标、生成的工件等。

执行dvc exp apply 后得到的 Git + DVC 工作区,将包含 experiment 的内容,以及在执行dvc exp apply 之前工作区中存在但未在 experiment 中出现的任何文件。

通常在使用dvc exp showdvc exp diff 选定目标 experiment 后,以及将其提交到 Git(使其持久化)前使用此命令。

工作区中的冲突更改将被覆盖,但 dvc exp apply 的结果可通过 Git 撤销。

dvc exp apply 可通过以下 Git 流程撤销:

$ git stash
$ git stash apply refs/exps/apply/stash

请注意,若在dvc exp apply 之后执行了影响 HEAD 的 Git 命令(如 git commitgit checkout),git stash apply 可能会失败。

选项

  • -h, --help - 显示帮助信息并退出。

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

  • -v, --verbose - 显示执行 dvc pull 命令时的详细跟踪信息。

示例:使实验持久化

本示例基于 我们的入门指南,您可在其中找到实际源代码。

假设我们在项目中运行了 3 个实验:

$ dvc exp show
 ────────────────────────────────────────────────────────────────────────────────────────────
  neutral:**Experiment**               neutral:**Created**            metric:**auc**   param:**featurize.max_features**   param:**featurize.ngrams**
 ────────────────────────────────────────────────────────────────────────────────────────────
  workspace                -              0.61314   1500                     2
  10-bigrams-experiment    Jun 20, 2020   0.61314   1500                     2
  ├── gluey-leak           Oct 21, 2020   0.69830   2000                     2
  ├── frank-farm           Oct 09, 2020   0.57756   1200                     2
  └── union-mart           Oct 09, 2020   0.51676   500                      2
 ────────────────────────────────────────────────────────────────────────────────────────────

由于 gluey-leak 具有最佳的 auc,我们可能希望将其提交到项目中(这被称为“使其持久化”):

$ dvc exp apply gluey-leak
Changes for experiment 'gluey-leak' have been applied...

我们可以使用 Git 检查工作区中的变更,

$ git status
On branch master
Changes not staged for commit:
        modified:   dvc.lock
        modified:   params.yaml
        modified:   scores.json
$ git diff params.yaml
@@ -3,7 +3,7 @@ prepare:
 featurize:
-  max_features: 1500
+  max_features: 2000
   ngrams: 2

也可以使用 DVC 检查:

$ dvc status
Data and pipelines are up to date.
$ dvc diff
Modified:
    data/features/
    data/features/test.pkl
    data/features/train.pkl
    model.pkl
files summary: 0 added, 0 deleted, 3 modified, 0 not in cache

为完成使该实验持久化的操作,我们将变更提交到仓库:

$ git add .
$ git commit -m "persist gluey-leak"

现在我们可以看到,该实验已成为我们 master 分支的新顶端:

$ dvc exp show
 ─────────────────────────────────────────────────────────────────────────────
  neutral:**Experiment**   neutral:**Created**        metric:**auc**   param:**featurize.max_features**   param:**featurize.ngrams**
 ─────────────────────────────────────────────────────────────────────────────
  workspace    -          0.69830   2000                     2
  master       04:31 PM   0.69830   2000                     2
 ─────────────────────────────────────────────────────────────────────────────

注意,所有其他实验均基于之前的提交,因此默认情况下 dvc exp show 不会显示它们(但它们仍被保存)。

内容

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

在 GitHub 上编辑

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

Discord 聊天