microsoft/vattention
Dynamic Memory Management for Serving LLMs without PagedAttention
解决的问题
vAttention 解决了 LLM 服务系统中 KV 缓存的内存管理挑战。具体来说,它解决了需要重写自定义注意力内核以支持动态内存分配(如 PagedAttention 所需)的问题,并提升了预填充(prefill-bound)工作负载的性能。
工作原理
vAttention 使用 CUDA 伪内存 API 将虚拟内存分配与物理内存分配解耦。这使得系统可以在需要时按需分配物理内存,同时保持 KV 缓存在虚拟内存中的连续性。由于内存在虚拟地址空间中是连续的,因此可直接用于未经修改的注意力内核,无需像其他系统那样实现复杂的用户态按需分页机制。
适用对象
专为 LLM 服务系统开发者以及专注于 NVIDIA GPU 上推理优化和内存管理的研究人员设计。
主要亮点
- 内核兼容性:支持未经修改的注意力内核的动态内存分配。
- 虚拟内存解耦:利用 CUDA 伪内存 API 分离虚拟内存与物理内存的分配。
- 性能优势:在预填充密集型工作负载中,性能优于 PagedAttention。
- 集成支持:已集成至 Sarathi-Serve,并支持 FlashAttention 和 FlashInfer 等后端。
- 自定义驱动支持:包含修改后的 NVIDIA UVM 驱动,可启用小于默认 2MB 的页大小(64KB 至 256KB)。
相关
- 项目
- 项目
- 项目
- 项目
- Dispatch