Questo repository vuole essere un tutorial sul primo setup e utilizzo del tool Data Version Control.
Una volta installati i requirements inizializzare DVC utilizzando il comando
dvc initPer aggiungere un remote (ad esempio cloud su S3) utilizzare il seguente comando
dvc remote add -d myremote s3://<bucket>/<key>Dove s3:// rappresenta l'indirizzo del bucket da usare come remote (si da per scontato che le autorizzazioni siano state fornite separatamente).
L'inizializzazione crea una cartella da aggiungere al repository (contenente eventuali configurazioni remote effettuate nel passaggio precedente)
git add .dvc/config .dvc/.gitignore .dvcignore
git commit -m "prima inizializzazione DVC"
git pushPer aggiungere un dataset al repository DVC occorre prima rimuovere il dato stesso dal repo git utilizzando il comando:
git rm data/raw_data.csv
git commit -m "rimozione dato da git"
git pushSeguito da:
dvc add data/raw_data.csvIl comando crea un file raw_data.csv.dvc da aggiungere al repo git in sostituzione al file originale
git add data/raw_data.csv.dvc
git commit -m "aggiunto primo dato su DVC"
git pushPer creare una pipeline DVC creare il file dvc.yaml all'interno della directory principale del repo e copiare il seguente contenuto
stages:
prepare:
cmd: python3 data/data_preparation.py
deps:
- data/data_preparation.py
- data/raw_data.csv
params:
- prepare.test_size
- prepare.undersampling
- prepare.val_size
outs:
- holdout.csv
- train.csv
- val.csv
train:
cmd: python3 model/model_training.py
deps:
- model/model_training.py
- train.csv
- val.csv
params:
- train.criterion
- train.max_depth
- train.min_sample_leaf
- train.n_estimators
outs:
- metrics.json
- model.pkl
test:
cmd: python3 -m pytest
deps:
- model.pkl
- holdout.csv
- test/test_data_and_model.py
metrics:
- rocauc.json:
cache: true
outs:
- prc.json
plots:
- Precision-Recall:
template: simple
x: recall
y:
prc.json: precisionLa pipeline potra' essere riprodotta utilizzando il comando
dvc reproLe metriche e i plot possono essere collezionati utilizzando i seguenti comandi
dvc metrics show
dvc plots showPer creare una GitHub action che faccia girare la pipeline ad ogni push sul repository, creare il seguente file (DVC.yaml) all'interno della cartella .github/workflows
name: DVC
on: [push]
jobs:
dvc_repro:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Configure AWS credentials
uses: aws-actions/configure-aws-credentials@v1
with:
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
aws-region: eu-central-1
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install -r requirements.txt
pip install -e .
- name: DVC
run: |
dvc pull
dvc reproN.B. Nel file sono specificati i secrets contenenti le credenziali di accesso S3 da aggiungere a livello di repository.