解码器结构与因果掩码
自回归解码基础见本章;投机解码、Assistant Decoding 等属推理加速技巧。
解码加速
Flash Decoding
参考文章
https://pytorch.org/blog/flash-decoding/
原理介绍
Flash Attention 主要解决的是什么问题
在训练过程中,Flash Attention 主要针对于 BatchSize 和 query-length 两个维度进行优化。
可是在生成解码的过程中,query-length 始终为 1 ***所以当 batch-size=1 时,gpu 的利用率还不足 1%
TensorRT-LLM 框架
padded & packed
模型的输入其实是包含:padded 和 packed
用一个 1D tensor 来代表每个输入的长度
目前paddle 这边的动态插入,从输入层面来看是 padded,可是内部实现的还是 packed
pad 到输入长度的最大长度其实很浪费机器资源。
kv-cache
contiguous kv-cache
- 将显存初始化成一整块
paged kv-cache
- 将 cache-kv 拆分成不同的 block,从而更加细粒度的控制显存
int8/fp8 kv-cache
sliding window attention
- attention-sink
- 传统的 sliding window
解码与采样策略
min-p
基础信息介绍
参考链接:https://mp.weixin.qq.com/s/ILwPmtLGSGDlKH6KbdTSaw
其他方法缺点介绍
top-k
- 前面 token 概率很大,可是后面 token 并不大
top-p
- 会包含太多的长尾数据,这个会影响采样的效果
assistant decoding
参考文章
https://huggingface.co/blog/assisted-generation