DVC 파이프라인 작성 및 시각화

DVC로 배우는 데이터 버저닝 입문

Ravi Bhadauria

Machine Learning Engineer

DVC 파이프라인

  • 머신러닝 워크플로와 의존성을 정의하는 단계들의 시퀀스

    • Git으로 버전 관리 및 추적
  • dvc.yaml 파일에 정의됨

    • 입력 데이터와 스크립트(deps)
    • 파라미터(params)
    • 단계 실행 명령(cmd)
    • 출력 아티팩트(outs)
      • 특수 데이터 예: metrics, plots
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:
      # Keys from 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:
      # Skip specifying parameter file
      # Defaulted to 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
# 특정 단계까지 표시
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 파일에서 그래프로 그린 2단계 DVC DAG

1 https://dreampuf.github.io/GraphvizOnline/
DVC로 배우는 데이터 버저닝 입문

연습해 봅시다!

DVC로 배우는 데이터 버저닝 입문

Preparing Video For Download...