从零部署Qwen大模型:vLLM实战指南

在人工智能技术飞速发展的今天,大型语言模型(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子项目,生产环境建议采用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值