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 플래그 사용
$ 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로 배우는 데이터 버저닝 입문

연습해 봅시다!

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

Preparing Video For Download...