MHA模型
kv cache采用BF16存储时,每个token KV cache大小:
layer_num * 2 * head_num * head_dim *2
第一个2是key和value两个张量,第二个2是BF16的dtype大小。
DeepSeek V3.1架构MLA
DeepSeek V3.1架构模型包括DeepSeek V3.1, Kimi-k2全系列,如Kimi-k2.6, k2-thinking等。
kv cache采用BF16存储时,每个token KV cache大小:
layer_num*(512+64)*2
例如DeepSeek V3.1:
61*(512+64)*2 = 68.625 K
Kimi-k2.5/Kimi-k2.6与DeepSeek层数都是61层,区别是MOE部分,因此kv cache容量相同。
DeepSeek V3.2架构MLA + topk indexer
DeepSeek V3.2架构模型包括DeepSeek V3.1,GLM5系列,如GLM5.1.
DeepSeek V3.2与V3.1的区别,除了增加了一个2048 topk的indexer模块,还采用了FP8量化,但是不是所有部分都进行了FP8量化,这使得kv cache计算稍微复杂了一些。当然V32也可以采用BF16存储,只是对推理decode能达到的batch不利。
每个token KV cache大小: layer_num * (656 + (128+4)) = layer_num *788
解释:
FP8量化按128分块,每个分块需要一个FP32的缩放系数,所以每个128对应128xFP8+1xFP32。
head_dim是512+64,512的部分采用FP8,大小是512(FP8) + 512/128*4,而64的部分BF16不量化。indexer部分128采用FP8,大小为128+4。
所以总大小为:512(FP8) + 512/128*4 + 64(BF16)*2 + (128+4)
DeepSeek V3.2的FP8 kv cache大小为:
61*(656 + (128+4)) = 46.942 K
GLM5/GLM5.1与DeepSeek V3.2除了MOE,还有模型层数变大,为78层。因此kv cache大小为
78*788 = 61464 = 60.023 k。
to do: 3:1混合attention,包括MHA+linear, MLA+linear