การรัน DVC pipeline

การจัดการเวอร์ชันข้อมูลด้วย DVC เบื้องต้น

Ravi Bhadauria

Machine Learning Engineer

ทบทวน

  • ขั้นตอนการประมวลผล (preprocessing)
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 เบื้องต้น

การรัน pipeline ซ้ำ

  • รัน pipeline ซ้ำด้วย 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 hash
$ 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 เบื้องต้น

การแคช stage ใน DVC

แผนผังการทำงานของการแคช stage ใน DVC

การจัดการเวอร์ชันข้อมูลด้วย DVC เบื้องต้น

การ dry run pipeline

  • ใช้ flag --dry เพื่อแสดงคำสั่งโดยไม่รัน pipeline จริง
$ 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 หลายไฟล์ในโฟลเดอร์เดียวกัน
  • รัน stage เฉพาะด้วย dvc repro <target_stage>
    • จะ รัน dependency ที่อยู่ก่อนหน้าด้วย
  • บังคับรัน pipeline/stage ด้วย dvc repro -f
  • ไม่บันทึก output ลงแคชด้วย dvc repro --no-commit
    • ใช้ dvc commit ภายหลัง
การจัดการเวอร์ชันข้อมูลด้วย DVC เบื้องต้น

การรัน stage แบบขนาน

แผนผัง DAG การรัน stage แบบขนานใน DVC

  • รันขั้นตอนที่เป็นอิสระจากกันพร้อมกัน
# Run A2 and its upstream dependencies
$ dvc repro A2
# Run B2 and its upstream dependencies
$ 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...