- BrainTools - https://www.braintools.ru -

Как превратить хаотичный ML-проект в систему: пошаговый гайд по DVC + GitHub Actions

Если ваш эксперимент нельзя воспроизвести командой git checkout && dvc pull, а model_final_v2_new.pth – норма, у вас проблема с ML-инженерией.

Дело в воспроизводимости, которую вы теряете уже сегодня. Никакой сложной инфраструктуры (всего два инструмента).

Что нужно: DVC для контроля версий данных и моделей +  GitHub Actions для автоматизации. В связке они дадут вам полноценный ML-пайплайн бесплатно и за один вечер :)

⠀⠀

Почему это важно СЕЙЧАС? (даже для сольного проекта)?

Проблема без пайплайна

Решение с DVC + GitHub Actions

Вчера все работало

Воспроизводимость: git checkout commit_hash && dvc pull && dvc reproгарантирует тот же результат

Не знаю, какая модель лучше

DVC отслеживает метрики для каждого эксперимента. Сравнивайте через dvc metrics diff

Как запустить retrain?

Пуш в репу = автоматический запуск обучения [1]. Или триггер по расписанию (cron в Actions).

Коллега не может повторить мои результаты

Репозиторий самодостаточен. README.mdсводится к клонируй и запусти dvc pull && dvc repro

Гигабайты данных в гите

Данные и модели – в S3/Google Drive/Yandex Disk, в гите только лёгкие .dvc-ссылки

Как превратить хаотичный ML-проект в систему: пошаговый гайд по DVC + GitHub Actions - 1

Именно поэтому контроль версий для этапа подготовки данныхоснова.

DVC гарантирует, что ваша уборка (preprocessing) станет воспроизводимым и отслеживаемым этапом, а не одноразовым ритуалом, результаты которого нельзя повторить.

Как превратить хаотичный ML-проект в систему: пошаговый гайд по DVC + GitHub Actions - 2

⠀⠀⠀⠀⠀⠀⠀⠀

Быстрый старт: 5 шагов к вашему первому пайплайну

Щаг 0: Установка

pip install dvc
# Для хранилища выберите одно:
dvc remote add -d myremote s3://mybucket/path  # Или gdrive://, или ssh://

⠀⠀⠀

Шаг 1: Структура проекта

your-ml-project/
├── data/                    # Файлы .dvc (ссылки на данные)
│   ├── raw.dvc
│   └── processed.dvc
├── src/                     # Исходный код
│   ├── prepare.py
│   └── train.py
├── dvc.yaml                 # Описание пайплайна
├── dvc.lock                 # Автоматически (не коммитить!)
├── params.yaml              # Гиперпараметры
├── requirements.txt         # Зависимости
└── .github/workflows/       # Автоматизация GitHub Actions
    └── run-pipeline.yml

Назначение ключевых файлов:

Файл/Папка

Назначение

Ключевая роль

data/*.dvc

Ссылки на данные в S3/Google Drive

Хранение данных вне git

dvc.yaml

Описание этапов пайплайна

Ядро воспроизводимости

params.yaml

Гиперпараметры моделей

Централизованное управление экспериментами

.github/workflows/

Конфигурация CI/CD

Автоматизация обучения

⠀⠀⠀

Шаг 2: dvc.yaml – сердце пайплайна

name: ML Pipeline
on: [push]
jobs:
  run:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - uses: actions/setup-python@v4
      
      - name: Install DVC & deps
        run: |
          pip install dvc
          pip install -r requirements.txt
          
      - name: Configure DVC remote
        env:
          AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
          AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
        run: dvc remote modify myremote access_key_id $AWS_ACCESS_KEY_ID secret_access_key $AWS_SECRET_ACCESS_KEY
      
      - name: Pull data & run pipeline
        run: |
          dvc pull
          dvc repro
          
      - name: Upload model as artifact
        uses: actions/upload-artifact@v3
        with:
          name: model
          path: models/

⠀⠀⠀⠀

Шаг 3: params.yaml – контроль параметров

train:
  learning_rate: 0.001
  epochs: 100

⠀⠀⠀⠀⠀⠀

Шаг 4: Запуск локально

dvc repro  # Запускает весь пайплайн, пропуская этапы, если ничего не изменилось
dvc metrics show  # Показывает метрики

⠀⠀⠀

Шаг 5: Автоматизация через GitHub Actions (.github/workflows/run-pipeline.yml)

name: ML Pipeline
on: [push]
jobs:
  run:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - uses: actions/setup-python@v4
      
      - name: Install DVC & deps
        run: |
          pip install dvc
          pip install -r requirements.txt
          
      - name: Configure DVC remote
        env:
          AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
          AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
        run: dvc remote modify myremote access_key_id $AWS_ACCESS_KEY_ID secret_access_key $AWS_SECRET_ACCESS_KEY
      
      - name: Pull data & run pipeline
        run: |
          dvc pull
          dvc repro
          
      - name: Upload model as artifact
        uses: actions/upload-artifact@v3
        with:
          name: model
          path: models/

Важный момент безопасности: Ключи храните в Secrets репозитория (Settings > Secrets and variables > Actions). Код выше использует ${{ secrets.YOUR_SECRET }}.

⠀⠀⠀⠀

Как превратить хаотичный ML-проект в систему: пошаговый гайд по DVC + GitHub Actions - 3

Стоимость: 0 рублей (для старта)

  • GitHub Actions: 2000 минут/мес бесплатно. Наш пайплайн занимает ~5-10 минут на запуск. Хватит на 200-400 запусков.

  • DVC: бесплатен и открыт.

  • Хранилище данных: 10-50 ГБ на Яндекс.Облаке/S3 Backblaze стоят копейки (часто < 1$/мес).

Пайплайн – про профессионализм, воспроизводимость и твое душевное спокойствие.

⠀⠀⠀⠀⠀

P.S. Какой этап в вашем workflow сейчас вызывает больше всего боли [2]?

  1. Управление версиями данных

  2. Воспроизведение экспериментов

  3. Автоматическое тестирование/переобучение

  4. Деплой моделей

⠀⠀⠀

Пишите в комментариях – соберу для самых популярных проблем конкретные гайды и примеры кода.

Автор: Up4Soft

Источник [3]


Сайт-источник BrainTools: https://www.braintools.ru

Путь до страницы источника: https://www.braintools.ru/article/22740

URLs in this post:

[1] обучения: http://www.braintools.ru/article/5125

[2] боли: http://www.braintools.ru/article/9901

[3] Источник: https://habr.com/ru/articles/973268/?utm_campaign=973268&utm_source=habrahabr&utm_medium=rss

www.BrainTools.ru

Rambler's Top100