比肩满血DS,阿里开源 QwQ-32B 本地部署,Ollma/vLLM 实测对比,消费级显卡可跑,效果炸裂

当政企都在热衷于本地部署满血DeepSeek-R1时,阿里重磅开源了 QwQ

玩不起 671B 的满血,32B 的 QwQ 绝对值得拥有。

消费级显卡就能跑,一下子干到推理模型天花板!

QwQ 的评价之所以这么高,主要基于两点:

  • 效果比肩满血DeepSeek-R1
  • 仅用 32B 参数, R1 满血版的 1/20;

既然这么强,咱必须给搞起来。

今天,刚好借 QwQ 的东风,实测 Ollama/vLLM 本地部署大模型,为大家进行框架选择时提供参考。

1. QwQ-32B 强在哪

QwQ 是阿里通义千问最新开源的推理模型。

它仅用 32B 参数,便与目前公认的开源最强 满血DeepSeek-R1 相媲美。

甚至,在多项基准测试中全面超越 o1-mini。

1.1 小模型逆袭的关键

DeepSeek 证明了强化学习是提升模型性能的关键钥匙。

QwQ 则再一次证明了这一结论,有下图为证:

不过,与传统方法不同的是,QwQ 采用了多阶段强化训练策略。

第一阶段,针对数学、编程任务,进行强化学习。

通过校验答案(数学任务)和代码执行(编程任务)提供反馈,确保模型逐步「进化」。

第二阶段,针对通用能力进行强化学习。

实验表明,少量步骤的通用任务训练,即可提升 QwQ 的通用能力,且数学、编程性能没有显著下降。

值得注意的是,QwQ 不只是一个推理模型,还集成了先进的 Agent相关能力,如 Function call。

QwQ 模型已开源,下面我们将分别用 Ollama 和 vLLM 进行本地部署推理,大家可根据需求进行选择。

2. Ollama 部署实测

请确保一块至少 24G 的显卡,或者两块 16G 显卡。

2.1 Ollama 安装

不了解 Ollama 的小伙伴,可翻看教程:本地部署大模型?Ollama 部署和实战,看这篇就够了

这里,我们采用 Docker 安装,用官方最新镜像,拉起一个容器:

docker run -d --gpus '"device=0,1"' -v ollama:/root/.ollama -p 3002:11434 --restart unless-stopped --name ollama ollama/ollama

2.2 模型下载

当前 Ollama的 Library 中已支持 QwQ 下载。

一键拉取模型权重:

root@175e277eb85a:/# ollama run qwq
pulling manifest 
pulling c62ccde5630c... 100% ▕████▏  19 GB  

2.3 模型推理测试

测试问题和接下来的 vLLM 保持统一:给我讲一个100字的笑话

测试代码如下:

def test_ollama():
    url = 'http://localhost:3002/api/chat'
    data = {
        "model": "qwq",
        "messages": [
            { "role": "user", "content": '给我讲一个100字的笑话'}
        ],
        "stream": False
    }
    response = requests.post(url, json=data)
    if response.status_code == 200:
        print(response.json())
    else:
        print(f'{response.status_code},失败')

推理结果如下:

可以发现:

eval_count: 生成的 token 数 = 530。

eval_duration:生成内容的总耗时 = 约 20.4 秒。

因此,单个请求的速度为 25.98 token/s

由于 Ollama 本身并不支持并发,暂无法测试。

2.4 显存利用率

推理时,显存利用率只有 42%

如果你是租用云厂商的 GPU,可是支付了 100% 的 GPU 费用啊,居然连一半的利用率都到不了。。。

3. vLLM 部署实测

项目地址:https://github.com/allenai/olmocr

3.1 vLLM 安装

安装 vllm 有很多方式,如果是 N 卡就相对简单很多:

conda create -n vllm python=3.12 -y
conda activate vllm
pip install vllm

当前最新版是 0.7.3,依赖 torch-2.5.1,不过加载模型时总是报错:

ValueError: Model architectures ['Qwen2ForCausalLM'] failed to be inspected.

暂未解决,只好将 vLLM 的版本回退到 0.6.0,才成功搞定。

3.2 模型下载

vLLM 支持从 huggingface/modelscope 等平台下载的模型文件。

为了和 Ollama 公平对比,我们拉取 4bit 量化版:

modelscope download --model Qwen/QwQ-32B-GGUF qwq-32b-q4_k_m.gguf --local_dir ./ckpts/qwq-32b

Downloading [qwq-32b-q4_k_m.gguf]: 100%|████| 18.5G/18.5G [21:20<00:00, 15.5MB/s]

3.3 启动服务

参考文档:https://docs.vllm.ai/en/latest/serving/openai_compatible_server.html

加载模型,并启动推理服务:

vllm serve ckpts/qwq-32b/qwq-32b-q4_k_m.gguf --api-key 123 --port 3002 --tensor-parallel-size 2 --max-model-len 8192

因为需要至少 24G 显存,所以这里加上 --tensor-parallel-size 2,用两张卡并行跑。

如果遇到如下报错,需降低 max seq len, 因为 QwQ 最大支持 131072 token 的上下文。

ValueError: The model's max seq len (131072) is larger than the maximum number of tokens that can be stored in KV cache (22176). Try increasing `gpu_memory_utilization` or decreasing `max_model_len` when initializing the engine.

3.4 模型推理测试

单发请求:

from openai import OpenAI
import concurrent.futures

client = OpenAI(api_key="123", base_url="http://localhost:3002/v1")
def single_request():
    response = client.chat.completions.create(
        model="ckpts/qwq-32b/qwq-32b-q4_k_m.gguf",
        messages=[{'role': 'user', 'content': '给我讲一个100字的笑话。'}],
        stream=False,
    )
    print(response.choices[-1].message.content)

32 token/s完胜 Ollama!

并发请求:

import concurrent.futures

def parallel_request():
    with concurrent.futures.ThreadPoolExecutor(max_workers=20) as executor:
        futures = [executor.submit(client.chat.completions.create, model="ckpts/qwq-32b/qwq-32b-q4_k_m.gguf", messages=[{'role': 'user', 'content': '给我讲一个100字的笑话。'}], stream=False) for i in range(20)]
        for future in concurrent.futures.as_completed(futures):
            response = future.result()
            print(response.choices[-1].message.content)

195 token/s完爆 Ollama!

并发 20 个请求,就已经接近200 token/s

当然,你还可以增大 --max-num-seq,继续提高并发量的上限,去感受 vLLM 带来的震撼!

3.5 显存利用率

服务起来后,看显存占用:

推理时,显存利用率几乎打满,没错,这正是你想要的!

4. 效果展示

见证了 QwQ 的推理速度,这一部分我们来实测下能力如何,真能比肩满血DeepSeek-R1

4.1 数学测试

看看这段中等难度的奥数题,你能在几分钟内搞定?

QwQ 在经过一长串非常严谨的思考后,给出了正确答案。

看看,给娃辅导作业妥妥没问题。

4.2 文学创作

谁说推理模型不具备艺术细胞?

略举一例:仿《过秦论》的风格写一篇《过美利坚论》

给大家展示下 QwQ 的完整回答:

<think>
嗯,用户让我按照《过秦论》的语言风格来创作一篇《过美利坚论》。首先,我需要回忆一下《过秦论》的特点。贾谊的这篇文章用辞赋体,结构严谨,对比强烈,列举秦朝崛起和迅速灭亡的过程,分析其失败的原因。语言上多用对仗、排比,气势磅礴,有历史教训的意味。
接下来,用户的需求是将这种风格应用到分析美国身上。我需要考虑美国的历史、兴衰过程,找出与秦朝相似的元素。比如,美国通过殖民扩张、工业革命崛起,但可能因为内部矛盾、过度扩张或政策问题导致衰落。要注意历史对比的合理性,不能牵强。
用户可能希望这篇文章不仅模仿形式,还要有深度的分析,指出美国的过失。需要收集美国历史的关键点:建国、西进运动、两次世界大战、冷战、经济霸权、当前的国内问题如政治极化、种族矛盾、经济不平等、国际关系中的问题如贸易战、新冠应对等。
然后,结构方面,《过秦论》分为上中下三篇,分别讲秦的兴盛、转折、灭亡。可能需要类似的三部分结构:美国的兴起、转折点、衰落原因。每部分都要用排比句、夸张的描述,强调其兴盛时的强盛,转折时的错误决策,衰落时的内外交困。
要注意用古汉语的词汇和句式,比如“夫美利坚者,西洲之霸主也”,“席卷八州”对应美国扩张。但也要准确反映美国历史事件,比如“逐鹿欧陆”可以指两次世界大战,冷战时期的军备竞赛。内部问题可以用“内有党争,外有民叛”之类的对仗句。
可能遇到的难点是如何平衡历史事实与文学夸张,确保分析有依据。另外,语言风格要模仿,但避免过于晦涩,让读者能理解。可能需要检查用词是否符合古代汉语的用法,同时准确描述美国的情况。
最后,要确保结论部分呼应《过秦论》的教训,强调兴衰的必然性,归因于统治者的政策错误,如“仁义不施,而攻守之势异也”。这样结构完整,符合用户的要求。
</think>

好的,我将按照《过秦论》的史论风格和语言特点,结合美国历史脉络进行创作。以下是《过美利坚论》的仿写:
---
**上篇**
夫美利坚者,西洲之霸主也。其地跨两洋,山河表里,沃野千里;其势挟工业之锐,金融之利,兵甲之雄。昔者哥伦布航海开埠,列克星顿枪声裂空,遂有十三州而据美洲之要冲。然其所以兴者,非独天时地利,实赖先民之共识:立民主为纲,以自由为本,制衡于三权,均利于众庶。是以百岁之间,国力日隆,终成"山巅之城",横扫欧陆风雨。
---
**中篇**
及至一九四五年,欧亚烽烟尽熄,美利坚遂居世界之巅。其时也,黄金聚于华盛顿,科技辉于硅谷,海军横列七洋,美元行于寰宇。然霸业之盛,反成衰机之始:内则党争愈炽,中产渐衰,种族裂痕如鸿沟难越;外则穷兵黩武,九一一后连启两场永战,中东烽火燎原,太平洋舰队困于岛链。昔秦筑长城而民怨,今美扩军备而债台;秦有阿房宫之奢,美有华尔街之贪。犹记冷战终局时,戈氏举白旗而降,彼时华盛顿笑看世界,岂料三十年后,自身已陷"修昔底德陷阱"之困。
---
**下篇**
嗟乎!美利坚之败亡,非天命使然,实人谋之失也。昔秦以暴政亡,美以虚骄倾:恃经济之霸而弃实业,纵金融之巧而生泡沫;标榜人权而行霸权,高呼民主而毁宪章。新冠横行,白宫闭门;种族暴动,联邦失语;债台高筑而印钞无度,气候危机而背约巴黎。昔苏格拉底言"未经省察的人生不值得过",今美利坚不省察其帝国之梦,终如庞贝城陷于维苏威火,虽强盛一时,终归于尘。
---
**结语**
呜呼!以美利坚之强,犹不免于盛极而衰,岂非仁义不张、功利过甚之故哉?昔贾生论秦云:"仁义不施而攻守之势异也",今观美利坚之覆辙,岂非同调?彼其民或可奋起革新,然帝国之暮色已不可返矣!
---
此篇仿作特点:
1. 保留《过秦论》的"上中下"分篇结构,以史论视角分析盛衰
2. 运用大量对仗排比(如"黄金聚于华盛顿,科技辉于硅谷")
3. 引用典故隐喻(庞贝城、修昔底德陷阱、庞氏骗局等)
4. 结尾呼应贾谊原文的哲学升华
5. 采用古汉语虚词("夫""矣""哉")与四六骈文句式
6. 保留历史批判视角,但以客观史实为基底

这文采,给个满分作文,不为过吧?

实测过 QwQ 的创作能力,不得不服:国产大模型中,又多了一个逻辑和文采俱佳的文科生!

写在最后

本文带大家本地部署了最新开源的推理模型 QwQ-32B,并通过 Ollama/vLLM 进行了本地部署实测。

回答文首的问题:Ollama/vLLM 怎么选

  • 易用性:无疑是 Ollama,几行命令就能跑起来,小白友好;而 vLLM 安装和模型适配,门槛较高,适合有一定代码阅读能力的玩家;
  • 推理性能:无脑选 vLLM,即便是单发请求,Ollama 26 token/s vs vLLM 32 token/s,更遑论 Ollama 还不支持并发;
  • 安全性:vLLM 的 API 支持令牌授权,而 Ollama 不支持。

结论:新手玩家,快速体验,Ollama 无疑首选;生成环境,追求性能,vLLM 显然完胜!

全文完,如果对你有帮助,欢迎点赞收藏备用。


为方便大家交流,新建了一个 AI 交流群,公众号后台「联系我」,拉你进群。

### 部署QwQ-32B模型于NVIDIA Quadro M6000 24GB显存GPU #### 准备工作环境 为了成功部署QwQ-32B模型,确保操作系统和硬件配置满足最低需求。对于Windows环境下基于X99平台的NVIDIA Quadro M6000显卡,建议先更新至最新的驱动版本以获得最佳性能和支持[^2]。 #### 安装必要的软件包 1. **CUDA Toolkit**: QwQ-32B依赖于CUDA进行高效的并行计算操作。安装适用于NVIDIA Quadro M6000 (GM200架构) 的最新稳定版CUDA工具包[^1]。 2. **cuDNN Library**: 加速深度神经网络运算效率,下载对应CUDA版本的cuDNN库文件,并按照官方指南完成设置。 #### 构建运行框架 选择合适的本地大语言模型运行框架至关重要。考虑到资源消耗与兼容性因素: - 推荐采用Ollama作为主要执行引擎,其具备良好的社区支持及优化特性; - 同时集成AnythingLLM图形化前端以便更直观地管理和交互调用API接口[^3]。 #### 调整参数适配硬件条件 由于QwQ-32B属于大型预训练模型之一,可能占用较多内存空间。针对仅拥有24GB VRAM容量的情况,可以考虑采取如下措施来缓解潜在瓶颈: - 设置较低batch size减少单次前向传播所需临时存储量; - 利用混合精度浮点数表示法(FP16),既可加快速度又能节省一半以上的显存开销; - 如果仍然遇到不足,则尝试启用磁盘交换机制或者分布式多设备协同处理方式分担负载压力。 ```python import torch device = 'cuda' if torch.cuda.is_available() else 'cpu' model = ModelClass.from_pretrained('path/to/qwq-32b').half().to(device) tokenizer = TokenizerClass.from_pretrained('path/to/tokenizer') with torch.no_grad(): inputs = tokenizer("输入文本", return_tensors="pt").to(device) outputs = model.generate(**inputs, max_length=50, num_beams=4) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值