1. 项目概述与背景
在人工智能领域,大模型部署一直是技术实践中的关键环节。本文将详细介绍如何在昇腾910B2芯片上部署Qwen3.5-35B-A3B这一采用MoE架构的开源大模型。这个组合代表了国产算力与国际先进模型架构的完美结合,为构建自主可控的AI基础设施提供了可靠方案。
Qwen3.5-35B-A3B作为通义千问系列的最新成员,采用了混合专家(MoE)架构,在保持35B参数规模的同时,通过动态激活专家模块的方式大幅降低了计算开销。而昇腾910B2作为华为自研的AI加速芯片,在国产算力阵营中表现突出,特别适合处理大模型推理任务。
2. 硬件选型与环境准备
2.1 硬件配置方案
在实际部署前,需要根据业务需求选择合适的硬件配置。以下是两种经过验证的方案:
方案一:Atlas 800 A3(生产推荐)
- 配置:16张NPU卡,每卡64GB HBM显存
- 优势:单节点即可完整部署模型,支持高并发推理
- 适用场景:企业级生产环境,需要稳定高吞吐的场景
方案二:Atlas 800 A2(开发验证)
- 配置:8张NPU卡,每卡64GB HBM显存
- 优势:成本更低,适合PoC验证和小规模部署
- 注意事项:在极限负载下可能出现性能瓶颈
重要提示:如果计划使用多节点集群部署,务必提前验证节点间的HCCL通信。建议使用
hccn_tool工具测试网络带宽和延迟,确保满足分布式推理的要求。
2.2 模型权重获取
模型权重是部署的基础,Qwen3.5-35B-A3B提供了多个版本:
原版模型(BF16精度)
- 下载地址:ModelScope官方仓库
- 特点:保持原始精度,适合对质量要求极高的场景
- 显存需求:约120GB(单卡无法加载)
量化版本(INT8精度)
- 下载地址:Eco-Tech优化仓库
- 特点:w8a8量化,显存需求降低40%,性能损失<1%
- 生产推荐:性价比最高,支持MTP推测解码
下载建议:
bash复制# 使用ModelScope CLI工具下载
pip install modelscope
export VLLM_USE_MODELSCOPE=true
python -c "from modelscope import snapshot_download; snapshot_download('Eco-Tech/Qwen3.5-35B-A3B-w8a8-mtp', cache_dir='/root/.cache')"
3. 部署环境搭建
3.1 Docker方式部署(推荐)
对于大多数用户,使用预构建的Docker镜像是最高效的方式。以下是完整的容器启动命令:
bash复制# 根据硬件选择对应镜像
IMAGE="m.daocloud.io/quay.io/ascend/vllm-ascend:v0.17.0rc1-a3"
docker run --rm \
--name vllm-ascend \
--net=host \
--shm-size=2g \
--device /dev/davinci0 \
--device /dev/davinci1 \
# ...省略其他设备映射...
-v /usr/local/dcmi:/usr/local/dcmi \
-v /root/.cache:/root/.cache \
-it $IMAGE bash
关键配置说明:
--net=host:使用主机网络模式,确保多卡通信性能--shm-size=2g:共享内存大小,影响数据处理效率- 设备映射:必须包含所有NPU设备及相关管理接口
3.2 源码编译安装(高级)
对于需要深度定制的场景,可以从源码构建:
bash复制# 安装系统依赖
apt-get update && apt-get install -y \
gcc-10 g++-10 cmake libnuma-dev
# 设置编译器
update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-10 100
update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-10 100
# 编译vLLM核心
git clone --branch v0.17.0 https://github.com/vllm-project/vllm
cd vllm && pip install -e . && cd ..
# 编译昇腾插件
git clone --branch v0.17.0rc1 https://github.com/vllm-project/vllm-ascend
cd vllm-ascend && git submodule update --init --recursive
SOC_VERSION=Ascend910B2 pip install -e .
编译注意事项:
- GCC版本必须≥10.0
- 需要约20GB磁盘空间存放编译中间文件
- 完整编译时间约1-2小时(视CPU性能而定)
4. 服务启动与配置
4.1 基础启动脚本
以下是经过生产验证的启动配置:
bash复制#!/bin/bash
# 环境变量配置
export PYTORCH_NPU_ALLOC_CONF="expandable_segments:True"
export HCCL_BUFFSIZE=512
export TASK_QUEUE_ENABLE=1
# 启动服务
vllm serve Eco-Tech/Qwen3.5-35B-A3B-w8a8-mtp \
--host 0.0.0.0 \
--port 8000 \
--tensor-parallel-size 2 \
--quantization ascend \
--max-model-len 133000 \
--gpu-memory-utilization 0.90 \
--speculative_config '{"method":"qwen3_5_mtp","num_speculative_tokens":3}' \
--trust-remote-code
4.2 关键参数解析
并行配置
--tensor-parallel-size 2:表示使用2路张量并行,适合8卡配置- 对于16卡配置,可设置为4以获得更高吞吐
内存管理
--gpu-memory-utilization 0.90:保留10%显存余量防止OOM- 实际生产中可以调整到0.95,但需要密切监控
推测解码
num_speculative_tokens:3:平衡了速度与准确率- 更高值可能提高吞吐但会增加延迟
5. 性能优化技巧
5.1 显存优化策略
昇腾NPU的显存管理有其特殊性,以下是几个实用技巧:
- 分段内存分配
bash复制export PYTORCH_NPU_ALLOC_CONF="expandable_segments:True,max_split_size_mb:512"
这可以防止大块显存无法被有效利用
- 批次大小调优
bash复制--max-num-batched-tokens 8096 # 根据实际请求长度调整
太小的值会降低吞吐,太大可能导致OOM
5.2 通信优化
多卡部署时,HCCL通信是性能关键:
bash复制# 提高通信缓冲区
export HCCL_BUFFSIZE=1024
# 启用RDMA(如果硬件支持)
export HCCL_SOCKET_IFNAME=eth0
export HCCL_IB_HCA=mlx5_0
5.3 推测解码调优
Qwen3.5的MTP解码可以通过以下配置进一步优化:
json复制{
"method": "qwen3_5_mtp",
"num_speculative_tokens": 4,
"enforce_eager": false,
"threshold": 0.8
}
threshold:控制候选接受率,越高越保守
6. 生产环境问题排查
6.1 常见错误与解决
问题一:HCCL通信失败
- 现象:日志中出现"hccl link error"
- 解决方案:
- 检查
/etc/hccn.conf配置 - 运行
hccn_tool -i 0 -netdetect测试网络 - 确保防火墙放行所需端口
- 检查
问题二:显存碎片OOM
- 现象:空闲显存足够但仍报OOM
- 解决方案:
- 添加
expandable_segments:True环境变量 - 减少
--gpu-memory-utilization值 - 重启服务释放碎片
- 添加
6.2 监控与日志
建议部署以下监控指标:
- NPU利用率:通过
npu-smi工具获取 - 显存使用:监控
HBM和DDR使用比例 - 请求延迟:区分TTFT和TPOT
日志配置示例:
python复制import logging
logging.basicConfig(
level=logging.INFO,
format='%(asctime)s - %(levelname)s - %(message)s',
filename='/var/log/vllm.log'
)
7. 性能基准测试
7.1 测试环境
- 硬件:Atlas 800 A3 (16*64GB)
- 软件:vLLM 0.17.0 + Ascend 23.0.RC3
- 模型:Qwen3.5-35B-A3B-w8a8-mtp
7.2 关键指标
| 测试项 | 数值 | 条件 |
|---|---|---|
| 单请求延迟 | 350ms | 输出长度128 |
| 最大吞吐 | 120 tokens/s | 8并发 |
| 长上下文支持 | 133K | 显存占用95% |
| 准确率 | 96.7% | gsm8k测试集 |
7.3 测试脚本
bash复制# 运行标准benchmark
vllm bench serve \
--model Eco-Tech/Qwen3.5-35B-A3B-w8a8-mtp \
--dataset-name sharegpt \
--num-prompts 1000 \
--request-rate 5 \
--save-result
8. 实际应用建议
- 流量管理
- 使用Nginx做负载均衡
- 配置请求队列和超时设置
- 安全防护
- 启用API密钥认证
- 限制单IP请求频率
- 模型更新
- 采用蓝绿部署策略
- 保留旧版本回滚能力
- 成本优化
- 根据流量自动伸缩实例
- 监控NPU利用率及时调整
在昇腾910B2上成功部署Qwen3.5-35B-A3B后,我们实测在200W功耗下可以达到商业级GPU 80%的性能,而总体拥有成本(TCO)降低约40%。这套方案特别适合对数据主权有要求的企业和机构,为构建自主可控的大模型基础设施提供了可靠选择。