MLOps Path

3.7.2 · блок 3

Argo Workflows: пайплайны в Kubernetes

Argo Workflows: пайплайны в Kubernetes

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

Jenkins (модуль 3.2) — CI: сборка образа, тесты, push в registry. Argo Workflowsоркестрация batch/job внутри Kubernetes: обучение, ETL фичей, batch inference, eval на holdout. Каждый шаг — Pod; DAG описывает зависимости; артефакты — в MinIO.

Если вы писали Python-скрипты последовательно (train.pyeval.py) — Argo Workflows превращает это в воспроизводимый граф с retry, параллелизмом и UI истории запусков.

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

Workflow. CRD Workflow — один запуск пайплайна (как один Jenkins build).

WorkflowTemplate. Переиспользуемый шаблон DAG — как Jenkinsfile, но YAML.

Steps и DAG.

Container template. Каждый шаг = контейнер с command, image, resources:


apiVersion: argoproj.io/v1alpha1
kind: Workflow
metadata:
  generateName: train-scorer-
spec:
  entrypoint: pipeline
  templates:
    - name: pipeline
      dag:
        tasks:
          - name: train
            template: train-step
          - name: eval
            dependencies: [train]
            template: eval-step
    - name: train-step
      container:
        image: registry/ml/trainer:12
        command: [python, train.py]
        env:
          - name: OUTPUT_URI
            value: s3://ml-models/scorer/v45/
        resources:
          limits:
            nvidia.com/gpu: 1
    - name: eval-step
      container:
        image: registry/ml/trainer:12
        command: [python, eval.py]

Артефакты и parameters. Input/output файлы через S3 (MinIO); parameters передают гиперпараметры между шагами без копирования больших blob в etcd.

Retry и timeout. retryStrategy на flaky шагах (spot GPU node). activeDeadlineSeconds — kill зависшего обучения.

CronWorkflow. Расписание: nightly retrain, weekly data validation — как cron в Linux, но Workflow в K8s.

Отличие от Argo CD. Имена похожи, проекты разные:

| | Argo CD | Argo Workflows |

|---|---------|----------------|

| Задача | Sync Git → cluster state | Run batch DAG |

| Единица | Application | Workflow |

| Типичный ML | Deploy inference | Train / ETL / batch predict |

Resource awareness. Workflow scheduler учитывает GPU requests — не запустит 10 train Pod'ов на 2 GPU node без очереди (зависит от кластера и quotas).

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

Запуск из CLI:


argo submit -n ml-train workflows/train-scorer.yaml
argo list -n ml-train
argo logs -n ml-train @latest

UI. Граф шагов: зелёный/красный, логи каждого Pod, duration — удобнее grep по Jenkins console для 20 шагов.

Интеграция с GitOps. WorkflowTemplate в Git; запуск через CI webhook после merge dataset или по CronWorkflow. Образ trainer тот же, что собрал Jenkins.

PVC и Workflows. Шаг train монтирует Longhorn PVC для checkpoint; финальный шаг upload в MinIO и освобождает том.

Типичные ошибки.

Когда НЕ нужен Argo Workflows. Простой одноразовый Job (kubectl create job) — достаточно. Workflows окупаются при DAG ≥ 3 шагов, retry, cron, shared templates.

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

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

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