Отчет по заданию DVC
Это задание размещено в отдельной ветке “dvc” основного репозитория.
Пайплайн подготовки данных и обучения модели
Реализован пайплайн в dvc.yaml для воспроизведения цепочки машинного обучения с версионированием данных, моделей, экспериментов и артефактов. Пайплан включает следующие стадии (шаги):
- Подготовка сырых данных (срез из датасета)
- Разделение данных на тренировочную и тестовую выборки
- Векторизация TF/IDF для обеих выборок
- Тренировка ML-модели логистической регрессии
- Предсказание результатов на тестовой выборке
Для каждого шага пайплайна запускается отдельный Python-скрипт, реализующий соответствующий функционал. Сформированные данные и/или модели передаются на следующий шаг. И далее по цепочке до завершающего формирования артефактов ML-модели.
Подготовка хранилища и первичных данных
В проекте используются папки datad/
и srcd/
для данных и скриптов, соответственно.
Подготовка хранилища DVC:
dvc init
dvc remote add -d --project gdrive gdrive://<URL>
Скачивание сырого датасета:
kaggle datasets download -d kritanjalijain/amazon-reviews -p datad/
gzip datad/train.csv
Отправка датасета в удаленное хранилище DVC:
dvc add datad/train.csv.gz
dvc push
Подготовка и запуск пайплайна
Стадии (stage) первоначально добавлялись поочередно в dvc.yaml, после чего пайплайн запускался, для проверки работоспособности.
dvc repro
или
dvc repro <STAGE_NAME>
По выполнении стадии добавлялись изменишиеся файлы в git (как рекомендует DVC):
git add dvc.lock 'datad\<SUB_FOLDER>\.gitignore'
git add dvc.yaml
(опционально)
Под <SUB_FOLDER>
в текущем проекте подразумеваются подпапки datad\features
, datad\processed
, datad\prepared
, куда сохранялись результаты генерации в процессе выполнения пайплайна.
Затем новые и/или обновленные данные отправлялись в удаленное хранилище:
dvc push
И, наконец, полный запуск пайплайна:
dvc repro
или
dvc repro --force
(принудительно)
Запуск пайплайна в CI/CD
Развертывание пайплайна в CI/CD реализовано в dvc-ci.yml. Типичный сценарий развертывания включает следующие шаги:
- Предподготовка: Формирование ключей/секретов для доступа к выбранному облачному хранилищу
- Развертывание среды с DVC и пакетами машинного обучения, нужными для Python-скриптов
- Авторизация в облачном хранилище с использованием ключей/секретов
- Синхронизация данных с хранилищем (если оно существует) или скачивание сырого датасета из первоисточника - на выбор, в зависимости от задачи
- Собственно запуск пайплайна машинного обучения
- Сохранение метрик и артефактов ML-модели в область артефактов Gitlab
Воспроизводимость пайплайна
Решена залача воспроизводимости пайплайна как локально, так и в CI/CD. Файлы dvc.lock
сохранены в артефактах.
- Первый пайплайн в CI/CD по ссылке, скачать первый dvc.lock
- Второй пайплайн в CI/CD по ссылке, скачать второй dvc.lock
Файлы dvc.lock
идентичны, хэши совпадают.
Результат предсказания модели наглядно
Выходной json с метриками:
{
"1": {
"precision": 0.80045,
"recall": 0.80182,
"f1-score": 0.80113,
"support": 1761.0
},
"2": {
"precision": 0.84392,
"recall": 0.84279,
"f1-score": 0.84335,
"support": 2239.0
},
"accuracy": 0.82475,
"macro avg": {
"precision": 0.82219,
"recall": 0.8223,
"f1-score": 0.82224,
"support": 4000.0
},
"weighted avg": {
"precision": 0.82478,
"recall": 0.82475,
"f1-score": 0.82477,
"support": 4000.0
}
}