LLaVA 系列模型结构详解 【2024-11-28】多模态大模型 MLLM 架构通常都是 LLM + 视觉编码器 + 映射层的组合。本文详细总结了 LLaVA 系列多模态模型的模型结构,以及视觉编码器如何支持高分辨率输入图像。
温度系数与 top-p 采样策略详解 【2024-11-24】本文先详细介绍了 LLM 采样时 Temperature 温度系数的作用,然后简单介绍了常见采样策略的基本原理,最后详细描述了 top-p 采样算法的原理和实现步骤,并给出代码实现,以及针对每行代码做出了极为详细的解释。
vllm 优化之 PagedAttention 源码解读 【2024-11-17】总结了 vllm 的 pagedattention 内核设计和动态分配、管理 kv cache 内存的模块流程,难点主要有三个:一个是 block_tables 的创建和管理,以及 gpu 设备在指定模型上的可分配的内存 blocks 的计算,最后就是 pagedattention 内核代码中相关线程索引和偏移的计算怎么改成基于 block_tables 的形式,这都需要反复阅读理解代码才能得到清晰的理解。
masked-attention 算法详解 【2024-11-10】Casual Mask 机制的本质是为了构建下三角的注意力分数矩阵,从而实现因果模型只关注当前 token 与之前 token 的注意力关系,而不理会它与后续 token 的关系,即只"看"当前及前面的 tokens。
vllm 优化之 cuda_graph 详解 【2024-11-09】cuda graph 解决了可能存在的所有 CPU 开销的来源:如用户编写的逻辑、PyTorch 调度逻辑、内存分配开销以及 GPU 驱动/内核开销(静态图优势)。
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 技术的进一步优化。