Data Version Control (DVC) — это инструмент, который приносит практики Git и CI/CD в мир данных и машинного обучения, решая проблемы воспроизводимости экспериментов и управления большими файлами. За час можно пройти путь от нуля до работающего конвейера, который версионирует данные, метрики и модели. Этот кейс-инструкция проведет вас через практические шаги по настройке DVC для типичного ML-проекта, интегрируя его с Git и удаленным хранилищем.
Шаг 1: Установка и инициализация (5 минут). Убедитесь, что у вас установлены Git и Python. Установите DVC через pip: `pip install dvc`. Для этого кейса мы будем использовать удаленное хранилище на Google Drive (как бесплатный и доступный вариант), но DVC также поддерживает S3, Azure Blob, Google Cloud Storage, SSH и другие. Создайте новую директорию для проекта и инициализируйте Git и DVC: `git init` и `dvc init`. Команда `dvc init` создаст конфигурационные файлы `.dvc/` и `.dvcignore`, которые нужно добавить в Git: `git add .dvc .dvcignore` и `git commit -m "Initialize DVC"`.
Шаг 2: Настройка удаленного хранилища для данных (10 минут). Теперь нужно определить, где будут храниться версии больших файлов (датасеты, модели). В корне проекта выполните команду для добавления удаленного хранилища. Для Google Drive: сначала создайте папку на вашем Google Диске, затем откройте ее в браузере и скопируйте часть URL, которая является уникальным ID папки (например, `https://drive.google.com/drive/folders/1q2w3e4r5t6y...`). Выполните: `dvc remote add -d myremote gdrive://[ID_папки]`. Флаг `-d` устанавливает это хранилище как используемое по умолчанию. Проверьте конфигурацию: `dvc remote list`. Теперь большие файлы будут отправляться в эту папку, а в Git будут коммититься только маленькие `.dvc`-файлы (указатели на данные).
Шаг 3: Добавление данных под версионный контроль (10 минут). Предположим, у вас есть папка `data/` с обучающим датасетом `train.csv`. Чтобы добавить ее под контроль DVC, выполните: `dvc add data/train.csv`. DVC создаст файл `data/train.csv.dvc` — это текстовый файл, содержащий хэш данных. Сам `train.csv` будет добавлен в `.gitignore`. Теперь нужно закоммитить метаданные в Git и отправить сами данные в удаленное хранилище: `git add data/train.csv.dvc .gitignore` и `git commit -m "Add training dataset"`. Затем отправьте данные: `dvc push`. Проверьте, что файл появился в вашей папке на Google Диске.
Шаг 4: Создание воспроизводимого конвейера (пайплайна) (20 минут). Сила DVC раскрывается в возможности описывать этапы обработки данных, обучения и оценки как конвейер. Создайте простой пайплайн. Сначала определите этапы в файле `dvc.yaml`. Пример структуры:
```
stages:
prepare:
cmd: python src/prepare.py data/train.csv data/prepared
deps:
- src/prepare.py
- data/train.csv
outs:
- data/prepared
train:
cmd: python src/train.py data/prepared model.pkl
deps:
- src/train.py
- data/prepared
outs:
- model.pkl
metrics:
- metrics.json:
cache: false
evaluate:
cmd: python src/evaluate.py model.pkl data/prepared metrics.json
deps:
- src/evaluate.py
- model.pkl
- data/prepared
metrics:
- metrics.json:
cache: false
```
Каждая стадия (`prepare`, `train`, `evaluate`) имеет команду (`cmd`), зависимости (`deps` — файлы, при изменении которых стадия должна перезапуститься) и выходы (`outs` — файлы, которые создаются и кэшируются DVC). Параметр `metrics` указывает файлы с метриками (например, accuracy), которые DVC будет отслеживать.
Создайте простые скрипты Python в папке `src/`, которые будут выполнять эти операции (например, `prepare.py` — чтение и очистка данных, `train.py` — обучение модели, `evaluate.py` — расчет метрик). Теперь запустите весь конвейер: `dvc repro`. DVC проверит, изменились ли зависимости с последнего запуска, и выполнит только необходимые стадии. Все выходные файлы (`data/prepared`, `model.pkl`) автоматически попадают под контроль DVC (как если бы вы выполнили `dvc add` для них).
Шаг 5: Ведение экспериментов и сравнение метрик (10 минут). После запуска `dvc repro` у вас есть результаты. Посмотрите на метрики: `dvc metrics show`. Теперь представьте, что вы изменили гиперпараметр в `train.py`. Внесите изменение, затем снова запустите `dvc repro`. Поскольку зависимость `src/train.py` изменилась, стадии `train` и `evaluate` будут выполнены заново, создав новую версию модели и метрик. Теперь сравните результаты двух экспериментов: `dvc metrics diff`. Эта команда покажет, как изменились значения в `metrics.json` между текущим состоянием и предыдущим коммитом Git. Это мощный способ отслеживать прогресс экспериментов.
Шаг 6: Фиксация состояния и совместная работа (5 минут). Чтобы сохранить состояние всего эксперимента (код, указатели на данные, метрики, определение конвейера), нужно закоммитить изменения в Git и отправить данные в удаленное хранилище: `git add .` (это добавит `dvc.yaml`, `dvc.lock` — файл с фиксацией состояний пайплайна, обновленные `.dvc`-файлы), `git commit -m "Experiment: new hyperparameter"` и затем `dvc push`. Теперь ваш коллега может склонировать Git-репозиторий, получить данные командой `dvc pull` и полностью воспроизвести ваш эксперимент, включая все промежуточные артефакты, просто выполнив `dvc repro`. Гарантирована полная воспроизводимость.
За один час вы настроили систему, которая не просто хранит данные, а управляет полным жизненным циклом ML-эксперимента: от сырых данных до метрик, с автоматическим отслеживанием изменений и возможностью легкого сравнения итераций. DVC становится единым источником истины для вашего ML-проекта.
Кейс DVC: пошаговая инструкция за 1 час
Практическая пошаговая инструкция по настройке Data Version Control (DVC) для управления данными, пайплайнами и экспериментами машинного обучения за один час. Интеграция с Git и удаленным хранилищем.
145
1
Комментарии (13)