资讯动态

从零开始学AI工程:绕开调包误区,构建系统化工程能力

发布时间:2026/9/28 13:54:28 来源:尧图企业网站定制
经常有读者私信我问同一个问题我想转行做AI工程到底该从哪里开始后台收到的消息五花八门有人刚毕业工作两三年想转方向也有人已经做了几年后端开发觉得AI是未来风口。说实话这个标题ai-engineering-from-scratch我盯了很久终于决定把它真正落地写出来——从零开始学AI工程这件事最难的不是技术本身而是绝大多数人一开始就用错了方法。先亮明我的立场AI工程不等于调包更不等于背几个深度学习框架的API。我见过太多人花三个月啃完《动手学深度学习》最后让他处理一个真实业务场景的数据仍然一脸茫然。这篇文章想做的事情很简单把我自己从一个只会写Python脚本的后端开发成长到能独立负责完整AI项目落地的整个过程中的经验、踩过的坑、验证过有效的方法论一次性地讲清楚。内容适合下面这几类人准备入门AI工程但不知道路径对不对的初学者已有编程基础想系统补齐AI能力的人以及在企业里做AI项目总觉得工程化环节使不上劲的开发同学。我在这条路上走过的弯路不少所以这篇东西更偏向过来人复盘而不是教科书式的知识点罗列。下面直接进正文。1. 先搞清楚AI工程和AI研究的差异不然学三个月就废很多人说从零开始学AI第一个动作就是打开B站搜深度学习入门然后开始看神经网络的结构、反向传播的公式推导。我不能说这条路完全错但它在大多数人的场景下是一种低效甚至有害的方式。1.1 AI工程要解决的是稳定交付不是精度刷榜我入职第一家公司做AI平台时mentor第一天就跟我说了一句让我记到现在的话研究关心的是SOTA涨了多少分工程关心的是这个模型能不能在线上稳定跑一年。AI工程的核心链路是数据采集与清洗 - 特征工程 - 模型训练与验证 - 模型部署 - 线上监控 - 迭代优化。你会发现模型训练在里面只占一小段。更扎心的是在绝大多数企业里真正花时间的不是调模型结构而是处理数据、解决问题、保证服务稳定。我见过一个真实的项目算法同学花了两周把图像分割模型的mIoU从0.82提升到了0.85但是部署时发现单张推理耗时从30ms涨到了120ms线上CPU资源顶不住最后被迫回滚到旧版本。精度高了线上用不了这在我们这行是最常见也最憋屈的故事。所以从零开始学AI工程第一件事就是把模型精度这个执念放低一点把系统能跑、能维护、能迭代提到最高优先级。1.2 从零开始的零到底指什么我理解的from scratch不是指从数学公式推导开始而是指你从只知道AI能做什么到能独立交付一个AI功能模块。这个过程中有几个前置知识属于必须项但也有不少属于非必需项。必须项Python编程基础。不是会写循环和函数就行至少要理解装饰器、生成器、面向对象因为你会经常需要封装数据处理逻辑、写训练脚本、做服务接口。数据处理能力。Pandas、NumPy要熟练SQL要能写复杂查询。很多初学者把大量时间花在模型结构上结果一上手真实数据光清洗就占了70%的时间完全顶不住。机器学习基础概念。监督学习、无监督学习、过拟合、交叉验证、评价指标。这些不需要深挖数学推导但必须理解它们在真实数据上意味着什么。非必需项至少入门阶段不需要死磕深度神经网络的数学推导。你完全可以先通过PyTorch的自动求导把模型跑起来遇到具体的数学问题再回头补。我一直认为反向传播的链式法则你懂大方向就行手推公式对大多数工程岗位的实际帮助很有限。分布式训练原理。这是进阶话题在只有一两张显卡的起步阶段花时间去研究分布式数据并行纯粹是自我感动。1.3 设定你的第一个里程碑从零开始学AI工程如果目标定得太大比如三个月内做出一个能用的推荐系统大概率会中途放弃。我更推荐把第一个里程碑设定成完成一个单机版的端到端小项目数据自己采集、模型自己训练、接口自己部署整体跑通。这个目标不需要GPU不需要大数据集群一台普通笔记本就够。但它是你建立工程闭环感最关键的一步。后面我会专门用一章讲这个项目的完整路线。2. 入门阶段的路径设计数学、编程与工具怎么配比才不会放弃这一章写给真正准备花3-6个月打基础的人。我不打算给你排一张精确到每天的课程表因为每个人的基础和学习时间不同。但我可以把配比原则讲透你按照自己的情况灵活调整。2.1 数学学到什么程度就够用说句容易被喷的话大多数AI工程岗位需要的数学远没有考研数学难。你需要的只是三个板块的基础概念和理解能力。线性代数方面重点是矩阵乘法、转置、逆矩阵以及理解特征值和特征向量的直觉含义。概率统计方面重点是概率分布、条件概率、贝叶斯思想、期望和方差。微积分方面则相对更简单理解导数和梯度就够了。我知道有人会拿吴恩达的机器学习课程需要微积分基础来杠。但我的实际经验是在工程实践中你遇到最多的数学场景是这几类看论文时遇到看不懂的公式上网查调超参数时需要理解学习率与梯度下降的关系做特征工程时理解数据分布决定是否要做log变换或归一化。这些场景靠的是概念理解搜索能力而不是从零推导的能力。2.2 编程能力的真实瓶颈在哪里Python语法本身很友好真正的门槛在于工程习惯。我面试过的很多候选人代码能力停留在能跑的水平一旦让他们写可维护、可测试、可复用的代码立刻露馅。具体建议是至少花四到六周时间刻意练习下面几件事用venv或conda管理项目环境学会梳理依赖关系。环境管理是初学阶段最崩溃的坑之一提前养成习惯能少受很多折磨。熟练使用Git不是只会commit/push还要会用分支和rebase来处理实验迭代。学会写简单的单元测试。你的数据清洗函数、特征处理函数都需要有测试兜底否则改动时心里完全没底。理解Python的logging模块学会用日志记录训练过程中每个环节的关键信息。别用print。2.3 工具学习的最佳顺序我认为最合理的顺序是先学Jupyter Notebook做探索性分析再学Pandas和NumPy处理数据然后学scikit-learn跑通传统机器学习算法最后才进入PyTorch学深度学习。这个顺序符合由浅入深、每个阶段都有产出的原则。在scikit-learn阶段你可以训练逻辑回归、随机森林、XGBoost理解分类、回归、聚类这些任务形态的实际手感。等你意识到传统方法在图像、文本等非结构化数据上的局限时再引入PyTorch就有了为什么需要深度模型的对比认知理解depth会好很多。框架选型上我建议深度学习教育直接用PyTorch。别问TensorFlow行不行现在无论是学术界还是工业界PyTorch生态的统治力已经是事实。TF的Keras接口虽然友好但你迟早要迁移到PyTorch生态不如一开始就切换到正确的轨道上。3. 你的第一个端到端项目文本情感分类的完整闭环这是我从零经验者走向AI工程师道路上最有效的一个项目。它不需要特别大的数据一台笔记本能跑业务价值清晰任何人都能直观理解模型在干什么整条链路涵盖从数据处理到部署的完整工程环节。3.1 明确需求和技术选型项目目标给定一句中文评论文本判断它是正向还是负向。这个场景非常经典IMDb影评、电商评论、外卖评价都是类似任务。技术选型我建议有两个方案两个方案都值得做一遍方案A使用jieba分词 TF-IDF向量化 逻辑回归。轻量快速可解释性强适合第一遍跑通全流程。方案B使用预训练模型比如HuggingFace上的中文BERT或更轻量的模型做微调。效果更好但需要处理显存和推理速度的问题。先用方案A把全链路跑通再用方案B做效果迭代你就会直观体验到传统方法和深度方法在真实任务上的差异。3.2 数据准备环节最容易翻车网上有现成的中文情感分析数据集比如某电商平台的评论数据。但你不能拿过来直接用要做下面几件事数据去重。真实场景中重复数据非常多不去重会导致训练集和验证集重叠指标虚高。标签分布检查。如果正向样本占90%负向占10%你要么考虑欠采样/过采样要么在评估时重点关注少数类的precision和recall。构建训练集/验证集/测试集。很多人只分训练和测试两组这是坏习惯。训练集用来学参数验证集用来调超参数测试集只能最后用一次模拟真实上线效果。我想特别强调一下数据泄漏的问题。初学者常犯的一个错误是先对整个数据集做归一化或标准化再划分训练测试集。这等于让测试集的信息提前泄漏进了训练过程得出的评估结果会虚高一到线上就原形毕露。正确做法是先划分数据集再在训练集上fit变换器然后才用同一个变换器去transform测试集。3.3 训练、评估与模型保存用方案A跑逻辑回归时有几个工程细节值得记录设置随机种子。在划分数据集和模型初始化时固定seed保证实验可复现。不固定seed的话你跑两次结果不一样后期排查问题会非常痛苦。定义评估指标时除了accuracy一定要看F1。在正负样本不平衡时accuracy是极具欺骗性的指标。训练完成后用joblib或pickle保存模型和向量化器。注意一定要把向量化器一起保存线上推理时对输入文本做同样的预处理否则维度对不上直接报错。方案B用预训练模型微调时如果你用的是HuggingFace的Transformers库代码量其实不大。核心流程是加载tokenizer和模型 - 对文本做tokenize并padding/truncation到固定长度 - 设置DataLoader - 训练若干epoch - 保存模型权重。初次跑方案B时显存不够很常见。我当时的做法是把batch size从32降到16再把max_length从512降到128成功在6GB显存的笔记本GPU上跑通了。这个用trade-off解决问题的思路本身就是工程能力的体现。3.4 本地部署从Jupyter到REST API训练完模型项目还没结束。你需要在本地把它封装成一个可以对外提供服务的REST API这一步才能真正体会到AI工程和AI研究的区别。我推荐用FastAPI因为它简单直观而且自带Swagger文档方便调试。核心接口逻辑如下接收一个JSON请求比如{text: 这家店的牛肉面味道特别好}。对文本做与训练时完全一致的预处理流程包括分词、向量化或tokenize。调用模型预测返回标签和置信度。本地跑通FastAPI后你会发现很多之前在Notebook里不会注意到的问题。比如单次请求的响应时间要足够快比如推理时的并发处理能力比如模型加载一次常驻内存而不是每次请求都重新加载。这些正是线上环境思维的雏形。4. 工程化能力才是分水岭模型训练之外必须掌握的六项技能我可以负责任地说一句话能训练模型的人一抓一大把能稳定运维AI服务的人不多。从零开始学AI工程如果你只学模型不学工程3年后你的竞争力和现在不会有本质区别。下面这六项技能是我认为AI工程师的分水岭建议你按顺序逐个掌握。4.1 数据管道设计真实业务中的数据不是打包好放在云盘里的而是散落在数据库、日志、第三方接口中的。你需要具备设计数据管道的能力也就是用脚本自动完成定时抽取数据 - 校验数据完整性 - 清洗转换 - 存储到特征库或训练集。工具方面入门阶段不用急着上Airflow或Dagster先用cron Python脚本把流程串起来就行。但你要理解调度、重试、失败告警这些核心概念因为它们是数据工程的地基。4.2 实验追踪当你开始尝试多组超参数、多个模型结构、多份数据版本时如果只靠文件名区分实验一定会翻车。我早期干过这样的事跑了一个效果很好的模型但忘了记当时的超参数和数据版本两周后想复现死活找不回来。工具层面MLflow是首选它足够轻量上手快。你需要养成一个习惯每次实验记录下代码版本、数据集版本、超参数、关键指标、模型产物路径。这套实验留痕的习惯越早养成越好。4.3 模型评估的深层理解准确率、精确率、召回率、F1、AUC这些指标必须理解到能根据业务场景主动选择合适的评估方式。举个真实案例在欺诈检测场景正样本欺诈极少你更关心的是recall还是precision答案是视代价而定——漏掉一笔欺诈的损失远高于误杀一笔正常交易这时候recall优先。但如果误杀率太高导致客服投诉爆炸你又要考虑precision的底线。这些权衡不是一个accuracy就能说清的。AI工程师的职责之一就是把模型指标翻译成业务语言告诉团队这个模型上线后预估会带来什么影响。4.4 模型部署与推理优化部署方式取决于场景。批量预测可以用离线脚本定时调度在线实时预测需要把模型封装为API服务。前者实现简单后者更接近我对AI工程的综合要求。在线推理优化方面你需要了解几种常用手段ONNX导出与优化、量化如PyTorch的torch.quantization或ONNX Runtime的INT8量化、TorchScript/ONNX带来的加速效果、批推理与动态batch的处理。这些技术不要求你成为编译器专家但要知道模型变慢时有哪些手段可以尝试。4.5 监控与告警模型上线只是开始不是结束。数据分布会漂移模型效果会衰减特征取值可能出现异常。你需要对服务做基础监控至少包括这几项推理接口的延迟、吞吐量、错误率。输入数据的特征分布变化比如某个特征均值突然偏移3个标准差。预测结果的分布变化比如用户点击率的预测值整体下滑。监控工具方面Prometheus Grafana是业界通用组合入门成本不算高值得系统学一遍。4.6 版本控制与CI/CD代码要进Git模型和数据集也一样需要版本管理。数据集可以用DVCData Version Control模型产物可以配合对象存储记录URI让每一次实验的血脉完全可追溯。CI/CD方面至少搞清楚训练流程的CI和服务发布的CI两个概念的区别。训练流程的CI关注的是代码改动会不会破坏数据处理的正确性服务发布的CI关注的是新模型能否通过接口测试和安全检查后自动上线。这些词听起来复杂但等你真的在一个项目里被发布流程卡过几次理解会非常快。5. 初学阶段最隐蔽的坑我梳理的五个高频翻车现场这章是我从自己和带过的实习生身上总结出的高频问题。每一个我都真实经历过写出来帮你避坑。5.1 数据集划分后忘记shuffle有些数据集是按标签顺序排列的——前80%全是负样本后20%全是正样本。如果你划分时不做shuffle训练集和验证集的分布就会严重失衡模型效果评估完全失真。这是一个只需要一行代码解决、但调试起来能让怀疑人生的问题。5.2 验证集泄露到训练过程我前面提到过归一化泄漏其实还有一种更隐蔽的泄漏在调超参数时反复使用测试集。正确做法是测试集在最终评估前碰都不能碰。可以用验证集做超参数调优但很多人因方便直接看测试集效果来调整多来几次之后测试集实际上已经变成了验证集最终评估数字失去意义。5.3 损失函数在下降指标却纹丝不动训练过程中loss持续下降但F1指标原地踏步这种情况在样本不平衡时格外常见。模型学到的可能是把所有样本都预测成多数类loss下降是因为多数类拟合得好但对少数类毫无区分能力。遇到这种情况先打印一下验证集的混淆矩阵看看分类错误的样本主要集中在哪个类别远比盯着loss曲线猜更高效。5.4 GPU显存溢出时无脑减小batch size显存溢出CUDA out of memory很多人的第一反应是减小batch size。这是对的但不是唯一的解法而且不一定是更优解。小batch size可能让梯度估计更嘈杂模型收敛变慢。备选方案还有检查模型里是否有大尺寸的中间变量可以被优化将输入数据裁剪成更小的尺寸使用梯度累积模拟更大的batch用混合精度训练减少显存占用。先把这些手段都过一遍再决定是不是动batch size。5.5 环境依赖的星期日下午噩梦新拉下来的项目跑不起来缺某个依赖库版本不兼容Python版本不对CUDA和PyTorch版本不匹配——这类问题占了我初学阶段至少20%的时间。由此养成两个习惯每个项目从第一天就用虚拟环境隔离依赖写入requirements.txt或environment.yml。重装环境时直接按文档使用正确的Conda环境安装命令不要逐条手动装。顺序对了版本冲突能少一大半。6. 三个月基础期后怎么规划中长期成长路线如果你顺利跑通了第一个端到端项目接下来就会面临接下来学什么的问题。我提供一个从能做项目到能设计系统的进阶思路。6.1 能力升级的两个方向方向之一是纵向深入把某一个领域吃透。比如你做了文本分类可以继续深入NLP方向NER、文本匹配、情感分析、大模型微调。好处是简历上有清晰的技术标签求职定向性强。方向之二是横向拓宽覆盖更多AI应用形态。比如你做了文本分类再做一个图像分类一个简单的推荐召回一个LLM应用。好处是对AI能解决的问题边界的理解更全面面对业务需求时的方案设计更灵活。我个人建议前3个月走横向拓宽不同任务形态过一遍之后再结合自己的兴趣和行业趋势选择纵向深入。6.2 从复现到自研的拐点真正让我感觉自己迈过了入门门槛的不是会跑通开源代码而是开始做三件开源代码没直接给你答案的事情修改数据处理逻辑以适配新数据集。针对业务约束设计新的评估指标。针对线上性能瓶颈设计模型优化方案而不是直接换一个更大的模型。我强烈建议你在完成第一个项目后选一个开源项目认真复现但复现过程中刻意改掉一些关键环节比如换数据集、改特征工程步骤、对比不同的模型结构。这个有控制的改变会让你逐步建立自己的技术判断力而不是永远停留在把别人的代码跑通的水平。6.3 系统设计意识的培养到后期你需要从写好代码、训好模型升级到设计一个系统。比如从零规划一个内容推荐系统数据从哪里来、用户行为如何采集、离线怎么训练、在线怎么召回排序、冷启动怎么办、效果怎么评估。这些问题没有标准答案但你需要有分析框架去拆解。我的建议是养成画系统架构图的习惯。不一定要用多么专业的绘图工具关键在于逼自己把所有环节和它们之间的关系梳理清楚。你画不出来大概率就是没想明白。针对LLM应用方向还需要理解提示词工程、检索增强生成与外部工具调用的完整链路。现在很多人张口闭口大模型但要真正把大模型嵌入到业务系统里需要的仍然是这部分数据、工程、评估、迭代。7. 写在最后关于从零开始这件事的几个清醒建议回到最初的标题。我做了很久AI工程实践后对from scratch有了更清醒的理解它的意思不是要从零开始学习一切数学和计算机基础知识而是要从零开始建立一个能交付AI能力的系统性思维。这两者的差别决定了你走的是一条高效的路还是南辕北辙的路。如果你真的决定上路我的建议是选定一个方向设置一个最小闭环目标用两周时间做出来不要反复犹豫我基础还不够。你不需要先把所有前置课程刷完才开始动手——先动手做一个极小的项目缺什么知识就补什么知识这种项目驱动的学习效率远远高于顺序学习。我还想分享一个小小的经验初学阶段要建立自己的笔记库但这个笔记库不是收藏夹。我现在的工作习惯之一是每次解决一个具体问题不管是数据泄漏还是环境冲突就把原因、排查过程、解决方案总结成一篇两三百字的短文存档。半年之后回头翻看那就是你独有的、缝补了无数细节的工程手册。这本手册的价值远超你收藏夹里躺着的任何一份深度学习课程清单。当然这条路注定不会一帆风顺。模型训练效果差是常态部署时排查诡异bug是家常便饭被业务方追问你的模型到底靠不靠谱也是必经考验。但好消息是这个领域仍然在高速发展有大量真实问题等着被解决。你需要的不是做出一个完美方案才出发而是出发之后持续修正、持续交付。就聊到这里。希望你跑的第一次训练脚本、部署的第一个API、踩过的第一个坑都能成为后续从容做事的底气。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑