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

vLLM私有化部署大语言模型LLM

目录

一、vLLM介绍

二、安装vLLM

 1、安装环境

 2、安装步骤

 三、运行vLLM

 1、运行方式

 2、切换模型下载源

 3、运行本地已下载模型

四、通过http访问vLLM


一、vLLM介绍

vLLM(官方网址:https://www.vllm.ai)是一种用于大规模语言模型(LLM)推理的框架,旨在提高模型的吞吐量和降低延迟。vLLM通过优化内存管理和调度策略,显著提升了模型在高并发场景下的性能。vLLM利用了一种名为PagedAttention的注意力机制,该机制借鉴了虚拟内存和分页技术,以减少缓存内存(KV Cache)的浪费,并允许在请求之间灵活共享KV缓存。这种设计使得vLLM在保持与现有系统相同延迟水平的情况下,能够将吞吐量提高2到4倍。特点:

  • 速度快: 在每个请求需要 3 个并行输出完成时的服务吞吐量。vLLM 比 HuggingFace Transformers(HF)的吞吐量高出 8.5 倍-15 倍,比 HuggingFace 文本生成推理(TGI)的吞吐量高出 3.3 倍-3.5 倍

  • 优化的 CUDA 内核

  • 灵活且易于使用

  • 与流行的 Hugging Face 模型(和魔塔社区)无缝集成

  • 高吞吐量服务,支持多种解码算法,包括并行抽样、束搜索等

  • 支持张量并行处理,实现分布式推理

  • 支持流式输出

  • 兼容 OpenAI API 

二、安装vLLM

 1、安装环境

  • 硬件CPU:12 vCPU Intel(R) Xeon
  • 内存MEM:48GB
  • 显卡:RTX 3080单卡
  • 操作系统:Ubuntu 22.04.1 LTS 
  • CUDA版本:cuda_11.8 (通过nvcc --version查看结果)   
  • 已安装:miniconda3版本:conda 22.11.1

 2、安装步骤

     根据vLLM官网的安装说明(网址:https://docs.vllm.ai/en/latest/getting_started/installation/ ),分为三大类:GPU、CPU、其他。 每类中根据具体的安排硬件平台不同还进行不同的细分。

    由于本文所用硬件环境是带CUDA的GPU,因此选择GPU-CUDA方式进行安装。

    步骤如下:

 1) 前置准备:对git增加LFS能力。Git LFS是一个扩展,允许将大文件(如音频、视频、数据集等)存储在Git仓库中,而不会显著增加仓库的大小或影响性能。通过安装Git LFS钩子(hooks),Git LFS能够自动处理这些大文件的上传和下载,确保它们以优化的方式存储在远程仓库中,并在需要时检索到本地。

#若Linux中未安装Git LFS(Large File Storage),则先安装
sudo apt-get install git-lfs#初始化,用于在本地Git仓库中安装Git Large File Storage(LFS)的钩子(hooks)。
git lfs install

 2) 通过miniconda创建虚拟环境,名为env-vllm

#通过conda创建一个新虚拟环境,指定虚拟环境中包括python3.12的packages
conda create -n env-vllm python=3.12 -y#激活使用该虚拟环境
conda activate env-vllm

  3) 在虚拟环境中,通过pip自动下载并安装vllm,过程可能需要几十分钟。注意需根据CUDA版本选择安装(由于低版本vLLM存在bug #8443导致VLLM_USE_MODELSCOPE环境变量不生效。在v0.6.3版本修复了该bug,所以直接下载适配CUDA 11.8的新版vllm)

#截止2025年初,默认安装vLLM’s binaries are compiled with CUDA 12.1 and public PyTorch release versions
pip install vllm#根据自身环境,若希望安装vLLM binaries compiled with CUDA 11.8 and public PyTorch release versions,则:
export VLLM_VERSION=0.6.1.post2
export PYTHON_VERSION=312
pip install https://github.com/vllm-project/vllm/releases/download/v${VLLM_VERSION}/vllm-${VLLM_VERSION}+cu118-cp${PYTHON_VERSION}-cp${PYTHON_VERSION}-manylinux1_x86_64.whl --extra-index-url https://download.pytorch.org/whl/cu118#由于低版本vLLM存在bug #8443导致VLLM_USE_MODELSCOPE环境变量不生效。在v0.6.3版本修复了该bug,所以直接下载适配CUDA 11.8的新版vllm
pip install https://github.com/vllm-project/vllm/releases/download/v0.6.6.post1/vllm-0.6.6.post1+cu118-cp38-abi3-manylinux1_x86_64.whl --extra-index-url https://download.pytorch.org/whl/cu118

  4) 在虚拟环境中,可以使用pip show vllm对查看安装结果:

 三、运行vLLM

 1、运行方式

  通过以下可运行vllm,根据模型名称默认自动从 HuggingFace 下载并运行:

# ​运行vllm,根据模型名称默认自动从 HuggingFace 下载并运行
vllm serve "模型名称"# 也可以通过以下执行python代码方式运行vllm
python -m vllm.entrypoints.openai.api_server --model="模型名称" --trust-remote-code --port 8000

注:vllm运行有许多选项,可以通过vllm serve --help查看各个选项用途。或者查看官网文档:https://docs.vllm.ai/en/latest/serving/openai_compatible_server.html#command-line-arguments-for-the-server

 2、切换模型下载源

   vLLM的模型下载默认来源为 HuggingFace 。在国内访问很可能不畅,为此改从国内的 魔搭社区 下载模型。既在运行前先设置VLLM_USE_MODELSCOPE=True既可切换下载源为 魔搭社区 。 (注意:在HuggingFace与魔塔社区上模型名称可能略有不同)。

# 使用魔塔社区,需要先安装package
pip install modelscope
# ​设置环境变量VLLM_USE_MODELSCOPE=True切换下载源为:魔搭社区
# 注意:低版本vLLM存在bug #8443导致该环境变量不生效。在v0.6.3版本修复了该bug
export VLLM_USE_MODELSCOPE=True# ​运行vllm,由于设置了环境变量,根据模型名称默认自动从 魔搭社区 下载并运行
vllm serve "Qwen/Qwen2.5-0.5B-Instruct"
# 也可以通过以下执行python代码方式运行vllm
python -m vllm.entrypoints.openai.api_server --model="Qwen/Qwen2.5-0.5B-Instruct" --trust-remote-code --port 8000

 3、运行本地已下载模型

   除了以上自动下载的方式,还可以通过指定模型所在路径方式运行(需要先下载准备好),这样有几个好处:一是模型来源可以丰富多样,不仅仅局限以上两个平台;二是运行vLLM时无需再联网下载,比较适合内网服务器。 

   下面以模型“Yi-1.5-6B-Chat”为例, 提前通过git下载模型(需要确保lfs已经安装且初始化,具体见前文)。

cd /root/autodl-tmp/my_models
# 提前通过git下载模型(需要确保lfs已经安装且初始化,具体见前文)
git clone https://www.modelscope.cn/01ai/Yi-1.5-6B-Chat.git

  通过指定本地模型所在路径运行vLLM:

# ​运行vllm,指定本地模型所在路径
vllm serve "/root/autodl-tmp/my_models/Yi-1.5-6B-Chat"
# 也可以通过以下执行python代码方式运行vllm
python -m vllm.entrypoints.openai.api_server --model="/root/autodl-tmp/my_models/Yi-1.5-6B-Chat" --trust-remote-code --port 8000

  注:此例中,指定本地模型所在路径运行vLLM的模型名为:/root/autodl-tmp/my_models/Yi-1.5-6B-Chat

四、通过http访问vLLM

  vLLM提供了http接口。下面通过curl验证效果。

# Call the vllm server using curl:
curl -X POST http://localhost:8000/v1/chat/completions \-H "Content-Type: application/json" \--data '{"model": "Qwen/Qwen2.5-0.5B-Instruct","messages": [{"role": "user","content": "What is the capital of China?"}]}'

chat返回结果(已经格式化排版)如下 

{"id": "chatcmpl-f0cbdea8e1fb41528d1ec2cb0e198498","object": "chat.completion","created": 1736836496,"model": "Qwen/Qwen2.5-0.5B-Instruct","choices": [{"index": 0,"message": {"role": "assistant","content": "The capital of China is Beijing.","tool_calls": []},"logprobs": null,"finish_reason": "stop","stop_reason": null}],"usage": {"prompt_tokens": 36,"total_tokens": 44,"completion_tokens": 8,"prompt_tokens_details": null},"prompt_logprobs": null
}

  vLLM还暴露了各类metrics,供检测vllm的运行状态:

curl http://localhost:8000/metrics

 

相关文章:

vLLM私有化部署大语言模型LLM

目录 一、vLLM介绍 二、安装vLLM 1、安装环境 2、安装步骤 三、运行vLLM 1、运行方式 2、切换模型下载源 3、运行本地已下载模型 四、通过http访问vLLM 一、vLLM介绍 vLLM(官方网址:https://www.vllm.ai)是一种用于大规模语言模型&#x…...

OpenAI Whisper:语音识别技术的革新者—深入架构与参数

当下语音识别技术正以前所未有的速度发展,极大地推动了人机交互的便利性和效率。OpenAI的Whisper系统无疑是这一领域的佼佼者,它凭借其卓越的性能、广泛的适用性和创新的技术架构,正在重新定义语音转文本技术的规则。今天我们一起了解一下Whi…...

基于当前最前沿的前端(Vue3 + Vite + Antdv)和后台(Spring boot)实现的低代码开发平台

项目是一个基于当前最前沿的前端技术栈(Vue3 Vite Ant Design Vue,简称Antdv)和后台技术栈(Spring Boot)实现的低代码开发平台。以下是对该项目的详细介绍: 一、项目概述 项目名称:lowcode-s…...

【Rust】错误处理机制

目录 思维导图 引言 一、错误处理的重要性 1.1 软件中的错误普遍存在 1.2 编译时错误处理要求 二、错误的分类 2.1 可恢复错误(Recoverable Errors) 2.2 不可恢复错误(Unrecoverable Errors) 三、Rust 的错误处理机制 3…...

Logback日志技术

Logback日志技术 日志 日志(Logging)是软件开发和运维中用于记录系统或应用程序运行期间发生的运行信息、状态变化、错误信息等的一种机制,这种记录的方式就好像我们日常生活中写日记一样。它提供了一种持久化的方式,使得开发者…...

9分布式微服务架构

分布式微服务架构不光需要从架构上的设计优化系统,还要在编码上优化达到最好的效果 中心化的设计 中心化的设计比较简单,分布式集群中的角色分为两种,管理者和被管理者。 在一个分布式或者集群中,管理者角色管理着其他处理实际…...

Leecode刷题C语言之统计重新排列后包含另一个字符串的子字符串数目②

执行结果:通过 执行用时和内存消耗如下: void update(int *diff, int c, int add, int *cnt) {diff[c] add;if (add 1 && diff[c] 0) {// 表明 diff[c] 由 -1 变为 0(*cnt)--;} else if (add -1 && diff[c] -1) {// 表明 diff[c] 由 0 变为 -…...

HTML和CSS相关的问题,为什么页面加载速度慢?

页面加载速度慢是网站优化中一个常见的问题,可能由于多种原因,包括HTML和CSS的代码编写方式、资源的加载顺序、页面渲染的复杂性等。以下是一些常见的原因和优化方法,结合实际项目代码示例进行讲解。 1. 过多的资源请求 如果页面包含大量的…...

LiveGBS流媒体平台GB/T28181常见问题-没有收到视频流播放时候提示none rtp data receive未收到摄像头推流如何处理?

LiveGBS没有收到视频流播放时候提示none rtp data receive未收到摄像头推流如何处理? 1、none rtp data receive2、搭建GB28181视频直播平台 1、none rtp data receive LiveSMS 收不到下级推流 首先需要排查服务器端 UDP & TCP 30000-30249 端口是否开放其次排…...

Flask表单处理与验证

Flask是一个轻量级的Python框架,它通过扩展库提供了对表单处理与验证的支持。WTForms是一个流行的Flask扩展库,用于创建和验证Web表单。它提供了一种声明式的方法来定义表单结构和验证逻辑,使得表单处理更为简洁和优雅。下面,我们…...

正泰电工携手图扑:变电站数字孪生巡检平台

随着电力行业的快速发展与智能化转型,传统的人工巡检方式难以匹配现代电网对于效率、安全和精细化管理的高标准要求。在此背景下,构建智慧变电站巡检系统已成为推动变电站智能化进程、实现高效运营和保障电网可靠性的重要战略。 图扑软件与正泰电工联合…...

瑞芯微 RK 系列 RK3588 使用 ffmpeg-rockchip 实现 MPP 视频硬件编解码-代码版

前言 在上一篇文章中,我们讲解了如何使用 ffmpeg-rockchip 通过命令来实现 MPP 视频硬件编解码和 RGA 硬件图形加速,在这篇文章,我将讲解如何使用 ffmpeg-rockchip 用户空间库(代码)实现 MPP 硬件编解码。 本文不仅适…...

uniapp 预加载分包,减少loading

在 uniapp 中,可以通过配置 pages.json 文件中的 preloadRule 属性来实现页面预加载功能。以下是具体操作步骤: 1. 在 pages.json 中配置 preloadRule preloadRule 用于指定哪些页面需要预加载,以及预加载时机。下面是一个示例配置&#xf…...

c#删除文件和目录到回收站

之前在c上遇到过这个问题,折腾许久才解决了,这次在c#上再次遇到这个问题,不过似乎容易了一些,亲测代码如下,两种删除方式都写在代码中了。 直接上完整代码: using Microsoft.VisualBasic.FileIO; using Sy…...

GESP2024年12月认证C++六级( 第三部分编程题(1)树上游走)

参考程序&#xff1a; #include <iostream> #include <string>using namespace std;int main() {long long n, s; // n为移动次数&#xff0c;s为初始节点编号string moves; // 移动指令串// 输入处理cin >> n >> s;cin >> moves;long long…...

Redis数据结构服务器

Redis数据结构服务器 什么是Redis数据结构服务器 的概念和特点 是一个开源&#xff08;BSD许可&#xff09;&#xff0c;内存中的数据结构存储服务器&#xff0c;可用作数据库、缓存和消息中间件。它支持多种类型的数据结构&#xff0c;如字符串&#xff08;strings&#xff09…...

【向量数据库 Milvus】centos8源码安装和部署 Milvus 2.5.3

在龙晰操作系统&#xff08;LoongArch 架构&#xff09;的 CentOS 8 环境中通过源码安装和部署 Milvus 2.5.3 可能会面临一些挑战&#xff0c;因为 Milvus 的官方支持主要集中在 x86 和 ARM 架构上。以下是一个详细的安装步骤&#xff0c;但需要注意&#xff0c;某些依赖项可能…...

MySQL数据库(SQL分类)

SQL分类 分类全称解释DDLData Definition Language数据定义语言&#xff0c;用来定义数据库对象&#xff08;数据库&#xff0c;表&#xff0c;字段&#xff09;DMLData Manipulation Language数据操作语言&#xff0c;用来对数据库表中的数据进行增删改DQLData Query Languag…...

C++实现设计模式---原型模式 (Prototype)

原型模式 (Prototype) 原型模式 是一种创建型设计模式&#xff0c;它通过复制现有对象来创建新对象&#xff0c;而不是通过实例化。 意图 使用原型实例指定要创建的对象类型&#xff0c;并通过复制该原型来生成新对象。提供一种高效创建对象的方式&#xff0c;尤其是当对象的…...

鸿蒙面试 2025-01-10

写了鉴权工具&#xff0c;你在项目中申请了那些权限&#xff1f;&#xff08;常用权限&#xff09; 位置权限 &#xff1a; ohos.permission.LOCATION_IN_BACKGROUND&#xff1a;允许应用在后台访问位置信息。 ohos.permission.LOCATION&#xff1a;允许应用访问精确的位置信息…...

装饰模式(Decorator Pattern)重构java邮件发奖系统实战

前言 现在我们有个如下的需求&#xff0c;设计一个邮件发奖的小系统&#xff0c; 需求 1.数据验证 → 2. 敏感信息加密 → 3. 日志记录 → 4. 实际发送邮件 装饰器模式&#xff08;Decorator Pattern&#xff09;允许向一个现有的对象添加新的功能&#xff0c;同时又不改变其…...

脑机新手指南(八):OpenBCI_GUI:从环境搭建到数据可视化(下)

一、数据处理与分析实战 &#xff08;一&#xff09;实时滤波与参数调整 基础滤波操作 60Hz 工频滤波&#xff1a;勾选界面右侧 “60Hz” 复选框&#xff0c;可有效抑制电网干扰&#xff08;适用于北美地区&#xff0c;欧洲用户可调整为 50Hz&#xff09;。 平滑处理&…...

日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする

日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする 1、前言(1)情况说明(2)工程师的信仰2、知识点(1) にする1,接续:名词+にする2,接续:疑问词+にする3,(A)は(B)にする。(2)復習:(1)复习句子(2)ために & ように(3)そう(4)にする3、…...

【JVM】- 内存结构

引言 JVM&#xff1a;Java Virtual Machine 定义&#xff1a;Java虚拟机&#xff0c;Java二进制字节码的运行环境好处&#xff1a; 一次编写&#xff0c;到处运行自动内存管理&#xff0c;垃圾回收的功能数组下标越界检查&#xff08;会抛异常&#xff0c;不会覆盖到其他代码…...

HTML 列表、表格、表单

1 列表标签 作用&#xff1a;布局内容排列整齐的区域 列表分类&#xff1a;无序列表、有序列表、定义列表。 例如&#xff1a; 1.1 无序列表 标签&#xff1a;ul 嵌套 li&#xff0c;ul是无序列表&#xff0c;li是列表条目。 注意事项&#xff1a; ul 标签里面只能包裹 li…...

2021-03-15 iview一些问题

1.iview 在使用tree组件时&#xff0c;发现没有set类的方法&#xff0c;只有get&#xff0c;那么要改变tree值&#xff0c;只能遍历treeData&#xff0c;递归修改treeData的checked&#xff0c;发现无法更改&#xff0c;原因在于check模式下&#xff0c;子元素的勾选状态跟父节…...

大模型多显卡多服务器并行计算方法与实践指南

一、分布式训练概述 大规模语言模型的训练通常需要分布式计算技术,以解决单机资源不足的问题。分布式训练主要分为两种模式: 数据并行:将数据分片到不同设备,每个设备拥有完整的模型副本 模型并行:将模型分割到不同设备,每个设备处理部分模型计算 现代大模型训练通常结合…...

NLP学习路线图(二十三):长短期记忆网络(LSTM)

在自然语言处理(NLP)领域,我们时刻面临着处理序列数据的核心挑战。无论是理解句子的结构、分析文本的情感,还是实现语言的翻译,都需要模型能够捕捉词语之间依时序产生的复杂依赖关系。传统的神经网络结构在处理这种序列依赖时显得力不从心,而循环神经网络(RNN) 曾被视为…...

三分算法与DeepSeek辅助证明是单峰函数

前置 单峰函数有唯一的最大值&#xff0c;最大值左侧的数值严格单调递增&#xff0c;最大值右侧的数值严格单调递减。 单谷函数有唯一的最小值&#xff0c;最小值左侧的数值严格单调递减&#xff0c;最小值右侧的数值严格单调递增。 三分的本质 三分和二分一样都是通过不断缩…...

电脑定时关机工具推荐

软件介绍 本文介绍一款轻量级的电脑自动关机工具&#xff0c;无需安装&#xff0c;使用简单&#xff0c;可满足定时关机需求。 工具简介 这款关机助手是一款无需安装的小型软件&#xff0c;文件体积仅60KB&#xff0c;下载后可直接运行&#xff0c;无需复杂配置。 使用…...