Pipelines do DVC

CI/CD para Machine Learning

Ravi Bhadauria

Machine Learning Engineer

A necessidade de um pipeline de dados

  • Versionar só os dados não ajuda muito
  • Rastrear a linhagem dos dados é essencial
    • Filtragem, limpeza e transformação
    • Treinamento do modelo
  • Execute só o necessário
  • Etapas em um DAG (grafo acíclico direcionado)

Diagrama esquemático de um DAG mostrando a relação entre pré-processamento, treinamento e artefatos do modelo

CI/CD para Machine Learning

Pipelines do DVC

  • Sequência de etapas que definem o fluxo de trabalho de ML e dependências

  • Definido no arquivo dvc.yaml

    • Dados de entrada e scripts (deps)
    • Comandos de execução da etapa (cmd)
    • Artefatos de saída (outs)
      • Dados especiais, ex.: metrics e plots
  • Semelhante ao workflow do GitHub Actions

    • Focado em tarefas de ML, não em CI/CD
    • Pode ser abstraído como uma etapa no GHA
CI/CD para Machine Learning

Definindo etapas do pipeline

  • Crie etapas com dvc stage add
dvc stage add \
-n preprocess \
-d raw_data.csv -d preprocess.py \
-o processed_data.csv \
python preprocess.py
  • Conteúdo de dvc.yaml
    stages:
    preprocess:
      cmd: python preprocess.py
      deps:
      - preprocess.py
      - raw_data.csv
      outs:
      - processed_data.csv
    
CI/CD para Machine Learning

Grafos de dependência

  • Adicione uma etapa de treinamento usando a saída da etapa anterior
    dvc stage add \
    -n train \
    -d train.py -d processed_data.csv \
    -o plots.png -o metrics.txt \
    python train.py
    
stages:
  preprocess:
    cmd: python preprocess.py
    deps:
    - preprocess.py
    - raw_data.csv
    outs:
    - processed_data.csv

train: cmd: python train.py deps: - processed_data.csv - train.py outs: - plots.png
CI/CD para Machine Learning

Reproduzindo um pipeline

  • Reproduza o pipeline com dvc repro
-> dvc repro
Running stage 'preprocess':                                      
> python preprocess.py

Running stage 'train': > python train.py Updating lock file 'dvc.lock'
  • Um arquivo de estado dvc.lock é gerado
    • Semelhante ao arquivo .dvc, captura hashes MD5
    • Faça commit no Git imediatamente para registrar o estado git add dvc.lock && git commit -m "first pipeline repro"`
CI/CD para Machine Learning

Usando resultados em cache

  • Usando resultados em cache para acelerar a iteração
-> dvc repro
Stage 'preprocess' didn't change, skipping
Running stage 'train' with command: ...
CI/CD para Machine Learning

Visualizando o pipeline do DVC

-> dvc dag
+------------+ 
| preprocess | 
+------------+ 
       *       
       *       
       *       
  +-------+    
  | train |    
  +-------+
1 https://dvc.org/doc/command-reference/dag
CI/CD para Machine Learning

Resumo

  • Pipelines do DVC são úteis para
    • Iteração rápida com cache
    • Reprodutibilidade com dvc.yaml e dvc.lock
    • Habilitar CI/CD
  • Gere pipelines com dvc stage add
  • Reproduza/execute com dvc repro
  • Visualize com dvc dag
CI/CD para Machine Learning

Vamos praticar!

CI/CD para Machine Learning

Preparing Video For Download...