Войти
← MLOps
12 мин · средне · Урок 5 из 6

MLflow, Airflow и Kubeflow

Как MLflow записывает эксперименты и хранит модели, как оркестратор запускает пайплайн обучения и чем Airflow отличается от Kubeflow Pipelines.

MLflow

MLflow — open source платформа для учёта экспериментов и хранения моделей. Он закрывает две задачи из урока про пайплайн: метаданные запусков и model registry.

MLflow работает как сервер с веб-интерфейсом. Метаданные он хранит в базе данных, например в Postgres. Файлы моделей лежат в отдельном хранилище, например в S3. Локально сервер запускается командой mlflow server.

Run: запись эксперимента

Data scientist добавляет в код обучения несколько строк:

import mlflow
from sklearn.linear_model import LogisticRegression

mlflow.set_tracking_uri("http://mlflow:5000")  # адрес сервера MLflow
mlflow.set_experiment("churn")

with mlflow.start_run():                        # начать запуск
    model = LogisticRegression(C=0.5).fit(X_train, y_train)
    mlflow.log_param("C", 0.5)                  # параметр обучения
    mlflow.log_metric("accuracy", model.score(X_test, y_test))
    mlflow.sklearn.log_model(model, name="model", registered_model_name="churn")

Каждый start_run создаёт run, одну запись об обучении. В run сохраняются параметры, метрики и файл модели. В интерфейсе run видны таблицей, их можно отсортировать по accuracy и сравнить. Двадцать попыток с разными параметрами больше не теряются в notebook.

Model registry в MLflow

Аргумент registered_model_name="churn" кладёт модель в model registry как новую версию модели churn. Дальше версии назначают alias, например champion.

Сервис загружает модель по alias:

model = mlflow.pyfunc.load_model("models:/churn@champion")

Перенёс alias на другую версию, и после перезапуска сервис загрузит новую модель. MLflow умеет и сам поднять HTTP-сервис для модели, это удобно, чтобы быстро проверить её:

mlflow models serve -m "models:/churn@champion" -p 5001

Оркестратор

Шаги пайплайна обучения надо запускать по порядку, по расписанию и с повтором при сбое. Этим занимается оркестратор. Пайплайн обучения запускается не от коммита, а по расписанию или триггеру, и его шаги могут идти часами. Поэтому для него обычно берут не CI-систему, а отдельный оркестратор.

Airflow

Apache Airflow — open source оркестратор задач общего назначения. Пайплайн в нём описывают на Python как DAG (directed acyclic graph), граф задач без циклов. Так выглядит DAG в Airflow 3:

from airflow.sdk import dag, task
import pendulum

@dag(schedule="@weekly", start_date=pendulum.datetime(2026, 1, 1), catchup=False)
def retrain_churn():
    @task
    def extract() -> str: ...          # выгрузить данные, вернуть путь
    @task
    def validate(path: str) -> str: ...
    @task
    def train(path: str) -> None: ...

    train(validate(extract()))         # порядок: extract → validate → train

retrain_churn()

Airflow запускает этот DAG раз в неделю, показывает статус каждой задачи в интерфейсе и повторяет упавшие, если так настроено. Кроме ML, его применяют для регулярных выгрузок данных.

Kubeflow Pipelines

Kubeflow Pipelines — оркестратор пайплайнов для Kubernetes. Шаг пайплайна в нём называется component. По документации Kubeflow каждый запуск component выполняется как отдельный контейнер.

Поэтому у каждого шага свой образ со своими зависимостями и свои ресурсы. Шагу обучения можно выдать GPU, а шагу выгрузки данных немного памяти. Пайплайн описывают на Python через Kubeflow Pipelines SDK.

Другие open source оркестраторы, которые применяют для таких задач: Argo Workflows, Prefect, Dagster.

Что важно запомнить

MLflow записывает каждое обучение как run: параметры, метрики, модель. Model registry в MLflow хранит версии модели, сервис загружает её по alias, например models:/churn@champion.

Оркестратор запускает шаги пайплайна по порядку и расписанию. В Airflow пайплайн описывают как DAG на Python. В Kubeflow Pipelines каждый шаг идёт отдельным контейнером в Kubernetes со своими ресурсами.

Прочитал урок?

Отметь его, и прогресс по треку сдвинется.

Разобрать с ИИ-агентом

Агент объяснит непонятное своими словами и погоняет по вопросам с собеседований. 3490 ₽ разово, доступ навсегда.

Открыть доступ за 3490 ₽

Агенту скажи: используй MCP izi, давай урок mlops-basics-05-mlflow-and-orchestrators