
1. 先搞清楚AI工程在做什么不然别急着装CUDA我见过太多人一上来就是我要学AI工程然后第一件事就是把CUDA、PyTorch、TensorFlow全装上跑个MNIST手写数字识别输出了98%的准确率觉得自己已经入门了。结果真到了项目里连模型训练完了之后要干嘛都说不清楚。这不是个例而是普遍现象。ai-engineering-from-scratch这个标题我相信不是想让你再学一遍模型训练而是想搞明白一件事从零开始怎么真正拥有把AI模型变成可用产品的能力。模型训练只是其中一环AI工程真正解决的是模型怎么稳定、可靠、低成本地跑在真实业务里的问题。它需要你懂数据、懂训练、懂部署、懂监控、懂回滚还得懂一点业务指标。换句话说AI工程不是一个算法岗位而是一个系统工程岗位。这篇文章就是我按自己的实践经验给想从零起步的人梳理的一条路线。我不打算给你一个三十天精通的承诺只分享我经过实际项目验证过的学习路径、实操步骤和踩坑记录。适合谁看适合那种已经有Python基础、跑过一两段训练代码、但不知道下一步该怎么办的人。也适合已经在做传统后端或数据开发、想往AI工程方向转的人。1.1 AI工程师和算法工程师干的活差别在哪先把概念说清楚。算法工程师的核心任务是把模型的精度做上去他们的战场在数据集、网络结构、损失函数这些地方。而AI工程师的核心任务是让模型在产品里稳定工作战场在数据管道、训练环境、推理服务、监控报警这些地方。我用一个例子来说明。假设要做一个人脸识别门禁系统算法工程师关心的是在公开数据集上我的FaceNet能不能把同一个人脸的余弦相似度算准误识率能不能从1%降到0.5%。AI工程师关心的是摄像头抓拍的照片传到服务器之后图片预处理要多久当并发10台设备同时请求时GPU显存够不够夜间光线差导致识别率下降时系统怎么自动报警模型更新后怎么保证旧版本还能平滑回滚看得出来吗算法工程师做的是让模型更聪明AI工程师做的是让系统更可靠。很多初学者最大的误区就是把这两个角色混在一起然后在模型精度上死磕忽略掉了同样关键的服务稳定性、数据链路、版本管理这些问题。还有一个更实际的区别算法工程师常用Jupyter Notebook干活AI工程师的主要产出是代码库、配置文件和部署脚本。Notebook适合探索但它不是一个工程产品。你没法用一个.ipynb文件去做灰度发布、做A/B测试、做自动回滚。所以从零开始学AI工程第一步不是学新的模型结构而是学会用工程的方式组织代码。1.2 为什么说工程能力才是多数团队的短板我接触过几个中小型团队算法岗的人不乏名校背景模型文件放在网盘里传来传去训练代码在各自电脑里跑没有统一的实验记录没有版本管理。模型在开发机上的精度不错一上测试环境就崩崩完也没人知道是数据不一致还是环境依赖不对。这类情况背后的原因很简单大部分人只学了算法的术没学工程的法。训练一个模型其实门槛已经很低了开源框架把反向传播、优化器这些细节全部封装好调一下参数就能出结果。但要想让模型真正发挥作用你需要管好数据、管好实验、管好服务、管好监控这些恰恰是没有人教、学校里也不怎么讲的部分。你去看招聘网站的AI工程岗位要求一般都写着熟悉Docker、Kubernetes、CI/CD了解模型推理优化熟悉RAG或大模型应用开发具备数据处理能力。这些技能没有一样是调模型本身但它们才是AI工程日常工作的主体。换句话说市场早就用脚投票了工程能力是稀缺的模型训练能力越来越普及。1.3 从零起步的路线图先定边界再补技能如果你真打算从零开始走AI工程这条路我给你一个时间上相对可行的顺序注意不是按技术难度排的而是按投入产出比排的Python基础不用精通但list/dict/dict推导式、函数装饰器、生成器这些要熟悉。时间充裕的话补上类型注解。数据处理的固定动作学会用Pandas做筛选、聚合、join用SQL查表。AI工程有一半时间在跟数据打交道数据都拉不出来模型根本无从谈起。机器学习基础不是要把数学推到多深先理解监督学习的核心流程数据划分、特征处理、模型训练、评估指标、过拟合判断。这一层用scikit-learn就能完成完全不需要GPU。深度学习上手直接用PyTorch跑一遍图像分类或者文本分类的官方教程理解DataLoader、模型定义、训练循环、验证集评估这几个基本组件。工程化工具Git、Docker、Linux操作。不用精通但至少要能提交代码、构建镜像、在服务器上跑起一个进程。部署与上线FastAPI写推理接口用TorchServe或ONNX Runtime做模型服务然后扩展到容器化部署。监控与运维日志采集、指标监控、报警规则。这个顺序的关键点在于前面三条阶段不建议跳过。我知道有人觉得Pandas和scikit-learn太基础了想直接上大模型。但AI工程的基础不是模型有多深而是你能不能稳定地处理数据、可复现地训练模型。地基不扎实后面所有环节都会返工。2. 从最小闭环入手一个星期做出一个能用的AI功能很多人学AI工程学不下去原因是他们把目标定得太宏大了要做一个能识别1000类物体的系统、要支持一万并发、要自己训练一个大语言模型。这种项目做三个月还在准备数据人早就疲惫了。我强烈建议第一条路走最小闭环挑一个一两周能做完、能端到端跑通的小功能。什么算端到端就是原始数据进来、经过清洗、训练出模型、部署成接口、打到一个真实的测试请求整个过程全部走通。你不需要追求效果惊艳你要追求的是每个环节都不缺。2.1 选题不要把第一个项目定成图像识别大模型我曾经带过一个入门者他第一个项目想做一个商品图片自动分类系统要求覆盖1000个品类。听起来很唬人但他连商品图片数据都只收集了2000张1000个品类在每个品类只有两张图的情况下连算法工程师都救不了。我建议他把范围缩到二手手机成色分类只分全新轻微划痕明显划痕三类图片控制在500张以内。结果两周之内他就在测试集上做到了93%的准确率而且把训练、部署、调用整个流程都跑通了。所以选题有三个原则类别少最多不超过5类宁可先做有/无二分类。数据来源方便可以用公开数据集也可以自己写脚本抓取但要确保版权和隐私没有隐患。有明确的调用场景比如输入一张图片返回一个分类标签和置信度这个接口可以给其他程序用。考虑到成本和入门友好度文本类的项目也可以比如工单紧急程度分类评论正面负面判断。文本数据预处理比图像更简单不需要处理像素和分辨率上手更快。我个人的建议是第一个项目做文本分类因为它能把精力集中在工程链路而不是图片预处理上。2.2 数据获取与清洗别跳过这一步直接炼丹数据是一个AI工程项目的地基但多数新手在这里的心态是赶紧把数据塞到模型里跑个结果出来。我见过有人把包含重复数据的训练集直接喂给模型然后发现验证集准确率奇高最后排查了三天才发现是数据泄漏。第一个项目里你至少要把以下几件数据的事情做干净一致性检查同一类别的文本/图片在格式上尽量统一避免一个来源是UTF-8、另一个来源是GBK这些事情上游不做下游训练时会莫名其妙报错。去重如果你收集数据时用了多个渠道一定要先用哈希值去重。重复数据会让验证集被污染导致指标虚高。标签分布统计每类样本的数量如果某一类特别少要么换数据源要么做简单的过采样。我在实际操作中通常要求最少的类别至少要有总样本的10%。这些步骤不需要什么高级工具Python写得干净一点十几行就能搞定。养成好习惯把数据清洗代码和训练代码分开数据清洗的结果输出成一个新的csv或tfrecord文件而不是在训练代码里临时处理。否则下次换个数据集你的训练代码又要改一遍。2.3 用规则和Greedy管住第一个模型这可能是跟主流教程最不一样的一个建议第一个模型不要用深度学习先用规则或者简单的机器学习模型。比如做文本分类你先写几个关键词规则把含退款投诉差评的样本分成一类能对多少算多少。然后用一份TF-IDF向量加一个Logistic Regression模型看看在验证集上能到多少效果。最后再上BERT或者更复杂的模型。为什么多此一举三个原因规则模型让你理解数据本身。你写规则的时候会逼自己去读样本理解了数据的核心特征后面的模型才不瞎调参数。简单模型给出基线。如果你用TF-IDF加Logistic Regression已经能到85%准确率那BERT就算调到90%你要认真想一下这5个点的提升值不值额外的GPU成本和推理延迟。调试方便。当深度学习模型出错时很难判断是数据问题还是模型问题。你有基线模型做参照能更快定位。这不是我一个人的做法很多工业界的AI项目都遵循类似流程。盲目在第一版就上大模型是业余选手最容易犯的错误。2.4 用离线指标和几个样例决定要不要继续训练完模型你先别急着欢呼先看两个东西第一验证集上的指标。对于分类任务先看准确率、精确率、召回率和F1不要只看准确率。假设100个样本里90个是正常10个是异常你全部预测成正常准确率90%但这个模型完全没用。所以再看一下混淆矩阵看看每个类别都预测得怎么样。第二随机挑20个预测正确的和20个预测错误的样本亲自读一遍。这一步非常关键它能让你直观地知道模型为什么出错。比如你是做差评分类的模型把一个含运费太贵的评论分到了正常那说明模型并没有学会运费在评论语境里往往意味着负面情绪你的数据或特征可能不够。我在前端端项目里这个人工看样本的环节从来不会省。如果离线指标不错错误的样例也还能理解再继续往工程化环节走。如果离线指标都一塌糊涂那就不要纠结部署了赶紧回到数据环节。3. 真正拉开差距的是工程化环节训练之外的三件事跑通一个训练脚本很容易难的是让模型稳定地服务业务。就是这些训练之外的东西把AI工程师和只会调包的人分开。我把它们总结成三件事可复现性、部署方式、监控与回滚。3.1 可复现性同一份代码跑两遍结果必须一样可复现性是我在做AI工程时第一个强调的底线。如果你的实验不能复现那么所有讨论精度提升都是在空中盖楼。要做到可复现至少需要这几个动作固定随机种子。包括Python的random、NumPy的numpy.random、PyTorch的torch.manual_seed以及CUDA相关的seed。锁住依赖版本。用requirements.txt或pyproject.toml记录精确版本不要写成numpy1.20这种范围形式而要写成numpy1.21.4。记录数据版本。数据文件变了训练结果就会变。不要只在代码库里记用了20250110的数据而是要把数据版本写进训练配置最好有数据的哈希值。记录超参数。用配置文件或命令行参数统一管理学习率、batch size、优化器参数都记录下来。这里有一个最简单的落地方式训练脚本里加一个配置文件config.yaml把数据路径、模型结构、超参、随机种子都写进去训练完后把config.yaml连同模型文件一起归档。跑实验的时候你只要说这是config_0213那个配置结果可以复现就足够作为实验记录了。如果团队条件好一点再上MLflow或者Weights Biases这类实验追踪工具。但个人入门阶段一个结构化的配置文件加上命名规范比任何工具都重要。3.2 模型部署的离线/在线选择模型训练完成后面临三个问题放在哪里跑、用什么方式给上游调用、延迟和吞吐要求是什么。很多从零入手的人根本没考虑过就默认要写一个REST API让别人调。实际上部署方式不止在线API一种。我按业务场景做一个对比场景推荐方式原因内部工具每天跑一次批量预测离线批处理脚本实现简单、不占常驻资源失败可以重跑上游系统实时调用延迟要求200ms在线REST API需要快速响应移动端/边缘设备网络不稳定ONNX Runtime或TensorRT Lite模型减少通信成本保护隐私请求量巨大GPU稀缺批处理接口一次传入多条数据提高吞吐降低单条推理成本我第一次做的分类模型就是给运营同学用的批量Excel打标工具数据量每周只有几千条完全不需要搞微服务。我写了一个脚本读入Excel调用模型输出带标签的Excel收工。这个方案比部署一个常驻API要合适得多也省下了不少维护成本。当你确实需要在线API时我一般按这个顺序来先用FastAPI写一个简单的推理封装不引入任何高级框架本地验证然后把模型导出成ONNX格式用ONNX Runtime做推理这样不需要在服务环境里安装完整的PyTorch依赖体积小很多最后再考虑用TorchServe或独立推理引擎做并发优化。3.3 监控与回滚模型上线才是工程的开始模型上线之后不能只听一句效果不错就高枕无忧。我见过一个线上模型上线一周指标都稳定第二周开始预测结果突然大量偏向某一类排查半天发现是上游数据源改了一个字段的编码格式。如果没有监控这种问题可能要很久之后才被发现期间产生的错误结果早就对业务产生了影响。监控最基本的三件套推理日志记录每一次请求的输入、输出、耗时、模型版本。不要全部记录原始数据可以记录哈希值或截断后的特征避免隐私风险。指标监控两个层面都要看。系统层面QPS、延迟、GPU使用率、显存占用。模型层面预测类别的分布、平均置信度、拒绝率。回滚机制当监控发现异常时能一键切回上一个版本。操作上就是把模型文件按版本号存储在对象存储里服务启动时从配置读取版本号发布新版本时不直接替换旧文件而是并列部署。回滚这段经验非常值得讲有一次我上线了一个新模型A/B测试显示它的离线指标比旧版好1.5个百分点但线上真实反馈中新模型对某些长尾case的处理变差了。因为提前实现了版本切换我在发现问题后五分钟内就切回了旧版本业务几乎没有感知。这就是工程化带来的安全感。4. 我踩过的坑按严重程度排个序前面讲的是方法论这个部分讲点真实的血泪。这些坑我基本都用时间成本验证过希望你不用再交一遍学费。4.1 训练集泄漏准确率98.7%的背后是空欢喜有一段时间我做用户流失预测数据里有一个字段叫是否已发送挽留邮件。我当时想这个字段跟流失强相关就把它当作特征放进去了。训练完之后验证集准确率高达98.7%我一度以为自己发现了什么神级特征。后来接手数据的同事点了我一句这个字段只有用户已经流失了系统才会发送挽留邮件你等于把答案直接喂给了模型。我当时的表情大概很难看。这就是典型的训练集泄漏特征里包含了未来信息或者标签信息。因为在业务发生时这个字段根本取不到模型上线后这个特征的值永远是空。这个坑也引出一个通用原则特征是业务当时能拿到的信息而不是事后统计的结果。你引入任何一个特征前都问自己一句如果这个模型要实时运行这个特征的值在当时能拿到吗4.2 数据漂移上周有效的模型这个月就失灵了很多人以为模型训练完就一劳永逸实际上模型的保质期取决于业务数据的稳定性。我当时做了一个文本分类器训练数据是上半年积累的工单上线时效果不错但过了两个月准确率明显下滑。后来分析发现用户描述问题的措辞发生了变化新增了不少网络新词和产品新功能的叫法训练集里完全没出现过。数据漂移是AI工程里最常碰到的问题之一但它很难用一个自动脚本完全解决。我的做法是在监控里加一个简单的统计每个月统计线上输入数据的关键词分布和训练集的分布做一个对比。如果分布偏移超过一个阈值就触发一次重新训练的流程。重新训练也不是随便训练而是把最近三个月的新数据加入训练集再做一次完整的评估。4.3 指标陷阱离线指标和线上业务指标常常不一致离线评估很漂亮上线后业务方说没感觉有什么区别这是AI工程里最让人郁闷的事。原因通常有两个一是离线测试集和线上真实分布不一致。拿到的测试集可能是经过人工筛选的干净数据但线上全是噪声。二是离线指标本身就选错了。比如做推荐系统你拿离线准确率衡量但业务方真正关心的是用户点击率或者转化率。我现在的做法是在每个项目开始前先和业务方对齐一个北极星指标。模型离线评估看的是这个指标的代理值比如线上点击率不好直接算就用离线排序的AUC来近似。但上线后的A/B测试一定要回到真实业务指标来判断效果。这个习惯帮我避免了很多看起来很努力业务结果没变化的尴尬。4.4 忽视基础设施GPU不够用之前先省模型复杂度入门者容易有一个倾向什么模型大就上什么模型好像参数量越多越体面。有一次我在一个内部项目里为了让分类准确率再高一个点直接换了一个比原模型大10倍的版本结果训练时间翻了三倍推理延迟也飙到了不符合业务要求的水平。最后只好回退到原来的小模型。我现在的选型逻辑是先定延迟和成本的硬限制再在这个限制内选最好的模型。而不是反过来先选最好的模型再想办法压缩。你要知道压缩模型、分布式推理、增加GPU这些方案都是有运维成本的在你还没有足够工程经验之前最简单的省成本方式就是不要把模型搞大。5. 给零基础入门者的行动清单如果你看到这里说明你是真的想从零开始走AI工程这条路。最后一章不写理论直接给你能照着做的事。5.1 三个月的节奏每周投入多少小时根据我带人的经验每周能稳定投入8到10小时的话三个月是能完成一个完整的入门项目的。具体节奏可以参考这个安排第1到3周巩固Python和Pandas用SQL从数据库里拉一份数据出来做一次完整的描述性统计。目标不是会语法而是能用代码回答数据里有多少缺失值、类别分布怎么样、平均值中位数偏离大不大这类问题。第4到5周用scikit-learn跑通一个分类任务完整走一遍构建模型、评估、调参的基本流程。第6到8周学习PyTorch基础复现一个简单的深度学习模型重点理解训练循环里每个环节的作用。第9到10周做一个完整的最小闭环项目数据、训练、部署都自己做。第11到12周把前面的项目整理成带README的代码库补上Docker部署和监控日志。这个节奏的关键是每周必须有一次产出而不是每周必须学完一章课。产出可以是一段可运行的代码、一张数据分布图、一次模型评估记录。没有产出的学习很容易变成收藏了大量教程却一个项目都写不出来。5.2 学习资源怎么挑课程、文档和论文的优先级常见的资源优先级我是这么排的官方文档优先于二手教程。PyTorch官方教程里有一个60分钟的入门章节写得很清楚比在网站上搜PyTorch教程要可靠得多。一个完整的项目开源代码胜过十段片段代码。GitHub上找一个star数高、结构清晰的AI工程类项目完整读一遍它的数据管道和部署配置比看碎片化博文有用。论文先放一放。入门阶段不需要你复现Transformer那篇论文先跑通应用再说。我个人建议收藏这些站点的搜索路径GitHub、PyTorch官方文档、FastAPI官方文档、HuggingFace的模型卡片和示例再备一个Stack Overflow。小心AI生成的教程它们的语感很顺滑但经常缺少版本细节对新手反而有误导。5.3 第一个项目应该长什么样以Excel为邻最后说一个我很推荐的第一个项目模版给你的团队或朋友做一个Excel自动分类工具。把一份Excel表格上传到一个网页或本地脚本里自动给每一行数据打上一个分类标签然后输出一个新的Excel文件。这个项目的好处在于贴近真实需求不是玩具项目能找到真实用户。不涉及复杂的部署架构一个稳定的Python脚本就能跑通全流程。数据结构就是你最熟悉的表格不用花额外精力梳理业务。能自然延伸到后续工程优化当数据变大时你能不能把脚本改成异步队列当多个用户同时上传时你是不是需要加鉴权和存储我确实带人做过类似的项目最后一份几百行的分类Excel他的成就感比在Kaggle上拿一个银牌还要大。因为那是真实世界里有人用的东西你会不由自主地考虑健壮性、日志、错误处理而这些才叫AI工程。6. 最后分享一点我自己的体会如果你只能记住这篇文章里的一句话我想是这一句AI工程不是关于模型而是关于系统。从零开始说到底不是补一个知识点而是建立一套端到端交付的视角。你写的第一行数据处理代码、部署的第一个Docker容器、加的第一条监控报警它们和训练一个高精度模型一样都是AI工程的一部分。我个人在实际操作中的体会是入门AI工程最难的不是技术而是肯不肯从跑通模型往下再走一步去处理那些琐碎、不性感、但决定成败的工程细节。数据清洗很枯燥但逃不掉配置管理很无聊但少一步都会在某个深夜用线上事故教育你监控告警不产生任何业务价值但它能让你睡得着觉。如果你现在刚开始可以不用买任何课程先把手上一个最简单的业务数据找出来按我前面说的最小闭环走一遍。走完你就知道AI工程没有想象中那么神秘但也绝不止写几行训练代码那么简单。祝你第一个模型顺利上线也祝你上线后的第一天晚上能睡得踏实。