Edit on GitHub

exp apply

Put the results from an experiment in the workspace.

Synopsis

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

positional arguments:
  experiment     Experiment to be applied

Description

Restores an experiment into the workspace as long as no more Git commits have been made after the experiment was run (HEAD hasn't moved). The experiment can be referenced by name or hash (see dvc exp run for details).

This is typically used after choosing a target experiment with dvc exp show or dvc exp diff, and before committing it to Git (making it persistent).

dvc exp apply changes any files (code, data, parameters, metrics, etc.) needed to reflect the experiment conditions and results in the workspace.

⚠️ Current changes to the workspace are preserved except if they conflict with the experiment in question, in which case they are overwritten (unless --no-force is used).

Note that the history of checkpoints found in the experiment is not preserved when applying and committing it.

Options

  • --no-force - fail if this command would overwrite conflicting differences between the experiment and the workspace.

  • -h, --help - shows the help message and exit.

  • -q, --quiet - do not write anything to standard output. Exit with 0 if no problems arise, otherwise 1.

  • -v, --verbose - displays detailed tracing information from executing the dvc pull command.

Example: Make an experiment persistent

This example is based on our Get Started, where you can find the actual source code.

Let's say we have run 3 experiments in our project:

$ dvc exp show --include-params=featurize
┏━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━┓
┃ Experiment            ┃ Created      ┃     auc ┃ featurize.max_features ┃ featurize.ngrams ┃
┡━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━┩
│ workspace             │ -            │ 0.61314 │ 1500                   │ 2                │
│ 10-bigrams-experiment │ Jun 20, 2020 │ 0.61314 │ 1500                   │ 2                │
│ ├── exp-e6c97         │ Oct 21, 2020 │ 0.69830 │ 2000                   │ 2                │
│ ├── exp-1dad0         │ Oct 09, 2020 │ 0.57756 │ 1200                   │ 2                │
│ └── exp-1df77         │ Oct 09, 2020 │ 0.51676 │ 500                    │ 2                │
└───────────────────────┴──────────────┴─────────┴────────────────────────┴──────────────────┘

Since exp-e6c97 has the best auc, we may want to commit it into our project (this is what we call to "make it persistent"):

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

We can inspect what changed in the workspace with 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

and with 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

To finish making this experiment persistent, we commit the changes to the repo:

$ git add .
$ git commit -m "persist exp-e6c97"

We can now see that the experiment is the new tip of our master branch:

$ dvc exp show --include-params=featurize
┏━━━━━━━━━━━━┳━━━━━━━━━━┳━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━┓
┃ Experiment ┃ Created  ┃     auc ┃ featurize.max_features ┃ featurize.ngrams ┃
┡━━━━━━━━━━━━╇━━━━━━━━━━╇━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━┩
│ workspace  │ -        │ 0.69830 │ 2000                   │ 2                │
│ master     │ 04:31 PM │ 0.69830 │ 2000                   │ 2                │
└────────────┴──────────┴─────────┴────────────────────────┴──────────────────┘

Note that all the other experiments are based on a previous commit, so dvc exp show won't display them by default (but they're still saved).

Content

🐛 Found an issue? Let us know! Or fix it:

Edit on GitHub

Have a question? Join our chat, we will help you:

Discord Chat