MLOps

CI/CD for ML

CI/CD для ML

актуальноТекущий рабочий стандарт

Автоматизация проверок и выката: тесты кода, тесты данных, обучение и релиз модели по одной кнопке.

Ключевые тезисы

  • Тесты для ML — это не только unit-тесты: проверяются схема данных, метрики и контракт модели.
  • Артефакт релиза — образ с кодом инференса плюс ссылка на версию модели.
  • Правило: ни одна модель не попадает в прод в обход пайплайна, даже «срочно».
Тема также относится к главам:Практика MLПродакшен

Подробный разбор

2 подтем — раскройте любую, чтобы увидеть объяснение, формулы, примеры и интерактивные графики.

1

Что проверяется в CI

Три группы тестов.

  • Код: линтеры, типы, unit-тесты препроцессинга и функций признаков.
  • Данные: схема, диапазоны, доля пропусков на фиксированном сэмпле.
  • Модель: обучение на маленьком срезе, проверка контракта входа-выхода, метрика не ниже порога.
def test_contract():
    out = model.predict(sample_batch)
    assert out.shape == (len(sample_batch),)
    assert np.isfinite(out).all() and ((out >= 0) & (out <= 1)).all()

def test_no_regression():
    assert roc_auc_score(y_ref, model.predict(X_ref)) >= 0.82
2

Выкат модели

Отделяем релиз кода от релиза модели.

Код инференса и веса модели должны выкатываться независимо: смена модели не должна требовать пересборки образа, а исправление бага в коде — переобучения.

  • Модель берётся из реестра по явной версии, а не по тегу latest.
  • Канареечный выкат по версии модели с автооткатом по guardrail-метрикам.
  • Каждый релиз фиксирует связку: версия кода + версия модели + версия данных.

Связанные темы

Доставка модели в прод