第1章 流水线概述

大家好,欢迎来到这门课。我是你们的老朋友,一个在MLOps和DevOps坑里摸爬滚打了好几年的工程师。今天咱们先不急着敲代码,坐下来聊聊一个根本问题——什么是ML流水线?为什么我们需要它?

1.1 什么是ML流水线?

说白了,ML流水线就是把机器学习从数据到模型再到部署的整个过程,拆成一个个标准化的步骤,然后用自动化的方式串起来。你想想看,以前我们训练一个模型,是不是经常这样:数据预处理写一个脚本,训练写另一个脚本,评估再写一个,部署全靠手动拷贝文件?

嗯,我刚开始带项目时也这么干。结果有一次,数据源换了格式,我忘了更新预处理脚本,模型直接跑飞了。从那以后,我意识到——没有流水线,就是在给自己埋雷。

核心定义: ML流水线是一系列有序、可重复、自动化的步骤集合,涵盖数据采集、特征工程、模型训练、评估、部署和监控。每个步骤都是一个独立组件,可以单独开发、测试和替换。

一个典型的ML流水线包含这些环节:

我个人的习惯是,把每个环节都做成Docker容器,用Kubernetes或Airflow来编排。这样任何一个环节出问题,都能快速定位、单独回滚。

1.2 为什么需要多模型流水线?

你可能会问:一个模型跑得好好的,为什么要搞多模型?

原因很简单——现实世界的问题,很少能用一个模型解决。举个例子,我在做电商推荐系统时,需要同时跑召回模型、排序模型、重排模型、还有价格预测模型。每个模型都有自己的数据依赖、训练周期和部署策略。

如果每个模型都单独搞一套流水线,那运维成本直接爆炸。你想想看,光维护10个模型的训练脚本、10个部署配置、10个监控面板……团队再大也扛不住。

避坑指南: 我曾经在一个项目里,让每个算法工程师自己写部署脚本。结果上线那天,三个模型用了三种不同的框架,端口冲突、依赖打架,折腾了一整晚。后来我强制统一了流水线模板,才把局面稳住。

多模型流水线的核心价值在于:

下面这张图,是我自己画的一个多模型流水线架构,帮你直观理解:

数据源 特征工程 模型A (召回) 模型B (排序) 模型C (重排) 推理服务 监控 & 告警 自动重训练触发 Kafka / S3 / DB 共享特征库 多模型并行训练/部署

1.3 流水线 vs 单体模型

聊完多模型,咱们再对比一下「流水线」和「单体模型」这两种模式。我见过不少团队,一开始图省事,把所有逻辑塞进一个巨大的脚本里——数据清洗、特征提取、模型训练、推理全在一个文件里。这就是典型的单体模型。

对比维度 单体模型 ML流水线
可维护性 改一处可能崩全局 组件独立,改一个不影响其他
可重复性 依赖本地环境,换台机器就炸 容器化+版本控制,任意环境复现
扩展性 加新模型要改主脚本 加一个节点就行,编排自动处理
故障隔离 一个bug拖垮整个流程 单步失败可重试,不影响上下游
部署效率 手动拷贝,容易出错 CI/CD自动构建,一键上线
监控能力 全靠print和日志文件 每个步骤有指标,统一告警
注意: 单体模型在原型验证阶段确实快,但一旦进入生产环境,它就是噩梦。我曾经接手过一个单体模型项目,代码里混杂着训练、推理、甚至还有前端逻辑。想升级一下特征工程,结果把推理接口搞挂了。后来花了整整两周才拆成流水线。

所以我的建议是:原型阶段可以用单体快速验证,但一旦确定要上线,立刻切换到流水线架构。别等到出事了再重构,那时候成本高得多。

嗯,这一章的内容就到这里。我们聊了什么是ML流水线、为什么需要多模型、以及流水线相比单体模型的优势。下一章咱们会动手搭建环境,把理论落地。到时候见。