在人工智能技术飞速发展的今天,大型语言模型(LLM)已成为技术创新的核心驱动力。
本文将手把手教你使用高性能推理引擎vLLM部署Qwen大模型,并提供Python和Java两种语言的实现代码,帮助不同技术背景的开发者快速上手。
一、环境准备:硬件与软件配置
1.1 推荐硬件配置
我们使用的云主机配置如下(可根据预算调整):
配置项 | 参数 | 最低要求 |
---|---|---|
GPU类型 | RTX 4090 [24G] | RTX 3090 [24G] |
GPU数量 | 1 | 1 |
CPU核数 | 8核 | 4核 |
内存 | 15GB | 8GB |
系统盘 | 200GB | 100GB |
带宽 | 32Mbps | 10Mbps |
二、搭建vLLM推理环境
2.1 创建Python虚拟环境
conda create -n vllm python=3.12.7
conda activate vllm
2.2 安装vLLM引擎
pip install --upgrade pip
pip install vllm==0.7.3 # 约20分钟
验证安装:
pip show vllm
三、模型部署实战
3.1 下载Qwen模型
mkdir -p /data/models/Qwen/Qwen3 && cd /data/models/Qwen/Qwen3
modelscope download --model Qwen/Qwen3-0.6B --local_dir /data/models/Qwen/Qwen3
3.2 启动API服务
CUDA_VISIBLE_DEVICES=0 nohup python3 -m vllm.entrypoints.openai.api_server --model /data/models/Qwen/Qwen3 --served-model-name=Qwen3-0.6B --dtype=bfloat16 --trust-remote-code --device=cuda --max-model-len=1024 --tensor-parallel-size=1 --gpu-memory-utilization=0.85 --enable-reasoning --reasoning-parser deepseek_r1 --port 8801 --api-key token-123456 &
3.3 服务验证
curl 调用:
curl http://js2.blockelite.cn:8801/v1/models -H "Authorization: Bearer token-123456"
Python调用:
import requests
url = "http://js2.blockelite.cn:13789/v1/models"
headers = {"Authorization": "Bearer token-123456"}
response = requests.get(url, headers=headers)
print(response.json())
Java调用:
@Bean
public RestTemplate restTemplate() {
RestTemplate template = new RestTemplate();
template.getInterceptors().add((request, body, execution) -> {
request.getHeaders().add("Authorization", "Bearer token-123456");
return execution.execute(request, body);
});
return template;
}
@GetMapping(path = "/qwen/chat", produces = "application/json;charset=UTF-8")
public Map<String, Object> qwenChat() {
returnthis.restTemplate.postForObject("http://js2.blockelite.cn:13789/v1/models", Map.class);
}
四、模型交互实现
4.1 基础对话功能
PostMan 调用:
Python调用:
from openai import OpenAI
client = OpenAI(
base_url="http://js2.blockelite.cn:8801/v1",
api_key="token-123456"
)
response = client.chat.completions.create(
model="Qwen3-0.6B",
messages=[
{ "role": "system", "content": "你出身在一个中医世家,你也是一位德高望重的老中医"},
{ "role": "user", "content": "我最近睡眠不好,你能给我一些建议吗?"}
]
) print(response.choices[0].message.content)
Java调用:
@Bean
public RestTemplate restTemplate() {
RestTemplate template = new RestTemplate();
template.getInterceptors().add((request, body, execution) -> {
request.getHeaders().add("Authorization", "Bearer token-123456");
return execution.execute(request, body);
});
return template;
}
@PostMapping(path = "/qwen/chat", produces = "application/json;charset=UTF-8")
public Map<String, Object> qwenChat(@RequestBody UserMessageDTO dto) {
ModelChatEntity modelEntity = new ModelChatEntity().setModel("Qwen3-0.6B");
modelEntity.getMessages().add(new ModelChatEntity.Message().setRole("system").setContent("你出身在一个中医世家,你也是一位德高望重的老中医"));
modelEntity.getMessages().add(new ModelChatEntity.Message().setRole("user").setContent("我最近睡眠不好,你能给我一些建议吗?"));
returnthis.restTemplate.postForObject("http://js2.blockelite.cn:13789/v1/chat/completions", modelEntity, Map.class);
}
五、总结
-
环境准备:基于某云的云主机配置(RTX 4090),测试基本上够用了,而且比较实惠,可以按小时、天、月租用硬件;
-
安装 vLLM:在安装vLLM时有个坑,就是基于默认的配置,在启动大模型时报一个错,一直启动失败,后来版本降到0.7.3时才解决;
-
下载大模型:根据实际需要下载不同公司不同的尺寸的大模型,在些为了快速测试,我选用了阿里的千问3大模型 0.6b,不过,大概也要30分钟左右,要看具体网络环境了;
-
调用大模型:主要使用了Java写了调用示例,为了测试简单选用了Spring MVC的RestTemplate,当然,Spring也顺应形势,快速添加了Spring AI子项目,生产环境建议采用。