那个"意大利面条式"的训练流程
2026年初,我们团队的一个训练流程是一个Python脚本,2500行代码。包含了数据加载、特征工程、模型训练、评估、模型保存——所有步骤都写在一个脚本里。
每次修改一个特征,需要重新跑整个脚本(4小时)。如果中间出错,从零开始。这个脚本被团队称为"意大利面条"。
三个月后,我们把它重构为Pipeline。每个步骤独立,可并行,可缓存,可重试。训练时间从4小时降到45分钟。
金句:如果你的训练流程是一个脚本,你还没有进入MLOps。Pipeline是MLOps的"入门券"。
三大Pipeline编排工具对比
Kubeflow Pipelines: ML原生,Kubernetes原生。专为ML设计,支持GPU调度、缓存、可视化Pipeline DAG。优点: ML特性丰富。缺点: 依赖Kubernetes,学习曲线陡峭。
Airflow: 通用工作流调度。成熟稳定,社区最大,支持丰富的传感器和Hook。优点: 生态丰富。缺点: 不是ML原生,GPU调度需要额外配置。
Argo Workflows: Kubernetes原生,轻量级。支持复杂工作流(DAG、循环、条件)。优点: 轻量级,纯Kubernetes原生。缺点: ML特有功能需自行集成。
2026年Pipeline编排选型决策树
你的团队用Kubernetes吗?→ 是 → 你的Pipeline主要是ML训练吗?→ 是 → 用Kubeflow Pipelines。→ 否 → 用Argo Workflows。→ 否 → 用Airflow(或Prefect)。
Pipeline设计最佳实践
原则一:步骤原子化。 每个步骤只做一件事。原则二:输入输出明确。 每个步骤的输入和输出是"文件路径",而不是内存中的变量。原则三:缓存中间结果。 如果数据没变,就跳过特征工程;如果特征没变,就跳过训练。原则四:失败可重试。 训练失败后,从最近的checkpoint恢复。原则五:Pipeline即代码。 Pipeline定义应该和代码一起版本化(Git)。
结论:Pipeline是MLOps的"骨架"。 没有Pipeline,你的ML工作流就是"手工艺术品"——独一无二,但无法规模化。有了Pipeline,你才有了"ML工厂"。