MLOps Path

4.3.4 · блок 4

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

От 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. Типовые вызовы:

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.

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

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

Открыть интерактивную версию