# Qwen3-30B-A3B_vllm ## 论文 `Qwen3 Technical Report` - https://arxiv.org/abs/2505.09388 `Qwen2.5-1M Technical Report` - https://arxiv.org/abs/2501.15383 ## 模型结构 Qwen3-30B-A3B 是 Qwen 系列中的最新一代大型语言模型,它提供了涵盖密集型和专家混合型(MoE)模型的一整套工具。基于大量的训练数据,Qwen3 在推理、指令遵循、智能体功能以及多语言支持等方面实现了突破性的进步。其主要特点如下: - 支持在单个模型内无缝切换思考模式(用于复杂逻辑推理、数学和编码)和非思考模式(用于高效通用对话),确保在各种场景下实现最佳性能。 - 显著提升推理能力,在数学、代码生成和常识逻辑推理方面超越之前的 QwQ(思考模式)和 Qwen2.5 指令模型(非思考模式)。 - 在创意写作、角色扮演、多轮对话和指令遵循方面表现出色,与人类偏好高度一致,提供更自然、更吸引人、更沉浸式的对话体验。 - 具备代理能力专长,在思考和非思考模式下都能精准集成外部工具,在复杂代理任务中处于开源模型的领先地位。 - 支持 100 多种语言和方言,具备强大的多语言指令遵循和翻译能力。
## 算法原理 Qwen3-30B-A3B、Qwen3-30B-A3B-Instruct-2507以及Qwen3-30B-A3B-Thinking-2507在一般能力方面有显著提高,包括遵循指令、逻辑推理、文本理解、数学、科学、编码和工具使用。跨多种语言的长尾知识覆盖的实质性增长。在主观和开放式任务中与用户偏好明显更好的对齐,从而实现更有帮助的响应和更高质量的文本生成。增强了256K长上下文理解能力。
## 环境配置 ### 硬件需求 DCU型号:K100_AI,节点数量:1台,卡数:2张。 ### Docker(方法一) ```bash docker pull image.sourcefind.cn:5000/dcu/admin/base/vllm:0.8.5-ubuntu22.04-dtk25.04.1-rc5-das1.6-py3.10-20250724 docker run -it --name {docker_name} --device=/dev/kfd --privileged --network=host --device=/dev/dri --cap-add=SYS_PTRACE --security-opt seccomp=unconfined -v /public/LLM-Models:/home/LLM-Models:ro -v /path/your_code_data/:/path/your_code_data/ -v /opt/hyhal:/opt/hyhal:ro --group-add video --shm-size 64G {imageID} bash cd /your_code_path/qwen3-30b-a3b_vllm ``` ### Dockerfile(方法二) 此处提供dockerfile的使用方法 ```bash cd docker docker build --no-cache -t qwen3-30b-a3b:latest . docker run -it --name {docker_name} --device=/dev/kfd --privileged --network=host --device=/dev/dri --cap-add=SYS_PTRACE --security-opt seccomp=unconfined -v /public/LLM-Models:/home/LLM-Models:ro -v /path/your_code_data/:/path/your_code_data/ -v /opt/hyhal:/opt/hyhal:ro --group-add video --shm-size 64G {imageID} bash cd /your_code_path/qwen3-30b-a3b_vllm ``` ### Anaconda(方法三) 关于本项目DCU显卡所需的特殊深度学习库可从[光合](https://developer.sourcefind.cn/tool/)开发者社区下载安装。 ```bash DTK: 25.04 python: 3.10 vllm: 0.8.5.post1 torch: 2.4.1+das.opt1.dtk25041 ``` `Tips:以上dtk驱动、torch等DCU相关工具版本需要严格一一对应` 其它非深度学习库安装方式如下: ```bash pip install transformers==4.51.1 ``` ## 数据集 暂无 ## 训练 暂无 ## 推理 vllm离线推理Qwen3-30B-A3B: ```bash ## Qwen3-30B-A3B 在 BF16 精度下,其模型权重本身大约是 61 GB,至少需要双卡部署推理 export HIP_VISIBLE_DEVICES=6,7 ## 模型地址参数 python ./infer/offline/infer_vllm.py --model /your_path/Qwen3-30B-A3B --tensor-parallel-size 2 ``` ## result ### result一 vllm离线推理Qwen3-30B-A3B: ```bash ## Qwen3-30B-A3B 在 BF16 精度下,其模型权重本身大约是 61 GB,至少需要双卡部署推理 export HIP_VISIBLE_DEVICES=6,7 ## 模型地址参数 python ./infer/offline/infer_vllm.py --model /your_path/Qwen3-30B-A3B --tensor-parallel-size 2 ``` ``` Original Input Prompt (if available): '介绍一下北京.' Generated text (full output): '\n好的,用户让我介绍一下北京。首先,我需要确定用户的需求是什么......' ================================================================================ Logprobs per generated token: Step 0: - Generated Token: 151667 ('') - Top Logprobs: - Rank 1: Token 151667 ('') -> Logprob: -0.0000 - Rank 2: Token 32501 ('yped') -> Logprob: -16.6875 - Rank 3: Token 81218 (' zlib') -> Logprob: -17.5000 - Rank 4: Token 77899 (':len') -> Logprob: -17.9375 - Rank 5: Token 99048 (' zf') -> Logprob: -18.4375 - Rank 6: Token 117865 ('具体内容') -> Logprob: -18.5000 - Rank 7: Token 198 (' ') -> Logprob: -18.5625 - Rank 8: Token 18945 ('α') -> Logprob: -18.5625 - Rank 9: Token 67085 ('[param') -> Logprob: -19.0000 - Rank 10: Token 75025 ('yms') -> Logprob: -19.0000 ... ... 成功将每个生成token的logprob写入到文件: ... ``` ### 精度测试一 ``` # 分别在DCU和GPU上运行infer_vllm.py,得到各自的精度数据,并将精度数据复制粘贴到acc.py中运行 python ./infer/offline/acc.py ``` 结果 ``` Qwen3-30B-A3B在DCU(K100_AI)与GPU(A800)离线推理的平均绝对误差值:0.002905419914469576 ``` DCU(K100_AI)与GPU(A800)离线推理Qwen3-30B-A3B精度一致,推理框架:vllm ### result二 vllm离线推理Qwen3-30B-A3B-Instruct-2507: ```bash ## Qwen3-30B-A3B-Instruct-2507 至少需要双卡部署推理 export HIP_VISIBLE_DEVICES=6,7 ## 模型地址参数 python ./infer/offline/infer_vllm.py --model /your_path/Qwen3-30B-A3B-Instruct-2507 --tensor-parallel-size 2 ``` ``` Original Input Prompt (if available): '介绍一下北京.' Generated text (full output): '北京,简称“京”,是中国的首都,也是中华人民共和国的中央人民政府所在地......' ================================================================================ Logprobs per generated token: Step 0: - Generated Token: 68990 ('北京') - Top Logprobs: - Rank 1: Token 68990 ('北京') -> Logprob: -0.0019 - Rank 2: Token 103942 ('当然') -> Logprob: -6.2519 - Rank 3: Token 104554 ('北京市') -> Logprob: -11.3769 - Rank 4: Token 99692 ('好的') -> Logprob: -13.5019 - Rank 5: Token 108386 ('你好') -> Logprob: -13.5019 - Rank 6: Token 111308 ('您好') -> Logprob: -14.1269 - Rank 7: Token 106287 ('嗯') -> Logprob: -15.2519 - Rank 8: Token 106114 ('首都') -> Logprob: -16.8769 - Rank 9: Token 110488 ('北京时间') -> Logprob: -16.8769 - Rank 10: Token 334 ('**') -> Logprob: -17.3769 ... ... 成功将每个生成token的logprob写入到文件: ... ``` ### 精度测试二 ``` # 分别在DCU和GPU上运行infer_vllm.py,得到各自的精度数据,并将精度数据复制粘贴到acc.py中运行 python ./infer/offline/acc.py ``` 结果 ``` Qwen3-30B-A3B-Instruct-2507在DCU(K100_AI)与GPU(A800)离线推理的平均绝对误差值:0.006542379854522551 ``` DCU(K100_AI)与GPU(A800)离线推理Qwen3-30B-A3B-Instruct-2507精度一致,推理框架:vllm ### result三 vllm离线推理Qwen3-30B-A3B-Thinking-2507: ```bash ## Qwen3-30B-A3B-Thinking-2507 至少需要双卡部署推理 export HIP_VISIBLE_DEVICES=6,7 ## 模型地址参数 python ./infer/offline/infer_vllm.py --model /your_path/Qwen3-30B-A3B-Thinking-2507 --tensor-parallel-size 2 ``` ``` Original Input Prompt (if available): '介绍一下北京.' Generated text (full output): '嗯,用户让我介绍一下北京。首先得确定用户的需求是什么......' ================================================================================ Logprobs per generated token: Step 0: - Generated Token: 106287 ('嗯') - Top Logprobs: - Rank 1: Token 106287 ('嗯') -> Logprob: -0.0134 - Rank 2: Token 32313 ('Okay') -> Logprob: -4.3884 - Rank 3: Token 99692 ('好的') -> Logprob: -7.0134 - Rank 4: Token 80022 ('Hmm') -> Logprob: -11.3884 - Rank 5: Token 110115 ('好吧') -> Logprob: -11.6384 - Rank 6: Token 11395 ('Well') -> Logprob: -13.0134 - Rank 7: Token 52801 ('好') -> Logprob: -13.0134 - Rank 8: Token 101140 ('首先') -> Logprob: -13.3884 - Rank 9: Token 71486 ('Alright') -> Logprob: -13.5134 - Rank 10: Token 2461 ('For') -> Logprob: -14.0134 ... ... 成功将每个生成token的logprob写入到文件: ... ``` ### 精度测试三 ``` # 分别在DCU和GPU上运行infer_vllm.py,得到各自的精度数据,并将精度数据复制粘贴到acc.py中运行 python ./infer/offline/acc.py ``` 结果 ``` Qwen3-30B-A3B-Thinking-2507在DCU(K100_AI)与GPU(A800)离线推理的平均绝对误差值:0.01841533068222816 ``` DCU(K100_AI)与GPU(A800)离线推理Qwen3-30B-A3B-Thinking-2507精度一致,推理框架:vllm ### result四 vllm在线推理Qwen3-30B-A3B: ```bash ## Qwen3-30B-A3B 至少需要双卡部署 export HIP_VISIBLE_DEVICES=6,7 ## 启动服务 vllm serve /your_path/Qwen3-30B-A3B --enable-reasoning --reasoning-parser deepseek_r1 --tensor-parallel-size 2 --max-logprobs 10 ## 修改./infer/online/client.py, MODEL_NAME请改成/your_path/Qwen3-30B-A3B,并运行client.py, 代码内部共设置十个提示词 python client.py ``` ``` 欢迎使用 Qwen3-30B-A3B 聊天客户端! 已连接到 vLLM 服务,使用模型: /home/zwq/model/Qwen3-30B-A3B -------------------------------------------------- --- 问题 1: '介绍一下北京.' --- 完整回答 (包含思考): '\n\n北京是中国的首都,也是世界著名古都和国际化大都市......' 答案部分前10个Token的Rank 1 Logprobs: Step 0: 0.0000 Step 1: -0.0000 Step 2: -0.0711 Step 3: -0.0000 Step 4: -0.1086 Step 5: -0.0150 Step 6: -0.0067 Step 7: -0.0000 Step 8: -0.0298 Step 9: -0.0091 -------------------------------------------------- ...... ...... 所有测试结果已保存到文件: ./Qwen3-30B-A3B_logprobs_K100AI_fp16.json ``` ### 精度测试四 ```bash ## 分别在DCU和GPU上启动vllm服务,并对应运行client.py,得到各自的精度数据后,运行online文件夹下的acc.py python ./infer/online/acc.py --file1 /your_path/Qwen3-30B-A3B_logprobs_A800_fp16.json --file2 /your_path/Qwen3-30B-A3B_logprobs_K100AI_fp16.json ``` 结果 ``` 提示词:介绍一下北京.,平均绝对误差:0.002455742455325094 提示词:写一首关于春天的五言绝句.,平均绝对误差:0.0007630783482369452 提示词:请解释一下黑洞的形成原理.,平均绝对误差:0.005167613880542632 提示词:推荐三部值得一看的科幻电影,并简述理由.,平均绝对误差:0.0030238355811320616 提示词:如何有效提高编程能力?,平均绝对误差:0.014263489465471934 提示词:给我讲一个关于人工智能的笑话.,平均绝对误差:0.003418742059113811 提示词:你认为未来教育会发展成什么样?,平均绝对误差:0.0246062334959511 提示词:如何制作一道美味的麻婆豆腐?,平均绝对误差:0.005538759729023468 提示词:量子计算的原理是什么?它有哪些潜在应用?,平均绝对误差:0.012481686085721578 提示词:请用英语介绍一下中国长城.,平均绝对误差:0.001114922351905534 总体平均绝对误差:7.283410e-03 ``` DCU(K100_AI)与GPU(A800)在线推理Qwen3-30B-A3B精度一致,推理框架:vllm ### result五 vllm在线推理Qwen3-30B-A3B-Instruct-2507: ```bash ## Qwen3-30B-A3B-Instruct-2507 至少需要双卡部署 export HIP_VISIBLE_DEVICES=6,7 ## 启动服务 vllm serve /your_path/Qwen3-30B-A3B-Instruct-2507 --tensor-parallel-size 2 --max-logprobs 10 ## 修改./infer/online/client.py, MODEL_NAME请改成/your_path/Qwen3-30B-A3B-Instruct-2507,并运行client.py, 代码内部共设置十个提示词 python client.py ``` ``` 欢迎使用 Qwen3-30B-A3B 聊天客户端! 已连接到 vLLM 服务,使用模型: /home/zwq/model/Qwen3-30B-A3B-Instruct-2507 -------------------------------------------------- --- 问题 1: '介绍一下北京.' --- 完整回答 (包含思考): '北京,简称“京”,是中国的首都,也是中华人民共和国的中央人民政府所在地......' 答案部分前10个Token的Rank 1 Logprobs: Step 0: -0.0025 Step 1: -0.2529 Step 2: -0.1372 Step 3: -0.0000 Step 4: 0.0000 Step 5: -0.0000 Step 6: -0.0381 Step 7: -0.0007 Step 8: -0.0001 Step 9: -0.0000 -------------------------------------------------- ...... ...... 所有测试结果已保存到文件: ./Qwen3-30B-A3B-Instruct-2507_logprobs_K100AI_fp16.json ``` ### 精度测试五 ```bash ## 分别在DCU和GPU上启动vllm服务,并对应运行client.py,得到各自的精度数据后,运行online文件夹下的acc.py python ./infer/online/acc.py --file1 /your_path/Qwen3-30B-A3B-Instruct-2507_logprobs_A800_fp16.json --file2 /your_path/Qwen3-30B-A3B-Instruct-2507_logprobs_K100AI_fp16.json ``` 结果 ``` 提示词:介绍一下北京.,平均绝对误差:0.0003844495090561395 提示词:写一首关于春天的五言绝句.,平均绝对误差:0.003621068420738993 提示词:请解释一下黑洞的形成原理.,平均绝对误差:0.013209401426135515 提示词:推荐三部值得一看的科幻电影,并简述理由.,平均绝对误差:0.028403437747607542 提示词:如何有效提高编程能力?,平均绝对误差:0.014048111713964317 提示词:给我讲一个关于人工智能的笑话.,平均绝对误差:0.027143383317161353 提示词:你认为未来教育会发展成什么样?,平均绝对误差:0.019544235430657864 提示词:如何制作一道美味的麻婆豆腐?,平均绝对误差:0.007543907890431712 提示词:量子计算的原理是什么?它有哪些潜在应用?,平均绝对误差:0.009102995577677575 提示词:请用英语介绍一下中国长城.,平均绝对误差:8.911460490779177e-05 总体平均绝对误差:1.230901e-02 ``` DCU(K100_AI)与GPU(A800)在线推理Qwen3-30B-A3B-Instruct-2507精度一致,推理框架:vllm ### result六 vllm在线推理Qwen3-30B-A3B-Thinking-2507: ```bash ## Qwen3-30B-A3B-Thinking-2507 至少需要双卡部署 export HIP_VISIBLE_DEVICES=6,7 ## 启动服务 vllm serve /your_path/Qwen3-30B-A3B-Thinking-2507 --tensor-parallel-size 2 --max-logprobs 10 ## 修改./infer/online/client.py, MODEL_NAME请改成/your_path/Qwen3-30B-A3B-Thinking-2507,并运行client.py, 代码内部共设置十个提示词 python client.py ``` ``` 欢迎使用 Qwen3-30B-A3B 聊天客户端! 已连接到 vLLM 服务,使用模型: /home/zwq/model/Qwen3-30B-A3B-Thinking-2507 -------------------------------------------------- --- 问题 1: '介绍一下北京.' --- 完整回答 (包含思考): '......' 答案部分前10个Token的Rank 1 Logprobs: Step 0: -0.0025 Step 1: -0.2529 Step 2: -0.1372 Step 3: -0.0000 Step 4: 0.0000 Step 5: -0.0000 Step 6: -0.0381 Step 7: -0.0007 Step 8: -0.0001 Step 9: -0.0000 -------------------------------------------------- ...... ...... 所有测试结果已保存到文件: ./Qwen3-30B-A3B-Thinking-2507_logprobs_K100AI_fp16.json ``` ### 精度测试六 ```bash ## 分别在DCU和GPU上启动vllm服务,并对应运行client.py,得到各自的精度数据后,运行online文件夹下的acc.py python ./infer/online/acc.py --file1 /your_path/Qwen3-30B-A3B-Thinking-2507_logprobs_A800_fp16.json --file2 /your_path/Qwen3-30B-A3B-Thinking-2507_logprobs_K100AI_fp16.json ``` 结果 ``` 提示词:介绍一下北京.,平均绝对误差:0.0268607304953548 提示词:写一首关于春天的五言绝句.,平均绝对误差:0.03196280233089581 提示词:请解释一下黑洞的形成原理.,平均绝对误差:0.018056550696832117 提示词:推荐三部值得一看的科幻电影,并简述理由.,平均绝对误差:7.236637604322028e-05 提示词:如何有效提高编程能力?,平均绝对误差:0.021264297872457406 提示词:给我讲一个关于人工智能的笑话.,平均绝对误差:0.00047728609542616594 提示词:你认为未来教育会发展成什么样?,平均绝对误差:0.013615525089016955 提示词:如何制作一道美味的麻婆豆腐?,平均绝对误差:0.01083195809155768 提示词:量子计算的原理是什么?它有哪些潜在应用?,平均绝对误差:0.0001254735009297292 提示词:请用英语介绍一下中国长城.,平均绝对误差:0.00332602070383885 总体平均绝对误差:1.265930e-02 ``` DCU(K100_AI)与GPU(A800)在线推理Qwen3-30B-A3B-Thinking-2507精度一致,推理框架:vllm ## 应用场景 ### 算法类别 `对话问答` ### 热点应用行业 `金融,教育,政府,科研,制造,能源,交通` ## 预训练权重 - [Qwen/Qwen3-30B-A3B](https://huggingface.co/Qwen/Qwen3-30B-A3B) - [Qwen/Qwen3-30B-A3B-Instruct-2507](https://huggingface.co/Qwen/Qwen3-30B-A3B-Instruct-2507) - [Qwen/Qwen3-30B-A3B-Thinking-2507](https://huggingface.co/Qwen/Qwen3-30B-A3B-Thinking-2507) ## 源码仓库及问题反馈 - https://developer.sourcefind.cn/codes/modelzoo/qwen3-30b-a3b_vllm ## 参考资料 - https://huggingface.co/Qwen/Qwen3-30B-A3B - https://huggingface.co/Qwen/Qwen3-30B-A3B-Instruct-2507 - https://huggingface.co/Qwen/Qwen3-30B-A3B-Thinking-2507