模块十 · 评估与部署
训出模型只是一半。怎么打分、怎么诊断过拟合、怎么部署到生产环境,决定它是论文 PPT 还是线上产品。
上一模块讲完了训练和对齐,这一模块回答"做完了怎么知道好不好、怎么上线"。为什么需要?模型跑分高不等于线上好用,评估指标选错、部署没优化,就是 PPT 和产品的区别。学完你能看懂召回/准确率、选对部署方式。下一模块是附录,把欠的推导账还清。
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(摘要):召回率视角,看摘要覆盖了原文多少关键信息。
① 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。
压缩三板斧
量化(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 限流防被刷;挂了自动重启。
① FastAPI 快上线,Triton 多模型生产级。② vLLM 的 PagedAttention+连续批处理是 LLM 部署标配。③ 流式输出优化体感,监控 P99 延迟和显存。
10.6 AI 安全与伦理:偏见 / 隐私 / 对抗 / 幻觉
AI Safety & Ethics · 模型越聪明,边界问题越要命想引子与大白话
引子:模型上线后,它不只是准不准的问题——它可能歧视、泄露隐私、被攻击、一本正经胡说八道。这一节把这四把火讲清楚。
① 模型偏见(Bias):训练数据里有偏见(如历史简历男性居多),模型就学成"更推荐男性"。对策:审计训练数据、公平性指标、对抗采样。偏见不是模型的锅,是数据的锅。
② 数据隐私:大模型可能记住训练数据里的身份证号、手机号、私人邮件,被"诱导提问"吐出来。对策:差分隐私(DP-SGD,训练时加噪)、数据脱敏、输出过滤。合规上 GDPR、个保法都要求用户数据可控。
③ 对抗攻击(Adversarial):给一张熊猫图加人眼看不见的噪点,模型就喊"长臂猿"。微小扰动就能骗过。自动驾驶、人脸识别、金融风控都要防。对策:对抗训练、输入检测。
④ 幻觉(Hallucination):大模型一本正经编假事实。RAG(8.5)让它基于检索材料回答,是目前最实用的对策;RLHF 也有缓解。关键是让模型"不知道就说不知道",而不是瞎编。
工程清单
上线前:偏见审计(分群指标)、隐私脱敏、红队测试(诱导越狱)、幻觉抽检。内容安全过滤有害输出。
内容安全
训练对齐(RLHF/DPO)+ 输出分类器(违规检测)双层。不能只靠模型自觉。
坑:以为 RLHF 能解决所有安全问题。对齐只覆盖训练时见过的攻击方式,新的越狱 prompt 层出不穷。生产环境必须"模型对齐 + 输入输出过滤 + 人工兜底"三层。另外别用真实隐私数据训练而不加脱敏——出事是法律问题不是技术问题。
练一练
基础大模型幻觉的最实用对策是什么?
看答案
RAG——回答前先检索私有知识库,让模型基于有据可查的材料回答,并要求它标注来源。从"凭记忆瞎编"变成"开卷考试"。进阶为什么对抗攻击对深度学习特别危险?
看答案
深度学习在高维空间做线性决策,微小的、人眼不可见的扰动足以把样本推到决策边界另一侧。人看没变,模型已经认错。自动驾驶把"停止牌"误认成"限速牌"就是致命的。自评反馈:答对了继续;偏见=数据问题、幻觉靠 RAG,哪条还模糊就回看。
① 偏见来自数据,要分群审计。② 隐私靠脱敏+差分隐私。③ 对抗攻击靠对抗训练。④ 幻觉靠 RAG+对齐。⑤ 上线是"模型+过滤+人工"三层兜底。
① 用自己的话解释:用"查全率 vs 查准率"举一个生活例子,说清什么时候该看重哪个。
② 举个反例 / 生活例子:反例——为什么测试集准确率高不代表线上稳?(提示:数据分布漂移)
③ 哪里还说不清:FP16/INT8/INT4 在精度和显存上怎么权衡,你能讲清吗?