DeepSeek-V4-Flash (W4A8)

deepseek_v4 架构模型——一个 256-expert MoE,结合 MLA + DSA 稀疏注意力 和原生 MTP speculative head,以 W4A8 形式提供(~151 GB 权重,43 层)。 已在 Ascend 910B4(32 GB/卡) 上通过 Alauda AI 的 InferNex 接口 使用 vLLM-Ascend nightly 引擎完成验证。由于权重需要占用全部 8 张卡, 拓扑为 1 个实例 × TP=8(+ expert parallel),两个 benchmark 场景还分别通过 内部 KServe ingress 和 MaaS gateway(API-key) ingress 进行了驱动。

模型标识

字段
发布方DeepSeek
架构deepseek_v4 — 256-expert MoE(6 experts/令牌 + 1 shared)+ MLA + DSA 稀疏注意力 + 原生 MTP
量化W4A8(~151 GB 权重,43 层);MIT 许可证
模型来源(W4A8)https://www.modelscope.cn/models/gdydems/DeepSeek-V4-Flash-w4a8-mtp

已验证硬件 × 栈

平台引擎版本 / 配置状态
Ascend 910B4 32 GB × 8(1 个实例 × TP=8 + EP)vLLM-Ascendnightly-releases-v0.22.1rc-openeuler(vLLM 0.22.1,CANN 9.0.0)✅ 闭环,2 场景性能测试(n=3),agg-base,双 ingress(KServe + MaaS)
NOTE

发布固定的 nightly nightly-releases-v0.22.1rc-openeuler(与 Qwen3.6-27B 相同的镜像) 包含完整的 deepseek_v4 栈。enable_dsa_cp 被有意设置为 off(上游 DSA-CP index-buffer bug 会导致该构建上的持续 8k MTP decode 崩溃)。Prefix caching 已启用, 但 命中率为 0——DSA 稀疏注意力会按每个 query 选择 KV,因此共享前缀不能直接复用; 它几乎没有额外成本,而相较旧版本的加速来自 nightly 栈本身,而不是 prefix caching。

模型配置

参数
Tensor parallelism (tensor-parallel-size)8
副本(实例)1(= 8 张卡)
Expert parallelism (enable-expert-parallel)on
max-model-len32768
max-num-batched-tokens2048
max-num-seqs4
gpu-memory-utilization0.90(32 GB 卡 KV/activation 平衡)
block-size128
max_tokens(输出,benchmark 固定)128
Quantizationascend(W4A8)
Speculative decoding(MTP)mtp,1 token
Prefix caching已启用,但命中率为 0(DSA 稀疏注意力)

部署规格

仅以 agg-base 方式提供——aggregation,hermes-router 策略为 random。在单个 TP=8 实例下, router 只有一个 endpoint(无实际作用);保留该结构仅为一致性。跨实例 KV store / KV-cache-aware routing (agg-mc-kv不适用:~151 GB 权重会占满全部 8 张卡,因此只能放下一个副本,也没有第二个实例可供共享 KV。

组件agg-base
hermes-router (EPP)✅ 已启动(单 endpoint,无实际作用)
路由策略random
cache-indexer / mooncake KV store—(不适用于单实例)

部署

自包含的 InferNex manifest(engine 内联在 LLMInferenceService + hermes-router preset 中,1 个副本 × TP=8):

base=https://raw.githubusercontent.com/alauda/aml-docs/master/docs/en/plan/validated_models/assets/deepseek-v4-flash-w4a8
# edit namespace / model.uri registry / image tag first, then:
kubectl apply -f $base/deepseek-v4-flash-w4a8-agg-base-llmisvc.yaml

# Internal KServe ingress (no auth):
curl -s http://<gateway>/<namespace>/deepseek-v4-flash-w4a8-agg-base/v1/chat/completions \
  -H 'Content-Type: application/json' \
  -d '{"model":"gdydems/DeepSeek-V4-Flash-w4a8-mtp","messages":[{"role":"user","content":"hello"}]}'

# Product MaaS gateway (OpenAI-compatible, API-key auth + token rate limiting):
curl -s http://<maas-gateway>/v1/chat/completions \
  -H "Authorization: Bearer $MAAS_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"model":"gdydems/DeepSeek-V4-Flash-w4a8-mtp","messages":[{"role":"user","content":"hello"}]}'

Benchmark 结果

闭环 aiperf 0.7.0TP=8 × 1 个副本(8 × 910B4),并发 4,agg-base。 两个场景——① 8k system-prompt 复用和 ② 17.5k multi-turn——各发送 240 个请求, 输出固定为 128 个令牌,n=3(所有运行均为 240/240,零错误)。每个场景都通过两个 ingress 进行驱动: 内部 KServe Service(无认证)和产品 MaaS gateway(Envoy + API-key 认证 + 令牌速率限制——面向客户的 OpenAI endpoint)。 TTFT / E2E 以 ms 计,ITL 以 ms 计,TPS = 总令牌/s。

场景 ①——固定长度 system-prompt 复用(ISL ~8k / OSL 128)

入口TTFT 平均值 (ms)ITL 平均值 (ms)E2E 平均值 (ms)TPS(in+out)
KServe(内部)375890.9153002124
MaaS gateway(API key)387291.4154812099

场景 ②——多轮对话(ISL ~17.5k / OSL 128)

入口TTFT 平均值 (ms)ITL 平均值 (ms)E2E 平均值 (ms)TPS(in+out)
KServe(内部)9789182.1329182189
MaaS gateway(API key)9003175.9313382306
NOTE

如何解读这些结果。 所有运行都在每个实例稳定保持 2 个 in-flight 请求的情况下完成了 240/240, 且零错误(n=3 平均值)。MaaS gateway 与内部 KServe 的差异都在运行间抖动范围内 (场景 ① 在 gateway 上约高出 +1–3%——多出几百毫秒的 hop;场景 ② 的两组 n=3 数据在不同时间采集, 结果又反向偏了几个百分点)。结论是:API-key + 速率限制的 MaaS gateway 在典型请求和长上下文请求上都不会带来 超出噪声范围的可测额外开销,因此可以作为生产入口提供服务。仅解码输出速率为 33 tok/s(场景 ①)/ 16 tok/s(场景 ②); TPS 列表示总令牌(输入 + 输出)口径。MTP speculative decoding 已开启。由于这是单个 TP=8 实例,因此 TPS 不能与本指南中的 2-副本模型直接比较。

WARNING

通过 MaaS gateway 发送长上下文请求时,需要提高网关的 request-body buffer——17.5k 场景(~85 KB streaming body) 超过了默认限制,会一直挂起,直到提高 MaaS gateway 上的 ClientTrafficPolicy.connection.bufferLimit。 内部 KServe ingress 没有此类限制。上面的数值是在完成该修复后得到的。