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

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中,函数是组织好的、可重复使用的代码块,用于执行特定任务。通过函数,我们可以将复杂的程序分解为较小的、更易管理的部分&#xff0c…...

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分布式锁是借助…...

第19节 Node.js Express 框架

Express 是一个为Node.js设计的web开发框架,它基于nodejs平台。 Express 简介 Express是一个简洁而灵活的node.js Web应用框架, 提供了一系列强大特性帮助你创建各种Web应用,和丰富的HTTP工具。 使用Express可以快速地搭建一个完整功能的网站。 Expre…...

vscode里如何用git

打开vs终端执行如下: 1 初始化 Git 仓库(如果尚未初始化) git init 2 添加文件到 Git 仓库 git add . 3 使用 git commit 命令来提交你的更改。确保在提交时加上一个有用的消息。 git commit -m "备注信息" 4 …...

【力扣数据库知识手册笔记】索引

索引 索引的优缺点 优点1. 通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性。2. 可以加快数据的检索速度(创建索引的主要原因)。3. 可以加速表和表之间的连接,实现数据的参考完整性。4. 可以在查询过程中,…...

遍历 Map 类型集合的方法汇总

1 方法一 先用方法 keySet() 获取集合中的所有键。再通过 gey(key) 方法用对应键获取值 import java.util.HashMap; import java.util.Set;public class Test {public static void main(String[] args) {HashMap hashMap new HashMap();hashMap.put("语文",99);has…...

python/java环境配置

环境变量放一起 python: 1.首先下载Python Python下载地址:Download Python | Python.org downloads ---windows -- 64 2.安装Python 下面两个,然后自定义,全选 可以把前4个选上 3.环境配置 1)搜高级系统设置 2…...

《从零掌握MIPI CSI-2: 协议精解与FPGA摄像头开发实战》-- CSI-2 协议详细解析 (一)

CSI-2 协议详细解析 (一) 1. CSI-2层定义(CSI-2 Layer Definitions) 分层结构 :CSI-2协议分为6层: 物理层(PHY Layer) : 定义电气特性、时钟机制和传输介质(导线&#…...

理解 MCP 工作流:使用 Ollama 和 LangChain 构建本地 MCP 客户端

🌟 什么是 MCP? 模型控制协议 (MCP) 是一种创新的协议,旨在无缝连接 AI 模型与应用程序。 MCP 是一个开源协议,它标准化了我们的 LLM 应用程序连接所需工具和数据源并与之协作的方式。 可以把它想象成你的 AI 模型 和想要使用它…...

Linux相关概念和易错知识点(42)(TCP的连接管理、可靠性、面临复杂网络的处理)

目录 1.TCP的连接管理机制(1)三次握手①握手过程②对握手过程的理解 (2)四次挥手(3)握手和挥手的触发(4)状态切换①挥手过程中状态的切换②握手过程中状态的切换 2.TCP的可靠性&…...

【python异步多线程】异步多线程爬虫代码示例

claude生成的python多线程、异步代码示例,模拟20个网页的爬取,每个网页假设要0.5-2秒完成。 代码 Python多线程爬虫教程 核心概念 多线程:允许程序同时执行多个任务,提高IO密集型任务(如网络请求)的效率…...

vue3+vite项目中使用.env文件环境变量方法

vue3vite项目中使用.env文件环境变量方法 .env文件作用命名规则常用的配置项示例使用方法注意事项在vite.config.js文件中读取环境变量方法 .env文件作用 .env 文件用于定义环境变量,这些变量可以在项目中通过 import.meta.env 进行访问。Vite 会自动加载这些环境变…...