1.1 传统 AI 开发的工程化困境:环境地狱、资源孤岛与不可复现 一个算法工程师花了三周在 notebook 里训出的模型,换台机器就跑不起来;一份训练脚本在作者手里准确率 92%,交给同事只能复现到 85%——这不是段子,而是传统 AI 开发的日常。 1.1.1 从「demo 跑通」到「生产上线」的鸿沟 在学术研究阶段,衡量一个 AI 项目的成功标志往往是「模型在公开数据集上跑出了 SOTA(State-of-the-Art)」。但进入工业界后,成功标志变成了「模型稳定地服务于线上流量、持续产生业务价值」。这两者之间存在一条巨大的工程鸿沟。
一个算法工程师花了三周在 notebook 里训出的模型,换台机器就跑不起来;一份训练脚本在作者手里准确率 92%,交给同事只能复现到 85%——这不是段子,而是传统 AI 开发的日常。
在学术研究阶段,衡量一个 AI 项目的成功标志往往是「模型在公开数据集上跑出了 SOTA(State-of-the-Art)」。但进入工业界后,成功标志变成了「模型稳定地服务于线上流量、持续产生业务价值」。这两者之间存在一条巨大的工程鸿沟。
研究阶段的典型工作流是这样的:算法工程师在自己的工作站上打开 Jupyter Notebook,安装一堆依赖,下载一份数据集,写一段训练脚本,跑出模型,把指标填进论文。整个过程是单机、手工、不可复现、无版本管理的。这种模式在 demo 阶段没有问题,但一旦要把模型推到生产环境,立刻暴露出五大工程化困境:
💡 判读:算法团队的痛苦往往不在「模型不够准」,而在「同一个模型换个人、换台机器、换个时间点,就再也跑不出来」。这是工程化问题,而非算法问题。
深度学习的依赖栈异常复杂:Python 版本、CUDA 版本、cuDNN 版本、PyTorch/TensorFlow 版本、各种 pip 包之间存在着精密但脆弱的版本耦合关系。一个看似无害的 pip install 可能引发连锁的版本冲突。
更隐蔽的问题是依赖漂移(Dependency Drift):今天安装的 transformers==4.35.0,三个月后在新机器上重新装时,由于上游包的更新,传递依赖可能已经发生变化,导致「同一份 requirements.txt 跑出不同的结果」。
| 表现 | 传统模式 | 后果 |
|---|---|---|
| Python 版本 | 系统 Python,不同项目冲突 | 新项目装不上包 |
| CUDA/cuDNN | 宿主机裸装,全局唯一 | 多模型无法共存 |
| 深度学习框架 | pip 全局安装 | 版本升级破坏旧模型 |
| 团队协作 | 口口相传「用我的环境」 | 新人入职一周在配环境 |
环境地狱的直接后果是:模型的「出生环境」一旦丢失,模型本身就接近报废。
传统模式下,GPU 往往以「物理机 + SSH 共享」的方式分配。每个团队或个人独占一两张 GPU,形成了大量资源孤岛:
⚠️ 现实代价:以一张 A100 按 2 万美元购置、3 年折旧计算,每小时折旧约 0.8 美元。若利用率只有 30%,等于每小时有 0.56 美元在被浪费。一个 100 张卡的集群,一年浪费可达 50 万美元。GPU 是 AI 团队最贵的资产,也是最容易浪费的资产。
AI 项目的「版本」比传统软件复杂得多。一个可复现的模型产物,至少需要同时记录四个维度的版本:
传统模式下,这四个维度往往是部分记录、零散存放的:代码在 Git 里,数据在某个共享存储里,环境在工程师的脑子里,超参数写在 notebook 的某个 cell 里。结果就是著名的可复现性危机(Reproducibility Crisis):
模型在训练阶段用的 Python + PyTorch,到了线上服务阶段往往要被重写成 C++、ONNX、TensorRT 等推理优化格式。这种训练-服务割裂(Training-Serving Skew) 带来两类问题:
更深层的问题是:训练与服务是两个完全独立的系统,由不同团队维护,用不同的部署节奏,跑在不同的机器上。模型从训练侧到服务侧的「移交」是一个手工、易错、缓慢的过程。
传统 AI 系统的扩缩容几乎是「手工活」:
这种「不可弹性、不可扩展」的特性,让 AI 系统在面对突发流量(如产品爆红、营销活动)和算力需求波动(如临时起一个大模型训练)时显得极其笨拙。
表面上看,这五大困境五花八门,但它们有一个共同的根因:传统 AI 开发缺乏统一的工程化抽象。每个团队、每个项目都在重复造轮子,每个环境、每次部署都是一次性手工产物。下表把五大困境、其根因与对应解法做一个总览:
| 困境 | 根因 | 云原生解法 | 对应章节 |
|---|---|---|---|
| 环境地獄 | 环境无封装、依赖漂移 | 容器镜像(不可变基础设施) | 1.2、第 2 章 |
| GPU 孤岛 | 资源独占、无调度 | GPU 共享 + 调度器 | 第 2-3 章 |
| 版本混乱 | 四维版本无统一治理 | 元数据中枢 + 模型注册 | 第 4 章 |
| 训练-服务割裂 | 两套系统、两套逻辑 | 统一 MLOps 闭环 | 第 4-5 章 |
| 扩展难 | 无弹性、无编排 | Operator + 流水线 + 自动扩缩容 | 第 5、8 章 |
💡 判读:这五条解法——容器、调度、元数据、闭环、编排——正是云原生 AI 的核心组成。下一节我们将正式定义云原生 AI,并逐一展开它的五大特性如何对症下药。
下一节《1.2 云原生 AI 的定义与核心价值》将正式定义云原生 AI,并讲清容器化、声明式、不可变基础设施、自动化、弹性五大特性如何逐一化解这些痛点。