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

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

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

⠀⠀⠀⠀⠀⠀⠀⠀

Быстрый старт: 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 }}.

⠀⠀⠀⠀

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

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

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

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

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

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

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

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

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

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

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

Комментарии (0)