Python vLLM 实战应用指南

文章目录
- 1. vLLM 简介
- 2. 安装 vLLM
- 3. 快速开始
- 3.1 加载模型并生成文本
- 3.2 参数说明
- 4. 实战应用场景
- 4.1 构建聊天机器人
- 示例对话:
- 4.2 文本补全
- 输出示例:
- 4.3 自定义模型服务
- 启动服务
- 调用服务
- 5. 性能优化
- 5.1 GPU 加速
- 5.2 动态批处理
- 6. 总结
vLLM 是一种高性能的开源深度学习推理引擎,专注于高效的生成式模型推理任务。它通过动态批处理和内存优化技术大幅提高了大模型(如 GPT 系列)的推理性能,非常适合大规模文本生成任务。
本篇博客将介绍如何安装 vLLM、加载大语言模型并实现一些实际应用,如聊天机器人、文本生成和补全。
1. vLLM 简介
vLLM 的特点:
- 动态批处理:可以高效处理多个请求并动态优化批处理大小。
- 高效内存管理:通过零拷贝缓存技术减少显存使用。
- 简单易用:提供类 PyTorch API 接口,支持 Hugging Face 模型。
vLLM 支持从 Hugging Face Hub 加载模型,也可以加载本地模型。
2. 安装 vLLM
安装 vLLM 十分简单,使用 pip 即可:
pip install vllm
如果需要 GPU 支持,请确保安装了合适的 CUDA 和 PyTorch 版本。
3. 快速开始
3.1 加载模型并生成文本
以下是加载 Hugging Face 模型并生成文本的示例:
from vllm import LLM# 加载模型
llm = LLM("gpt2")# 输入提示词
prompt = "Once upon a time, in a faraway land, there was a"# 生成文本
output = llm.generate(prompt, max_tokens=50)print("Generated Text:")
print(output[0].text)
3.2 参数说明
在 llm.generate 方法中,你可以设置以下参数:
max_tokens:生成的最大 token 数。temperature:控制生成文本的随机性。top_k:限制从概率最高的前 k 个 token 中采样。top_p:控制生成时的累积概率阈值。
示例:
output = llm.generate(prompt="The future of artificial intelligence is",max_tokens=100,temperature=0.7,top_k=40,top_p=0.9
)
4. 实战应用场景
4.1 构建聊天机器人
使用 vLLM 可以快速构建一个聊天机器人应用。以下是实现代码:
from vllm import LLM# 初始化模型
llm = LLM("gpt-3.5-turbo")def chatbot():print("Chatbot (type 'exit' to quit)")while True:user_input = input("You: ")if user_input.lower() == "exit":break# 模型生成回复response = llm.generate(user_input, max_tokens=100)print("Bot:", response[0].text.strip())if __name__ == "__main__":chatbot()
示例对话:
You: What is the capital of France?
Bot: The capital of France is Paris.
4.2 文本补全
你可以使用 vLLM 实现代码补全、邮件补全等应用:
prompt = "def calculate_area(radius):\n # Calculate the area of a circle given the radius\n area ="
output = llm.generate(prompt, max_tokens=50)print("Code Completion:")
print(output[0].text)
输出示例:
area = 3.14159 * radius ** 2
return area
4.3 自定义模型服务
vLLM 支持在本地运行一个服务,接收 HTTP 请求来生成文本。这非常适合构建 API 服务。
启动服务
运行以下命令启动 vLLM HTTP 服务:
python -m vllm.entrypoints.api_server --model gpt2 --host 0.0.0.0 --port 8000
调用服务
使用 HTTP 客户端(如 requests)发送请求:
import requestsurl = "http://localhost:8000/generate"
payload = {"prompt": "Tell me a story about a brave knight.","max_tokens": 100
}
response = requests.post(url, json=payload)
print(response.json())
5. 性能优化
5.1 GPU 加速
vLLM 支持多 GPU 推理。你可以通过设置 --tensor-parallel-size 来指定 GPU 数量:
python -m vllm.entrypoints.api_server --model gpt2 --tensor-parallel-size 2
5.2 动态批处理
vLLM 自动优化批处理以提高吞吐量。无需手动干预,适合高并发场景。
6. 总结
vLLM 是一个高效的生成式模型推理引擎,适合各种文本生成任务。通过简单的代码,你可以快速实现聊天机器人、文本补全、API 服务等应用。
优点:
- 高效推理,适合大规模并发。
- 兼容 Hugging Face 模型生态。
- 易于部署,支持 API 服务。
推荐阅读:
- vLLM 官方文档
- Hugging Face 模型库
相关文章:
Python vLLM 实战应用指南
文章目录 1. vLLM 简介2. 安装 vLLM3. 快速开始3.1 加载模型并生成文本3.2 参数说明 4. 实战应用场景4.1 构建聊天机器人示例对话: 4.2 文本补全输出示例: 4.3 自定义模型服务启动服务调用服务 5. 性能优化5.1 GPU 加速5.2 动态批处理 6. 总结 vLLM 是一…...
.NET MAUI 入门学习指南
引言 在当今移动应用和跨平台开发的热潮中,.NET MAUI(Multi - platform App UI)应运而生,为开发者提供了一种高效、统一的方式来构建跨多个平台(如 iOS、Android、Windows 等)的原生应用。它整合了 Xamarin.Forms 的优点,并在此基础上进行了诸多改进和创新,使得开发者…...
JavaScript系列(49)--游戏引擎实现详解
JavaScript游戏引擎实现详解 🎮 今天,让我们深入探讨JavaScript的游戏引擎实现。游戏引擎是一个复杂的系统,它需要处理渲染、物理、音频、输入等多个方面,让我们一步步实现一个基础但功能完整的游戏引擎。 游戏引擎基础概念 &am…...
AI如何帮助解决生活中的琐碎难题?
引言:AI已经融入我们的日常生活 你有没有遇到过这样的情况——早上匆忙出门却忘了带钥匙,到了公司才想起昨天的会议资料没有打印,或者下班回家还在纠结晚饭吃什么?这些看似微不足道的小事,往往让人疲惫不堪。而如今&a…...
K8s运维管理平台 - KubeSphere 3.x 和4.x 使用分析:功能较强,UI美观
目录标题 Lic使用感受优点:优化点: 实操首页项目 | 应用负载 | 配置 | 定制资源定义存储监控告警集群设置 **KubeSphere 3.x** 和 **4.x**1. **架构变化**:2. **多集群管理**:3. **增强的 DevOps 功能**:4. **监控与日…...
芯片AI深度实战:基础篇之langchain
基于ollama, langchain,可以构建一个自己的知识库,比如这个 Build Your Own RAG App: A Step-by-Step Guide to Setup LLM locally using Ollama, Python, and ChromaDB | HackerNoon 这是因为: 以上范例就实现了这样一个流程: 系列文章&…...
WordPress使用(1)
1. 概述 WordPress是一个开源博客框架,配合不同主题,可以有多种展现方式,博客、企业官网、CMS系统等,都可以很好的实现。 官网:博客工具、发布平台和内容管理系统 – WordPress.org China 简体中文,这里可…...
单机伪分布Hadoop详细配置
目录 1. 引言2. 配置单机Hadoop2.1 下载并解压JDK1.8、Hadoop3.3.62.2 配置环境变量2.3 验证JDK、Hadoop配置 3. 伪分布Hadoop3.1 配置ssh免密码登录3.2 配置伪分布Hadoop3.2.1 修改hadoop-env.sh3.2.2 修改core-site.xml3.2.3 修改hdfs-site.xml3.2.4 修改yarn-site.xml3.2.5 …...
【高内聚】设计模式是如何让软件更好做到高内聚的?
高内聚(High Cohesion)是指模块内部的元素紧密协作,共同完成一个明确且相对独立的功能。就像高效的小团队,成员们目标一致,相互配合默契。 低耦合(Loose Coupling)是指模块之间的依赖较少&#…...
10.2 目录(文件夹)操作
版权声明:本文为博主原创文章,转载请在显著位置标明本文出处以及作者网名,未经作者允许不得用于商业目的。 10.2.1 DirectoryInfo类 DirectoryInfo类可以获得目录信息。 DirectoryInfo常用属性: Name:获取Director…...
LiteFlow Spring boot使用方式
文章目录 概述LiteFlow框架的优势规则调用逻辑规则组件定义组件内数据获取通过 DefaultContext自定义上下文 通过 组件规则定义数据通过预先传入数据 liteflow 使用 概述 在每个公司的系统中,总有一些拥有复杂业务逻辑的系统,这些系统承载着核心业务逻…...
OSCP:Windows 服务提权详解
在Windows操作系统中,服务是一种特殊的后台进程,它们通常以较高的权限(如 SYSTEM 或 Administrator)运行。攻击者可以通过控制服务的创建、配置或运行过程实现权限提升(提权)。本文将详细分析Windows服务提…...
星火大模型接入及文本生成HTTP流式、非流式接口(JAVA)
文章目录 一、接入星火大模型二、基于JAVA实现HTTP非流式接口1.配置2.接口实现(1)分析接口请求(2)代码实现 3.功能测试(1)测试对话功能(2)测试记住上下文功能 三、基于JAVA实现HTTP流…...
21.Word:小赵-毕业论文排版❗【39】
目录 题目 NO1.2 NO3.4 NO5.6 NO7.8.9 NO10.11.12 题目 NO1.2 自己的论文当中接收老师的修改:审阅→比较→源文档:考生文件夹:Word.docx→修订的文档:考生文件夹:教师修改→确定→接收→接收所有修订将合并之…...
Python中的函数(上)
Python中的函数是非常重要的编程概念,以下是详细的介绍: 函数定义基础 在Python中,函数是组织好的、可重复使用的代码块,用于执行特定任务。通过函数,我们可以将复杂的程序分解为较小的、更易管理的部分,…...
Windows11 安装poetry
使用powershell安装 (Invoke-WebRequest -Uri https://install.python-poetry.org -UseBasicParsing).Content | py - 如果使用py运行失败则替换为python即可 终端运行结果如下 D:\AI\A_Share_investment_Agent> (Invoke-WebRequest -Uri https://install.python-poetry.…...
浅谈Linux 权限、压缩、进程与服务
概述 放假回家,对Linux系统的一些知识进行重新的整理,做到温故而知新,对用户权限管理、文件赋权、压缩文件、进程与服务的知识进行了一次梳理和总结。 权限管理 Linux最基础的权限是用户和文件,先了解基础的用户权限和文件权限…...
006 LocalStorage和SessionStorage
JWT存储在LocalStorage与SessionStorage里的区别和共同点如下: 区别 数据有效期: • LocalStorage:始终有效,存储的数据会一直保留在浏览器中,即使窗口或浏览器关闭也一直保存,因此常用作持久数据。 • Se…...
AJAX RSS Reader:技术解析与应用场景
AJAX RSS Reader:技术解析与应用场景 引言 随着互联网的快速发展,信息量呈爆炸式增长。为了方便用户快速获取感兴趣的信息,RSS(Really Simple Syndication)技术应运而生。AJAX RSS Reader作为一种基于AJAX技术的信息读取工具,在用户体验和信息获取方面具有显著优势。本…...
Go优雅实现redis分布式锁
前言 系统为了保证高可用,通常会部署多实例,并且会存在同时对共享资源并发读写,这时候为了保证读写的安全,常规手段是会引入分布式锁,本文将介绍如何使用redis设计一个优雅的Go分布式锁。 设计 redis分布式锁是借助…...
大数据学习栈记——Neo4j的安装与使用
本文介绍图数据库Neofj的安装与使用,操作系统:Ubuntu24.04,Neofj版本:2025.04.0。 Apt安装 Neofj可以进行官网安装:Neo4j Deployment Center - Graph Database & Analytics 我这里安装是添加软件源的方法 最新版…...
css实现圆环展示百分比,根据值动态展示所占比例
代码如下 <view class""><view class"circle-chart"><view v-if"!!num" class"pie-item" :style"{background: conic-gradient(var(--one-color) 0%,#E9E6F1 ${num}%),}"></view><view v-else …...
VB.net复制Ntag213卡写入UID
本示例使用的发卡器:https://item.taobao.com/item.htm?ftt&id615391857885 一、读取旧Ntag卡的UID和数据 Private Sub Button15_Click(sender As Object, e As EventArgs) Handles Button15.Click轻松读卡技术支持:网站:Dim i, j As IntegerDim cardidhex, …...
QMC5883L的驱动
简介 本篇文章的代码已经上传到了github上面,开源代码 作为一个电子罗盘模块,我们可以通过I2C从中获取偏航角yaw,相对于六轴陀螺仪的yaw,qmc5883l几乎不会零飘并且成本较低。 参考资料 QMC5883L磁场传感器驱动 QMC5883L磁力计…...
安宝特方案丨XRSOP人员作业标准化管理平台:AR智慧点检验收套件
在选煤厂、化工厂、钢铁厂等过程生产型企业,其生产设备的运行效率和非计划停机对工业制造效益有较大影响。 随着企业自动化和智能化建设的推进,需提前预防假检、错检、漏检,推动智慧生产运维系统数据的流动和现场赋能应用。同时,…...
java 实现excel文件转pdf | 无水印 | 无限制
文章目录 目录 文章目录 前言 1.项目远程仓库配置 2.pom文件引入相关依赖 3.代码破解 二、Excel转PDF 1.代码实现 2.Aspose.License.xml 授权文件 总结 前言 java处理excel转pdf一直没找到什么好用的免费jar包工具,自己手写的难度,恐怕高级程序员花费一年的事件,也…...
MODBUS TCP转CANopen 技术赋能高效协同作业
在现代工业自动化领域,MODBUS TCP和CANopen两种通讯协议因其稳定性和高效性被广泛应用于各种设备和系统中。而随着科技的不断进步,这两种通讯协议也正在被逐步融合,形成了一种新型的通讯方式——开疆智能MODBUS TCP转CANopen网关KJ-TCPC-CANP…...
【Web 进阶篇】优雅的接口设计:统一响应、全局异常处理与参数校验
系列回顾: 在上一篇中,我们成功地为应用集成了数据库,并使用 Spring Data JPA 实现了基本的 CRUD API。我们的应用现在能“记忆”数据了!但是,如果你仔细审视那些 API,会发现它们还很“粗糙”:有…...
OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别
OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别 直接训练提示词嵌入向量的核心区别 您提到的代码: prompt_embedding = initial_embedding.clone().requires_grad_(True) optimizer = torch.optim.Adam([prompt_embedding...
CMake控制VS2022项目文件分组
我们可以通过 CMake 控制源文件的组织结构,使它们在 VS 解决方案资源管理器中以“组”(Filter)的形式进行分类展示。 🎯 目标 通过 CMake 脚本将 .cpp、.h 等源文件分组显示在 Visual Studio 2022 的解决方案资源管理器中。 ✅ 支持的方法汇总(共4种) 方法描述是否推荐…...
