LLM 量化 cache管理

ops/2025/3/28 7:43:52/

本文基于百度昆仑第二代硬件

前提

当前百度硬件tensor core支持的输入:int16, int8, bfp16
当前百度硬件tensor core支持的计算方式: int16, fp16,int8
常见的LLM大模型激活类型:fp16,bfp16
cache类型:fp16, bfp16,int8,int4

量化

这里列举一下当前常用的方式以及量化方法

激活cache计算方式
类型1fp16fp16量化到int16,然后做int16*int16的计算,输出反量化到fp16
类型2fp16int8输入量化到int16(实为int8 * 2),与cache 做两次计算,最后输出反量化到fp16

这里主要讨论一下cache 的量化方式:

  1. 当用类型1时,cache为fp16,此时需要量化到int16,此时需要一个per cache的 max/scale值来进行量化。(计算量 cache len)
    这里可以做一个优化,保存一个per cache 的max值,每次插入数据时更新per cache max值。(计算量 1)
    然而,当遇到动态插入情况时,如下图图2,Q4结束了,Q6插入,但这时Q4的max值还在cache max值中,这里有一个解决版本,保存per batch 的max,当某个batch 结束了,置空该值,然后在送入attention算子之前提前更新per cache max值 (计算量 batch)
    在这里插入图片描述

  2. 当用类型2时,输入时int8,主要涉及到的是反量化,用到了静态量化方式。
    常见的静态量化为:per channel,百度采用per head量化,(seqlen, head_num, head_dim)在head_num维度做量化。

题外

当然这些量化方式对硬件来说不需要关注,硬件只需要知道这一批数据max值是多少,量化还是反量化,输入输出类型是啥。怎么用就属于算子层实现,
例如:per head量化方式

for (int i = 0; i < seqlen; i++) {for (int j = 0; j < head_num; j++) {float scale = head_num_sacle[j];for (int k = 0; k < head_dim; k++) {dequant_or_quant(x, y, scale);}}
}

http://www.ppmy.cn/ops/167535.html

相关文章

Rust语言学习

Rust语言学习 通用编程概念所有权所有权引用和借用slice struct(结构体)定义并实例化一个结构体使用结构体方法语法 枚举 enums定义枚举match控制流运算符if let 简单控制流 使用包、Crate和模块管理不断增长的项目&#xff08;模块系统&#xff09;包和crate定义模块来控制作用…

从需求到智能管理:用 AntSK 和 DeepSeek-R1 打造企业级知识库与测试用例生成系统

在企业数字化转型的浪潮中&#xff0c;知识管理与测试用例生成正逐渐成为核心竞争力。如何高效地将需求文档转化为可操作的用例&#xff0c;并构建一个方便检索、管理和扩展的知识库&#xff0c;是每个技术团队面临的难题。而 AntSK 工具结合国产大语言模型 DeepSeek-R1&#x…

【简单有效!】Gradio利用html插件实现video视频流循环播放

文章目录 前言 & 思路静态资源挂载完整代码结果示例 前言 & 思路 需要利用gradio在前端搭建一个页面&#xff0c;循环播放视频。思路是直接调用gr.HTML插件实现&#xff0c;简单有效&#xff01;&#xff01;&#xff01; 静态资源挂载 app.mount("/static&quo…

【最新版】龙兵名片V152独立版系统源码+在线更新+搭建教程

一.介绍 龙兵名片独立版系统源码V152版本&#xff0c;支持后台在线更新升级&#xff0c;全插件版本 持续更新中&#xff01; 总体使用特别的稳定没有出现什么bug问题&#xff0c;老版本的用户可以升级 二.搭建环境 系统环境&#xff1a;CentOS、 运行环境&#xff1a;宝塔 …

RC5在线加密工具

RC5 是一种对称密钥加密算法&#xff0c;由 Ronald Rivest 于 1994 年设计&#xff0c;具有可变密钥长度、轮数和块大小&#xff0c;适用于多种应用场景。 开发调试可以结合在线工具使用 RC5在线加密工具 RC5在线加密工具加密模式支持ECB、CBC、CFB、OFB、CTR等模式。

在LwIP中,`tcp_recved()`、`tcp_sndbuf()` 和 `tcp_write()`三个函数详细用法及示例

在LwIP中&#xff0c;tcp_recved()、tcp_sndbuf() 和 tcp_write() 是TCP协议栈的核心函数&#xff0c;用于管理接收和发送数据流。以下是它们的详细用法及示例&#xff1a; 1. tcp_recved() 功能 通知协议栈已处理接收数据&#xff1a;当应用层从接收缓冲区读取数据后&#x…

CVPR2025 | 对抗样本智能安全方向论文汇总 | 持续更新中~

汇总结果来源&#xff1a;CVPR 2025 Accepted Papers 若文中出现的 论文链接 和 GitHub链接 点不开&#xff0c;则说明还未公布&#xff0c;在公布后笔者会及时添加. 若笔者未及时添加&#xff0c;欢迎读者告知. 文章根据题目关键词搜索&#xff0c;可能会有遗漏. 若笔者出现…

DeepSeek的智能IT核心技术矩阵

1. MLA-MTP双引擎架构 多头潜在注意力&#xff08;MLA&#xff09;&#xff1a;突破传统Transformer的计算瓶颈&#xff0c;实现输入文本的多维度并行解析。在代码审查场景中&#xff0c;MLA可同时识别语法错误、逻辑漏洞和安全风险三类问题&#xff0c;使静态分析效率提升400…