猫哥手把手教你基于vllm大模型推理框架部署Qwen3-MoE

之前有关FlashAttention V3的文章感觉有些难度,不符合大众化阅读,加上五一假期刚结束,为了帮助大家找到学习状态,所以决定这次写一篇极其友好的文章,保证看起来丝滑,如题。

上周Qwen3刚发布时,转载了一篇ktransformers的文章,ktransformers比较适合经济型部署,设备门槛略低一点,具体可以看一下ktransformers的介绍。

本文基于vllm框架最新版本0.8.5.post1实际部署Qwen3-235B-A22B模型,模型配置可见huggingface(https://huggingface.co/Qwen/Qwen3-235B-A22B或https://github.com/huggingface/transformers/blob/main/src/transformers/models/qwen3_moe/configuration_qwen3_moe.py)或Qwen官方的介绍:

  • Type: Causal Language Models

  • Training Stage: Pretraining & Post-training

  • Number of Parameters: 235B in total and 22B activated

  • Number of Paramaters (Non-Embedding): 234B

  • Number of Layers: 94

  • Number of Attention Heads (GQA): 64 for Q and 4 for KV

  • Number of Experts: 128

  • Number of Activated Experts: 8

  • Context Length: 32,768 natively and 131,072 tokens with YaRN.

环境setup

有很多种方式:1.源码编译安装 2.官方wheel文件的安装 3.使用官方release的docker

一般情况下,如果不是开发者,只是使用者,那么采取第3种方式即可,如果是开发者,那么源码编译安装是必需的,本文采取第3种方式

docker镜像选择和启动

  • docker镜像选择:vllm一般会把各个release版本的稳定docker镜像上传到dockerhub,在dockerhub搜索vllm即可查到,本文采取的docker镜像为``vllm/vllm-openai:0.8.5.post1``

  • docker容器启动:dockerhub里的vllm镜像最后一个命令为ENTRYPOINT,意味着docker启动的同时会运行的命令,所以这个vllm镜像启动的同时会启动openai server,因为我们部署的是Qwen3-235B-A22B,所以我们需要在命令行指定该model,否则默认部署的是opt-125M。此外指定tp为8,使用8卡来部署。(4卡也可,只要装得下参数且能有余量保存足够的kv cache就行)

tips:如果不想docker启动的同时运行某个命令,可以在命令行添加--entrypoint /bin/bash,这样的话,启动docker即直接进入命令行,不会自动启动server部署Qwen3模型,如下图

启动server&log解析

本文采取了docker启动的同时运行openai server serving Qwen3模型,即tips上面的命令,输出log如下

获取到的有用信息:

  • 模型支持generate、embed、reward、classify、score,默认是generate,即文本生成式

  • chunked prefill默认打开,batched token数量是8192

  • 模型的确是Qwen/Qwen3-235B-A22B

  • tp size为8

  • cuda graph capture的batch size大小有几十个,最大的batch size为512

获取到的有用信息:

  • 因为是8卡部署,所以框起来的``automatically......cuda```显示了8次,在每张卡上面都要初始化都要check一次nccl

获取到的有用信息:

  • world size=8,即总共是8张卡,这8张卡全都用来做tp

  • flashinfer库用来计算top-p和top-k

  • 而后开始load Qwen2-235B-A22B

获取到的有用信息:

  • 首次部署该模型时,会去huggingface下载,而后缓存到huggingface的默认缓存目录(/root/.cache/huggingface),之后部署时,就不用下载而是直接load

获取到的有用信息:

  • 模型加载完成后,每张卡花费了54.9GB,这里面不光是weight所占空间,还有kv cache等预留空间

  • 为custom allreduce算子注册在cuda graph上的地址,便于capture

  • 开始capture cuda graph

获取到的有用信息:

  • Qwen3在http://0.0.0.0:8000这个地址serving

  • 有如上的很多http GET和POST方法可用

  • Qwen3部署服务的进程号是2126887

此时我们的GPU显存占用情况如下,聪明的读者或许已经猜出型号,但是我还是要为了zzzq打个码

由此,我们的Qwen3-235B-A22B模型就serving起来了,接下来我们只需在客户端发送请求给它处理,然后返回给我们就OK了

客户端请求

默认情况下,我们没有采用thinking模式,发送请求的命令如下,可用看到没有任何thinking过程

在给启动docker的命令中加上--enable-reasoning --reasoning-parser deepseek_r1后,即开启thinking模式。

此时客户端请求命令为以下,可以看到reasoning_content为思考过程,content为最终答复

此时服务端的log为以下,可以看到平均的generation throughput为54.3tokens/s,注意如果要得到框架的极限性能,需要使用项目中的benchmark脚本,下期或下下期文章根据反响再来考虑示范

我们再尝试一个http GET方法,对v1/models发出GET请求,响应如下,可以看到打印出了model信息

总结

最后,总结一下,我们本文示范了使用vllm部署使用Qwen3-235B-A22B的基本过程,并且解析了log,展示了整个过程做了哪些事情,成功把模型部署在了某个地址,最后朝这个地址发出请求即可得到响应。后面将根据读者反响考虑再展示一下SGLang如何来部署模型,并且探索vllm和SGLang的服务性能。

 

 大模型&AI产品经理如何学习

求大家的点赞和收藏,我花2万买的大模型学习资料免费共享给你们,来看看有哪些东西。

1.学习路线图

第一阶段: 从大模型系统设计入手,讲解大模型的主要方法;

第二阶段: 在通过大模型提示词工程从Prompts角度入手更好发挥模型的作用;

第三阶段: 大模型平台应用开发借助阿里云PAI平台构建电商领域虚拟试衣系统;

第四阶段: 大模型知识库应用开发以LangChain框架为例,构建物流行业咨询智能问答系统;

第五阶段: 大模型微调开发借助以大健康、新零售、新媒体领域构建适合当前领域大模型;

第六阶段: 以SD多模态大模型为主,搭建了文生图小程序案例;

第七阶段: 以大模型平台应用与开发为主,通过星火大模型,文心大模型等成熟大模型构建大模型行业应用。


2.视频教程

网上虽然也有很多的学习资源,但基本上都残缺不全的,这是我自己整理的大模型视频教程,上面路线图的每一个知识点,我都有配套的视频讲解。

(都打包成一块的了,不能一一展开,总共300多集)

因篇幅有限,仅展示部分资料,需要点击下方图片前往获取

3.技术文档和电子书 

这里主要整理了大模型相关PDF书籍、行业报告、文档,有几百本,都是目前行业最新的。



4.LLM面试题和面经合集


这里主要整理了行业目前最新的大模型面试题和各种大厂offer面经合集。



👉学会后的收获:👈
• 基于大模型全栈工程实现(前端、后端、产品经理、设计、数据分析等),通过这门课可获得不同能力;

• 能够利用大模型解决相关实际项目需求: 大数据时代,越来越多的企业和机构需要处理海量数据,利用大模型技术可以更好地处理这些数据,提高数据分析和决策的准确性。因此,掌握大模型应用开发技能,可以让程序员更好地应对实际项目需求;

• 基于大模型和企业数据AI应用开发,实现大模型理论、掌握GPU算力、硬件、LangChain开发框架和项目实战技能, 学会Fine-tuning垂直训练大模型(数据准备、数据蒸馏、大模型部署)一站式掌握;

• 能够完成时下热门大模型垂直领域模型训练能力,提高程序员的编码能力: 大模型应用开发需要掌握机器学习算法、深度学习框架等技术,这些技术的掌握可以提高程序员的编码能力和分析能力,让程序员更加熟练地编写高质量的代码。

1.AI大模型学习路线图
2.100套AI大模型商业化落地方案
3.100集大模型视频教程
4.200本大模型PDF书籍
5.LLM面试题合集
6.AI产品经理资源合集***

👉获取方式:
😝有需要的小伙伴,可以保存图片到wx扫描二v码免费领取【保证100%免费】🆓

### 使用VLLM部署Qwen模型 为了成功使用VLLM部署Qwen模型,需遵循特定的设置流程来确保环境配置正确并能高效运行。 #### 设置ModelScope环境变量 在启动服务前,应先设定`VLLM_USE_MODELSCOPE=True`这一环境变量以便利用ModelScope平台的功能。这一步骤对于后续操作至关重要,因为其决定了是否启用来自ModelScope的服务支持[^1]。 ```bash export VLLM_USE_MODELSCOPE=True ``` #### 启动API服务器命令示例 针对不同需求场景下的具体参数调整如下: - **基本模式**:适用于快速测试,默认加载较小版本的Qwen2-7B-Instruct模型,并监听于本地8080端口。 ```bash python -m vllm.entrypoints.openai.api_server \ --model qwen/Qwen2-7B-Instruct \ --host 0.0.0.0 \ --port 8080 ``` - **高级配置**:当追求更高性能时可考虑增加硬件资源分配以及优化网络通信效率;此案例中指定了GPU设备编号、自定义服务名称(`my_model`)、更大的最大输入长度(8096 tokens),并且启用了张量并行处理以加速计算过程。 ```bash CUDA_VISIBLE_DEVICES=0,1 /root/vendor/Python3.10.12/bin/python3.10 -m vllm.entrypoints.openai.api_server \ --host 0.0.0.0 \ --port 25010 \ --served-model-name my_model \ --model //root/qwen2.5/qwen2.5-coder-7b-instruct/ \ --tensor-parallel-size 2 \ --max-model-len 8096 ``` #### 文件路径说明 如果预先已通过其他方式获取到了所需的预训练权重文件,则可以直接指定这些文件所在的绝对路径作为`--model`参数值的一部分。例如,在某些情况下可能会将下载好的模型放置在一个固定的目录结构内(如/home/user/gpt/qwen/models),此时只需相应修改上述命令中的路径部分即可完成挂载工作[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值