当前位置: 首页 > news >正文

福利|AMD × LMCache:基于 AMD GPU 的 LMCache 推理加速

福利|AMD × LMCache:基于 AMD GPU 的 LMCache 推理加速

作者:Andy Luo, Haichen Zhang, AMD AIG, Yihua, nijaba and LMCache Lab

引言

随着上下文长度不断拉长、推理并发规模持续增大,LLM 推理变得越来越难“跑顺畅”。传统的推理引擎主要依赖基于前缀(prefix-based)的 KV cache 复用,这种方式在面对长文本、大量重复片段或不同请求之间存在重叠内容时,可优化空间非常有限。

LMCache 正是为解决这一问题而设计。它是对现有 LLM 推理引擎的一种扩展,在长上下文场景下,能够显著降低首 token 延迟(TTFT),并提升整体吞吐。与传统仅支持前缀复用的方式不同,LMCache 可以对任意位置出现的重复文本进行细粒度 KV cache 复用,而且不受具体服务实例的限制。

通过将可复用的KV cache 存储在 GPU 显存、CPU 内存、DRAM 和本地磁盘等多级介质中,LMCache 能避免大量重复计算,释放宝贵的 GPU 算力。

在与vLLM 集成后,LMCache 在 AMD GPU 上针对包括 Qwen3、Llama3 和 Qwen-VL 在内的多种社区模型,带来了约 3–10 倍的性能提升。

对于长文档问答、多轮问答等典型LLM 场景,将 LMCache 与 vLLM 结合使用,可以在明显提升性能的同时有效减少 GPU cycle 消耗。

长文档基准测试

为了验证效果,我们选取了长文档场景的基准测试,对比在AMD GPU 上启用与关闭 LMCache 的性能差异。测试中将文档数量设置为 100,单个文档长度设置为 10,000,用于评估性能表现。

下面的结果基于多个广泛使用的社区模型(包括Qwen3、Llama3、Qwen-VL)生成,用来展示在不同模型架构下的性能收益。

该基准主要评估了Llama3 (70B)、Qwen2.5 Vision Language 模型、Qwen3 系列模型(特别是 8B 和 30B 参数规模的版本)在长文档问答任务中的表现,并重点观察开启 LMCache 前后的影响。

测试在一台AMD GPU服务器上完成,整体方法如下:

  • 后端使用vLLM 框架提供模型服务
  • 客户端使用(long_doc_qa.py)基准脚本发起请求
  • 每个文档长度为10,000 tokens,生成长度为 300 tokens
  • 主要变量是文档数量:分别测试100、200、500 个文档

在服务端配置上,我们明确区分了两种场景:

一种是启用 LMCache,另一种是未启用。

启用LMCache 时,配置了关键环境变量,如PYTHONHASHSEED=0 和LMCACHE_MAX_LOCAL_CPU_SIZE,这些变量根据模型大小进行调优(例如:Qwen3-8B 使用 200,Qwen3-30B 使用 180 和 150 等配置)。在 vLLM 启动命令中,通过 --kv-transfer-config 参数指定使用 LMCacheConnectorV1。配套图表的测试结果显示,在启用 LMCache 时,性能有明显提升。

综合结论是:LMCache 能有效优化长上下文场景下的推理过程。通过缓存 transformer 中 attention 机制的 key–value 对,在处理长文本和相似文档时,LMCache 可以减少重复计算,从而降低延迟,特别是首 token 延迟(TTFT),提升整体吞吐。在 AMD GPU 硬件上,这让 Qwen3 等模型在处理大规模文本数据时更加高效、响应更快。针对不同模型尺寸调优 LMCACHE_MAX_LOCAL_CPU_SIZE 也说明,合理的 cache 配置对资源利用率和性能都非常关键。

如何复现长文档基准测试

服务端配置

启用LMCache:

PYTHONHASHSEED=0 \ LMCACHE_MAX_LOCAL_CPU_SIZE=200 \ vllm serve Qwen/Qwen3-8B \ --tensor-parallel-size 1 \ --kv-transfer-config \ '{"kv_connector": "LMCacheConnectorV1", "kv_role": "kv_both"}' \ --gpu-memory-utilization 0.9 \ --load-format dummy \ --trust-remote-code

关闭LMCache:

PYTHONHASHSEED=0 vllm serve Qwen/Qwen3-8B \ --tensor-parallel-size 1 \ --gpu-memory-utilization 0.9 \ --load-format dummy \ --trust-remote-code

客户端配置

示例:文档数量为100

python3 benchmarks/long_doc_qa/long_doc_qa.py \ --model Qwen/Qwen3-8B \ --num-documents 100 \ --document-length 10000 \ --output-len 300 \ --repeat-count 1 \ --repeat-mode tile \ --max-inflight-requests 4

多轮问答(Multi-round QA)基准测试

场景示意

多轮问答工作流可以理解为:多个用户同时与同一个LLM 引擎持续进行多轮对话,模型需要在保留上下文的前提下连续回答问题。

为了验证LMCache 在这一场景的效果,我们选取 Multi-round QA 基准,对比在 AMD GPU 上启用与关闭 LMCache 的性能差异。测试配置为:

  • 模拟用户数:20

  • 每个用户对话轮数:6

该基准模拟的负载是一个多用户并发、多轮对话的问答任务,每个用户与LLM 引擎持续交互,形成典型的“多轮 QA”负载模式。

下面的结果同样基于多个社区常用模型(包括Qwen3、Llama3、Qwen-VL)生成,用以展示在不同模型架构下,多轮 QA 场景中启用 LMCache 所带来的性能提升。

如何复现多轮问答(Multi-round QA)基准测试

服务端配置

开启LMCache:

PYTHONHASHSEED=0 \ MIOPEN_USER_DB_PATH=/app/miopen \ MIOPEN_FIND_MODE=FAST \ VLLM_USE_V1=1 \ VLLM_ROCM_USE_AITER=1 \ SAFETENSORS_FAST_GPU=1 \ vllm serve Qwen/Qwen2.5-VL-72B-Instruct \ --tensor_parallel_size=8 \ --trust_remote_code \ --mm-encoder-tp-mode "data" \ --load-format dummy \ --gpu-memory-utilization 0.6

关闭LMCache:

PYTHONHASHSEED=0 \ MIOPEN_USER_DB_PATH=/app/miopen \ MIOPEN_FIND_MODE=FAST \ VLLM_USE_V1=1 \ VLLM_ROCM_USE_AITER=1 \ SAFETENSORS_FAST_GPU=1 \ vllm serve Qwen/Qwen2.5-VL-72B-Instruct \ --tensor_parallel_size=8 \ --trust_remote_code \ --mm-encoder-tp-mode "data" \ --load-format dummy \ --gpu-memory-utilization 0.6

客户端压测脚本

python3 multi-round-qa.py \ --num-users 20 \ --num-rounds 6 \ --qps 1 \ --shared-system-prompt 1000 \ --user-history-prompt 2000 \ --answer-len 100 \ --model Qwen/Qwen2.5-VL-72B-Instruct \ --base-url http://localhost:8000/v1

总结

LMCache Long Document QA 基准测试主要用于评估大语言模型在处理长文档场景时的表现,尤其是对长上下文进行理解与问答的能力。该基准展示了AMD GPU 系统在以下方面的能力:

  • 支持超长上下文窗口(extended context window)

  • 在长文档条件下依然保持较好的信息检索与回答准确性

  • 适合作为评估LLM 服务系统在高内存压力、长上下文场景下表现的工具

LMBenchmark 套件通过多轮问答(multi-round QA)场景,对LLM 服务系统做系统性的评估。它通过多用户并发对话模拟真实使用场景,包括:

  • ShareGPT 场景(真实对话,QPS=1.34)

  • 可配置的用户数量与轮数

  • 支持从类llama 模型到 Vision Language 模型,以及 MoE 模型等多种形态

在这些不同负载条件下,LMCache 能为部署在 AMD GPU 上的大规模语言模型带来关键的性能优化加速,帮助系统更好地支撑大规模在线服务。

LMCache 路线图

在2026 年第一季度,LMCache 的路线图以两个核心目标为主:

  • 稳定核心功能

  • 探索并落地高级的全局KV cache 共享机制,以支持更大规模的LLM 部署

主要方向包括:

  • 生态集成扩展:对接更多推理/ 服务引擎,例如 TRTLLM、Modular
  • 存储层优化:利用io_uring 与 NVMe FDP 提升 I/O 性能
  • 内部基础架构重构

o 重构RPC基础设施

o 优化内存分配器

o 支持大规模点对点缓存共享

o 提供解耦式资源池化能力

更重要的是,我们将进一步强化对异构硬件(包括AMD)的适配能力:

  • 在CI/CD 流水线中建立专门的 AMD 测试平台

  • 持续验证在AMD 硬件上的兼容性与性能表现

  • 将LMCache 打造成下一代高效 LLM 服务基础设施中的关键组件

更多细节可以参考我们的Q1 路线图 [1]。

致谢

感谢在本次合作中做出贡献的同事与伙伴:

  • AMD:Andy Luo、Haichen Zhang,以及 AMD AIG 团队

  • LMCache:Junchen Jiang、Yihua Cheng、Nick Barcet

我们会在接下来的数周与数月中持续优化,进一步挖掘与释放系统潜力。

加入我们

期待更多合作!我们正在寻找对社区和研究充满热情的开发者与研究人员,一起在AMD GPU 上:

  • 训练下一代router model

  • 共建值得信赖的AI 基础设施

如果你感兴趣,欢迎联系:

Haichen Zhang:haichzha@amd.com

Yihua Cheng:yihua@tensormesh.ai

AMD开发者小助手:AMD_Developer(微信号)

参考链接

[1] LMCache Q1 roadmap:https://github.com/LMCache/LMCache/issues/2350

有礼互动

LMCACHE_MAX_LOCAL_CPU_SIZE如何设置最合理?

2026年1月22日23:59前在评论中分享,抽3位送「AMD RYZEN键帽夜灯」各一个!

AMD RYZEN键帽夜灯如上图展示,但实际奖品外观可能会因产品供应情况而有所不同。我们将于2026年1月24日前通知获奖者,获奖者须在收到通知72小时内提供准确的收货信息。我们将在收到获奖者的收货信息后的30个工作日内寄出奖品。

http://www.cnnetsun.cn/news/2078885.html

相关文章:

  • 华为 eNSP 防火墙实战:防火墙安全策略
  • 【开源推荐】form-validator-cn 轻量级中文表单校验库 | TS 零依赖、极简开箱即用
  • 2026 网络安全新手避坑全指南:从零入门到实战落地,彻底告别自学弯路
  • Python数据类型转换实现方法
  • 嵌入式系统最后防线:在无MMU的MCU上实现C语言内存安全的3种硬件协同方案(ARMv8-M TrustZone实测)
  • 从CAN总线到以太网:手把手拆解汽车‘五大域’控制器之间的‘聊天’协议
  • Skill生成能力测试
  • 算法训练营第十四天 | 18. 四数之和
  • 实时数字人领域迎来新突破,Soul App发布轻量化模型SoulX-FlashHead
  • IOU Tracker实战:在低算力边缘设备(如Jetson Nano)上部署车辆跟踪
  • AI拓客系统选型指南:从“生存刚需”到“增长引擎”,GEO技术成破局关键
  • SQL如何处理多级分类统计报表_窗口函数层级汇总技巧
  • 从LIDC-IDRI到可训练数据:Python实战放射组学肺结节良恶性分类的数据预处理全解
  • P2639 [USACO09OCT] Bessie‘s Weight Problem G
  • 聊聊土木工程转行都去干啥了!_土木转行
  • AI长期记忆系统架构解析:从向量检索到多模态一致性
  • Pearcleaner:macOS深度清理的工程化解决方案
  • 人工智能|大白话YOLOv2
  • 保姆级教程:用Node.js复现抖音直播WSS链接的signature生成(附完整可运行代码)
  • 新药研发避坑指南:如何用ADMET预测工具(如ADMETlab 2.0)提前筛掉“问题分子”?
  • Taste-Skill:为AI编码助手注入设计品味,提升前端代码审美与工程实践
  • 别再只盯着DSI/CSI了!聊聊MIPI DPI:那个让无缓存屏幕动起来的‘老派’接口
  • Mistral与NVIDIA新语言模型技术解析与部署实践
  • SQL触发器如何获取触发源应用名_利用APP_NAME函数追踪
  • 晶科科技:国产芯模“协同破局、祛魅前行”,AIDC迎重大机遇
  • 为什么92%的车载软件团队弃用Eclipse改用VSCode?——基于ISO 26262 ASIL-B项目实测的4项性能跃升数据报告
  • 告别串口助手:用Python+PyQt5自制STM32 IAP升级上位机(支持Ymodem协议)
  • 【国家级等保2.0三级强制要求】:C项目上线前必须通过的5层内存安全静态验证关卡(含CI/CD自动化脚本模板)
  • 图像描述生成:Inject与Merge架构对比与实践
  • Keras实战:从零构建YOLOv8目标检测模型