Зачем это нужно
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).
DS помечает run tag
promotion-candidateв ClearML.Webhook / Jenkins job: валидация (metrics > threshold, required artifacts present).
Создание или update записи MMS (Draft) с auto-fill из ClearML API.
Manual approve в MMS UI → status
Approved-Staging.CI: download artifact → build inference image → push registry → update MMS
deployed_image_tag.Bot MR в deploy-repo → Argo CD staging.
После 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.