边缘推理-端侧与云边协同
边缘推理 · 端侧与云边协同
🏠 返回 README | ⬅️ 09-批量推理-离线打分与回填.md | ➡️ 11-云厂商-ML全栈选型-AWS-GCP-Azure-Databricks.md
风格说明:Staff 级——ONNX / TFLite / CoreML / MLX、端侧 SLM、OTA 更新、联邦学习边界、云边协同;含 Mermaid、口播题、STAR-M-P、Checklist。
L1 是什么 · 边缘推理定位
1.1 一句话
边缘推理把模型推到 手机/NPU/车载/门店网关,用 本地算力 换 隐私、延迟、离线可用;与云端协同时明确 分区:哪些必须上云、哪些禁止出端。
1.2 决策矩阵
| 因素 | 偏边缘 | 偏云端 |
|---|---|---|
| 延迟 | <50ms、弱网 | 可百 ms+ |
| 隐私 | 人脸/键盘本地 | 可脱敏上传 |
| 模型 | <500MB INT8 | >10GB LLM |
| 更新 | OTA 周级 | 小时级 |
| 算力 | NPU/ANE 可用 | 需 H100 |
2. 端侧运行时对比
2.1 ONNX Runtime
| 项 | 说明 |
|---|---|
| 跨平台 | iOS/Android/Win/Linux |
| EP | CUDA, TensorRT, CoreML, NNAPI |
| 量化 | INT8/QDQ, 动态量化 |
| Staff点 | 训练后导出 ONNX → ORT 选 EP 是工业标准路径 |
2.2 TensorFlow Lite
.tflite+ delegate (GPU/NNAPI/CoreML)- 适合 移动端 CV、轻量 NLP
- Flex ops 会增加包体——面试提一句
2.3 Apple CoreML
- macOS/iOS ANE 加速
mlprogram格式;与 MLX 生态在 Apple Silicon 上互补- 隐私:模型+数据可不出端
2.4 MLX(Apple)
- 适合 端侧 SLM 微调/推理(Llama 量化版)
- 与 CoreML 分工:研究/快速迭代 MLX → 量产转 CoreML
2.5 选型表
| Runtime | 主力平台 | 典型模型 | 包体 |
|---|---|---|---|
| ONNX Runtime | 跨平台 | CV、小 NLP | 中 |
| TFLite | Android | MobileNet | 小 |
| CoreML | iOS/macOS | 推荐/视觉 | 小 |
| MLX | Apple Silicon | SLM 1-3B | 中 |
3. 模型压缩与导出流水线
3.1 量化口述
PTQ: 训练后校准集 → INT8,快,精度损 1-3%
QAT: 训练期模拟量化,精度好,成本高
3.2 验收指标
- 延迟 P50/P99(目标设备实机)
- 内存峰值
- 电量(移动)
- 任务指标下降 <0.5% AUC 等业务阈值
4. 端侧 SLM(小语言模型)
4.1 适用
- 输入法、端侧摘要、离线客服草稿
- 1-3B INT4 在手机可行(2025+ 旗舰)
4.2 架构
Prompt → 端侧 SLM draft → 可选云端大模型 verify
Speculative: 小模型起草,大模型验证(降云调用)
4.3 风险
- 幻觉离线无法人工兜底 → 策略模板 + 拒答
- 包体与 OTA 带宽 → 差分更新
5. OTA · 模型热更新
5.1 OTA 组件
| 组件 | 职责 |
|---|---|
| Registry | 模型版本、灰度规则 |
| CDN | 包分发 |
| 客户端 | 下载、校验、切换 |
| 监控 | 崩溃率、指标回退 |
5.2 灰度策略
5.3 安全
- 签名验证、SHA256、防降级攻击
- 密钥与模型分离存储
6. 云边协同模式
6.1 三种模式
| 模式 | 描述 |
|---|---|
| Edge-first | 默认本地,仅复杂请求上云 |
| Cloud-first | 端侧只做缓存/预处理 |
| Hybrid | 分数融合、分片路由 |
6.2 协同接口
message EdgeInferenceRequest {
string device_model_version = 1;
bytes encrypted_features = 2;
bool allow_cloud_fallback = 3;
}
7. 联邦学习 · 边界(Staff 必答)
7.1 是什么
联邦学习:数据留本地,只上传 梯度/聚合更新(或更安全的上传方案)。
7.2 平台边界 · 何时不做 FL
| 场景 | 建议 |
|---|---|
| 强监管原始数据不可聚合 | 考虑 FL + 安全聚合 |
| 数据量小、异构极强 | FL 收敛差,直接中心化训练+脱敏 |
| 需要可审计 snapshot | FL 难对齐 传统 MLOps 审计 |
| 跨设备算力差异大 | straggler 严重 |
7.3 工程替代
- 端侧推理 + 联邦统计(只上传聚合指标)
- 差分隐私上报 替代 raw gradient
- 同态加密聚合(成本高,金融偶用)
7.4 合规口述
「我们区分 联邦学习(训练范式) 与 边缘推理(部署范式);多数电商推荐用 中心化训练 + 端侧 INT8 推理 + OTA,仅在跨主体数据孤岛且法务批准时才上 FL。」
8. 可观测与回退
- 端侧:崩溃、推理超时、OOM、模型版本分布
- 云边:fallback 比例、云调用成本
- Kill switch:远程关闭 v2.1
9. 大厂口播题
题 1:🟦 字节 - "ONNX vs TFLite 怎么选?"
采分点
- 跨平台 vs Android 深度
- EP 支持
- 包体
60~90s 口播骨架
跨平台 ONNX;纯 Android 可 TFLite+NNAPI。
追问收口
60→95 递进:60 分答主干;满分补 QPS/行数/SLA 数字 + 幂等键设计 + 与在线对比。
题 2:🟧 阿里 - "CoreML 和 MLX 分工?"
采分点
- MLX 迭代
- CoreML 量产
- ANE
60~90s 口播骨架
研发 MLX 验证;上线 CoreML 吃 ANE。
追问收口
60→95 递进:60 分答主干;满分补 QPS/行数/SLA 数字 + 幂等键设计 + 与在线对比。
题 3:🟡 美团 - "端侧 SLM 和云端 LLM 协同?"
采分点
- draft-verify
- 降本
- 隐私
60~90s 口播骨架
小模型起草大模型验证;敏感不出端。
追问收口
60→95 递进:60 分答主干;满分补 QPS/行数/SLA 数字 + 幂等键设计 + 与在线对比。
题 4:🟢 腾讯 - "OTA 灰度怎么做?"
采分点
- 1-10-50-100
- crash 回滚
- 签名
60~90s 口播骨架
阶梯灰度+自动回滚+签名校验。
追问收口
60→95 递进:60 分答主干;满分补 QPS/行数/SLA 数字 + 幂等键设计 + 与在线对比。
题 5:🟪 微软 - "联邦学习什么时候用?"
采分点
- 数据孤岛
- 法务
- 异构
60~90s 口播骨架
少数跨主体场景;多数用中心化+端侧推理。
追问收口
60→95 递进:60 分答主干;满分补 QPS/行数/SLA 数字 + 幂等键设计 + 与在线对比。
题 6:🔴 支付 - "端侧风控模型合规?"
采分点
- 可解释
- 版本审计
- 不可篡改
60~90s 口播骨架
模型卡+OTA 记录;关键决策可上云复核。
追问收口
60→95 递进:60 分答主干;满分补 QPS/行数/SLA 数字 + 幂等键设计 + 与在线对比。
题 7:🟦 滴滴 - "INT8 量化掉点怎么 acceptance?"
采分点
- 业务阈值
- 影子
- 回滚
60~90s 口播骨架
AUC 降 <0.5% 且影子一周通过。
追问收口
60→95 递进:60 分答主干;满分补 QPS/行数/SLA 数字 + 幂等键设计 + 与在线对比。
题 8:🟧 京东 - "弱网 offline 策略?"
采分点
- 本地模型
- 队列
- 过期
60~90s 口播骨架
离线队列+本地默认分;过期拒答。
追问收口
60→95 递进:60 分答主干;满分补 QPS/行数/SLA 数字 + 幂等键设计 + 与在线对比。
题 9:🟡 快手 - "端侧推荐 embedding 大小?"
采分点
- <50MB
- PQ
- 蒸馏
60~90s 口播骨架
蒸馏+PQ;超大拆云端。
追问收口
60→95 递进:60 分答主干;满分补 QPS/行数/SLA 数字 + 幂等键设计 + 与在线对比。
题 10:🟢 百度 - "云边 fallback 比例高说明什么?"
采分点
- 模型不够
- 网络
- 特征缺失
60~90s 口播骨架
看特征缺失率与模型容量;可能需上云特征。
追问收口
60→95 递进:60 分答主干;满分补 QPS/行数/SLA 数字 + 幂等键设计 + 与在线对比。
题 11:🟦 小红书 - "差分更新 OTA?"
采分点
- delta 包
- 带宽
- 回滚
60~90s 口播骨架
bsdiff/专用 delta;保留上一版包回滚。
追问收口
60→95 递进:60 分答主干;满分补 QPS/行数/SLA 数字 + 幂等键设计 + 与在线对比。
题 12:🟧 Staff - "边缘推理平台 checklist?"
采分点
- 导出
- 量化
- bench
- OTA
- 监控
60~90s 口播骨架
五段流水线平台化。
追问收口
60→95 递进:60 分答主干;满分补 QPS/行数/SLA 数字 + 幂等键设计 + 与在线对比。
STAR-M-P:OTA 新模型导致 iOS 崩溃率升 3 倍
| 维度 | 内容 |
|---|---|
| S | 推荐模型 v3.2 灰度 10% 后 crash 告警。 |
| T | 1 小时内全量回滚并定位算子。 |
| A | Kill switch 回 v3.1;定位 ONNX opset 不兼容;修复导出 pipeline;重灰度 1%。 |
| R | crash 从 3%→基线;新增 端上 golden benchmark CI。 |
| M | 监控:batch 作业 lag、回填行数、champion-challenger 指标分叉 |
| P | 灰度阶梯+自动回滚;导出 CI 对齐 opset。 |
STAR-M-P:误推联邦学习导致训练 3 个月不收敛
| 维度 | 内容 |
|---|---|
| S | 跨 2000 门店 POS 数据异构,FL 方案 AUC 卡住。 |
| T | 评估是否继续 FL 或改中心化。 |
| A | PoC 证明 straggler+非 IID;改 中心化脱敏训练 + 端侧推理;仅保留本地统计上报。 |
| R | AUC +0.04;训练周期从周级→日级。 |
| M | 监控:batch 作业 lag、回填行数、champion-challenger 指标分叉 |
| P | FL 需法务+技术双签;默认边缘推理非 FL。 |
10. 面试前夜 Checklist
11. 全知识点自测
附录 1 · Staff 深度备忘
| 主题 | 要点 |
|---|---|
| 幂等 | (entity_id, model_version, batch_id) 唯一键;UPSERT 或 merge |
| SLA | 区分 完成时刻 vs 数据正确性;迟到分区重跑策略 |
| 成本 | batch 用 Spot;按 扫描 TB 数 归因 FinOps |
| 边界 | 离线分数 ≠ 在线概率校准;需 Platt/Isotonic 对齐 |
金句 #1: 「批量推理是数据工程问题,不是把 predict() 包一层 for 循环。」
附录 2 · Staff 深度备忘
| 主题 | 要点 |
|---|---|
| 幂等 | (entity_id, model_version, batch_id) 唯一键;UPSERT 或 merge |
| SLA | 区分 完成时刻 vs 数据正确性;迟到分区重跑策略 |
| 成本 | batch 用 Spot;按 扫描 TB 数 归因 FinOps |
| 边界 | 离线分数 ≠ 在线概率校准;需 Platt/Isotonic 对齐 |
金句 #2: 「批量推理是数据工程问题,不是把 predict() 包一层 for 循环。」
附录 3 · Staff 深度备忘
| 主题 | 要点 |
|---|---|
| 幂等 | (entity_id, model_version, batch_id) 唯一键;UPSERT 或 merge |
| SLA | 区分 完成时刻 vs 数据正确性;迟到分区重跑策略 |
| 成本 | batch 用 Spot;按 扫描 TB 数 归因 FinOps |
| 边界 | 离线分数 ≠ 在线概率校准;需 Platt/Isotonic 对齐 |
金句 #3: 「批量推理是数据工程问题,不是把 predict() 包一层 for 循环。」
附录 4 · Staff 深度备忘
| 主题 | 要点 |
|---|---|
| 幂等 | (entity_id, model_version, batch_id) 唯一键;UPSERT 或 merge |
| SLA | 区分 完成时刻 vs 数据正确性;迟到分区重跑策略 |
| 成本 | batch 用 Spot;按 扫描 TB 数 归因 FinOps |
| 边界 | 离线分数 ≠ 在线概率校准;需 Platt/Isotonic 对齐 |
金句 #4: 「批量推理是数据工程问题,不是把 predict() 包一层 for 循环。」
附录 5 · Staff 深度备忘
| 主题 | 要点 |
|---|---|
| 幂等 | (entity_id, model_version, batch_id) 唯一键;UPSERT 或 merge |
| SLA | 区分 完成时刻 vs 数据正确性;迟到分区重跑策略 |
| 成本 | batch 用 Spot;按 扫描 TB 数 归因 FinOps |
| 边界 | 离线分数 ≠ 在线概率校准;需 Platt/Isotonic 对齐 |
金句 #5: 「批量推理是数据工程问题,不是把 predict() 包一层 for 循环。」
附录 6 · Staff 深度备忘
| 主题 | 要点 |
|---|---|
| 幂等 | (entity_id, model_version, batch_id) 唯一键;UPSERT 或 merge |
| SLA | 区分 完成时刻 vs 数据正确性;迟到分区重跑策略 |
| 成本 | batch 用 Spot;按 扫描 TB 数 归因 FinOps |
| 边界 | 离线分数 ≠ 在线概率校准;需 Platt/Isotonic 对齐 |
金句 #6: 「批量推理是数据工程问题,不是把 predict() 包一层 for 循环。」
附录 7 · Staff 深度备忘
| 主题 | 要点 |
|---|---|
| 幂等 | (entity_id, model_version, batch_id) 唯一键;UPSERT 或 merge |
| SLA | 区分 完成时刻 vs 数据正确性;迟到分区重跑策略 |
| 成本 | batch 用 Spot;按 扫描 TB 数 归因 FinOps |
| 边界 | 离线分数 ≠ 在线概率校准;需 Platt/Isotonic 对齐 |
金句 #7: 「批量推理是数据工程问题,不是把 predict() 包一层 for 循环。」
附录 8 · Staff 深度备忘
| 主题 | 要点 |
|---|---|
| 幂等 | (entity_id, model_version, batch_id) 唯一键;UPSERT 或 merge |
| SLA | 区分 完成时刻 vs 数据正确性;迟到分区重跑策略 |
| 成本 | batch 用 Spot;按 扫描 TB 数 归因 FinOps |
| 边界 | 离线分数 ≠ 在线概率校准;需 Platt/Isotonic 对齐 |
金句 #8: 「批量推理是数据工程问题,不是把 predict() 包一层 for 循环。」
附录 9 · Staff 深度备忘
| 主题 | 要点 |
|---|---|
| 幂等 | (entity_id, model_version, batch_id) 唯一键;UPSERT 或 merge |
| SLA | 区分 完成时刻 vs 数据正确性;迟到分区重跑策略 |
| 成本 | batch 用 Spot;按 扫描 TB 数 归因 FinOps |
| 边界 | 离线分数 ≠ 在线概率校准;需 Platt/Isotonic 对齐 |
金句 #9: 「批量推理是数据工程问题,不是把 predict() 包一层 for 循环。」
附录 10 · Staff 深度备忘
| 主题 | 要点 |
|---|---|
| 幂等 | (entity_id, model_version, batch_id) 唯一键;UPSERT 或 merge |
| SLA | 区分 完成时刻 vs 数据正确性;迟到分区重跑策略 |
| 成本 | batch 用 Spot;按 扫描 TB 数 归因 FinOps |
| 边界 | 离线分数 ≠ 在线概率校准;需 Platt/Isotonic 对齐 |
金句 #10: 「批量推理是数据工程问题,不是把 predict() 包一层 for 循环。」
附录 11 · Staff 深度备忘
| 主题 | 要点 |
|---|---|
| 幂等 | (entity_id, model_version, batch_id) 唯一键;UPSERT 或 merge |
| SLA | 区分 完成时刻 vs 数据正确性;迟到分区重跑策略 |
| 成本 | batch 用 Spot;按 扫描 TB 数 归因 FinOps |
| 边界 | 离线分数 ≠ 在线概率校准;需 Platt/Isotonic 对齐 |
金句 #11: 「批量推理是数据工程问题,不是把 predict() 包一层 for 循环。」
附录 12 · Staff 深度备忘
| 主题 | 要点 |
|---|---|
| 幂等 | (entity_id, model_version, batch_id) 唯一键;UPSERT 或 merge |
| SLA | 区分 完成时刻 vs 数据正确性;迟到分区重跑策略 |
| 成本 | batch 用 Spot;按 扫描 TB 数 归因 FinOps |
| 边界 | 离线分数 ≠ 在线概率校准;需 Platt/Isotonic 对齐 |
金句 #12: 「批量推理是数据工程问题,不是把 predict() 包一层 for 循环。」
附录 13 · Staff 深度备忘
| 主题 | 要点 |
|---|---|
| 幂等 | (entity_id, model_version, batch_id) 唯一键;UPSERT 或 merge |
| SLA | 区分 完成时刻 vs 数据正确性;迟到分区重跑策略 |
| 成本 | batch 用 Spot;按 扫描 TB 数 归因 FinOps |
| 边界 | 离线分数 ≠ 在线概率校准;需 Platt/Isotonic 对齐 |
金句 #13: 「批量推理是数据工程问题,不是把 predict() 包一层 for 循环。」
附录 14 · Staff 深度备忘
| 主题 | 要点 |
|---|---|
| 幂等 | (entity_id, model_version, batch_id) 唯一键;UPSERT 或 merge |
| SLA | 区分 完成时刻 vs 数据正确性;迟到分区重跑策略 |
| 成本 | batch 用 Spot;按 扫描 TB 数 归因 FinOps |
| 边界 | 离线分数 ≠ 在线概率校准;需 Platt/Isotonic 对齐 |
金句 #14: 「批量推理是数据工程问题,不是把 predict() 包一层 for 循环。」
附录 15 · Staff 深度备忘
| 主题 | 要点 |
|---|---|
| 幂等 | (entity_id, model_version, batch_id) 唯一键;UPSERT 或 merge |
| SLA | 区分 完成时刻 vs 数据正确性;迟到分区重跑策略 |
| 成本 | batch 用 Spot;按 扫描 TB 数 归因 FinOps |
| 边界 | 离线分数 ≠ 在线概率校准;需 Platt/Isotonic 对齐 |
金句 #15: 「批量推理是数据工程问题,不是把 predict() 包一层 for 循环。」
附录 16 · Staff 深度备忘
| 主题 | 要点 |
|---|---|
| 幂等 | (entity_id, model_version, batch_id) 唯一键;UPSERT 或 merge |
| SLA | 区分 完成时刻 vs 数据正确性;迟到分区重跑策略 |
| 成本 | batch 用 Spot;按 扫描 TB 数 归因 FinOps |
| 边界 | 离线分数 ≠ 在线概率校准;需 Platt/Isotonic 对齐 |
金句 #16: 「批量推理是数据工程问题,不是把 predict() 包一层 for 循环。」
附录 17 · Staff 深度备忘
| 主题 | 要点 |
|---|---|
| 幂等 | (entity_id, model_version, batch_id) 唯一键;UPSERT 或 merge |
| SLA | 区分 完成时刻 vs 数据正确性;迟到分区重跑策略 |
| 成本 | batch 用 Spot;按 扫描 TB 数 归因 FinOps |
| 边界 | 离线分数 ≠ 在线概率校准;需 Platt/Isotonic 对齐 |
金句 #17: 「批量推理是数据工程问题,不是把 predict() 包一层 for 循环。」
附录 18 · Staff 深度备忘
| 主题 | 要点 |
|---|---|
| 幂等 | (entity_id, model_version, batch_id) 唯一键;UPSERT 或 merge |
| SLA | 区分 完成时刻 vs 数据正确性;迟到分区重跑策略 |
| 成本 | batch 用 Spot;按 扫描 TB 数 归因 FinOps |
| 边界 | 离线分数 ≠ 在线概率校准;需 Platt/Isotonic 对齐 |
金句 #18: 「批量推理是数据工程问题,不是把 predict() 包一层 for 循环。」
附录 19 · Staff 深度备忘
| 主题 | 要点 |
|---|---|
| 幂等 | (entity_id, model_version, batch_id) 唯一键;UPSERT 或 merge |
| SLA | 区分 完成时刻 vs 数据正确性;迟到分区重跑策略 |
| 成本 | batch 用 Spot;按 扫描 TB 数 归因 FinOps |
| 边界 | 离线分数 ≠ 在线概率校准;需 Platt/Isotonic 对齐 |
金句 #19: 「批量推理是数据工程问题,不是把 predict() 包一层 for 循环。」
附录 20 · Staff 深度备忘
| 主题 | 要点 |
|---|---|
| 幂等 | (entity_id, model_version, batch_id) 唯一键;UPSERT 或 merge |
| SLA | 区分 完成时刻 vs 数据正确性;迟到分区重跑策略 |
| 成本 | batch 用 Spot;按 扫描 TB 数 归因 FinOps |
| 边界 | 离线分数 ≠ 在线概率校准;需 Platt/Isotonic 对齐 |
金句 #20: 「批量推理是数据工程问题,不是把 predict() 包一层 for 循环。」
附录 21 · Staff 深度备忘
| 主题 | 要点 |
|---|---|
| 幂等 | (entity_id, model_version, batch_id) 唯一键;UPSERT 或 merge |
| SLA | 区分 完成时刻 vs 数据正确性;迟到分区重跑策略 |
| 成本 | batch 用 Spot;按 扫描 TB 数 归因 FinOps |
| 边界 | 离线分数 ≠ 在线概率校准;需 Platt/Isotonic 对齐 |
金句 #21: 「批量推理是数据工程问题,不是把 predict() 包一层 for 循环。」
附录 22 · Staff 深度备忘
| 主题 | 要点 |
|---|---|
| 幂等 | (entity_id, model_version, batch_id) 唯一键;UPSERT 或 merge |
| SLA | 区分 完成时刻 vs 数据正确性;迟到分区重跑策略 |
| 成本 | batch 用 Spot;按 扫描 TB 数 归因 FinOps |
| 边界 | 离线分数 ≠ 在线概率校准;需 Platt/Isotonic 对齐 |
金句 #22: 「批量推理是数据工程问题,不是把 predict() 包一层 for 循环。」
附录 23 · Staff 深度备忘
| 主题 | 要点 |
|---|---|
| 幂等 | (entity_id, model_version, batch_id) 唯一键;UPSERT 或 merge |
| SLA | 区分 完成时刻 vs 数据正确性;迟到分区重跑策略 |
| 成本 | batch 用 Spot;按 扫描 TB 数 归因 FinOps |
| 边界 | 离线分数 ≠ 在线概率校准;需 Platt/Isotonic 对齐 |
金句 #23: 「批量推理是数据工程问题,不是把 predict() 包一层 for 循环。」
附录 24 · Staff 深度备忘
| 主题 | 要点 |
|---|---|
| 幂等 | (entity_id, model_version, batch_id) 唯一键;UPSERT 或 merge |
| SLA | 区分 完成时刻 vs 数据正确性;迟到分区重跑策略 |
| 成本 | batch 用 Spot;按 扫描 TB 数 归因 FinOps |
| 边界 | 离线分数 ≠ 在线概率校准;需 Platt/Isotonic 对齐 |
金句 #24: 「批量推理是数据工程问题,不是把 predict() 包一层 for 循环。」
附录 25 · Staff 深度备忘
| 主题 | 要点 |
|---|---|
| 幂等 | (entity_id, model_version, batch_id) 唯一键;UPSERT 或 merge |
| SLA | 区分 完成时刻 vs 数据正确性;迟到分区重跑策略 |
| 成本 | batch 用 Spot;按 扫描 TB 数 归因 FinOps |
| 边界 | 离线分数 ≠ 在线概率校准;需 Platt/Isotonic 对齐 |
金句 #25: 「批量推理是数据工程问题,不是把 predict() 包一层 for 循环。」
附录 26 · Staff 深度备忘
| 主题 | 要点 |
|---|---|
| 幂等 | (entity_id, model_version, batch_id) 唯一键;UPSERT 或 merge |
| SLA | 区分 完成时刻 vs 数据正确性;迟到分区重跑策略 |
| 成本 | batch 用 Spot;按 扫描 TB 数 归因 FinOps |
| 边界 | 离线分数 ≠ 在线概率校准;需 Platt/Isotonic 对齐 |
金句 #26: 「批量推理是数据工程问题,不是把 predict() 包一层 for 循环。」
附录 27 · Staff 深度备忘
| 主题 | 要点 |
|---|---|
| 幂等 | (entity_id, model_version, batch_id) 唯一键;UPSERT 或 merge |
| SLA | 区分 完成时刻 vs 数据正确性;迟到分区重跑策略 |
| 成本 | batch 用 Spot;按 扫描 TB 数 归因 FinOps |
| 边界 | 离线分数 ≠ 在线概率校准;需 Platt/Isotonic 对齐 |
金句 #27: 「批量推理是数据工程问题,不是把 predict() 包一层 for 循环。」
附录 28 · Staff 深度备忘
| 主题 | 要点 |
|---|---|
| 幂等 | (entity_id, model_version, batch_id) 唯一键;UPSERT 或 merge |
| SLA | 区分 完成时刻 vs 数据正确性;迟到分区重跑策略 |
| 成本 | batch 用 Spot;按 扫描 TB 数 归因 FinOps |
| 边界 | 离线分数 ≠ 在线概率校准;需 Platt/Isotonic 对齐 |
金句 #28: 「批量推理是数据工程问题,不是把 predict() 包一层 for 循环。」
官方文档与源码(一级依据)
See registry · 正文机制应来自下方 官方文档(L1) 与 官方源码仓库(L2);
禁止用教程站/博客充当机制依据。本章 QPS/延迟/STAR 为面试示意。
写作规范:docs/official-sources-registry.md §0
L1 · 官方文档
浙公网安备 33010602011771号