当前位置: 首页 > article >正文

单卡4090部署Qwen3-32B-AWQ(4bit量化)-vllm

单卡4090部署Qwen3-32B-AWQ(4bit量化)

  • 模型:Qwen3-32B-AWQ(4bit量化)

  • 显卡:4090 1 张

  • python版本

    python 3.12

  • 推理框架“vllm

  • 重要包的版本

    vllm==0.9.0
    

创建GPU云主机

  • 这里我使用的是优云智算平台的GPU,使用链接可以看下面的

    https://blog.csdn.net/hbkybkzw/article/details/148310288

  • 注册链接如下

    https://passport.compshare.cn/register?referral_code=tRej61o0bLFAfC9mS6Php

创建

  • 这一步非必须,如果有自己的GPU机器则可以直接跳过

    我们进入部署GPU实例 选择平台镜像,具体操作如下

    image-20250530142747148

    在更多配置中设置实例名称,付款方式使用按量计费,点击立即部署

    image-20250530142819601

    等待状态变为运行中,复制登录指令和密码进行登录,这里我们使用finalshell进行连接

    image-20250530143052240

    下载模型以及安装python环境会花费一部分时间,这部分时间我们可以先将实例关闭后选择无卡模式启动,这样就节省费用了

image-20250530143511717


开放端口(非必须)

  • 配置防火墙

    image-20250530161525079

    添加规则,这里我开放了8081端口

    image-20250530161642556


安装C编译器(必须)

  • 当前使用的这个镜像是没有c编译器的,需要安装一下

    apt-get update
    apt-get install build-essential
    
  • 设置环境变量

    export CC=/usr/bin/gcc
    
  • 检查C编译器是否正确安装

    gcc --version
    

    image-20250530153952221


安装

模型下载

  • Qwen3-32B-AWQ模型的modelscope和huggingface地址如下

    modelscope: https://modelscope.cn/models/Qwen/Qwen3-32B-AWQ

    huggingface: https://huggingface.co/Qwen/Qwen3-32B-AWQ

    这里我们以modelscope为例,复制模型名称 Qwen/Qwen3-30B-A3B, 这个名称在我们下载的时候会用到

    image-20250530144257611

  • 使用modelscope下载,需要安装modelscope库

    pip install modelscope
    

    已经有modelscope库的需要升级下面的几个包

    pip install --upgrade modelscope -i https://pypi.tuna.tsinghua.edu.cn/simplepip install --upgrade transformers -i https://pypi.tuna.tsinghua.edu.cn/simple
    pip install --upgrade peft -i https://pypi.tuna.tsinghua.edu.cn/simple
    pip install --upgrade diffusers -i https://pypi.tuna.tsinghua.edu.cn/simple
    
  • 下载

    默认下载在当前用户的.cache文件夹下,比如现在是root用户,则默认在

    /root/.cache/modelscope/hub/models/Qwen/Qwen3-32B-AWQ

    我们希望将其下载在

    /root/Qwen/Qwen/Qwen3-32B-AWQ

    from modelscope.hub.snapshot_download import snapshot_downloadmodel_name = "Qwen/Qwen3-32B-AWQ"cache_dir = "/root"  # 替换为你希望的路径snapshot_download(model_name, cache_dir=cache_dir)
    

    image-20250530145900920

  • 在下载完成后,我们查看下

    ls -lha /root/Qwen/Qwen3-32B-AWQ
    

    image-20250530150024516


环境安装

  • 使用conda创建虚拟环境

    conda create --name qwen3-awq python=3.12conda activate qwen3-awq
    
  • 下载vllm(指定清华源,否则极慢)

    pip install "vllm>=0.8.5" -i https://pypi.tuna.tsinghua.edu.cn/simple
    
  • 需要注意的是transformers的版本需要>=4.51.0

    pip show transformers
    

    image-20250530152657472


vllm启动

  • llm启动命令

    vllm serve /root/Qwen/Qwen3-32B-AWQ \--max-model-len 8192 \--enable-reasoning --reasoning-parser deepseek_r1 \--gpu-memory-utilization 0.95 \--host 0.0.0.0 \--port 8081 \--served-model-name Qwen3-32B-AWQ-vllm
    

    以下是对VLLM启动命令参数的简要说明

    参数简要说明
    vllm serve /root/Qwen/Qwen3-32B-AWQ启动VLLM服务、指定模型路径
    --enable-reasoning启用推理功能(think)
    --reasoning-parser指定推理解析器
    --max-model-len模型处理的最大序列长度
    --gpu-memory-utilization预分配的GPU内存比例 (vllm默认为0.9)
    --host设置服务监听的主机地址,0.0.0.0表示监听所有网络接口
    --port设置服务监听的端口号
    --served-model-name设置模型名
  • 以8081端口启动成功

    image-20250530162100565

  • 显存占用情况

    image-20250530162148847

  • 测试

    测试代码

    from openai import OpenAI
    import openaiopenai.api_key = '1111111' # 这里随便填一个
    openai.base_url = 'http://127.0.0.1:8081/v1'def get_completion(prompt, model="QwQ-32B"):client = OpenAI(api_key=openai.api_key,base_url=openai.base_url)messages = [{"role": "user", "content": prompt}]response = client.chat.completions.create(model=model,messages=messages,stream=False)reasoning_content = response.choices[0].message.reasoning_contentcontent = response.choices[0].message.contentreturn reasoning_content,contentprompt = '请计算straberry这个单词中字母r的出现次数'reasoning_content,content = get_completion(prompt, model="Qwen3-32B-AWQ-vllm")
    print('reasoning_content',reasoning_content)
    print('content',content)
    

    image-20250530175141999

    看看每秒tokens数

    image-20250530175215188


http://www.lryc.cn/news/2393218.html

相关文章:

  • 漫画Android:Handler机制是怎么实现的?
  • 多部手机连接同一wifi的ip一样吗?如何更改ip
  • 飞牛fnNAS的Docker应用之迅雷篇
  • C++中指针与引用的区别详解:从原理到实战
  • SQLMesh 用户定义变量详解:从全局到局部的全方位配置指南
  • inviteflood:基于 UDP 的 SIP/SDP 洪水攻击工具!全参数详细教程!Kali Linux教程!
  • 软件工程:关于招标合同履行阶段变更的法律分析
  • mysql一主多从 k8s部署实际案例
  • Visual Studio 2022 设置自动换行
  • 沉浸式 “飞进” 鸟巢:虚拟旅游新体验​
  • Ubuntu 下同名文件替换后编译链接到旧内容的现象分析
  • 【Linux网络篇】:简单的TCP网络程序编写以及相关内容的扩展
  • 22.代理模式:思考与解读
  • Scratch节日 | 粽子收集
  • stl三角面元文件转颗粒VTK文件
  • Java String的使用续 -- StringBuilder类和StringBuffer
  • Android学习之定时任务
  • WEB安全--RCE--webshell HIDS bypass4
  • 基于python+Django+Mysql的校园二手交易市场
  • 从零打造算法题刷题助手:Agent搭建保姆级攻略
  • Oracle 12c新增的数字转换验证VALIDATE_CONVERSION函数
  • 参数/非参数检验和连续/离散/分类等变量类型的关系
  • 懒人云电脑方案:飞牛NAS远程唤醒 + 节点小宝一键唤醒、远程控制Windows!
  • 【Python】第一弹:对 Python 的认知
  • 直播预告 | 聚焦芯必达|打造可靠高效的国产 MCU 与智能 SBC 汽车解决方案
  • Java源码中有哪些细节可以参考?(持续更新)
  • GelSight Mini触觉传感器:7μm精度+3D 映射,赋能具身智能精密操作
  • day 23 机器学习管道(pipeline)
  • shell编程笔记
  • 鸿蒙仓颉开发语言实战教程:自定义组件