找回密码
立即注册
搜索
热搜: Java Python Linux Go
发回帖 发新帖

545

积分

0

好友

75

主题
发表于 昨天 05:45 | 查看: 3| 回复: 0

在大语言模型推理服务中,首 Token 延迟(TTFT,Time-To-First-Token) 是衡量服务响应速度的核心指标。从用户发起请求到看见第一个 Token 输出,这段时间越短,体验就越好。然而,在实际部署中,优化 TTFT 常常面临各种挑战。

LMCache 针对此问题,提出了一套 KV 缓存持久化与复用 的优化方案。该项目已开源,并与 vLLM 推理引擎进行了深度集成。

图片

核心原理

传统大模型推理的一个特点是:每次处理输入文本时,都需要从头开始计算 KV 缓存(Key-Value Cache)。可以将 KV 缓存理解为模型在“阅读”文本时生成的中间状态,类似于做的“笔记”。

问题的关键在于,传统方案不会复用这些“笔记”。即使是完全相同的文本再次出现,整个 KV 缓存仍需要重新计算一遍。

LMCache 的核心思路是将计算好的 KV 缓存保存下来——不仅存储在 GPU 显存中,还可以保存到 CPU 内存甚至磁盘上。当后续遇到相同的文本时(注意:不只是前缀匹配,任意位置的文本片段都可复用),便可以直接读取缓存,从而省去大量重复计算。

根据实测,搭配 vLLM 使用时,在多轮对话、RAG 等场景下,响应速度可以提升 3 到 10 倍

其工作流程的伪代码示意如下:

# 传统方式:速度较慢
def get_answer(prompt):
    memory = build_memory_from_zero(prompt)  # GPU 需要重新计算
    return model.answer(memory)

# 使用 LMCache:快速且智能
import lmcache
def get_answer(prompt):
    if lmcache.knows_this(prompt):  # 是否见过此文本?
        memory = lmcache.grab_memory(prompt)  # 快速获取缓存
    else:
        memory = build_memory_from_zero(prompt)
        lmcache.save_memory(prompt, memory)  # 保存以备后用
    return model.answer(memory)

图片

主要特性

  • 高性能:缓存读取速度相比原生方案可提升约 7 倍,同时吞吐量也有所增加。
  • 灵活匹配:文本无论出现在 Prompt 的哪个位置,只要重复出现就能命中缓存。
  • 多级存储:支持 GPU 显存、CPU 内存、磁盘等多级存储,甚至可以接入 NIXL 等分布式存储系统,有效减轻 GPU 压力。
  • 深度集成:与 vLLM v1 集成紧密,支持跨设备共享 KV 缓存、跨节点传递等高级特性,易于在生产环境中配合 llm-d、KServe 等工具使用。

对于构建聊天机器人或 RAG 应用,LMCache 能够在不升级硬件的情况下,有效降低响应延迟。

安装指南

LMCache 目前主要支持 Linux 环境,Windows 用户需要通过 WSL 或社区适配方案使用。

基础要求

  • Python 3.9+
  • NVIDIA GPU(如 V100、H100 等)
  • CUDA 12.8 或更高版本
  • 安装后可离线运行

使用 pip 安装

pip install lmcache

安装包已包含必要的 PyTorch 依赖。若遇到问题,建议尝试源码编译。

尝鲜预发布版(TestPyPI):

pip install --index-url https://pypi.org/simple --extra-index-url https://test.pypi.org/simple lmcache==0.3.4.dev61

安装后验证版本:

import lmcache
from importlib.metadata import version
print(version("lmcache"))  # 应输出 0.3.4.dev61 或更新版本

具体最新版本号请查看项目 GitHub 主页。

源码编译

喜欢手动编译的用户可以按以下步骤操作:

git clone https://github.com/LMCache/LMCache.git
cd LMCache
pip install -r requirements/build.txt

# 选择一个选项:
# A: 选择你的 Torch 版本(推荐用于 vLLM 0.10.0)
pip install torch==2.7.1
# B: 安装包含 Torch 的 vLLM
pip install vllm==0.10.0

pip install -e . --no-build-isolation

编译完成后进行验证:

python3 -c "import lmcache.c_ops"

若无报错则说明编译成功。

使用 uv 工具可以加速此过程:

git clone https://github.com/LMCache/LMCache.git
cd LMCache
uv venv --python3.12
source .venv/bin/activate
uv pip install -r requirements/build.txt
# 同上选择 Torch 或 vLLM 安装方式
uv pip install -e . --no-build-isolation

Docker 部署

为简化部署,可以直接使用 Docker 镜像:

# 稳定版
docker pull lmcache/vllm-openai
# 每夜构建版
docker pull lmcache/vllm-openai:latest-nightly

对于 AMD GPU(如 MI300X)用户:需要从 vLLM 基础镜像开始,并设置特定的 ROCm 编译参数:

PYTORCH_ROCM_ARCH="gfx942" \
TORCH_DONT_CHECK_COMPILER_ABI=1 \
CXX=hipcc \
BUILD_WITH_HIP=1 \
python3 -m pip install --no-build-isolation -e .

总结

KV 缓存复用是优化 LLM 推理性能的基本思路之一,而 LMCache 将其实现得较为完善。其多级存储设计、任意位置文本匹配能力以及与 vLLM 的原生深度集成,组合起来能够有效解决实际生产中的性能瓶颈。对于多轮对话、RAG 等 Prompt 重复率较高的应用场景,实现 3-10 倍的 TTFT 优化 具有显著的实用价值。

目前,LMCache 主要围绕 vLLM 生态,以 Linux 支持为主,AMD GPU 的支持仍在持续完善中。作为一个开源解决方案,它值得关注和尝试。

项目地址:https://github.com/LMCache/LMCache




上一篇:Nexus YUM代理仓库配置实战:企业级网络仓库自动同步与管理指南
下一篇:K8s管理面板Kite:轻量级现代化K8s可视化管理,简化集群运维
您需要登录后才可以回帖 登录 | 立即注册

手机版|小黑屋|网站地图|云栈社区 ( 苏ICP备2022046150号-2 )

GMT+8, 2025-12-11 01:00 , Processed in 1.118446 second(s), 55 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2025 云栈社区.

快速回复 返回顶部 返回列表