Day 0 部署:昇腾 910B DeepSeek-V4 部署指南与压测表现
随着 DeepSeek 正式发布 DeepSeek-V4 系列,大模型的工程边界再次被明显推高。该系列基于 MoE 架构,提供了 DeepSeek-V4-Flash 284B 和 DeepSeek-V4-Pro 1.6T 两种规格,同时在推理阶段仅激活数十亿参数,在性能与成本之间取得了新的平衡。配合百万级上下文窗口与全新的注意力优化机制,其在长文本理解、复杂推理以及智能体任务中的表现,已经开始逼近甚至挑战当前主流闭源模型。 从架构设计来看,DeepSeek-V4 不只是简单的参数扩展,而是在多个关键路径上进行了系统性优化。例如混合注意力机制(CSA+HCA)显著降低长上下文推理成本,mHC 结构强化深层网络的稳定性,而 Muon 优化器则提升了训练效率与收敛表现。这些优化技术使得其在长上下文与复杂推理场景中具备更高的性价比。 另一方面,这类超大规模 MoE 模型对对底层硬件与推理引擎的适配能力提出了更高要求。在国产算力环境下,DeepSeek-V4 的稳定运行与性能释放,仍然需要从硬件厂商到推理引擎的持续优化与协同改进。本文基于 GPUStack,提供在昇腾 910B 环境部署 DeepSeek-V4 的实践教程,并给出实际压测性能表现数据,供参考。 GPUStack 是一个开源 GPU 集群管理与 AI 模型服务平台,旨在高效部署 AI 模型。它可以配置并编排多种推理引擎——如 vLLM、SGLang、TensorRT-LLM,甚至自定义引擎——以在 GPU 集群上实现最佳性能。核心功能包括多异构 GPU 集群池化调度、可插拔推理引擎架构、Day 0 模型支持、性能优化配置(低延迟/高吞吐)、以及企业级运维能力,如故障恢复、负载均衡、监控与权限管理。 GPUStack 可以帮助我们高效地管理 vLLM、SGLang 等推理引擎,并推动模型从部署走向企业生产落地运营。在开始部署 DeepSeek V4 之前,首先完成 GPUStack 控制面的安装,并将 昇腾 NPU 节点纳入管理。 GPUStack 以容器方式运行,因此需要提前准备好容器运行环境(如 Docker、Podman 或 Kubernetes)。本文以 Docker 为例进行说明。 在各节点上安装 Docker,确保服务已正常启动: GPUStack Server 无需依赖 GPU,可运行在普通 CPU 节点上,也可运行在 GPU 节点。本文以八卡昇腾 910B2 为实验环境,在该节点上启动 GPUStack Server 容器: 关键参数说明: 容器启动后,可以通过日志确认服务是否正常运行: 打开浏览器访问:http://<Server 主机 IP>:80 使用默认账号登录: 登录后,首先创建一个 Docker 类型的集群,用于统一管理后续接入的 GPU 节点。 在集群创建完成后,可以接入 昇腾 NPU 节点。 在添加节点之前,先完成基础环境检查。 在目标节点上执行以下命令: 该命令会显示当前安装的 NPU 驱动版本。建议驱动版本 ≥ 25.5,以保证对 DeepSeek V4 模型的兼容性和稳定性。 执行以下命令检查 Docker 是否正确配置了 Ascend Docker Runtime: 未安装请下载并安装:https://gitcode.com/Ascend/mind-cluster/releases/download/v7.... 在 GPUStack 控制台中,选择添加节点(Worker),并复制系统生成的接入命令,在目标节点执行。 该命令本质上会启动一个 Worker 容器,并自动注册到 Server。 节点接入后,可以在节点上查看容器日志: 同时,在 GPUStack 控制台中也可以看到节点状态是否为 Ready。 至此,GPUStack 的控制面已成功部署,昇腾 NPU 节点也顺利接入集群,并能够正常采集设备名称、索引、厂商信息、温度、利用率及显存使用等指标。接下来即可在该环境中部署具体的推理服务。 GPUStack 支持可插拔的推理引擎架构,允许自定义推理后端及其版本,用于引入 GPUStack 未内置的 vLLM / SGLang / MindIE 版本,或接入其他自定义推理引擎镜像。 为了部署 vLLM 在推理后端菜单,编辑 vLLM,在版本配置中选择添加版本,添加一个新的 vLLM 版本,指向 vLLM Ascend 官方镜像: 自定义添加 vLLM Ascend 0.13.0rc3 配置如图所示: 注意: 也可以切换到 YAML 模式,直接使用以下的 YAML 导入(公众号复制可能存在特殊格式,可以发送给 AI 重新整理 YAML 格式): vLLM Ascend 已提供关于 DeepSeek V4 模型的部署与使用教程,详情可参考: https://docs.vllm.ai/projects/ascend/en/v0.13.0/tutorials/Dee... 以下将介绍在 GPUStack 上部署 DeepSeek V4 Flash 模型的配置流程。 联网环境:在 GPUStack 控制台 - 部署菜单下,选择 部署模型 → ModelScope,直接搜索 离线环境:可从 GPUStack 控制台 - 模型文件菜单中,选择已添加的 vLLM 使用以下后端参数和环境变量启动,后端参数支持单行或多行形式(注意已设置 TP 8 DP 1,请确保有八块 NPU 可分配;其它环境请根据实际情况调整并行策略): 等待模型启动时,可以在操作中点击查看日志,实时观察启动过程: 当模型实例状态显示为 Running 时,说明模型已经成功启动,可以进行后续的测试。 单请求 31 Tokens/s,考虑初始支持,后续还有优化空间: 通过 GPUStack 提供的基准测试功能对模型进行一键性能压测,此处选择吞吐模式: 压测结果如下: GPUStack 社区聚焦 AI 基础设施与大模型实践。 社区中持续分享真实环境下的部署经验、问题排查案例,以及推理引擎、算力管理和系统架构相关讨论。 欢迎扫码加入 GPUStack 社区,与更多关注 AI Infra 与大模型推理实践的伙伴一起交流、学习与分享。 若群聊已满或二维码失效,请访问以下页面查看最新群二维码:GPUStack 安装与集群初始化
准备容器环境
docker info启动 GPUStack Server
sudo docker run -d --name gpustack \
--restart unless-stopped \
-p 80:80 \
--volume gpustack-data:/var/lib/gpustack \
swr.cn-south-1.myhuaweicloud.com/gpustack/gpustack:v2.1.2 \
--debug --bootstrap-password GPUStack@123docker logs -f gpustack访问控制台并初始化
添加 昇腾 NPU Worker 节点
(1)驱动版本检查
npu-smi info(2)Ascend Docker Runtime 检查
sudo docker info 2>/dev/null | grep -q "ascend" && echo "Ascend Container Toolkit OK" || (echo "Ascend Container Toolkit not configured"; exit 1)docker info 输出中查找是否存在 ascend 运行时配置。(3)接入 Worker 节点
(4)验证 Worker 状态
docker logs -f gpustack-worker添加自定义 vLLM 和 SGLang 版本
DeepSeek V4 模型,需要添加 vLLM Ascend 最新发布的 v0.13.0rc3 版本。配置 值 版本 0.13.0rc3 镜像名称 quay.io/ascend/vllm-ascend:v0.13.0rc3 框架 CANN 覆盖镜像入口命令(ENTRYPOINT) vllm serve 执行命令 {{model_path}} --host {{worker_ip}} --port {{port}} --served-model-name {{model_name}} backend_name: vLLM
version_configs:
0.13.0rc3-custom:
image_name: quay.io/ascend/vllm-ascend:v0.13.0rc3
entrypoint: vllm serve
run_command: >-
{{model_path}} --host {{worker_ip}} --port {{port}} --served-model-name
{{model_name}}
env: {}
custom_framework: cann注意:如果当前已经有其它自定义版本,需要将其它自定义版本一同添加在 version_configs 中一起导入。
部署 DeepSeek V4 模型
Eco-Tech/DeepSeek-V4-Flash-w8a8-mtp 模型并进行部署,具体步骤参考下方。Eco-Tech/DeepSeek-V4-Flash-w8a8-mtp 模型进行部署。DeepSeek-V4-Flash-w8a8-mtp 模型进行部署。vLLM0.13.0rc3-custom# 后端参数
--gpu-memory-utilization 0.9
--max-model-len 65536
--max-num-batched-tokens 8192
--max-num-seqs 16
--data-parallel-size 1
--tensor-parallel-size 8
--enable-expert-parallel
--quantization ascend
--block-size 128
--async-scheduling
# 注意修改 chat_template.jinja 路径为实际路径
--chat-template /var/lib/gpustack/cache/model_scope/Eco-Tech/DeepSeek-V4-Flash-w8a8-mtp/chat_template.jinja
--additional-config '{"enable_cpu_binding": "true", "multistream_overlap_shared_expert": true}'
--speculative-config '{"num_speculative_tokens": 1,"method": "deepseek_mtp"}'
--compilation-config '{"cudagraph_mode":"FULL_DECODE_ONLY"}'
# 环境变量
USE_MULTI_BLOCK_POOL=1
OMP_PROC_BIND=false
OMP_NUM_THREADS=10
PYTORCH_NPU_ALLOC_CONF=expandable_segments:True
ACL_OP_INIT_MODE=1
TRITON_ALL_BLOCKS_PARALLEL=1模型测试
试验场
基准测试
加入 GPUStack 社区
https://github.com/gpustack/gpustack/blob/main/docs/assets/wechat-group-qrcode.jpg