Как превратить хаотичный ML-проект в систему: пошаговый гайд по DVC + GitHub Actions. data science.. data science. DevOps.. data science. DevOps. dvc.. data science. DevOps. dvc. github actions.. data science. DevOps. dvc. github actions. ml.. data science. DevOps. dvc. github actions. ml. mlops.. data science. DevOps. dvc. github actions. ml. mlops. python.. data science. DevOps. dvc. github actions. ml. mlops. python. базы данных.. data science. DevOps. dvc. github actions. ml. mlops. python. базы данных. воспроизводимость.. data science. DevOps. dvc. github actions. ml. mlops. python. базы данных. воспроизводимость. Машинное обучение.

Если ваш эксперимент нельзя воспроизвести командой 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?

Пуш в репу = автоматический запуск обучения. Или триггер по расписанию (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 сейчас вызывает больше всего боли?

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

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

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

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

⠀⠀⠀

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

Автор: Up4Soft

Источник

Rambler's Top100