Sobes.tech
Назад к вопросам
Middle — Senior
8

Что такое Airflow / Prefect / Dagster в ML-пайплайнах?

Компании, где спрашивали
IGaming
PromtBox
AstonAston

Ответ от нейросети

sobes.tech AI

Что хотят услышать интервьюеры:

Это orchestration-инструменты для управления пайплайнами: запускать шаги по порядку, по расписанию или по событиям, обрабатывать зависимости, ретраи и мониторинг. В ML они нужны, чтобы обучение, валидация, деплой и переобучение выполнялись воспроизводимо и автоматически. Airflow чаще ассоциируется с классическим batch workflow, Prefect и Dagster — с более удобной разработкой, наблюдаемостью и типизацией пайплайнов.

Определение:

Airflow, Prefect и Dagster — это системы оркестрации рабочих процессов, которые помогают описывать и запускать сложные пайплайны как набор связанных задач.

В ML-пайплайнах они обычно решают такие задачи:

  • подготовка данных;
  • обучение модели;
  • оценка качества;
  • регистрация артефактов;
  • деплой;
  • периодический retraining.

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

Пример использования:

Например, раз в ночь запускается пайплайн:

  1. выгрузить данные из хранилища;
  2. почистить и агрегировать признаки;
  3. обучить модель;
  4. посчитать метрики;
  5. если качество выше порога — сохранить модель и отправить в прод.
# Псевдокод, общий для понимания orchestration в ML

def extract_data():
    return "raw_data"

def transform_data(raw_data):
    return "features"

def train_model(features):
    return "model"

def evaluate_model(model):
    return {"accuracy": 0.93}

def save_model(model):
    print("model saved")

raw = extract_data()
features = transform_data(raw)
model = train_model(features)
metrics = evaluate_model(model)

if metrics["accuracy"] > 0.9:
    save_model(model)

В реальной системе Airflow/Prefect/Dagster управляют не самими вычислениями, а тем, когда и в каком порядке вызывать такие шаги, что делать при сбое и как логировать результат.

Пояснение кода:

Код здесь иллюстративный, потому что смысл Airflow/Prefect/Dagster — не в алгоритме обучения, а в управлении зависимостями между этапами.

Разбор по шагам:

  1. extract_data() получает исходные данные.
  2. transform_data() превращает их в признаки.
  3. train_model() обучает модель.
  4. evaluate_model() считает метрики качества.
  5. Если метрика проходит порог, модель сохраняется.

В оркестраторе каждый такой шаг обычно оформляется как отдельная task/node/op, а связи между ними задают DAG или pipeline. При сбое одного шага система может сделать retry, зафиксировать ошибку и не запускать зависимые шаги дальше.

Ключевые моменты:

  • Это инструменты оркестрации, а не ML-фреймворки и не сами вычислительные движки.
  • Они нужны для воспроизводимых, автоматизированных ML-процессов end-to-end.
  • Типичные функции: зависимости, расписание, retries, логирование, мониторинг, артефакты.
  • Airflow исторически силён в batch-оркестрации и SQL/ETL-сценариях.
  • Prefect и Dagster часто выбирают за более удобный developer experience и лучшую наблюдаемость пайплайнов.
  • В ML их применяют для обучения, scoring, валидации, деплоя и переобучения моделей.