简单使用vllm

【LLM】vLLM部署与int8量化 介绍了vLLM原理并讲解如何支持peft,对不同的decoding methods进行了说明,同时详述了int8量化的过程。 阅读详情
AI摘要

本文介绍了高性能大语言模型推理库vLLM的基本使用方法,涵盖Python本地启动与Docker容器化部署两种方式,并重点说明GPU依赖(CUDA 12.1)、常见错误如cudaGetDeviceCount异常及NVIDIA Docker运行时配置问题。同时提及vLLM适用于企业级高并发服务场景,强调其相较于Ollama在性能与扩展性上的优势。

简单使用vllm

1 介绍

vLLM是一个快速且易于使用的LLM推理和服务库。它支持分布式部署、容器化部署和OpenAI的数据格式等,并且内置了大模型服务,可以直接用命令启动。vllm与Ollama有一定的区别,Ollama适合个人和小服务,vllm适合企业和提供服务,vllm的性能较高,并且并发性也较好。

vLLM是一个Python库,它包含预编译的C++和CUDA(12.1)二进制文件,因此需要有GPU支持。

参考网站:

# 开发文档
https://docs.vllm.ai

# Github地址
https://github.com/vllm-project/vllm

# OpenAI兼容性服务
https://docs.vllm.ai/en/latest/serving/openai_compatible_server.html

2 简单使用vllm

2.1 使用Python启动

# 创建Python环境,安装依赖
pip install vllm -i https://pypi.tuna.tsinghua.edu.cn/simple

# 用命令执行
# 命令参数参考地址
https://docs.vllm.ai/en/latest/serving/openai_compatible_server.html#command-line-arguments-for-the-server

# 部分参数解释
--host
  主机地址,默认 0.0.0.0
--port
  端口,默认端口8000
--model  
  加载模型的路径
--served-model-name 
  远程API调用时指定的模型名称
--tensor-parallel-size 
  设置的卡的数量,默认1
--dtype
  模型权重和激活的数据类型,默认auto
--api-key
  设置OpenAI格式的密钥,如果设置此值,要求在服务的请求头中加此密钥,注意密钥有要求。
--trust-remote-code 
  允许模型加载来自huggingface的远程代码,默认False

# 执行命令
python -m vllm.entrypoints.openai.api_server \
--model "/home/models/Qwen2-1.5B-Instruct" \
--served-model-name "openchat"

2.2 使用Docker启动

# 注意:vllm/vllm-openai:v0.6.3内置的torch:2.4.0,vllm:0.6.3,CUDA版本:需要12.4、12.1、11.8.
# 可从PyTorch官网上查询PyTorch版本对应关系。
# 最新版本: https://pytorch.org/get-started/locally/
# 以前版本: https://pytorch.org/get-started/previous-versions/

# 下载docker镜像
docker pull vllm/vllm-openai:v0.6.3


# 参数说明
# --gpus all:使用全部的GPU;
# --ipc=host:共享宿主机的内存;
# --runtime nvidia:使用nvidia运行时启动docker,来使用GPU;
docker run -itd \
--restart always \
--name my-vllm \
--runtime nvidia \
--gpus all \
--ipc=host \
-v /home/models:/root/models \
-p 8000:8000 \
vllm/vllm-openai:v0.6.3 --model /root/models/Qwen2-1.5B-Instruct --served-model-name openchat

启动日志

WARNING 10-21 22:42:50 serving_embedding.py:199] embedding_mode is False. Embedding API will not work.
INFO 10-21 22:42:50 launcher.py:19] Available routes are:
INFO 10-21 22:42:50 launcher.py:27] Route: /openapi.json, Methods: HEAD, GET
INFO 10-21 22:42:50 launcher.py:27] Route: /docs, Methods: HEAD, GET
INFO 10-21 22:42:50 launcher.py:27] Route: /docs/oauth2-redirect, Methods: HEAD, GET
INFO 10-21 22:42:50 launcher.py:27] Route: /redoc, Methods: HEAD, GET
INFO 10-21 22:42:50 launcher.py:27] Route: /health, Methods: GET
INFO 10-21 22:42:50 launcher.py:27] Route: /tokenize, Methods: POST
INFO 10-21 22:42:50 launcher.py:27] Route: /detokenize, Methods: POST
INFO 10-21 22:42:50 launcher.py:27] Route: /v1/models, Methods: GET
INFO 10-21 22:42:50 launcher.py:27] Route: /version, Methods: GET
INFO 10-21 22:42:50 launcher.py:27] Route: /v1/chat/completions, Methods: POST
INFO 10-21 22:42:50 launcher.py:27] Route: /v1/completions, Methods: POST
INFO 10-21 22:42:50 launcher.py:27] Route: /v1/embeddings, Methods: POST

请求数据

curl http://localhost:8000/v1/chat/completions \
-X POST \
-H "Content-Type: application/json" \
-d '{
    "model": "openchat",
    "messages": [
        {"role": "system", "content": "You are a helpful assistant."},
        {"role": "user", "content": "介绍一下中国,不少于10000字"}
    ],
    "stream": true
}'

⚠️(1)CUDA的版本不兼容报错:RuntimeError: Unexpected error from cudaGetDeviceCount(). Did you run some cuda functions before cal.

解决方法:更新宿主机的CUDA版本,更换vllm版本。

⚠️(2)运行时报错:docker: Error response from daemon: Unknown runtime specified nvidia.

1. 新方案使用英伟达的运行时-推荐

#  安装文档
https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/latest/install-guide.html

步骤(请根据情况选择最新版本)
安装基础依赖

sudo apt-get update && sudo apt-get install -y --no-install-recommends \
   curl \
   gnupg2

配置仓库

curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg \
  && curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | \
    sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \
    sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list

更新依赖

sudo apt-get update

安装环境

export NVIDIA_CONTAINER_TOOLKIT_VERSION=1.18.2-1
  sudo apt-get install -y \
      nvidia-container-toolkit=${NVIDIA_CONTAINER_TOOLKIT_VERSION} \
      nvidia-container-toolkit-base=${NVIDIA_CONTAINER_TOOLKIT_VERSION} \
      libnvidia-container-tools=${NVIDIA_CONTAINER_TOOLKIT_VERSION} \
      libnvidia-container1=${NVIDIA_CONTAINER_TOOLKIT_VERSION}

配置 Docker 使用 NVIDIA 运行时,自动修改 /etc/docker/daemon.json,添加 NVIDIA 运行时配置。

sudo nvidia-ctk runtime configure --runtime=docker
sudo systemctl restart docker

2. 下面的旧解决方案-基本舍弃:

创建docker服务文件夹

mkdir -p /etc/systemd/system/docker.service.d

构建override.conf文件

sudo tee /etc/systemd/system/docker.service.d/override.conf <<EOF
[Service]
ExecStart=/usr/bin/dockerd --host=fd:// --add-runtime=nvidia=/usr/bin/nvidia-container-runtime
EOF

修改daemon.json文件

sudo tee /etc/docker/daemon.json <<EOF
{
    "runtimes": {
        "nvidia": {
            "path": "/usr/bin/nvidia-container-runtime",
            "runtimeArgs": []
        }
    }
}
EOF

重启服务

# 重载daemon文件
systemctl daemon-reload

# 重启docker
systemctl restart docker

3 vue3前端访问

<script setup lang="ts">

/*
# 安装
npm install @microsoft/fetch-event-source

*/

import { fetchEventSource } from "@microsoft/fetch-event-source";


defineProps<{ msg: string }>()


// 建立连接
function createSseConnect() {
  
  const controller = new AbortController()
  const signal = controller.signal
  
  fetchEventSource('http://192.168.137.64:8000/v1/chat/completions', {
    method: 'POST',
    signal: signal,
    headers: {
          /* 请求头配置 */
          "Content-Type": "application/json"
      },
    body: JSON.stringify({
      /* 发送的内容 */
      "model": "openchat",
      "messages": [
          {"role": "system", "content": "You are a helpful assistant."},
          {"role": "user", "content": "介绍一下中国,不少于10000字"}
      ],
      "stream": true
    }),
    onmessage(msg) {
          // let result= JSON.parse(msg.data);  // 得到的数据
          console.log(msg.data)
      },
    onerror(err){
          // 必须抛出错误才会停止
          throw err
      }
  })

}


</script>

<template>
  <h1>{{ msg }}</h1>

  <input type="button" value="发送消息" v-on:click="createSseConnect('1234')" />

</template>

<style scoped>
.read-the-docs {
  color: #888;
}
</style>

截图

在这里插入图片描述

使用vllm本地部署deepseek大模型(企业级部署大模型) 使用vllm企业级别部署deepseek大模型 阅读详情

相关推荐

大模型推理:vllm多机多卡分布式本地部署

我是一台机器启动了一个docker,将docker当作一个节点,在docker里面执行raystart--head--port=6379,将另一台机器的docker作为worker节点,并加入到raycluster中,如果机器间的通信没有问题,worker节点在几秒内就能加入集群。值得注意的是多机多卡部署的推理框架,也适用于单机多卡,单机单卡,这里不过多赘述。确保head节点的IP与指定的通信网卡的IP一致,同时,检查/etc/hosts里面的IP对应的主机名与docker的主机名是一致的。

java15655057970的博客 2860

vLLM初探

是一个快速且易于使用的库,用于 LLM 推理和服务,可以和HuggingFace 无缝集成。vLLM利用了全新的注意力算法「PagedAttention」,有效地管理注意力键和值。在吞吐量方面,vLLM的性能比HuggingFace Transformers(HF)高出 24 倍,文本生成推理(TGI)高出3.5倍。是伯克利大学LMSYS组织开源的大语言模型高速推理框架,旨在极大地提升实时场景下的语言模型服务的吞吐与内存使用效率。

邹中凡 7277

LLM 大模型学习必知必会系列(十二):VLLM性能飞跃部署实践:从推理加速到高效部署的全方位优化[更多内容:XInference/FastChat等框架]

LLM 大模型学习必知必会系列(十二):VLLM性能飞跃部署实践:从推理加速到高效部署的全方位优化[更多内容:XInference/FastChat等框架]

丨汀、的博客 6373

一文说清VLLM .VS.Ollama的区别

对比VLLM与Ollama,解析两者在性能、易用性和应用场景的异同,助你选择合适框架。

打造全国最全的AI Agent开发知识领域的博客 5349

大模型推理加速框架vllm部署的实战方案

本文主要介绍了大模型推理加速框架vllm部署的实战方案,希望对学习大语言模型的同学们有所帮助。 文章目录 1. 前言 2. 配置环境 2.1 安装虚拟环境 2.2 安装依赖库 3. 运行vllm

herosunly的博客 3万+

windows下玩转vllm:在wsl下安装vllm

当前,部署通义千问2.5-vl已经是一件箭在弦上,不得不发的事儿了。网上搜了一下,发现还是用vllm用的比较多。于是乎,这就开始尝试部署vllm。但是我们之前说了,vllm是不支持直接在windows上部署的,我们还得搞wsl或者docker。咱今天先尝试使用wsl进行安装哈。

xiezhipu的博客 4137

【ChatGLM3】(9):使用fastchat和vllm部署chatlgm3-6b模型,并简单的进行速度测试对比。vllm确实速度更快些。

使用fastchat 和 vllm 简单的对比了下。没有做量化,也没有其他配置。fastchat 是 20 t/s 左右,vllm 是 200+ t/s 速度上确实还是非常不错的。但是发现 vllm 在返回的内容上不如 fastchat 好。

freewebsys的专栏 5797

VLLM专题(二十八)—使用 Nginx

本文档展示了如何启动多个 vLLM 服务容器,并使用 Nginx 作为服务器之间的负载均衡器。

265

Hunyuan-MT-7B快速入门:使用vLLM部署,Chainlit前端交互超简单

本文介绍了如何在星图GPU平台上自动化部署Hunyuan-MT-7B镜像,实现高效的多语言翻译功能。该平台简化了部署流程,用户可快速搭建翻译服务,并通过Chainlit前端轻松实现33种语言的互译,适用于跨境电商、多语言内容创作等场景。

weixin_36012152的博客 18

Ollama与vLLM部署对比:哪个更合适?

Ollama和vLLM各有千秋,选择哪种方案取决于具体需求。如果需要一个简单易用、快速部署的LLM解决方案,并且对推理速度要求不高,那么Ollama是不错的选择。如果追求高性能的LLM推理,并且具备一定的技术基础,那么vLLM更适合。

AI生成曾小健3 2406

告别玄学调参:手把手教你用LSTM-AutoEncoder为传感器数据做异常检测(实战篇)

本文详细介绍了LSTM-AutoEncoder在传感器数据异常检测中的工程化实践,包括数据预处理、模型架构设计和生产环境部署策略。通过结合LSTM的时间序列处理能力和AutoEncoder的特征提取优势,该方法能够有效识别温湿度、PM2.5等传感器数据的异常模式,适用于工业物联网和室内空气质量监测等场景。

weixin_29212429的博客 477

大模型推理指南:使用 vLLM 实现高效推理

大模型推理有多种方式比如最基础的 HuggingFace TransformersTGIvLLM其中,热度最高的应该就是 vLLM,性能好的同时使用也非常简单,本文就分享一下如何使用 vLLM 来启动大模型推理服务。根据 vLLM 官方博客所说:进行了 NVIDIA A10 GPU 上推理 LLaMA-7 B 和 在 NVIDIA A100 GPU(40 GB)上推理 LLaMA-13 B 两个实验,

探索云原生 3341

手把手复现论文:SVPWM过调制I区与II区算法仿真(附MATLAB源码)

本文详细介绍了SVPWM过调制I区与II区算法的MATLAB仿真实现,从理论推导到Simulink建模逐步解析。通过源码示例展示幅值补偿和六边形跟踪等关键技术,帮助电力电子研究者掌握过调制算法的核心实现方法,适用于电机控制、变频器等工业应用场景。

weixin_28739079的博客 530

使用vLLM部署工具加速QWQ,推理速度比ollama更快、并发更高

与传统的HuggingFace Transformers相比,vLLM的吞吐量高达24倍,且无需改变模型架构,它采用创新的PagedAttention算法,优化了注意力键和值的管理,从而提升了推理速度,并且其能够有效地利用多核CPU和GPU资源,显著提升LLM的推理速度。相比于ollama,vllm输出的速度更快,支持的并发更高,目前也没有遇到安全问题,稳定性非常好,更适合作为服务器的接口服务来部署。

2401_85390073的博客 1548

基于Gurobi的综合能源系统运行优化:鲁棒两阶段优化方法

本文提出了一种基于Gurobi的综合能源系统鲁棒两阶段优化方法,针对包含换电站、光伏发电和电池储能的系统运行问题。研究采用多面体不确定性集合描述光伏出力随机性,构建了考虑电池衰减成本和弃光惩罚的两阶段优化模型:第一阶段制定日前调度计划,第二阶段处理实时运行中的不确定性。通过列与约束生成算法求解模型,并使用Python和Gurobi实现。仿真验证了该方法能有效平衡系统经济性与鲁棒性,为含高比例可再生能源的综合能源系统运行提供了实用解决方案。

huanghm88的专栏 242

MIPI CSI-2

来源:公众号瓜大三哥版权归三哥所有1 MIPI简介2 MIPI CSI-2简介2.1 MIPI CSI-2 的层次结构2.2 CSI-2协议层2.3 打包/解包层2.4 ...

OpenFPGA的博客 2113

LLM运行框架对比:ollama与vllm浅析

开源的LLM已经成为程序员、爱好者和希望在日常工作中使用生成式AI并保持隐私的用户的最佳选择,对于企业的私有化部署而言也是如此。这些模型提供了优秀的性能,有时在许多任务中可以与大型的闭源模型 (如 GPT-4o 或 Claude Sonnet 3.5) 相媲美。这些LLM是开源的,但并不意味着它们可以开箱即用,需要一个运行框架在本地或服务器上运行大模型以获得特定的用例。

m0_59235945的博客 865

《二、企业级监控系统之Prometheus监控node_exporter》

文章目录一、部署node_exporter服务二、部署prometheus服务2.1、部署node_exporter服务三、grafana之添加数据源四、grafana之导入监控模板五、grafana之修改模板变量六、grafana之修改仪表板变量总结 > 这里是引用 一、部署node_exporter服务 docker run -d --restart=always --name node_exporter --net=“host” --pid=“host” -v “/:/host:ro,

东城绝神 1万+

vllm cpu版本简单测试(x64版本)

亚马逊有编译好的vllm镜像1.3个G左右,可以直接使用。用模搭社区的工具或者huggingface下载个小模型。手动编译稍微麻烦,这里用亚马逊编译好打包好的镜像。

void_dreamer的博客 1035

RT-DETR改进策略【注意力机制篇】| 2024 PPA 并行补丁感知注意模块,提高小目标关注度

本文记录的是利用改进检测精度,详细说明了优化原因,注意事项等。原论文在红外小目标检测任务中,小目标在多次下采样操作中容易丢失关键信息。通过替代编码器和解码器基本组件中的传统卷积操作,更好地保留小目标的重要信息。HCF-Net: Hierarchical Context Fusion Network for Infrared Small Object Detection采用多分支特征提取策略,通过不同分支提取不同尺度和层次的特征。利用局部、全局和串行卷积分支,对输入特征张量进行处理。通过控制 patch si

Limiiiing的博客 1647

FPGA/IC 秋招笔试/面试题总结(续)

FPGA/IC 秋招笔试/面试题总结(续)来啦… 文章目录二十七、状态机1. Moore/Mealy状态机2.一、二、三段式状态机 二十七、状态机 1. Moore/Mealy状态机 (1)Moore状态机: 输出只由当前状态决定,即次态=f(现态。输入),输出=f(现态) Moore型状态机的输出信号是直接由状态寄存器译码得到的。 Moore型状态机检测序列1101如下 Moore型状态机输出函数只由状态变量决定,想要输出Z=1,必须S4状态形成,即寄存器中的1101都打进去后才可以。输出Z=1会在

Crazzy_M的博客 2万+

DeepSeek-容器化(Docker)部署vLLM和Open WebUI

前面小节我们通过conda创建虚拟Python环境,实现vLLM和OpenWebUI的配置,但是这个安装部署会非常繁琐非费时间。我们今天将使用容器来部署。环境还是使用ubuntu20.4,复用上个环境已经安装GPU驱动和模型文件。

2917

解决此平台不支持虚拟化的 Intel VT-x/EPT故障问题

当我们在VMware Workstation虚拟机上【启用】虚拟系统(如:Windows10)所在的虚【拟机设置】【处理器】【虚拟化引擎】下面的【虚拟化 Intel VT-x/EPT 或AMD-V/RVI(V)】内容后,在启动虚拟系统时,虚拟系统无法启动,且弹出【此平台不支持虚拟化的 Intel VT-x/EPT。不使用虚拟化的 Intel VT-x/EPT,是否继续】窗口

提供C#相关开发 、云计算、运维测试、网络安全相关技术分享与服务,有意向可联系。 1万+

Ollama vs. vLLM:谁是AI模型推理的王者?

Ollama:Ollama是一个用户友好的工具,旨在让开发者能够在本地运行大型语言模型(LLM)。它注重简单性和易用性,适合个人项目或小型实验,支持在个人電腦上运行模型,强调数据隐私和离线使用。vLLM:vLLM是一个高性能推理引擎,专为大规模部署和高效服务LLM设计。它由加州大学伯克利分校的研究团队开发,利用PagedAttention等技术优化内存管理,特别适合需要处理高并发请求的生产环境。

igo9go_zq的博客 665

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

上一篇: Tornado简单使用
下一篇: 使用PyMuPdf将pdf文件转化为img
MasonYyp
博客等级 码龄9年 301粉丝 297原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值