如何利用缓存机制(Cache)来减少重复请求的计算开销?
解读
在国内 AI 产品落地场景中,面试官真正想考察的是:你是否能把“省钱、提速、保效果”这三件事用工程化语言讲清楚。
- 省钱:GPU/CPU 算力按小时计费,重复推理直接拉高账单。
- 提速:C 端高并发场景(如短视频审核、电商客服)对 P99 延迟极其敏感,缓存命中可直接返回,避免排队。
- 保效果:AI 输出有概率性,缓存必须解决“同一输入是否一定拿到同一输出”以及“模型热更新后旧缓存是否失效”两大合规/体验风险。
因此,回答要围绕“缓存什么、怎么缓存、何时失效、如何评估”四步展开,并给出可落地的数据口径(命中率、成本下降比例、延迟分位值),让面试官一听就知道你带过真实项目。
知识点
- 缓存层级:客户端本地缓存(Edge Cache)、接入层缓存(CDN/API 网关)、应用层缓存(Redis、Memcached)、向量缓存(Milvus、Faiss IVF 索引缓存)、模型内部缓存(KV-Cache、Prefix-Cache)。
- 缓存键设计:
‑ 文本类:对 query 做归一化(全角转半角、去 Emoji、截断长度)+ 敏感词哈希,避免“你好!”与“你好” miss。
‑ 多模态:图片先抽 128bit 感知哈希(pHash),再拼业务维度(uid、场景号)做二级键。 - 失效策略:
‑ TTL(绝对过期)+ 版本号(模型 MD5)双因子,模型热更新时版本号变,旧键自然淘汰。
‑ 主动失效:监听模型发布流水线,发 MQ 广播,各节点收到后删除本地 LRU。 - 一致性兜底:缓存值带“生成时间戳+模型版本”,业务侧可二次校验,满足《互联网信息服务算法推荐管理规定》留痕要求。
- 命中率优化:
‑ 布隆过滤器前置,防止冷 key 击穿 Redis。
‑ 热门 query 自动拆词归一,提升 15% 命中率(实测短视频标题审核场景)。 - 成本测算公式:
节省费用 = QPS × 命中率 × 单次 GPU 推理耗时 × GPU 时单价 × 365 × 24
以 A10 卡 6 元/小时、单次 200 ms、命中率 30% 为例,1w QPS 一年省约 94 万元。 - 合规红线:缓存不涉及用户原始图片/音频,只存特征哈希或脱敏后文本,满足《个人信息保护法》最小可用原则。
答案
以我曾负责的“电商智能客服机器人”为例,峰值 QPS 2 万,GPU 推理集群 80 卡,账单每月 50 万元。通过三级缓存把成本砍到 35 万元,且 P99 延迟从 580 ms 降到 120 ms,步骤如下:
- 键设计:对用户 query 做“大小写统一+同义词映射+截断 64 字符”,再取 SHA256 前 16 字节做 key;同时把“店铺ID+机器人在线版本号”拼成前缀,保证模型迭代自动隔离。
- 缓存层级:
‑ 本地 LRU:Node 层嵌入 256 MB 内存,命中直接返回,单机 3 万 QPS 无压力。
‑ Redis 集群:16 分片,单分片 8 G,开启 hash-max-ziplist-value=1k,节省 30% 内存;value 用 MessagePack 压缩,平均 0.6 KB。
‑ CDN 边缘:对“热门问题 TOP 5k”做页面级缓存,应对大促洪峰。 - 失效机制:
‑ 模型每周三凌晨热更,CI 流水线在推送镜像同时写入“model_version=sha256”到配置中心,各应用监听变更,5 秒内完成本地 LRU 清空;Redis 侧采用“版本号+TTL 7 天”双因子,避免脏数据。 - 命中率观测:
‑ 埋点上报 key、是否命中、模型版本,实时计算“小时级命中率”;低于 25% 触发报警,自动扩容 Redis 分片或调整归一化策略。 - 效果:上线两周命中率稳定 42%,GPU 利用率从 85% 降到 48%,每月节省 15 万元;大促当天 4 倍流量,缓存层扛住 94% 请求,核心接口零降级。
- 合规:缓存只保存脱敏后文本和机器人回复 ID,原始对话落盘到加密 OSS,180 天自动删除,通过集团安全审计。
拓展思考
- 生成式模型(如大模型写作)如何缓存?
可采用“语义指纹+温度值”分段缓存:先缓存“大纲+关键段落”,再对可变细节实时生成,既保证创意多样性,又把平均耗时降 40%。 - 多租户 SaaS 场景如何防止缓存击穿?
用“租户前缀+滑动窗口计数”做二次校验:同一租户 1 秒内重复请求超过 100 次才触发缓存,防止恶意刷接口。 - 边缘计算(如盒子设备)内存只有 2 G,如何权衡缓存大小与模型体积?
采用“动态换入换出”策略:把模型权重放 Flash,缓存仅保留高频向量结果;命中向量缓存后再做一次 3 层 MLP 重排序,实测在 1 G 缓存下仍能保持 35% 命中率。