vLLM大模型推理加速方案原理(PagedAttention)

在这里插入图片描述

一、vLLM 简介

vLLM 用于大模型并行推理加速,核心是 PagedAttention 算法,官网为:https://vllm.ai/

在这里插入图片描述

vLLM 主要特性:

  1. 先进的服务吞吐量
  2. 通过 PagedAttention 对注意力 key 和 value 进行内存管理
  3. 对传入请求的批处理
  4. 针对 CUDA 内核的优化

vLLM 灵活易用:

  1. 与 HuggingFace 模型无缝集成
  2. 支持并行采样、beam search 等解码算法的高吞吐量服务
  3. 支持分布式推理的张量并行
  4. 支持流式输出
  5. 兼容 OpenAI 的接口服务

服务吞吐量对比:单路输出
图 - 服务吞吐量对比:单路输出
在这里插入图片描述
图 - 服务吞吐量对比:3 路并行输出

二、vLLM 原理

PagedAttention 原理(一)

用于自回归生成的 KV cache 占大量显存,受OS中的虚拟内存和分页的思想启发,提出了该 attention 优化算法,可在不连续的显存空间存储连续的 key 和 value。用于将每个序列的 KV cache 分块(blocks),每块包含固定数量的 token 的 key 和 value 张量。
在这里插入图片描述
动图☝️:以 for 的 attention计算为例。KV cache 被划分为多个块,块在内存空间中不必连续

PagedAttention 原理(二)

因为 blocks 在显存中不必连续,所以可以像 OS 的虚拟内存分页一样,以更灵活的方式管理键和值:

  • 将 block 视为 page
  • 将 token 视为 bytes
  • 将序列视为进程

序列的连续逻辑块通过 block table 映射到非连续物理块。
物理块可在生成新 token 时按需分配。因此只有最后一个block会发生显存浪费,小于4%。
在这里插入图片描述
动图☝️:通过 block table 将逻辑块映射到物理块

PagedAttention 原理(三)

并行采样时,同一个 prompt 生成多个输出序列,这些序列生成时可以共享 prompt 的 attention 计算和显存。
与 OS 中进程共享物理 page 的方式类似,不同序列可以通过将其逻辑块映射到同一物理块来共享块。为了确保共享安全,Paged Attention 跟踪物理块的引用计数,并实现 “写时复制”(Copy-on-Write)机制,即需要修改时才复制块副本。内存共享使得显存占用减少 55%,吞吐量提升 2.2x。

写时复制(Copy-on-write,简称COW)是一种计算机程序设计领域的优化策略。其核心思想是,如果有多个调用者(callers)同时请求相同资源(如内存或磁盘上的数据存储),他们会共同获取相同的指针指向相同的资源,直到某个调用者试图修改资源的内容时,系统才会真正复制一份专用副本(private copy)给该调用者,而其他调用者所见到的最初的资源仍然保持不变。

在这里插入图片描述
动图☝️:并行采样生成时的引用计数和 Copy-on-Write

三、内部模型实测

在这里插入图片描述
硬件:单卡A100(80G)
模型:内部 7B 模型
测试工具:Apache JMeter
实验结论:vLLM 加速 7.44 倍

指标解释:

# Samples :总请求数(样本个数)
Throughput :吞吐量(Request/Sec),即每秒处理的请求数
Average :平均响应时间(ms)
Received KB/sec :每秒从服务器端接收到的数据量(字节)
Sent KB/sec :每秒向服务器发送数据量(字节)

  • 5
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值