vLLM是一个快速且易于使用的库,用于LLM(大型语言模型)推理和服务。通过PagedAttention技术,vLLM可以有效地管理注意力键和值内存,降低内存占用和提高计算效率。vLLM能够将多个传入的请求进行连续批处理,从而提高整体处理速度。
环境
Lniux操作系统,2张3090,cuda版本是12.2
安装vllm
通过pip安装比较简单:
# 这里先创建一个conda虚拟环境,没安装conda也可忽略
conda create -n myenv python=3.10 -y
conda activate myenv
# 正式安装
pip install vllm
启动vllm的http服务
python3 -m vllm.entrypoints.openai.api_server --host 0.0.0.0 --port 8900 --model /home/xxxx/model/Baichuan2-13B-Chat --trust-remote-code --tensor-parallel-size 2 --gpu-memory-utilization 0.90
参数解释
- host和port指定监听的地址和端口
- –model指定模型路径
- –tensor-parallel-size指定显卡数量
- –gpu-memory-utilization指定显存占用比例
访问服务
POST访问的url: http://10.20.xx.xx:8900/v1/completions
IP替换成实际的就行。json参数
{
"prompt": "你好",
"model": "/home/xxx/model/Baichuan2-13B-Chat",
"max_tokens": 1024,
"stream": false
}
测试代码
import requests
import json
url = "http://10.20.xx.xx:8900/v1/completions"
data = {
"prompt": "你好",
"model": "/home/xxx/model/Baichuan2-13B-Chat",
"max_tokens": 512,
# "temperature": 0.2,
# "top_k": 5,
# "top_p": 0.95,
"stream": False
}
response = requests.post(url, json=data, stream=True)
if response.status_code != 200:
print(f"failed:status_code={response.status_code}")
else:
json_response=json.loads(response.text)
print(f"json_response:{json_response}")
result_str=json_response["choices"][0]["text"]
print(f"result_str:{result_str}")
post请求的body中的"model"字段值,需要与启动openai.api_server服务指定的model字段一致。
参考资料
vllm github
vllm在线文档