news 2026/5/12 17:04:44

【vLLM 学习】Prefix Caching

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【vLLM 学习】Prefix Caching

vLLM 是一款专为大语言模型推理加速而设计的框架,实现了 KV 缓存内存几乎零浪费,解决了内存管理瓶颈问题。

更多 vLLM 中文文档及教程可访问 →vllm.hyper.ai/

*在线运行 vLLM 入门教程:零基础分步指南

源码 examples/offline_inference/prefix_caching.py

# SPDX-License-Identifier: Apache-2.0 from vllm import LLM, SamplingParams from vllm.distributed import cleanup_dist_env_and_memory # 注意:这只是一个正在运行的示例。用于基准测试, # 请参阅基准 benchmarks/benchmark_prefix_caching.py # 常见前缀。 prefix = ( "You are an expert school principal, skilled in effectively managing " "faculty and staff. Draft 10-15 questions for a potential first grade " "Head Teacher for my K-12, all-girls', independent school that emphasizes " "community, joyful discovery, and life-long learning. The candidate is " "coming in for a first-round panel interview for a 8th grade Math " "teaching role. They have 5 years of previous teaching experience " "as an assistant teacher at a co-ed, public school with experience " "in middle school math teaching. Based on these information, fulfill " "the following paragraph: ") # 样本提示。 prompts = [ "Hello, my name is", "The president of the United States is", "The capital of France is", "The future of AI is", ] generating_prompts = [prefix + prompt for prompt in prompts] # 创建一个采样参数对象。 sampling_params = SamplingParams(temperature=0.0) # 创建一个没有前缀缓存的 LLM 作为基线。 regular_llm = LLM(model="facebook/opt-125m", gpu_memory_utilization=0.4) print("Results without `enable_prefix_caching`") # 从提示中生成文本。输出是 RequestOutput 对象的包含提示,生成的文本和其他信息的对象列表。 outputs = regular_llm.generate(generating_prompts, sampling_params) regular_generated_texts = [] # 打印输出。 for output in outputs: prompt = output.prompt generated_text = output.outputs[0].text regular_generated_texts.append(generated_text) print(f"Prompt: {prompt!r}, Generated text: {generated_text!r}") print("-" * 80) # 破坏 LLM 对象并释放 GPU 内存。 del regular_llm cleanup_dist_env_and_memory() # 使用启用前缀缓存创建一个 LLM。 prefix_cached_llm = LLM(model="facebook/opt-125m", enable_prefix_caching=True, gpu_memory_utilization=0.4) # 预热,以便计算共享的提示 KV 缓存。 prefix_cached_llm.generate(generating_prompts[0], sampling_params) # 使用前缀缓存生成。 outputs = prefix_cached_llm.generate(generating_prompts, sampling_params) print("Results with `enable_prefix_caching`") cached_generated_texts = [] # 打印输出。您应该看到与以前相同的输出。 for output in outputs: prompt = output.prompt generated_text = output.outputs[0].text cached_generated_texts.append(generated_text) print(f"Prompt: {prompt!r}, Generated text: {generated_text!r}") print("-" * 80) # 比较结果并显示加速 generated_same = all([ regular_generated_texts[i] == cached_generated_texts[i] for i in range(len(prompts)) ]) print(f"Generated answers are the same: {generated_same}")
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/12 17:04:44

同样是技术岗,35 岁后为何网络安全行业越老越吃香?

前几天我表弟小王来找我喝茶,聊着聊着突然问我:“老曹,你说我要不要转行做网络安全啊? 听说这行业挺赚钱的。 “我一听就笑了,这不正好最近我刚研究过这个行业吗? 我跟他说,别看现在各行各业…

作者头像 李华
网站建设 2026/5/12 11:15:37

[特殊字符] uni-app App 端实现文件上传功能(基于 xe-upload 插件)

在 uni-app 开发中,文件上传是一个常见且重要的功能。尤其是在 App 端,如何实现一个既美观又实用的文件上传与展示界面,是很多开发者关心的问题。本文将介绍如何通过 xe-upload 插件,结合自定义 UI,实现一个完整的文件…

作者头像 李华
网站建设 2026/5/12 15:03:47

二、Visual Studio 2026如何创建C语言项目

1.打开软件2.创建新项目3.下一步4.创建5.添加源文件(1)新建项(2)显示所有模板(3)添加C语言源文件后缀名为.c6.添加头文件(1)新建项(2)显示所有模板&#xff0…

作者头像 李华
网站建设 2026/5/8 14:09:20

Java二叉树:原理、实现与实战

深入浅出Java二叉树:原理、实现与实战 一、二叉树核心概念深度解析 1. 二叉树的定义与分类 二叉树是一种每个节点最多有2个子节点的树状结构,子节点分为左子节点(lChild)和右子节点(rChild)。根据节点分布规…

作者头像 李华
网站建设 2026/5/11 2:08:06

动态规划(四)算法设计与分析 国科大

0-1背包问题输入:给定物品集合 ,每个物品 i 对应重量 和价值;同时给定背包的总重量限制 W。输出:选择物品的一个子集,满足 “子集总重量不超过 W” 的约束,同时最大化子集的总价值。这是一个二元决策问题&a…

作者头像 李华
网站建设 2026/5/11 21:04:34

为什么90%的团队搞不定云原生Agent部署?Docker批量方案深度拆解

第一章:云原生Agent部署的现状与挑战随着云原生技术的快速发展,Agent作为实现可观测性、自动化运维和安全监控的核心组件,被广泛部署于Kubernetes集群、边缘节点及混合云环境中。这些轻量级代理程序负责采集指标、日志和追踪数据,…

作者头像 李华