执行 DVC 管道

DVC 数据版本管理入门

Ravi Bhadauria

Machine Learning Engineer

回顾

  • 预处理阶段
stages:
  preprocess:
    cmd: python3 preprocess.py
    params:
      - preprocess
    deps:
    - preprocess.py
    - raw_data.csv
    outs:
    - processed_data.csv
  • 训练与评估
stages:
  train_and_evaluate:
    cmd: python3 train_and_evaluate.py
    params:
      - train_and_evaluate
    deps:
    - processed_data.csv
    - train_and_evaluate.py
    outs:
    - plots.png
    - metrics.json
DVC 数据版本管理入门

复现管道

  • 使用 dvc repro 复现管道
$ dvc repro
Running stage 'preprocess':                                      
> python preprocess.py

Running stage 'train_and_evaluate': > python train_and_evaluate.py Updating lock file 'dvc.lock'
  • 生成状态文件 dvc.lock
    • 类似于 .dvc 文件,记录 MD5 哈希
$ git add dvc.lock && git commit -m "first pipeline run"
DVC 数据版本管理入门

使用缓存结果

  • 使用缓存结果加速迭代
$ dvc repro
Stage 'preprocess' didn't change, skipping
Running stage 'train_and_evaluate' with command: ...
DVC 数据版本管理入门

DVC 的阶段缓存

DVC 中阶段缓存的工作流程图

DVC 数据版本管理入门

干跑(Dry run)管道

  • 使用 --dry 仅打印命令而不运行管道
$ dvc repro --dry
Running stage 'preprocess':
> python3 preprocess_dataset.py

Running stage 'train_and_evaluate':
> python3 train_and_evaluate.py
DVC 数据版本管理入门

其他参数

  • 运行指定文件 dvc repro linear/dvc.yaml
    • 同一文件夹内不允许有多个 dvc.yaml
  • 运行指定阶段 dvc repro <target_stage>
    • 也会 运行其上游依赖
  • 强制运行管道/阶段 dvc repro -f
  • 不将输出写入缓存 dvc repro --no-commit
    • 之后使用 dvc commit
DVC 数据版本管理入门

并行阶段执行

DVC 中并行阶段执行 DAG 示意图

  • 并发运行互不依赖的步骤
# 运行 A2 及其上游依赖
$ dvc repro A2
# 运行 B2 及其上游依赖
$ dvc repro B2
  • 利用缓存加速执行
$ dvc repro train
Stage 'A2' didn't change, skipping
Stage 'B2' didn't change, skipping
Running stage 'train' with command: ...
DVC 数据版本管理入门

Vamos praticar!

DVC 数据版本管理入门

Preparing Video For Download...