永州网站建设服务,南宁seo品牌费用是多少,泰安seo,wordpress添加留言板大模型推理加速的一个常用技术是KV Cache#xff0c;在不牺牲任何计算精度的前提下#xff0c;通过空间换时间#xff0c;提高推理性能。注意#xff0c;这里的Cache概念非常简单#xff0c;跟浏览器缓存、CPU缓存不是一个概念。 在生成式模型的推理过程中#xff0c;假设…大模型推理加速的一个常用技术是KV Cache在不牺牲任何计算精度的前提下通过空间换时间提高推理性能。注意这里的Cache概念非常简单跟浏览器缓存、CPU缓存不是一个概念。 在生成式模型的推理过程中假设给定一个输入文本模型会输出一个长度为N的文本但是该过程执行了N次推理。因为模型每次推理只输出一个token然后将输出token与输入tokens拼接在一起作为下一次推理的输入这样不断反复直到遇到终止符。
由于生成式模型推理过程是单向的即已经输出的token的embedding是不会再变化的所以上述步骤可以优化。将Key和Value缓存起来不用再经历前向传播算出embedding只需要将上一轮输出的token前向传播算出embedding然后与KV拼接来预测出下一个token。这样模型的计算量大大减少推理大幅加速。
伪代码如下
query self._split_heads(query, self.num_heads, self.head_dim)
key self._split_heads(key, self.num_heads, self.head_dim)
value self._split_heads(value, self.num_heads, self.head_dim)if layer_past is not None: # 当输出第一个token后layer_past就是非None了past_key, past_value layer_past # 取出之前计算好的 key, valuekey torch.cat((past_key, key), dim-2) # past_key 与当前 token 对应的 key 拼接value torch.cat((past_value, value), dim-2) # past_value 与当前 token 对应的 value 拼接if use_cache is True:present (key, value)
else:present None参考
KV Cache