AWQ 代码深入剖析 【2024-11-03】awq 量化模型推理的实现是通过下述步骤(模块):1, 基于校准集得到激活再根据量化算法计算量化缩放因子 s;2, 裁剪线性层权重的最小、最大值,推测了是为了抑制权重的异常值(smoothquant 没有这步);3, 在前面得到权重缩放因子 s 和裁剪最大值的基础上,将浮点模型权重转换为 int4 量化模型权重;4. 自定义 int4 矩阵乘法 kernel,并替换掉原来的浮点线性层,得到量化模型,再执行真正的量化模型推理(forward)。
prompt-cache论文速读 【2024-11-02】基于 KV 缓存,Prompt Cache 通过使注意力状态(kv 向量)复用模块化,将重用范围从单个提示词扩展到多个提示词,也就是说不仅在 decode 阶段还在 prefill 阶段复用 kv。prompt cache 实现的一种方式是通过 PML 形式化输入序列,手动定义并可复用部分。在推理时,只计算未缓存的文本。官方实现代码在 prompt-cache。
kv-cache 原理及优化概述 【2024-11-01】kv cache 优化是 llm decode 推理阶段最基础的优化技术,即发生在计算第二个输出token至最后一个token过程中,后面的 GQA、PagedAttention、RadixAttention、int8-kv cache、StreamingLLM 本质上都是 kv cache 技术的进一步优化。
AWQ 量化详解 【2024-11-01】先回顾了 SmoothQuant 算法的是三个核心观点,然后开始解读 AWQ 算法的两个核心观点(创新点)::LLM 权重并非同等重要,只有 0.1%~1% 的小部分显著权重对模型输出精度影响较大,又因为幅度较大的输入特征通常更重要,因此需要基于激活分布来挑选权重的显著通道,以及如何基于激活感知缩放保护关键权重。
SmoothQuant 源码剖析 【2024-10-31】详细解析了 SmoothQuant 仓库的源码,其主要分三个部分:基于校准集统计激活最大值 `calibration.py`、激活难度迁移至权重的平滑模块 smooth.py 以及包含模型权重转换的伪量化推理 fake_quant.py 和真正量化推理 `opt.py`。
SmoothQuant 量化详解 【2024-10-30】详细总结了 LLM 量化的难点:激活值中出现在特定通道的离群值使得激活值分布不均值导致激活难以量化,并给出了SmoothQuant 算法原理的详细描述。
RoPE 位置编码算法详解 【2024-10-24】旋转位置编码(Rotary Position Embedding,RoPE)是论文 Roformer Enhanced Transformer With Rotray Position Embedding 提出的一种能够将相对位置信息依赖集成到 self-attention 中并提升 transformer 架构性能的位置编码方式。
Sinusoida 位置编码详解 【2024-10-23】Sinusoida 位置编码也叫三角函数位置编码,由 transformer 论文提出。位置编码的意义是用于表示序列中某个元素的位置,它为每个位置分配一个独特的表示。
位置编码算法背景知识 【2024-10-22】理解 RoPE 位置编码算法的原理和推导公式之前得先具备一些背景知识,主要是关于三角函数、旋转矩阵、直角坐标系、欧几里得内积的相关概念和公式,可以先快速阅览本章内容,后续关于 RoPE 算法的推导不理解的时候,再来细看相关公式和概念即可。