楼层: 首页/ 算法与AI/ 模块十 · 评估与部署
测

模块十 · 评估与部署

Evaluation & Deployment · 模型做完了,怎么知道好不好、怎么上线

训出模型只是一半。怎么打分、怎么诊断过拟合、怎么部署到生产环境,决定它是论文 PPT 还是线上产品。

上一模块讲完了训练和对齐,这一模块回答"做完了怎么知道好不好、怎么上线"。为什么需要?模型跑分高不等于线上好用,评估指标选错、部署没优化,就是 PPT 和产品的区别。学完你能看懂召回/准确率、选对部署方式。下一模块是附录,把欠的推导账还清。

本模块要学什么(按这个顺序学)
混淆矩阵/Precision/Recall → 过/欠拟合诊断 → 交叉验证/超参 → ONNX/TensorRT → 量化部署 → llama.cpp/Ollama

10.1 模型评估指标

Metrics · 准确率不够用的那些场景

想分类指标全家桶

先搞懂混淆矩阵:TP(正类猜对)、FP(负类猜错为正)、FN(正类猜错为负)、TN(负类猜对)。

准确率 Accuracy = (TP+TN)/(TP+TN+FP+FN):最直白,但类别不均衡时骗人(99% 负类,全猜负类也 99% 准确)。

精确率 Precision = TP/(TP+FP):预测为正的里面,有多少真的正。"报的警有多少是真警"。

召回率 Recall = TP/(TP+FN):所有真的正类里,找出了多少。"真的罪犯抓到了几个"。

F1 = 2·P·R/(P+R):精确率和召回率的调和平均,二者平衡。

AUC-ROC:不同阈值下 TPR vs FPR 曲线下面积。0.5=随机,1=完美。不依赖阈值,不均衡数据友好。

困惑度 Perplexity PPL = exp(−(1/N)∑log p(xi)):语言模型专用。PPL 越低,模型对文本预测越自信。

BLEU(机器翻译):n-gram 重叠率,越高越好。ROUGE(摘要):召回率视角,看摘要覆盖了原文多少关键信息。

例:癌症筛查,要精确率还是召回率?
1000 人里 5 个真癌症,模型查出 10 个,其中 4 个真癌症。
解:Precision = 4/10 = 40%(报了 10 个,4 个真的);Recall = 4/5 = 80%(5 个真癌抓到 4 个)。漏诊比误诊代价大得多——宁可错杀不可放过,所以更看重召回率。反之,垃圾邮件过滤更看重精确率(别把正常邮件当垃圾)。
记
小结

① Accuracy 在不均衡数据上骗人。② Precision 报得准,Recall 找得全。③ F1 平衡,AUC 不挑阈值。④ PPL 评语言模型,BLEU/ROUGE 评生成。

10.2 交叉验证与过拟合诊断

Cross-Validation · 一份数据反复考,防运气

想K 折交叉验证

把训练集分成 K 份(通常 5 或 10)。每次拿 K−1 份训练、1 份验证,轮 K 次。取 K 次验证平均,比单次划分更可靠——避免"正好切到那一份模型运气好"。

过拟合 vs 欠拟合诊断:

欠拟合:训练集差、验证集也差 → 模型太简单,加复杂度/换模型。
过拟合:训练集极好、验证集差 → 加正则化(L2/Dropout)、加数据、早停(early stopping)。
刚刚好:训练集和验证集都不错,且差距小。

记
小结

① K 折交叉验证减少单次划分运气。② 训练好验证差=过拟合,都差=欠拟合。③ 早停=验证集不再涨就停训。

10.3 模型部署:ONNX / TensorRT / 边缘部署

Deployment · 模型怎么从笔记本跑到服务器/手机上

想部署四板斧

① 导出:PyTorch 训练完,导出成 ONNX(开放模型格式,跨框架)或 SavedModel。摆脱训练框架依赖。

② 加速:用 TensorRT(NVIDIA 显卡专用推理引擎)做图优化、算子融合、精度校准,延迟降几倍到几十倍。

③ 量化:训练时用 FP16,部署时量化到 INT8/INT4(见 7.7),显存和延迟都降。

④ 边缘部署:手机/嵌入式用 TFLite、ONNX Runtime Mobile、MNN/NCNN(国产推理框架)。大模型端侧用 llama.cpp(CPU 跑量化模型)、MLC-LLM。

服务器部署

TensorRT vLLM 批量推理,高吞吐。

边缘部署

llama.cpp/Ollama 量化跑 7B 模型,Mac 就能跑。

记
小结

① ONNX 跨框架导出。② TensorRT 显卡加速。③ 量化省显存。④ 边缘用 llama.cpp/Ollama。

10.4 模型压缩:知识蒸馏 / 剪枝 / PTQ vs QAT

Distillation & Pruning · 大模型的本事怎么搬进小身体

想引子与大白话

引子:7.7 讲了量化(数表示变小)。还有两条路:让小模型学会大模型的本事(蒸馏),和直接删掉没用的参数(剪枝)。

① 知识蒸馏(Distillation):大模型(教师)教小模型(学生)。不光教标准答案,还教"软标签"——教师对每个类别的概率分布。软标签里藏着"猫和狼比猫和车更像"这种暗知识,学生学这个学得比硬标签好。Hinton 2015 提出,今天用大模型蒸馏出小模型(如用 GPT-4 教出开源小模型)。

② 剪枝(Pruning):训练完,把权重绝对值很小的连接删掉(它们贡献几乎为 0),再微调恢复精度。结构化剪枝整个删通道/删头;非结构化删单个权重(要稀疏存储才快)。模型变小、推理变快。

③ PTQ vs QAT:量化分两种——PTQ(训练后量化):训完直接量化,快但精度略损;QAT(量化感知训练):训练时就模拟量化误差,让网络适应,精度更高但要重训。线上急用选 PTQ,追求极致选 QAT。

例:为什么蒸馏要教软标签而不是只教答案?
图片是猫,硬标签是 [1,0,0]。
解:大模型对这张猫的输出可能是 [0.9, 0.09, 0.01]——0.09 给了"狼",0.01 给了"汽车"。这告诉学生:猫长得像狼一点、根本不像汽车。硬标签 [1,0,0] 把这层信息全扔了。软标签温度系数 T 调大能把分布拉得更平,信息更丰富。
压缩三板斧

量化(7.7)+ 蒸馏 + 剪枝。实际部署常组合用:大模型蒸馏成小模型,小模型再量化+剪枝,端侧跑得起。

取舍

压缩都掉一点精度。先 PTQ 试,不够再 QAT/蒸馏。别一上来就最激进方案。

记
小结

① 蒸馏=大模型教小模型软标签。② 剪枝=删小权重再微调。③ PTQ 快精度略损,QAT 慢精度高。④ 压缩三板斧:量化+蒸馏+剪枝。

10.5 服务化部署:FastAPI / Triton / vLLM

Serving · 模型跑起来了,怎么变成高并发的线上服务

想引子与大白话

引子:笔记本上跑通不算完,生产环境一秒几百个请求过来,怎么扛?这就是服务化——把模型包成一个能扛并发的 HTTP/RPC 服务。

① 框架选型:FastAPI(Python,异步,适合中小模型快速上线)、Triton Inference Server(NVIDIA,支持多框架多模型、动态批处理)、TensorFlow Serving(TF 生态)。

② 大模型推理加速:vLLM 是 LLM 部署标配——PagedAttention 把 KV Cache 像操作系统分页一样管理,吞吐比裸跑快 10~20 倍。连续批处理(continuous batching):不等一个请求跑完,新请求随时插进正在算的 batch,GPU 不闲着。

③ 批处理与流式:小模型攒一批再算(吞吐高但延迟高);大模型用流式输出(SSE/WebSocket)让用户一个字一个字看到,体感快。

④ 监控与限流:看 GPU 利用率、延迟 P50/P99、显存;按 token 限流防被刷;挂了自动重启。

例:为什么裸跑 Hugging Face transformers 并发一上去就崩?
单请求逐条跑。
解:裸跑一次只算一个 prompt,GPU 大量算力闲着,且每个请求都重复建 KV Cache。vLLM 把多个请求的 KV Cache 分页管理、连续批处理,同一批 GPU 同时服务几十个请求,吞吐翻十几倍。这就是为什么线上 LLM 几乎都用 vLLM/TGI。
记
小结

① FastAPI 快上线,Triton 多模型生产级。② vLLM 的 PagedAttention+连续批处理是 LLM 部署标配。③ 流式输出优化体感,监控 P99 延迟和显存。

10.6 AI 安全与伦理:偏见 / 隐私 / 对抗 / 幻觉

AI Safety & Ethics · 模型越聪明,边界问题越要命

想引子与大白话

引子:模型上线后,它不只是准不准的问题——它可能歧视、泄露隐私、被攻击、一本正经胡说八道。这一节把这四把火讲清楚。

① 模型偏见(Bias):训练数据里有偏见(如历史简历男性居多),模型就学成"更推荐男性"。对策:审计训练数据、公平性指标、对抗采样。偏见不是模型的锅,是数据的锅。

② 数据隐私:大模型可能记住训练数据里的身份证号、手机号、私人邮件,被"诱导提问"吐出来。对策:差分隐私(DP-SGD,训练时加噪)、数据脱敏、输出过滤。合规上 GDPR、个保法都要求用户数据可控。

③ 对抗攻击(Adversarial):给一张熊猫图加人眼看不见的噪点,模型就喊"长臂猿"。微小扰动就能骗过。自动驾驶、人脸识别、金融风控都要防。对策:对抗训练、输入检测。

④ 幻觉(Hallucination):大模型一本正经编假事实。RAG(8.5)让它基于检索材料回答,是目前最实用的对策;RLHF 也有缓解。关键是让模型"不知道就说不知道",而不是瞎编。

例:招聘模型为什么会歧视女性?
历史数据 80% 招的是男性。
解:模型学的是"过去怎么招的",不是"应该怎么招"。历史上技术岗男性多,模型就把"女性""育儿经历"和低通过率关联。这不是模型恶意,是数据反映了历史不公——要主动去偏、按群体分层评估通过率。
工程清单

上线前:偏见审计(分群指标)、隐私脱敏、红队测试(诱导越狱)、幻觉抽检。内容安全过滤有害输出。

内容安全

训练对齐(RLHF/DPO)+ 输出分类器(违规检测)双层。不能只靠模型自觉。

防坑

坑:以为 RLHF 能解决所有安全问题。对齐只覆盖训练时见过的攻击方式,新的越狱 prompt 层出不穷。生产环境必须"模型对齐 + 输入输出过滤 + 人工兜底"三层。另外别用真实隐私数据训练而不加脱敏——出事是法律问题不是技术问题。

练一练

基础大模型幻觉的最实用对策是什么?

看答案RAG——回答前先检索私有知识库,让模型基于有据可查的材料回答,并要求它标注来源。从"凭记忆瞎编"变成"开卷考试"。

进阶为什么对抗攻击对深度学习特别危险?

看答案深度学习在高维空间做线性决策,微小的、人眼不可见的扰动足以把样本推到决策边界另一侧。人看没变,模型已经认错。自动驾驶把"停止牌"误认成"限速牌"就是致命的。

自评反馈:答对了继续;偏见=数据问题、幻觉靠 RAG,哪条还模糊就回看。

记
小结

① 偏见来自数据,要分群审计。② 隐私靠脱敏+差分隐私。③ 对抗攻击靠对抗训练。④ 幻觉靠 RAG+对齐。⑤ 上线是"模型+过滤+人工"三层兜底。

费曼学习法:讲给别人听

① 用自己的话解释:用"查全率 vs 查准率"举一个生活例子,说清什么时候该看重哪个。

② 举个反例 / 生活例子:反例——为什么测试集准确率高不代表线上稳?(提示:数据分布漂移)

③ 哪里还说不清:FP16/INT8/INT4 在精度和显存上怎么权衡,你能讲清吗?