VLLM历次会议(2024.1)
Azure官宣支持VLLM
VLLM支持AMD芯片
支持Mixtral MoE,支持DeepSeek MoE
性能优化 (以下4招,总共将吞吐量提升50%,延迟降低40%)
1. PageAttention V2 (同一个Q,和不同的KV的计算,分散在多个SM上;计算得到了并行)
2. CUDA Graph
CPU侧,python/pytorch,改为CUDA Graphs后,可使总延迟减少40%。
3. 这是TP还是每个model独立?
4. 小数据上,使用One-shot AllReduce,比NCCL的Ring-AllReduce,更快:
技术报告:https://github.com/vllm-project/vllm/files/13574639/Latency-optimal.allreduce.and.cuda.graph.optimization.pdf
PR: Custom all reduce kernels by hanzhi713 · Pull Request #2192 · vllm-project/vllm · GitHub
传输数据量小时,latency-bound,因此NCCL的double-tree和ring-allreduce的延迟较大。
one-shot的实现,是all-to-all,每个node一把读取所有node上的整个数组。因此延迟为1。但带宽浪费较大。
two-shot的实现,是先reduce-scatter,每个node读取所有node上的一部分数组,加和之后,再all-gather广播到所有node使得每个node上有完整的加和后数组。因此延迟为2,省带宽。
文中还提到了bufferfly allredue:
以上图中是完整bufferfly allreduce。他文中用的是half版,也就是一上来每个stage都是加和完整的数组。这样,就不需要最后的broadcast那一半stages了,减少了一半的延迟(但带宽消耗增大了)。
新功能
1. 支持AMG GPU
2. 支持多个LoRA同时加载。
3. 支持量化:GPTQ,AWQ,SqueezeLM,FP8-E5M2 KV cache
4. Prefix caching。新请求复用老请求的公共前缀的KV-Cache,避免重新计算的开销。