Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

guide: ML Pipelines (1): Defining Pipelines & Stages #3414

Merged
merged 103 commits into from
Sep 7, 2022
Merged
Show file tree
Hide file tree
Changes from 99 commits
Commits
Show all changes
103 commits
Select commit Hold shift + click to select a range
f91f015
initial plan and some content
Apr 5, 2022
fd20226
added content about stages
Apr 6, 2022
b279db7
title and restyle fixes
iesahin Apr 13, 2022
881f3af
added dag section
iesahin Apr 15, 2022
0e95212
depend to -> depend on
iesahin Apr 15, 2022
78f342d
added dependencies section
iesahin Apr 20, 2022
b2a949d
Update content/docs/user-guide/pipelines/index.md
jorgeorpinel May 9, 2022
9d5ee22
Update content/docs/user-guide/pipelines/index.md
jorgeorpinel May 9, 2022
678753d
Restyled by prettier (#3532)
restyled-io[bot] May 12, 2022
7fe19e7
Update content/docs/user-guide/pipelines/index.md
iesahin Jun 7, 2022
e932c8d
added pipelines to sidebar
iesahin Jun 7, 2022
baf6ce1
updated the title
iesahin Jun 7, 2022
caf3291
fixed formatting
iesahin Jun 7, 2022
2e98221
updating for dvc.yaml first
iesahin Jun 9, 2022
15ba67f
fed -> used
iesahin Jun 9, 2022
d749c2a
dvc.yaml-first
iesahin Jun 9, 2022
f01e750
editing to tell dvc.yaml first
iesahin Jun 9, 2022
78cfebd
minor fix
iesahin Jun 9, 2022
9989902
url dependency
iesahin Jun 9, 2022
f51bfd5
dvc lock example
iesahin Jun 9, 2022
5edc29b
section titles for deps
iesahin Jun 9, 2022
9649c0f
section titles for outputs
iesahin Jun 9, 2022
bb7c0a1
reproduction -> running
iesahin Jun 9, 2022
e26734e
adding hyperparameters section
iesahin Jun 9, 2022
424a196
added experiments section
iesahin Jun 14, 2022
e43bc98
adding url dependencies
iesahin Jun 14, 2022
ee7703c
added outputs section content
iesahin Jun 15, 2022
602e327
minor
iesahin Jun 24, 2022
1b08b42
added running pipelines content
iesahin Jun 24, 2022
1ff0479
moved outputs below running
iesahin Jun 24, 2022
27ef04f
removed plots section header
iesahin Jun 24, 2022
c2c0461
Merge branch 'main' into iesahin/ug-pipelines
jorgeorpinel Jul 13, 2022
7df801a
guide: Defining Data Pipelines
jorgeorpinel Jul 14, 2022
605a000
guide: split up Data Pipelines section
jorgeorpinel Jul 14, 2022
f22f2a0
Update content/docs/command-reference/plots/templates.md
jorgeorpinel Jul 19, 2022
928ad25
Merge branch 'main' into iesahin/ug-pipelines
jorgeorpinel Jul 20, 2022
73982c2
guide: Data Pipes -> ML Pipes
jorgeorpinel Jul 20, 2022
a97006e
guide: oops, remove op-pipes file
jorgeorpinel Jul 20, 2022
f9f0a59
guide: remoge ML Pipes intro
jorgeorpinel Jul 20, 2022
53b4321
guide: mention both imports in Def ML Pipes
jorgeorpinel Jul 20, 2022
b6d8a0c
guide: move DAG info from cmd ref
jorgeorpinel Jul 20, 2022
60af6a7
guide: move all info and links about DAG to ML Pipes
jorgeorpinel Jul 20, 2022
830fe2b
guide: point from some Stage links to ML Pipes
jorgeorpinel Jul 20, 2022
cb042af
guide: delete Running ML Pipes (for now)
jorgeorpinel Jul 20, 2022
b8844da
nav: remove future ML Pipes guides
jorgeorpinel Jul 20, 2022
2040246
guide: remove ML Pipes/ Experimental Pipes
jorgeorpinel Jul 20, 2022
192e189
roll back unrelated changes...
jorgeorpinel Jul 20, 2022
078b50d
guide: roll back dvc.yaml page changes
jorgeorpinel Jul 20, 2022
fed4832
guide: link ML Pipes/ Defining Stages to dvc.yaml/stages spec
jorgeorpinel Jul 20, 2022
49780b6
Merge branch 'main' into iesahin/ug-pipelines
jorgeorpinel Jul 21, 2022
3410b6a
guide: link deps and params tooltip to ML Pipes/ Stages guide sections
jorgeorpinel Jul 21, 2022
0ca32c2
guide: links from dvc.yaml doc to ML Pipes/ Stages
jorgeorpinel Jul 21, 2022
8a55302
guide: more links
jorgeorpinel Jul 21, 2022
7ebc3ad
guide: oops, remove unused files
jorgeorpinel Jul 21, 2022
7461b07
remove unrelated change
jorgeorpinel Jul 21, 2022
bea5368
guide: move stage definition details to ML Pipes
jorgeorpinel Jul 21, 2022
e44433c
guide: move stage command details into ML Pipes
jorgeorpinel Jul 21, 2022
e47d741
Merge branch 'main' into iesahin/ug-pipelines
jorgeorpinel Jul 28, 2022
a4824a1
Merge branch 'main' into iesahin/ug-pipelines
jorgeorpinel Aug 1, 2022
1411ec7
ref: roll back unrelated changes
jorgeorpinel Aug 2, 2022
9800a35
.
jorgeorpinel Aug 2, 2022
43517c4
ref: few more links to dependency graph in guide
jorgeorpinel Aug 2, 2022
0b81e74
Merge branch 'main' into iesahin/ug-pipelines
jorgeorpinel Aug 3, 2022
09f5aaf
ref: reorg exp init to include simple usage example in Desc
jorgeorpinel Aug 3, 2022
ded42ff
concept: reintroduce DAG in more places
jorgeorpinel Aug 4, 2022
8ebd1bb
guide: pipelines are not ML-specific
jorgeorpinel Aug 4, 2022
55afd17
guide: more details for params fields
jorgeorpinel Aug 4, 2022
076402f
one word
jorgeorpinel Aug 8, 2022
e065653
Merge branch 'main' into iesahin/ug-pipelines
jorgeorpinel Aug 21, 2022
adc4382
guide: restructure Def Pipes and
jorgeorpinel Aug 22, 2022
3f8e29a
guide: rewrite Def Pipes intro
jorgeorpinel Aug 22, 2022
4f3391a
guide: move DAG up in Def Pipes
jorgeorpinel Aug 22, 2022
86e5b18
guide: inner link in Def Pipes
jorgeorpinel Aug 22, 2022
8e88b7f
guide: fix link and typos
jorgeorpinel Aug 22, 2022
9216380
start: revert DAG changes
jorgeorpinel Aug 23, 2022
51151c8
guide: use typical ML stage names
jorgeorpinel Aug 23, 2022
50b2513
guide: better flow in Pipes index
jorgeorpinel Aug 23, 2022
29790fd
glossary: high-level def of Pipes
jorgeorpinel Aug 23, 2022
dc3b6bc
guide: move Stage command to dvc.yaml ref
jorgeorpinel Aug 23, 2022
dadd099
guide: remove abc mention
jorgeorpinel Aug 23, 2022
0283efc
guide: edits to Defining Pipes
jorgeorpinel Aug 24, 2022
b55ac41
guide: improve Param deps in Def Pipes and
jorgeorpinel Aug 24, 2022
b947c67
guide: add Outputs to Def Pipes
jorgeorpinel Aug 24, 2022
bfe0ec2
Merge branch 'main' into iesahin/ug-pipelines
jorgeorpinel Aug 24, 2022
8505bc7
guide: update dep, param and out tooltips
jorgeorpinel Aug 24, 2022
57ed5c0
Merge branch 'main' into iesahin/ug-pipelines
jorgeorpinel Aug 25, 2022
627afb5
guide: separate params in Pipes vs Exps
jorgeorpinel Aug 25, 2022
502b3bd
ref: move Stage commands section of dvc.yaml up
jorgeorpinel Aug 25, 2022
533a1b0
guide: update Def Pipes and DAG
jorgeorpinel Aug 25, 2022
c5cbf58
params: more separation of content and
jorgeorpinel Aug 25, 2022
416d312
concept: rehash params
jorgeorpinel Aug 25, 2022
75340be
guide: more holistic pipelining info
jorgeorpinel Aug 26, 2022
dc16807
guide: Pipe edits
jorgeorpinel Aug 26, 2022
23cd9c6
params: roll back changes for now...
jorgeorpinel Aug 26, 2022
3c8f635
Merge branch 'main' into iesahin/ug-pipelines
jorgeorpinel Aug 29, 2022
ef24051
guide: more edits to Pipelines
jorgeorpinel Aug 31, 2022
a542867
Merge branch 'main' into iesahin/ug-pipelines
jorgeorpinel Aug 31, 2022
ac15ca3
Merge branch 'main' into iesahin/ug-pipelines
jorgeorpinel Sep 2, 2022
aa7bfcb
guide: edits on Def Pipes
jorgeorpinel Sep 2, 2022
0f351bb
Merge branch 'main' into iesahin/ug-pipelines
jorgeorpinel Sep 7, 2022
c9e6272
guide: hide DAG text
jorgeorpinel Sep 7, 2022
afe2ca5
concept: expand on Stage
jorgeorpinel Sep 7, 2022
e242375
guide: term
jorgeorpinel Sep 7, 2022
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
31 changes: 9 additions & 22 deletions content/docs/command-reference/dag.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# dag

Visualize the <abbr>pipeline</abbr>(s) in `dvc.yaml` as one or more graph(s) of
connected [stages](/doc/command-reference/run).
Visualize <abbr>pipelines</abbr> as one or more <abbr>stage</abbr> dependency
graphs.

## Synopsis

Expand All @@ -17,28 +17,15 @@ positional arguments:

## Description

Displays the stages of a pipeline up to the `target` stage. If the `target` is
omitted, it will show the full project DAG.
DVC represents a pipeline internally as a **Directed Acyclic Graph** (DAG) where
the nodes are stages and the edges are dependencies.

### Directed acyclic graph
`dvc dag` displays this dependency graph in one or more pipelines, as defined in
the `dvc.yaml` files found in the <abbr>project</abbr>. Provide a `target` stage
name to show the pipeline up to that point.

A data pipeline, in general, is a series of data processing
[stages](/doc/command-reference/run) (for example, console commands that take an
input and produce an outcome). The connections between stages are formed by the
<abbr>output</abbr> of one turning into the <abbr>dependency</abbr> of another.
A pipeline may produce intermediate data, and has a final result.

Data science and machine learning pipelines typically start with large raw
datasets, include intermediate featurization and training stages, and produce a
final model, as well as accuracy [metrics](/doc/command-reference/metrics).

In DVC, pipeline stages and commands, their data I/O, interdependencies, and
results (intermediate or final) are specified in `dvc.yaml`, which can be
written manually or built using the helper command `dvc stage add`. This allows
DVC to restore one or more pipelines later (see `dvc repro`).

> DVC builds a dependency graph
> ([DAG](https://en.wikipedia.org/wiki/Directed_acyclic_graph)) to do this.
[directed acyclic graph]:
/doc/user-guide/data-pipelines/defining-pipelines#directed-acyclic-graph-dag

### Paginating the output

Expand Down
95 changes: 54 additions & 41 deletions content/docs/command-reference/exp/init.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,77 +14,90 @@ usage: dvc exp init [-h] [-q | -v] [--run] [--interactive] [-f]
[--metrics METRICS] [--plots PLOTS] [--live LIVE]
[--type {default,checkpoint}]
[command]

positional arguments:
command Shell command to runs the experiment(s)
```

## Description

This command helps you get started with DVC Experiments quickly. It reduces
repetitive DVC procedures by creating a necessary `dvc.yaml` file, which assumes
standard locations of your inputs (data, <abbr>parameters</abbr>, and source
code) and outputs (models, <abbr>metrics</abbr>, and
repetitive DVC procedures by creating a `dvc.yaml` file. It assumes standard
locations of your inputs (data, <abbr>parameters</abbr>, and source code) and
outputs (models, <abbr>metrics</abbr>, and
[plots](/doc/command-reference/plots)).

These locations can be customized through the [command options](#options) or via
[configuration](/doc/command-reference/config#exp). Default project structure:
The only required argument is a [shell `command`] to run your experiment(s). It
can be provided directly as an argument (see example below) or by using the
`--interactive` (`-i`) mode, which will prompt for it.

```cli
$ dvc exp init "python src/train.py"
Creating dependencies: src, data and params.yaml
Creating output directories: plots and models
Creating train stage in dvc.yaml
```

`dvc exp init` also generates the boilerplate project structure, including input
files/directories and directories needed for future outputs. These locations can
also be customized via [CLI options](#options) or interactive mode, or with
[configuration](/doc/command-reference/config#exp). Default structure:

```
├── data/
├── dvc.yaml
├── metrics.json
├── models/
├── params.yaml
├── plots/
└── src/
```

The only required argument is the terminal command that runs your experiment(s).
It can be provided directly [as an argument](#the-command-argument) or by using
the `--interactive` (`-i`) mode (which will prompt for it). The command will be
wrapped as a <abbr>stage</abbr> that `dvc exp run` can execute.
Inside `dvc.yaml`, the experiment is wrapped as a <abbr>stage</abbr> that
`dvc exp run` can execute.

<admon type="tip">
<details>

A special `--type` of stage is supported (`checkpoint`), which monitors
[checkpoints] during training of ML models.
### Click to see `dvc.yaml` example

</admon>
```yaml
stages:
train:
cmd: python src/train.py
deps:
- data
- src
params:
- params.yaml:
outs:
- models
metrics:
- metrics.json:
cache: false
plots:
- plots:
cache: false
```

`dvc exp init` also generates the boilerplate project structure, including input
files/directories and directories needed for future outputs, or any locations
determined in interactive mode.
</details>

<admon type="info">
<admon type="tip">

`dvc exp init` is intended as a quick way to start running [DVC Experiments].
See the `dvc.yaml` specification for more complex data pipelines.
A special `--type` of stage is supported (`checkpoint`), which monitors
[checkpoints] during training of ML models.

</admon>

📖 `dvc exp init` is intended as a quick way to start running [DVC Experiments].
See the [Pipelines guide] for more on that topic.

[stage definition]:
/doc/user-guide/project-structure/dvcyaml-files#stage-entries
[shell `command`]:
/doc/user-guide/project-structure/dvcyaml-files#stage-commands
[checkpoints]: /doc/user-guide/experiment-management/checkpoints
[dvc experiments]: /doc/user-guide/experiment-management/experiments-overview

### The `command` argument

The command given to `dvc exp init` can be anything your system terminal would
accept and run directly, for example a shell built-in, an expression, or a
binary found in `PATH`. Please note that any flags sent after the `command`
argument will normally become part of that command itself and ignored by
`dvc exp init` (so provide it last).

⚠️ While DVC is platform-agnostic, commands defined in `dvc.yaml` (`cmd` field)
may only work on some operating systems and require certain software packages or
libraries in the environment.

Surround the command with double quotes `"` if it includes special characters
like `|` or `<`, `>` -- otherwise they would apply to `dvc exp init` itself. Use
single quotes `'` instead if there are environment variables in it that should
be evaluated dynamically.

```dvc
$ dvc exp init "./a_script.sh > /dev/null 2>&1"
shcheklein marked this conversation as resolved.
Show resolved Hide resolved
$ dvc exp init './another_script.sh $MYENVVAR'
```
[pipelines guide]: /doc/user-guide/data-pipelines/defining-pipelines

## Options

Expand Down
14 changes: 9 additions & 5 deletions content/docs/command-reference/move.md
Original file line number Diff line number Diff line change
Expand Up @@ -87,11 +87,15 @@ model file:
$ mv keras.h5 model.h5
```

> Note that, often the output of a stage is a dependency in another stage,
> creating a
> [dependency graph](/doc/command-reference/run#dependencies-and-outputs). In
> this case, you may want to also update the `path` in the `deps` field of
> `dvc.yaml`.
<admon type="info">

Often the output of a stage is a dependency in another stage, creating a
[dependency graph]. In this case, you may want to also update the `path` in the
`deps` field of `dvc.yaml`.

[dependency graph]: /doc/user-guide/data-pipelines/defining-pipelines

</admon>

Finally, we run `dvc commit` with the `-f` option to force save the changes to
<abbr>cache</abbr>:
Expand Down
10 changes: 5 additions & 5 deletions content/docs/command-reference/repro.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,10 +22,9 @@ positional arguments:

## Description

Provides a way to regenerate data pipeline results, by restoring the dependency
graph (a [DAG](https://en.wikipedia.org/wiki/Directed_acyclic_graph)) implicitly
defined by the stages listed in `dvc.yaml`. The commands defined in these stages
are then executed in the correct order.
Provides a way to regenerate data pipeline results, by restoring the [dependency
graph] implicitly defined by the stages listed in `dvc.yaml`. The commands
defined in these stages are then executed in the correct order.

For stages with multiple commands (having a list in the `cmd` field), commands
are run one after the other in the order they are defined. The failure of any
Expand Down Expand Up @@ -69,6 +68,7 @@ It stores all the data files, intermediate or final results in the
hash values of changed dependencies and outputs in the `dvc.lock` and `.dvc`
files.

[dependency graph]: /doc/user-guide/data-pipelines/defining-pipelines
[always changed]: /doc/command-reference/status#local-workspace-status

### Parallel stage execution
Expand Down Expand Up @@ -163,7 +163,7 @@ up-to-date and only execute the final stage.
with the same dependencies and outputs (see the
[details](/doc/user-guide/project-structure/internal-files#run-cache)). Useful
for example if the stage command/s is/are non-deterministic
([not recommended](/doc/command-reference/run#avoiding-unexpected-behavior)).
([not recommended](/doc/user-guide/data-pipelines/defining-pipelines#avoiding-unexpected-behavior)).

- `--force-downstream` - in cases like `... -> A (changed) -> B -> C` it will
reproduce `A` first and then `B`, even if `B` was previously executed with the
Expand Down
87 changes: 28 additions & 59 deletions content/docs/command-reference/run.md
Original file line number Diff line number Diff line change
Expand Up @@ -34,44 +34,29 @@ organize data science projects, or build detailed machine learning pipelines.
A stage name is required and can be provided using the `-n` (`--name`) option.
The other available [options](#options) are mostly meant to describe different
kinds of stage [dependencies and outputs](#dependencies-and-outputs). The
remaining terminal input provided to `dvc run` after `-`/`--` flags will become
the required [`command` argument](#the-command-argument).
remaining terminal input provided to `dvc run` after any options/flags will
become the required [`command` argument].

`dvc run` executes stage commands, unless the `--no-exec` option is used.

<details>

### 💡 Avoiding unexpected behavior

We don't want to tell anyone how to write their code or what programs to use!
However, please be aware that in order to prevent unexpected results when DVC
reproduces pipeline stages, the underlying code should ideally follow these
rules:

- Read/write exclusively from/to the specified <abbr>dependencies</abbr> and
<abbr>outputs</abbr> (including parameters files, metrics, and plots).
<admon type="info">

- Completely rewrite outputs. Do not append or edit.
`-`/`--` flags sent after the `command` become part of the command itself and
are ignored by `dvc stage add`.

- Stop reading and writing files when the `command` exits.
</admon>

Also, if your pipeline reproducibility goals include consistent output data, its
code should be
[deterministic](https://en.wikipedia.org/wiki/Deterministic_algorithm) (produce
the same output for any given input): avoid code that increases
[entropy](https://en.wikipedia.org/wiki/Software_entropy) (e.g. random numbers,
time functions, hardware dependencies, etc.).
`dvc run` executes stage commands, unless the `--no-exec` option is used.

</details>
[`command` argument]:
/doc/user-guide/project-structure/dvcyaml-files#stage-commands

### Dependencies and outputs

By specifying lists of <abbr>dependencies</abbr> (`-d` option) and/or
<abbr>outputs</abbr> (`-o` and `-O` options) for each stage, we can create a
_dependency graph_ ([DAG](https://en.wikipedia.org/wiki/Directed_acyclic_graph))
that connects them, i.e. the output of a stage becomes the input of another, and
so on (see `dvc dag`). This graph can be restored by DVC later to modify or
[reproduce](/doc/command-reference/repro) the full pipeline. For example:
[dependency graph] that connects them, i.e. the output of a stage becomes the
input of another, and so on (see `dvc dag`). This graph can be restored by DVC
later to modify or [reproduce](/doc/command-reference/repro) the full pipeline.
For example:
jorgeorpinel marked this conversation as resolved.
Show resolved Hide resolved

```dvc
$ dvc run -n printer -d write.sh -o pages ./write.sh
Expand Down Expand Up @@ -122,39 +107,23 @@ Relevant notes:
[manual process](/doc/command-reference/move#renaming-stage-outputs) to update
`dvc.yaml` and the project's cache accordingly.

[dependency graph]: /doc/user-guide/data-pipelines/defining-pipelines

### For displaying and comparing data science experiments

[parameters](/doc/command-reference/params) (`-p`/`--params` option) are a
special type of key/value dependencies. Multiple parameter dependencies can be
specified from within one or more YAML, JSON, TOML, or Python parameters files
(e.g. `params.yaml`). This allows tracking experimental hyperparameters easily.
[parameters][param-deps] (`-p`/`--params` option) are a special type of
key/value dependencies. Multiple params can be specified from within one or more
structured files (`params.yaml` by default). This allows tracking experimental
hyperparameters easily in ML.

Special types of output files, [metrics](/doc/command-reference/metrics) (`-m`
and `-M` options) and [plots](/doc/command-reference/plots) (`--plots` and
`--plots-no-cache` options), are also supported. Metrics and plots files have
specific formats (JSON, YAML, CSV, or TSV) and allow displaying and comparing
data science experiments.

### The `command` argument

The `command` sent to `dvc run` can be anything your terminal would accept and
run directly, for example a shell built-in, expression, or binary found in
`PATH`. Please remember that any flags sent after the `command` are interpreted
by the command itself, not by `dvc run`.

⚠️ While DVC is platform-agnostic, the commands defined in your
[pipeline](/doc/command-reference/dag) stages may only work on some operating
systems and require certain software packages to be installed.

Wrap the command with double quotes `"` if there are special characters in it
like `|` (pipe) or `<`, `>` (redirection), otherwise they would apply to
`dvc run` itself. Use single quotes `'` instead if there are environment
variables in it that should be evaluated dynamically. Examples:

```dvc
$ dvc run -n first_stage "./a_script.sh > /dev/null 2>&1"
$ dvc run -n second_stage './another_script.sh $MYENVVAR'
```
[param-deps]:
/doc/user-guide/pipelines/defining-pipelines#parameter-dependencies

## Options

Expand Down Expand Up @@ -199,12 +168,12 @@ $ dvc run -n second_stage './another_script.sh $MYENVVAR'
makes the stage incompatible with `dvc repro`. Implies `--no-exec`.

- `-p [<path>:]<params_list>`, `--params [<path>:]<params_list>` - specify one
or more [parameter dependencies](/doc/command-reference/params) from a
parameters file `path` (`./params.yaml` by default). This is done by sending a
comma separated list (`params_list`) as argument, e.g.
`-p learning_rate,epochs`. A custom params file can be defined with a prefix,
e.g. `-p params.json:threshold`. Or use the prefix alone with `:` to use all
the parameters found in that file, e.g. `-p myparams.toml:`.
or more [parameter dependencies][param-deps] from a structured file `path`
(`./params.yaml` by default). This is done by sending a comma separated list
(`params_list`) as argument, e.g. `-p learning_rate,epochs`. A custom params
file can be defined with a prefix, e.g. `-p params.json:threshold`. Or use the
prefix alone with `:` to use all the parameters found in that file, e.g.
`-p myparams.toml:`.

- `-m <path>`, `--metrics <path>` - specify a metrics file produced by this
stage. This option behaves like `-o` but registers the file in a `metrics`
Expand Down Expand Up @@ -250,7 +219,7 @@ $ dvc run -n second_stage './another_script.sh $MYENVVAR'
run with the same dependencies and outputs (see the
[details](/doc/user-guide/project-structure/internal-files#run-cache)). Useful
for example if the stage command/s is/are non-deterministic
([not recommended](#avoiding-unexpected-behavior)).
([not recommended](/doc/user-guide/data-pipelines/defining-pipelines#avoiding-unexpected-behavior)).

- `--no-commit` - do not store the outputs of this execution in the cache
(`dvc.yaml` and `dvc.lock` are still created or updated); useful to avoid
Expand Down
Loading