场景:线上部署一个 32 层、d_model=4096、32 个 attention 头(head_dim=128)、bf16 的 7B 级模型做推理,max_seq_len=4096。请估算 batch=16 时的 KV cache 显存占用。如果改成 GQA、KV 头数从 32 降到 8,能省多少?在 80GB 卡上,这个改动对你的最大并发 batch 意味着什么?
面试官在考什么
判断候选人能否从结构定义出发推导 KV cache 显存,理解 GQA/MQA 省的是 KV cache 与访存带宽,并把它换算成并发容量和单位成本。
回答框架 · 前两步
- KV cache 每 token 每层 = 2(K,V)× KV 头数 × head_dim × 2 bytes;本配置 = 2×32×128×2 = 16KB/token/layer。
- 单条 4096 长度:16KB×4096 ≈ 64MB/层,×32 层 ≈ 2GB;batch=16 约 32–34GB,占总显存很大一块。
还有 3 条答案要点、 3 层追问、 6 个常见坑, 以及针对你简历的追问路径,在定制报告里。
延伸阅读
想看这个方向的整体准备路线? 进入「深度学习基础」方向页
同一能力域的其他题
- 手写版:请推导一下自注意力的计算过程,并说明为什么要除以 sqrt(d_k)?如果不除会出什么问题?
- 你用单层 LSTM(hidden=128)做一个长度 512 的序列分类任务,只取最后一个时间步的 h 接一层线性分类头。训练集 loss 能降到 0.05,验证集 loss 停在 0.6 左右;更奇怪的是,你把验证集里每条样本的时间步随机打乱后再测,指标几乎不变。请给出你的根因判断、一个能证伪它的实验,以及你接下来会怎么改。
- 场景:线上实时风控,每条请求是一条长度 300 的行为序列(每步 64 维),要求单条推理 P99 < 20ms,只能部署一张 T4,线上 batch=1(请求串行到达但必须低延迟)。候选方案:(A) 2 层 LSTM,hidden=256;(B) 2 层 GRU,hidden=256;(C) 因果膨胀卷积(dilation=1,2,4,...,128,kernel=3,约 8 层)。请给出你的选型,并估算 A/B 在这个延迟预算下能不能达标、为什么。如果实际必须用 RNN,你会怎么改?
- 某实时风控场景,用户行为序列平均长度 2000,QPS 1000,要求单次推理 P99 ≤ 50ms(单卡 T4)。当前用 2 层 LSTM,hidden=256,延迟 120ms,且长序列尾部信息衰减明显。团队有人提议直接换 Transformer,但 GPU 预算只允许推理成本增加 20%。作为技术负责人,你如何做技术决策?请给出你对 RNN/LSTM/GRU 能力边界的判断、可能的中间方案、以及如何验证和推动落地。
- 单层 LSTM,输入维度 64,隐层维度 128,batch=32、序列长度 50。请算出这一层 LSTM 有多少个可学习参数(含 bias,写出计算式);如果把同样的输入维度、隐层维度换成单层 GRU,参数量是多少?并说明这个比例从两者的门结构上看是怎么来的,LSTM 每个门各控制什么。
- 在 d_k=512 的点积注意力里,假设 q 和 k 的每一维近似独立、均值 0 方差 1。请估算 q·k 的量级,说明为什么必须除以 sqrt(d_k),以及如果不除,在 fp16 训练时会具体出现什么现象。另外,如果你把 padding 位置的 score 设成 -1e9 而不是 -inf,可能踩什么坑?