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

【vLLM 学习】Cpu Offload Lmcache

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

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

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

源码 examples/offline_inference/cpu_offload_lmcache.py

# SPDX-License-Identifier: Apache-2.0"""
该文件演示了 CPU 卸载的示例用法
与 LMCache。
请注意,运行此示例需要 "pip install lmcache"。
在 https://github.com/LMCache/LMCache 中了解有关 LMCache 的更多信息。
"""
import os
import timefrom lmcache.experimental.cache_engine import LMCacheEngineBuilder
from lmcache.integration.vllm.utils import ENGINE_NAMEfrom vllm import LLM, SamplingParams
from vllm.config import KVTransferConfig# 与 LMCache 相关的环境变量
# 在 LMCache 中使用实验功能
os.environ["LMCache_USE_EXPERIMENTAL"] = "True"
# LMCache 设置为每块使用256个 token
os.environ["LMCache_CHUNK_SIZE"] = "256"
# 在 LMCache 中启用本地 CPU 后端
os.environ["LMCache_LOCAL_CPU"] = "True"
# 将本地 CPU 内存限制设置为 5.0 GB
os.environ["LMCache_MAX_LOCAL_CPU_SIZE"] = "5.0"# 此示例脚本以共享前缀运行两个请求。
shared_prompt = "Hello, how are you?" * 1000
first_prompt = [shared_prompt + "Hello, my name is",
]
second_prompt = [shared_prompt + "Tell me a very long story",
]sampling_params = SamplingParams(temperature=0, top_p=0.95, max_tokens=10)ktc = KVTransferConfig.from_cli('{"kv_connector":"LMCacheConnector", "kv_role":"kv_both"}')
# 将 GPU 内存利用设置为 0.8,用于 40GB 显存的 A40 GPU。
# 如果您的 GPU 的内存较少,则降低值。
# 请注意,LMCache 目前与块预填充不兼容。
llm = LLM(model="mistralai/Mistral-7B-Instruct-v0.2",kv_transfer_config=ktc,max_model_len=8000,enable_chunked_prefill=False,gpu_memory_utilization=0.8)outputs = llm.generate(first_prompt, sampling_params)
for output in outputs:generated_text = output.outputs[0].textprint(f"Generated text: {generated_text!r}")
print("First request done.")time.sleep(1)outputs = llm.generate(second_prompt, sampling_params)
for output in outputs:generated_text = output.outputs[0].textprint(f"Generated text: {generated_text!r}")
print("Second request done.")# 清理 LMCache 后端
LMCacheEngineBuilder.destroy(ENGINE_NAME)
http://www.xdnf.cn/news/12380.html

相关文章:

  • 硅基计划2.0 学习总结 陆 抽象类与接口
  • 电磁加热和铁锅温升的讨论
  • Tesseract配置参数详解及适用场景(PyTesseract进行OCR)
  • 【Survival Analysis】【机器学习】【3】 SHAP可解釋 AI
  • 6.6 计算机网络面试题
  • scikit-learn机器学习
  • 固态继电器与驱动隔离器:电力系统的守护者
  • Nuxt.js 布局系统详解:构建可复用页面框架
  • 豆包和deepseek 元宝 百度ai区别是什么
  • 3B模型大概占多少存储
  • My图床项目
  • [蓝桥杯]采油
  • 使用VTK还是OpenGL集成到qt程序里哪个好?
  • P1345 [USACO5.4] 奶牛的电信Telecowmunication
  • Levenberg-Marquardt算法详解和C++代码示例
  • 安卓基础(ProGuard vs R8)
  • NodeJS Koa 后端用户会话管理,JWT, Session,长短Token,本文一次性讲明白
  • Redis——1、服务端高并发分布式结构演进之路
  • Excel 表格内批量添加前缀与后缀的实用方法
  • keysight是德科技N9923A网络分析仪
  • 排序算法总结(C++)
  • C文件操作2
  • python打卡训练营打卡记录day46
  • 在aarch64平台编译写入传统xls格式文件开源库xlslib的步骤
  • 《影像引导下骨盆创伤手术的术前骨折复位规划:基于学习的综合流程》|文献速递-深度学习医疗AI最新文献
  • [论文阅读]TrustRAG: Enhancing Robustness and Trustworthiness in RAG
  • 密码学基础——SM4算法
  • 飞云智能波段主图+多空短线决策副图指标,组合操盘技术图文解说
  • 网页端 js 读取发票里的二维码信息(图片和PDF格式)
  • 机器学习算法时间复杂度解析:为什么它如此重要?