在NVIDIA RTX 4090显卡上部署阿里千问QwQ-32B-AWQ模型教程

一、部署环境准备 🛠️

1. 硬件配置

  • 显卡:NVIDIA RTX 4090(24GB显存)
  • 服务器:AutoDL云端服务器(Ubuntu 22.04)

2. 软件环境

确保你的基础配置为如下:

# 基础镜像
ubuntu 22.04
python 3.12
cuda 12.1
pytorch 2.3.0

3. 依赖安装

# 换源加速
python -m pip install --upgrade pip
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple

# 安装核心库
pip install modelscope==1.22.3 openai==1.61.0 tqdm==4.67.1 transformers==4.48.2 vllm==0.7.1 streamlit==1.41.1

二、模型下载与加载 📥

1. 模型选择

  • 模型名称:Qwen/QwQ-32B-AWQ(4bit量化版)
  • 模型大小:约12GB(原始32B模型体积的37.5%)

2. 下载脚本

# model_download.py
from modelscope import snapshot_download
model_dir = snapshot_download(
    'Qwen/QwQ-32B-AWQ',
    cache_dir='/root/autodl-tmp',
    revision='master'
)

3. 执行下载

python model_download.py

三、vLLM推理部署 🔄

1. 基础推理测试

# vllm_model.py
from vllm import LLM, SamplingParams
import os

os.environ['VLLM_USE_MODELSCOPE'] = 'True'

def get_completion(prompts, model, max_tokens=8192, temperature=0.6, top_p=0.95):
    sampling_params = SamplingParams(
        temperature=temperature,
        top_p=top_p,
        max_tokens=max_tokens,
        stop_token_ids=[151329, 151336, 151338]
    )
    llm = LLM(model=model, max_model_len=2048, trust_remote_code=True)
    return llm.generate(prompts, sampling_params)

if __name__ == "__main__":
    model_path = '/root/autodl-tmp/Qwen/QwQ-32B-AWQ'
    outputs = get_completion(
        ["9.11与9.9哪个更大"],
        model=model_path,
        max_tokens=8192
    )
    
    print(outputs[0].outputs[0].text)

2. 性能表现

  • 推理时间:21.39秒
  • 显存占用:约19GB
  • 生成质量:完整数学推理过程+LaTeX格式答案

四、OpenAI API服务搭建 🌐

1. 启动服务

python -m vllm.entrypoints.openai.api_server \
  --model /root/autodl-tmp/Qwen/QwQ-32B-AWQ \
  --served-model-name QwQ-32B \
  --max-model-len=4096

2. 接口测试

# 测试Completions接口
curl http://localhost:8000/v1/completions \
  -H "Content-Type: application/json" \
  -d '{
    "model": "QwQ-32B",
    "prompt": "10的阶乘是多少?</think>\n",
    "max_tokens": 1024
  }'

3. Python调用示例

# vllm_openai_completions.py
from openai import OpenAI

client = OpenAI(base_url="http://localhost:8000/v1")

response = client.chat.completions.create(
  model="QwQ-32B",
  messages=[
    {"role": "user", "content": "10的阶乘是多少?</think>\n"}
  ]
)

print(response.choices[0].message.content)

五、Web交互界面开发 🖥️

1. 代码实现

# app.py
import streamlit as st
import requests
import re

st.title("💬 QwQ-32B Chatbot")
st.caption("Powered by vLLM & Streamlit")

max_length = st.slider("Max Tokens", 0, 2048, 1024)

if "messages" not in st.session_state:
    st.session_state.messages = [{"role": "assistant", "content": "你好!"}]

for msg in st.session_state.messages:
    st.chat_message(msg["role"]).write(msg["content"])

if prompt := st.chat_input():
    st.chat_message("user").write(prompt)
    st.session_state.messages.append({"role": "user", "content": prompt})

    try:
        response = requests.post(
            "http://localhost:8000/v1/chat/completions",
            json={
                "model": "QwQ-32B",
                "messages": st.session_state.messages,
                "max_tokens": max_length
            }
        )
        
        if response.status_code == 200:
            assistant_text = response.json()["choices"][0]["message"]["content"]
            st.session_state.messages.append({"role": "assistant", "content": assistant_text})
            st.chat_message("assistant").write(assistant_text)
            
    except Exception as e:
        st.error(f"请求失败: {str(e)}")

2. 运行与访问

python app.py

访问 http://localhost:8501 即可进行对话交互。

六、性能优化建议 ⚙️

  1. 显存优化

    • 降低max_model_len(推荐4096)
    • 使用--swap-space参数启用虚拟内存
  2. 推理加速

    • 关闭后台进程
    • 调整temperature为0.5-0.7
    • 使用--gpu-memory限制显存分配
  3. 多卡部署

python -m vllm.entrypoints.openai.api_server \
  --model QwQ-32B-AWQ \
  --tensor-parallel-size 2

七、总结 📊

通过本教程,您可以在RTX 4090显卡上实现:
✅ 32B参数模型的高效部署
✅ 兼容OpenAI API的服务接口
✅ 完整的Web交互界面
✅ 实时性能监控

关键技术点

  • 4bit量化技术(减少60%显存占用)
  • vLLM推理引擎(提升30%推理速度)
  • Streamlit界面开发(快速构建交互系统)

🎉 现在您可以开始用这个强大的AI助手进行代码开发、数据分析和知识问答啦!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值