【大模型实战篇】vllm本地部署阿里最新的QwQ-32B推理模型以及体验

1. 背景

3月6日凌晨,阿里巴巴发布并开源全新的推理模型通义千问QwQ-32B。通过大规模强化学习,千问QwQ-32B在数学、代码及通用能力上实现提升。在保持性能的同时,千问QwQ-32B还大幅降低部署使用成本,在消费级显卡上也能实现本地部署。

来看下效果对比,可以看到QwQ-32B基本与R1持平。但因为只有32B的参数,部署成本要大大低于DeepSeek-R1。感觉之前花了超大代价部署R1的朋友心里在滴血。

2. vllm部署本地版本QwQ-32B

在背景介绍中提到,可以使用消费级显卡,这里不要被误导了,估计是指量化版本。比如ollama中的QwQ-32B采用了4bit,模型大小20G。

如果是直接下载的safetensor版本,大小约62G.

另外采用4090卡部署,加载模型的时候直接卡住。最后是用A800的两张卡加载成功,并且能够正常推理。

题外话:安装vllm大概花了1个小时,挺耗时间的,而且还是在网速比较好的情况。最耗时的主要是torch相关包以及cudnn相关的包安装。

所以消费级显卡,还是老老实实采用量化版本吧。

vllm执行命令比较简单:

bash 复制代码
CUDA_VISIBLE_DEVICES=1,2 \
vllm serve /data/QwQ-32B \
--tensor-parallel-size 2 \
--port xxxx

加载的话,大概70G显存,推理运行起来之后,占用显存如下,推理速度比较慢,大概是每秒30+token,有时候甚至更低。

3. 推理使用

case1:

python 复制代码
from openai import OpenAI

# 设置 OpenAI 的 API 密钥和 API 基础 URL 使用 vLLM 的 API 服务器。
openai_api_key = "EMPTY"
openai_api_base = "xxx"

client = OpenAI(
    api_key=openai_api_key,
    base_url=openai_api_base,
)

# 使用流式输出(stream=True)
chat_response = client.chat.completions.create(
    model="/xxx/QwQ-32B",
    messages=[
        {"role": "system", "content": "You are Qwen, created by Alibaba Cloud. You are a helpful assistant."},
        {"role": "user", "content": "我要玩24点游戏,我手里的牌是5、5、7、9,穷举所有的可能性"},
    ],
    max_tokens=1028,
    stream=True  # 启用流式响应
)

# 处理流式输出
contents = []
for e in chat_response:
    # print(e.choices[0].delta.content,end="")
    contents.append(e.choices[0].delta.content)
print("".join(contents))

推理过程示例:

嗯,用户让我帮他用5、5、7、9这四个数字玩24点游戏,找出所有可能的组合方式。首先我得先回想一下24点的基本规则,就是用这四个数字通过加减乘除和括号,每个数字只能用一次,最后得到24。

那我需要考虑不同的运算顺序和组合方式。首先,可能需要分解问题,把四个数分成不同的组合,然后试各种运算。不过穷举所有可能性的话可能会比较麻烦,但是或许可以通过一些策略来简化。

首先,我可以先尝试组合中是否有明显的乘法或除法的可能。例如,是否可以找到两个数相乘接近24或者更方便的组合。比如5、5、7、9这四个数,有没有可能两个数相乘接近24?

比如5和5,相加是10,可能不够。或者5×5是25,和24很接近,但需要其他数调整。比如25减去某个数?但可能需要其他数字参与。或者比如7和某个数相乘接近的话?

比如,9和某个数相乘呢?9乘以差不多2.666可能是,但不太行。

另一个思路是考虑这四个数的运算是否有标准解法。比如常见的组合比如 (a × b) - (c ÷ d) 这种形式。或者 a × (b - (c ÷ d)) 这样的结构。

或者先尝试一些可能的组合:

比如,先试试5、5、7、9这几个数中有没有可能的组合。

比如用9和5相乘得到45,然后看看另外两个数如何处理才能得到24。比如45减去7是38,再减5也不行,或者可能的话,或者分步操作?

或者,有没有可能用两个数相加减,然后乘以另一个?

或者先尝试可能的得分方式。比如:

是否有一个式子是 (5 × 7) - (9 +5) = 35 -14=21 还不够。

或者 (9 ×5) - (7 ×5)=45-35=10,不行。

或者 5× (9 - (7-5/5)) 这样子?可能不太对。

或者 (5 × (9 - 7)) +5= 5×2+5=15,还不够。

或者尝试分式运算。比如 (5 × (7 - (9 /5)) ),这样计算的话,先算9/5是1.8,7-1.8是5.2,然后5乘以5.2是26,接近,但可能不行。

或者 (5 +5) × (9-7) =10×2=20,还是不够。

可能需要更仔细的尝试。

比如有没有可能像这样:(9 - 5/5) × (7 - ?) 貌似不太行。

或者: (5 × (7 - (9 ÷5))) ?

计算步骤:

9 ÷5是1.8,7-1.8=5.2,5 ×5.2=26,离24差2。

那26减去2或者类似的?

或者换个方式:比如7×((5+5) -9)=? 5+5是10,10-9=1,7×1=7,不行。

或者,7 ×( (5 ×5)-9 ) / something ? 这样计算的话,5×5=25,25-9=16, 然后7×16=112,太大了,除非分母有数,比如除以 112 / 4? 这可能不符合题目要求?

或者,是否有方式构造出分数?

比如, (5 × (5 - (7/9))) 之类的,可能不太容易得到整数。

或者是否有这样的组合:

(9 - (5/5)) × (7 - ))? 需要再考虑另一个操作?

或许应该更系统的列出可能的运算组合。

对于四个数a,b,c,d,可以尝试不同的组合运算:

例如先选两个数进行操作,然后剩下的三个数继续组合?

或者可以用递归的方式,但手动来做可能会比较繁琐。

现在再重新试一遍:

比如,先尝试5和9相乘得到45,然后剩下的5和7,那么45 - (5+7)=33,不行;或者45 -(5×7)=45-35=10,也不行。

或者用(9 -5)得到4,然后和另外的5和7?

case2:

另外,采用脚本的方式也做了尝试:

python 复制代码
import torch
from modelscope import AutoModelForCausalLM, AutoTokenizer

model_name = "Qwen/QwQ-32B"

model = AutoModelForCausalLM.from_pretrained(
    model_name,
    torch_dtype=torch.float16,
    device_map="cuda:3"
)

tokenizer = AutoTokenizer.from_pretrained(model_name)

messages = []

print("Chatbot 已启动,输入 'exit' 退出对话。\n")

while True:
    user_input = input("User: ").strip()
    if user_input.lower() == "exit":
        print("Chatbot 结束对话。")
        break

    messages.append({"role": "user", "content": user_input})

    text = tokenizer.apply_chat_template(
        messages,
        tokenize=False,
        add_generation_prompt=True
    )

    model_inputs = tokenizer([text], return_tensors="pt").to("cuda:3")

    generated_ids = model.generate(
        **model_inputs,
        max_new_tokens=1024
    )

    generated_ids = [
        output_ids[len(input_ids):] for input_ids, output_ids in zip(model_inputs.input_ids, generated_ids)
    ]
    response = tokenizer.batch_decode(generated_ids, skip_special_tokens=True)[0]

    messages.append({"role": "assistant", "content": response})

    print(f"Bot: {response}\n")

Chatbot 已启动,输入 'exit' 退出对话。

User: 帮我推荐一款耳机

Bot: The attention mask is not set and cannot be inferred from input because pad token is same as eos token. As a consequence, you may observe unexpected behavior. Please pass your input's `attention_mask` to obtain reliable results.

user

帮我推荐一款耳机

assistant

<think>

嗯,用户让我推荐一款耳机,但需要先分析他们的需求。首先,我需要考虑用户可能的使用场景。比如,他们是在通勤时听音乐,还是运动时使用?或者是长时间佩戴办公?不同的场景可能需要不同的类型,比如入耳式、头戴式或耳挂式。

然后,预算范围也很重要。用户没有提到预算,所以可能需要推荐不同价位的产品。比如,预算有限的话,推荐性价比高的,比如小米或者网易云的耳机;中高端的话,索尼、Bose、森海塞尔这些品牌可能更合适。

音质偏好方面,用户可能喜欢低音还是高解析?比如喜欢流行音乐的人可能需要低频好的,而古典或人声可能需要清晰的中高频。不过用户没具体说,可能需要推荐均衡的款式。

降噪功能现在很流行,特别是通勤族。如果用户经常在嘈杂环境使用,主动降噪功能很重要,比如索尼WH-1000XM5或者Bose QC系列。但如果是运动用,可能防水防汗功能更关键,比如Jaybird或者Powerbeats。

佩戴舒适度也不能忽视,长时间使用的话,头戴式可能更舒适,但便携性不如入耳式。用户可能有偏好,但需要询问或假设。

品牌偏好方面,有些用户可能有特定的品牌倾向,比如苹果用户可能更倾向AirPods,安卓用户可能更开放。但用户没提,所以可以推荐多个品牌。

其他功能比如续航时间、触控操作、无线连接稳定性、防水等级等都是考虑因素。比如,喜欢跑步的用户可能需要IPX5以上的防水等级。

可能用户没有提到的需求包括:是否需要支持无线充电,是否需要多设备连接,或者是否有健康监测功能(比如运动耳机的心率监测)。但这些可能属于额外功能,不是必须。

总结下来,我需要先列出不同场景下的推荐,然后分价位和品牌,给出几个选项,并询问用户是否有更具体的需求。比如先给出几个热门型号,然后让用户补充信息,再细化推荐。

</think>

好的!为了给您推荐最适合的耳机,我需要了解一些具体需求。以下是几个关键问题,您可以根据自己的需求选择或补充:


**1. 使用场景**

  • **通勤/日常使用**:需要降噪、舒适佩戴、续航长。

  • **运动/健身**:防水防汗、佩戴稳固、轻便。

  • **游戏/娱乐**:低延迟、高音质(比如索尼LDAC、高解析)。

  • **办公/学习**:降噪、清晰通话、长时间佩戴舒适。

  • **音乐发烧友**:高解析音质(Hi-Res)、音色偏好(比如监听型或流行型)。


**2. 预算范围**

  • **入门级(200元以下)**:基础功能,适合预算有限的用户。

  • **中端(200-800元)**:均衡性能,适合大多数日常需求。

  • **高端(800元以上)**:专业音质、顶级降噪或特殊功能(如空间音频)。


**3. 关键功能需求**

  • **降噪**:主动降噪(ANC)是否重要?

  • **音质偏好**:

  • 流行音乐(低频强劲)

  • 人声/古典(中高频清晰)

  • 游戏/电影(低延迟、空间音效)

  • **佩戴类型**:

  • 入耳式(耳塞式,便携)

  • 半入耳式(耳甲式,舒适但隔音差)

  • 头戴式(舒适但体积大)

  • **其他功能**:

  • 防水防汗(IPX5以上)

  • 触控操作

  • 无线充电

  • 多设备连接(如手机+电脑)

  • 长续航(超过10小时)


**4. 品牌偏好**

  • **安卓用户**:推荐索尼、三星、JBL、漫步者。

  • **苹果用户**:AirPods系列(尤其是Pro系列)。

  • **性价比之选**:Redmi、网易云音乐、万魔(1more)。

  • **高端品牌**:索尼(WH-1000XM系列)、Bose(QC系列)、森海塞尔(MOMENTUM系列)。


**初步推荐(根据常见需求)**

**场景:通勤/降噪**

  • **高端首选**:**索尼WH-1000XM5**(顶级降噪+音质)。

  • **性价比之选**:**Redmi Buds 4 Pro**(千元内降噪标杆)。

**场景:运动**

  • **防水防汗**:**

4. 参考材料

【1】阿里半夜开源全新推理模型,QwQ-32B比肩DeepSeek-R1满血版

【2】魔搭社区-QwQ32B

相关推荐
好多渔鱼好多17 小时前
【大模型学习】第九章 机器学习中的数据预处理技术详解
人工智能·机器学习·ai·大模型
Archie_IT2 天前
AI视频领域的DeepSeek—阿里万相2.1图生视频
人工智能·大模型·aigc·通义万相·deepseek
好多渔鱼好多2 天前
【大模型学习】第十章 机器学习中的特征工程技术详解
人工智能·算法·机器学习·ai·大模型
Mr.Winter`2 天前
深度强化学习 | 详解过估计现象与Double DQN算法(附Pytorch实现)
人工智能·pytorch·深度学习·神经网络·自动驾驶·ros·强化学习
deephub2 天前
Visual-RFT:基于强化学习的视觉语言模型微调技术研究
人工智能·语言模型·自然语言处理·大语言模型·强化学习
Dontla2 天前
Dify+DeepSeek | Excel数据一键可视化(创建步骤案例)(echarts助手.yml)(文档表格转图表、根据表格绘制图表、Excel绘制图表)
大模型
KoiC2 天前
内网环境部署Deepseek+Dify,构建企业私有化AI应用
linux·人工智能·ubuntu·docker·大模型·ai应用·deepseek
胡耀超2 天前
5.训练策略:优化深度学习训练过程的实践指南——大模型开发深度学习理论基础
人工智能·python·深度学习·大模型
随机惯性粒子群2 天前
wheel_legged_genesis 开源项目复现与问题记录
学习·开源·github·强化学习·genesis