04 · MLOps-цикл и реестры4.3–4.4 · ClearML, MMS и E2E-контур4.3.4сложный

От ClearML к MMS: склейка эксперимента и prod

Зачем это нужно

ClearML и MMS решают разные задачи, но prod-релиз требует надёжной связи между ними: task_id → artifact → MMS version → Docker image → Helm values. Разрыв на любом шаге — «в prod не та модель» или «не откатить». Этот урок — практическая склейка для корпоративного контура курса.

Основные идеи

Сквозной идентификатор lineage.

ClearML Task abc118 → artifact model.joblib (hash sha256:...) → MMS churn-lgbm v1.3.0 (clearml_task_id=abc118) → Jenkins build image churn-serving:abc118-77 → deploy-repo values image.tag=abc118-77 → Helm release revision 42

Каждый hop логируется; rollback идёт в обратном порядке.

Promotion workflow (автоматизируемый minimum).

  1. DS помечает run tag promotion-candidate в ClearML.

  2. Webhook / Jenkins job: валидация (metrics > threshold, required artifacts present).

  3. Создание или update записи MMS (Draft) с auto-fill из ClearML API.

  4. Manual approve в MMS UI → status Approved-Staging.

  5. CI: download artifact → build inference image → push registry → update MMS deployed_image_tag.

  6. Bot MR в deploy-repo → Argo CD staging.

  7. После checks → Promote Production в MMS → MR prod values.

ClearML API для MLE. Типовые вызовы:

  • Task.get_task(task_id) — metadata, parameters.

  • OutputModel / artifacts download URI.

  • Export metrics для gate: val/f1 >= 0.82.

Immutable promotion. Одна task → одна MMS version. Re-promote того же artifact без новой version — запрещено policy (audit).

Конфликт версий. Если два candidate одновременно — MMS serializes: только один Approved-Staging challenger; второй ждёт или идёт в другой experiment name.

Bot vs human. Auto-fill Draft из ClearML — bot; Approve Production — human (или dual control).

Failure handling.

Сбой Действие
Artifact missing in ClearML Block promotion, alert DS
Image build fail MMS stays Staging, no Git MR
Argo sync fail MMS not promoted Prod; rollback image tag

Документация связи. В README сервиса: «Production model всегда из MMS; ClearML task id в /metadata endpoint inference».

Как это выглядит на практике

Jenkins pipeline promote-churn-model (упрощённо):

Stage Действие
Validate Input: CLEARML_TASK_ID; API check metrics
Register POST MMS /models/churn/versions body from ClearML
Wait Manual input: approver clicks Approve in MMS
Build clearml-agent or curl download artifact; docker build
Push registry/churn-serving:${TASK_ID}-${BUILD}
Update MMS PATCH deployed_image_tag
Deploy MR deploy-repo bump tag; Argo sync

Inference pod env:

` env:

  • name: MODEL_VERSION value: "1.3.0"
  • name: CLEARML_TASK_ID value: "abc118" `

/health возвращает version — SRE сверяет с MMS при инциденте.

Урок 4.4.1 соберёт это в полный E2E с Argo Workflows для train.

Что сделать после занятия

  • Нарисуйте sequence diagram: ClearML → Jenkins → MMS → Git → Argo CD.

  • Опишите 3 validation gates перед созданием записи в MMS.

  • Добавьте в учебный сервис endpoint или env с MODEL_VERSION для observability.

Официальные материалы