边缘推理-端侧与云边协同

边缘推理 · 端侧与云边协同

🏠 返回 README | ⬅️ 09-批量推理-离线打分与回填.md | ➡️ 11-云厂商-ML全栈选型-AWS-GCP-Azure-Databricks.md

风格说明:Staff 级——ONNX / TFLite / CoreML / MLX、端侧 SLMOTA 更新、联邦学习边界、云边协同;含 Mermaid、口播题、STAR-M-P、Checklist。


L1 是什么 · 边缘推理定位

1.1 一句话

边缘推理把模型推到 手机/NPU/车载/门店网关,用 本地算力隐私、延迟、离线可用;与云端协同时明确 分区:哪些必须上云、哪些禁止出端

1.2 决策矩阵

因素 偏边缘 偏云端
延迟 <50ms、弱网 可百 ms+
隐私 人脸/键盘本地 可脱敏上传
模型 <500MB INT8 >10GB LLM
更新 OTA 周级 小时级
算力 NPU/ANE 可用 需 H100
flowchart TB CLOUD[云端 Serving<br/>大模型/重特征] EDGE[端侧 Runtime<br/>ONNX/TFLite/CoreML] GATE[云边网关<br/>策略+缓存] DEVICE[设备] DEVICE --> EDGE EDGE -->|fallback| GATE GATE --> CLOUD

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. 模型压缩与导出流水线

flowchart LR TRAIN[PyTorch 训练] --> EXPORT[ONNX export] EXPORT --> QUANT[PTQ/QAT INT8] QUANT --> BENCH[端上 benchmark] BENCH --> PKG[应用打包] PKG --> OTA[OTA 通道]

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 灰度策略

flowchart TD REL[发布 v2.1] --> C1[1% 设备] C1 -->|metric ok| C2[10%] C2 --> C3[50%] C3 --> FULL[100%] C1 -->|crash↑| ROLL[回滚 v2.0]

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 · 官方文档

posted @ 2026-08-02 17:16  evan06  阅读(2)  评论(0)    收藏  举报