vllm 0.6.1 大模型推理加速服务安装部署和测试

部署运行你感兴趣的模型镜像

vllm 0.6.0开源大模型加速服务部署测试实战

1.VLLM介绍

一个开源的大模型推理加速框架,通过PagedAttention高效地管理attention中缓存的张量,实现了比HuggingFace Transformers高14-24倍的吞吐量。它兼容OpenAI的接口服务,并与HuggingFace模型无缝集成。

优点:

  • 高效的服务吞吐量:vLLM可以快速处理大量的并发请求。
  • 支持模型种类多。
  • 内存高效:vLLM使用了一种名为PagedAttention的技术,可以高效地管理注意力键和值的内存
  • 文本生成的速度:实验多次,发现vLLM的推理速度是最快的;
  • 高吞吐量服务:支持各种解码算法,比如parallel sampling, beam search等;
  • 与OpenAI API兼容:如果使用OpenAI API,只需要替换端点的URL即可;

缺点:

  • 你需要确保你的设备有GPU,CUDA或者RoCm.
  • 添加自定义模型:虽然可以合并自己的模型,但如果模型没有使用与vLLM中现有模型类似的架构,则过程会变得更加复杂。例如,增加Falcon的支持,这似乎很有挑战性;
  • 缺乏对适配器(LoRA、QLoRA等)的支持:当针对特定任务进行微调时,开源LLM具有重要价值。然而,在当前的实现中,没有单独使用模型和适配器权重的选项,这限制了有效利用此类模型的灵活性。
  • 缺少权重量化:有时,LLM可能不需要使用GPU内存,这对于减少GPU内存消耗至关重要。

2.下载Qwen2.5-7B-Instruct模型

# 先安装ModelScope

pip install modelscope

# 下载完整模型

modelscope download --model qwen/Qwen2.5-7B-Instruct

# 如果只需下载单个文件

modelscope download --model qwen/Qwen2.5-7B-Instruct README.md

下载的模型默认保存在下面地址,7b 的模型占了 15G 磁盘空间。

ls ~/.cache/modelscope/hub/qwen/Qwen2___5-7B-Instruct

3.安装python 环境

安装 Miniconda3

Step 1: 下载

$ wget https://repo.continuum.io/miniconda/Miniconda3-latest-Linux-x86_64.sh

Step2: 安装

$ sh Miniconda3-latest-Linux-x86_64.sh

Step3: 设置环境变量

vi /etc/profile

export PATH="/data/apps/miniconda3/bin:$PATH"

source /etc/profile

Step 4: 卸载

$ rm -rf /data/apps/miniconda3/

创建虚拟环境

//创建

conda create -n test python=3.10

//激活

conda activate test

//销毁

conda deactivate test

//查看

conda info --env

4.安装vllm

如果是cu12+,python版本3.10 - 3.11 vllm 0.5.1-cu12

export VLLM_VERSION=0.5.2 # vLLM's main branch version is currently set to latest released tag
pip install https://vllm-wheels.s3.us-west-2.amazonaws.com/nightly/vllm-${VLLM_VERSION}-cp38-abi3-manylinux1_x86_64.whl

下载最0.6.1 版本vllm

(test) root@ubuntu:/srv/vllm# export VLLM_VERSION=0.6.1.post1

(test) root@ubuntu:/srv/vllm# pip install https://vllm-wheels.s3.us-west-2.amazonaws.com/nightly/vllm-${VLLM_VERSION}-cp38-abi3-manylinux1_x86_64.whl

启动vllm服务

vllm serve /data1/apps/huggingface/Qwen1.5-14B-Chat --dtype auto --port 3003 --tensor-parallel-size 4 --gpu-memory-utilization 0.85

启动成功日志

这个命令启动vllm open ai 也是可以的

python3 -m vllm.entrypoints.openai.api_server \

--model=/data1/apps/huggingface/Qwen1.5-14B-Chat-GPTQ-Int4 \

--served-model=gpt-4 \

--dtype=float16 \

--tensor-parallel-size=4 \

--quantization=gptq \

--trust-remote-code \

--gpu-memory-utilization=0.98 \

--host=0.0.0.0 --port=8001 \

--max-model-len=15000 \

--max-num-seqs 2


5. 测试一下原生功能,创建一个 test.py

from vllm import LLM, SamplingParams

prompts = [
"Hello, my name is",
"The president of the United States is",
"The capital of France is",
"The future of AI is",
]
sampling_params = SamplingParams(temperature=0.8, top_p=0.95)

llm = LLM(model="/data1/apps/huggingface/Qwen2-0.5B-Instruct")

outputs = llm.generate(prompts, sampling_params)

#print the outputs.

for output in outputs:
prompt = output.prompt
generated_text = output.outputs[0].text
print(f"Prompt: {prompt!r}, Generated text: {generated_text!r}")

运行 test.py,

python test.py

输出结果如下,


6. 测试一下和 langchain 集成


安装 langchain 包,

pip install langchain
 


创建 test_langchain.py,

from langchain.llms import VLLM

llm = VLLM(model="/data1/apps/huggingface/Qwen2-0.5B-Instruct",
trust_remote_code=True, # mandatory for hf models
max_new_tokens=128,
top_k=10,
top_p=0.95,
temperature=0.8,
# tensor_parallel_size=... # for distributed inference
)

print(llm("What is the capital of France ?"))

 

运行 langchain.py,

python test_langchain.py

输出结果如下,


 


7. 使用 vllm 启动兼容 OpenAI API 服务


测试一下,

curl http://localhost:3003/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "/data1/apps/huggingface/Qwen1.5-14B-Chat",
"messages": [
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "请介绍一下科比"}
]
}'

输出结果如下,

完整的视频演示请移步B站:老吴聊技术  

您可能感兴趣的与本文相关的镜像

Vllm-v0.11.0

Vllm-v0.11.0

Vllm

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

### vLLM微调模型推理加速技术实现方案 #### 背景概述 vLLM 是一种专注于大规模语言模型(LLM)推理优化的服务框架,能够显著提升模型的推理速度并降低资源消耗。它支持多种硬件平台以及不同的 LLM 架构,并提供了灵活的接口用于部署经过微调的大规模预训练模型[^2]。 #### 安装与配置环境 为了利用 vLLM 对微调后的模型进行推理加速,首先需要完成必要的安装配置工作。具体操作包括但不限于 Python 环境准备、依赖库安装以及 GPU 驱动程序设置。以下是典型的安装命令: ```bash pip install vllm==0.6.1 ``` 如果目标环境中涉及特定版本的 CUDA 或 cuDNN,则需额外确认其兼容性以避免运行时错误[^3]。 #### 加载微调模型 加载已经过微调处理过的 LLM 至内存中是整个流程的关键环节之一。通常情况下,这些模型会被存储于 ModelScope 或 Hugging Face Hub 上供下载使用。例如,对于 Qwen2.5-7B-Instruct 这样的模型实例,可以通过以下方式获取本地副本: ```bash modelscope download --model qwen/Qwen2.5-7B-Instruct README.md ``` 随后,在代码层面指定路径参数即可完成初始化过程: ```python from transformers import AutoTokenizer, AutoModelForCausalLM import torch tokenizer = AutoTokenizer.from_pretrained("/path/to/qwen/Qwen2.5-7B-Instruct") model = AutoModelForCausalLM.from_pretrained("/path/to/qwen/Qwen2.5-7B-Instruct", device_map="auto", torch_dtype=torch.float16) ``` 此处采用 `device_map` 参数自动分配张量至可用设备上;而通过设定数据类型为半精度浮点数 (`torch.float16`) 可进一步减少显存占用率从而提高吞吐性能[^1]。 #### 推理加速机制解析 vLLM 的核心优势在于其实现了一系列先进的算法技术来达成高效能表现。其中包括但不限于批量化请求管理 (Batching Requests Management),动态解码策略调整 (Dynamic Decoding Strategy Adjustment) 多线程执行计划调度 (Multi-thread Execution Plan Scheduling)。当多个用户并发提交相似的任务时,系统可以智能地将其组合成更大的批次加以计算,进而摊薄固定开销部分的比例达到节省时间的目的。 另外值得一提的是,针对 Transformer 结构特有的自回归特性,vLLM 提出了专门定制化的 KV 缓存管理方法[KV Cache Optimization],有效减少了重复运算次数的同时也维持住了较高的预测质量水平。 #### 实践案例分享 假设我们希望构建一个 RESTful API 来对外提供基于上述提到的 Qwen2.5-7B-Instruct 模型的服务端点。那么完整的解决方案可能看起来像这样: ```python from fastapi import FastAPI from pydantic import BaseModel from typing import List from vllm import SamplingParams, LLMEngine app = FastAPI() class PromptRequest(BaseModel): prompts: List[str] engine = LLMEngine(model="/path/to/qwen/Qwen2.5-7B-Instruct") @app.post("/generate/") async def generate(request: PromptRequest): sampling_params = SamplingParams(temperature=0.8, top_p=0.95) outputs = engine.generate(prompts=request.prompts, sampling_params=sampling_params) results = [] for output in outputs: generated_text = tokenizer.decode(output.outputs[0].token_ids) results.append(generated_text) return {"results": results} ``` 此脚本定义了一个简单的 HTTP POST 方法接收输入提示串列表作为参数并通过调用底层引擎对象的方法返回对应的生成结果字符串集合。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值