Если ваш эксперимент нельзя воспроизвести командой git checkout && dvc pull, а model_final_v2_new.pth - норма, у вас проблема с ML-инженерией.
Дело в воспроизводимости, которую вы теряете уже сегодня. Никакой сложной инфраструктуры (всего два инструмента).
Что нужно: DVC для контроля версий данных и моделей + GitHub Actions для автоматизации. В связке они дадут вам полноценный ML-пайплайн бесплатно и за один вечер :-)
Почему это важно СЕЙЧАС? (даже для сольного проекта)?
Проблема без пайплайна |
Решение с DVC + GitHub Actions |
Вчера все работало |
Воспроизводимость: |
Не знаю, какая модель лучше |
DVC отслеживает метрики для каждого эксперимента. Сравнивайте через |
Как запустить retrain? |
Пуш в репу = автоматический запуск обучения. Или триггер по расписанию (cron в Actions). |
Коллега не может повторить мои результаты |
Репозиторий самодостаточен. |
Гигабайты данных в гите |
Данные и модели - в S3/Google Drive/Yandex Disk, в гите только лёгкие |

Именно поэтому контроль версий для этапа подготовки данных - основа.
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 сейчас вызывает больше всего боли?
Управление версиями данных
Воспроизведение экспериментов
Автоматическое тестирование/переобучение
Деплой моделей
Пишите в комментариях - соберу для самых популярных проблем конкретные гайды и примеры кода.