西南交通建设集团网站,帮助设计的网站,福田欧曼est前四后八,企业简介封面设计目录
一、vLLM介绍
二、安装vLLM 1、安装环境 2、安装步骤 三、运行vLLM 1、运行方式 2、切换模型下载源 3、运行本地已下载模型
四、通过http访问vLLM 一、vLLM介绍
vLLM#xff08;官方网址#xff1a;https://www.vllm.ai#xff09;是一种用于大规模语言模型#x…目录
一、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 TransformersHF的吞吐量高出 8.5 倍-15 倍比 HuggingFace 文本生成推理TGI的吞吐量高出 3.3 倍-3.5 倍 优化的 CUDA 内核 灵活且易于使用 与流行的 Hugging Face 模型和魔塔社区无缝集成 高吞吐量服务支持多种解码算法包括并行抽样、束搜索等 支持张量并行处理实现分布式推理 支持流式输出 兼容 OpenAI API 二、安装vLLM 1、安装环境
硬件CPU12 vCPU Intel(R) Xeon内存MEM48GB显卡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钩子hooksGit LFS能够自动处理这些大文件的上传和下载确保它们以优化的方式存储在远程仓库中并在需要时检索到本地。
#若Linux中未安装Git LFSLarge File Storage则先安装
sudo apt-get install git-lfs#初始化用于在本地Git仓库中安装Git Large File StorageLFS的钩子hooks。
git lfs install 2 通过miniconda创建虚拟环境名为env-vllm
#通过conda创建一个新虚拟环境指定虚拟环境中包括python3.12的packages
conda create -n env-vllm python3.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_VERSION0.6.1.post2
export PYTHON_VERSION312
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.post1cu118-cp38-abi3-manylinux1_x86_64.whl --extra-index-url https://download.pytorch.org/whl/cu1184 在虚拟环境中可以使用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_MODELSCOPETrue既可切换下载源为 魔搭社区 。 注意在HuggingFace与魔塔社区上模型名称可能略有不同。
# 使用魔塔社区需要先安装package
pip install modelscope
# 设置环境变量VLLM_USE_MODELSCOPETrue切换下载源为魔搭社区
# 注意低版本vLLM存在bug #8443导致该环境变量不生效。在v0.6.3版本修复了该bug
export VLLM_USE_MODELSCOPETrue# 运行vllm由于设置了环境变量根据模型名称默认自动从 魔搭社区 下载并运行
vllm serve Qwen/Qwen2.5-0.5B-Instruct
# 也可以通过以下执行python代码方式运行vllm
python -m vllm.entrypoints.openai.api_server --modelQwen/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