编写与可视化 DVC 流水线

DVC 数据版本管理入门

Ravi Bhadauria

Machine Learning Engineer

DVC 流水线

  • 定义机器学习流程与依赖的阶段序列

    • 使用 Git 进行版本管理与追踪
  • 定义于 dvc.yaml 文件

    • 输入数据与脚本(deps
    • 参数(params
    • 阶段执行命令(cmd
    • 输出工件(outs
      • 特殊数据,如 metricsplots
DVC 数据版本管理入门

添加预处理阶段

  • 使用 dvc stage add 创建阶段
dvc stage add \
-n preprocess \
-p params.yaml:preprocess \
-d raw_data.csv \
-d preprocess.py \
-o processed_data.csv \
python3 preprocess.py
stages:
  preprocess:
    cmd: python3 preprocess.py
    params:
      # 来自 params.yaml 的键
      - params.yaml
        - preprocess
    deps:
    - preprocess.py
    - raw_data.csv
    outs:
    - processed_data.csv
DVC 数据版本管理入门

添加训练与评估阶段

  • 使用上一步的输出添加训练步骤
dvc stage add \
-n train_and_evaluate \
-p train_and_evaluate \
-d train_and_evaluate.py \
-d processed_data.csv \
-o plots.png \
-o metrics.json \
python3 train_and_evaluate.py
  • 有向无环图(DAG)
stages:
  train_and_evaluate:
    cmd: python3 train_and_evaluate.py
    params:
      # 无需指定参数文件
      # 默认为 params.yaml
      - train_and_evaluate
    deps:
    - processed_data.csv
    - train_and_evaluate.py
    outs:
    - plots.png
    - metrics.json
DVC 数据版本管理入门

更新阶段

  • 多次运行 dvc stage add
ERROR: Stage 'train_and_evaluate' 
already exists in 'dvc.yaml'.
Use '--force' to overwrite.
  • 使用 dvc stage add --force
dvc stage add --force \
-n train_and_evaluate \
-p train_and_evaluate \
-d train_and_evaluate.py \
-d processed_data.csv \
-o plots.png \
-o metrics.json \
python3 train_and_evaluate.py
DVC 数据版本管理入门

可视化 DVC 流水线

# 在终端打印 DAG
dvc dag
# 显示至指定步骤的 DAG
dvc dag <target>
            +------------+     
            | preprocess |     
            +------------+     
                   *           
                   *           
                   *           
        +--------------------+ 
        | train_and_evaluate | 
        +--------------------+
DVC 数据版本管理入门

可视化 DVC 流水线

# 将步骤输出显示为节点
dvc dag --outs
                    +-------------------------------+              
                    | processed_dataset/weather.csv |              
                    +-------------------------------+              
                          ***               ***                    
                       ***                     ***                 
                     **                           **               
          +--------------+                    +-----------+ 
          | metrics.json |                    | plots.png | 
          +--------------+                    +-----------+
DVC 数据版本管理入门

可视化 DVC 流水线

dvc dag --dot
strict digraph  {
"preprocess";
"train_and_evaluate";
"preprocess" -> "train_and_evaluate";
}

从 DOT 文件绘制的两阶段 DVC DAG

1 https://dreampuf.github.io/GraphvizOnline/
DVC 数据版本管理入门

让我们来练习!

DVC 数据版本管理入门

Preparing Video For Download...