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