跳到内容

DeepSeek-V3.2-Exp 使用指南

简介

DeepSeek-V3.2-Exp 是一个稀疏注意力模型。其主要架构与 DeepSeek-V3.1 相似,但增加了稀疏注意力机制。

安装 vLLM

source .venv/bin/activate
uv pip install -U vllm --torch-backend auto
uv pip install git+https://github.com/deepseek-ai/[email protected] --no-build-isolation # Other versions may also work. We recommend using the latest released version from https://github.com/deepseek-ai/DeepGEMM/releases

注意:DeepGEMM 在两个地方使用:MoE 和 MQA logits 计算。对于 MQA logits 计算是必需的。如果您想禁用 MoE 部分,可以在环境变量中设置 VLLM_USE_DEEP_GEMM=0。一些用户报告称,在使用 VLLM_USE_DEEP_GEMM=0 时性能有所提升,例如在 H20 GPU 上。如果您想跳过较长的预热时间,禁用 DeepGEMM 也可能有所帮助。

启动 DeepSeek-V3.2-Exp

在 8xH200 (或 H20) GPU 上提供服务 (141GB × 8)

使用推荐的 EP/DP 模式

vllm serve deepseek-ai/DeepSeek-V3.2-Exp -dp 8 --enable-expert-parallel

使用张量并行

vllm serve deepseek-ai/DeepSeek-V3.2-Exp -tp 8

在 8xB200 GPU 上部署

与上面相同。

目前仅支持 Hopper 和 Blackwell 数据中心 GPU。

准确性基准测试:

lm-eval --model local-completions --tasks gsm8k   --model_args model=deepseek-ai/DeepSeek-V3.2-Exp,base_url=http://127.0.0.1:8000/v1/completions,num_concurrent=100,max_retries=3,tokenized_requests=False

结果

local-completions (model=deepseek-ai/DeepSeek-V3.2-Exp,base_url=http://127.0.0.1:8000/v1/completions,num_concurrent=100,max_retries=3,tokenized_requests=False), gen_kwargs: (None), limit: None, num_fewshot: None, batch_size: 1
|Tasks|Version|     Filter     |n-shot|  Metric   |   |Value |   |Stderr|
|-----|------:|----------------|-----:|-----------|---|-----:|---|-----:|
|gsm8k|      3|flexible-extract|     5|exact_match|  |0.9591|±  |0.0055|
|     |       |strict-match    |     5|exact_match|  |0.9591|±  |0.0055|

GSM8K 得分 0.9591 非常好!

然后我们可以使用 num_fewshot=20 来增加上下文长度,测试模型是否能处理更长的上下文

lm-eval --model local-completions --tasks gsm8k   --model_args model=deepseek-ai/DeepSeek-V3.2-Exp,base_url=http://127.0.0.1:8000/v1/completions,num_concurrent=100,max_retries=3,tokenized_requests=False --num_fewshot 20

结果

local-completions (model=deepseek-ai/DeepSeek-V3.2-Exp,base_url=http://127.0.0.1:8000/v1/completions,num_concurrent=100,max_retries=3,tokenized_requests=False), gen_kwargs: (None), limit: None, num_fewshot: 20, batch_size: 1
|Tasks|Version|     Filter     |n-shot|  Metric   |   |Value |   |Stderr|
|-----|------:|----------------|-----:|-----------|---|-----:|---|-----:|
|gsm8k|      3|flexible-extract|    20|exact_match|  |0.9538|±  |0.0058|
|     |       |strict-match    |    20|exact_match|  |0.9530|±  |0.0058|

GSM8K 得分 0.9538 也非常不错!

性能优化技巧

  1. 内核主要针对 TP=1 进行了优化,因此建议在此模型下使用 EP/DP 模式运行,即 DP=8, EP=8, TP=1,如上所示。如果遇到任何错误或卡顿,可以尝试使用张量并行。简单的张量并行可以工作并且更稳定,但性能不是最优。
  2. 默认配置使用自定义的 fp8 kvcache。您也可以通过指定 kv_cache_dtype=bfloat16 来使用 bfloat16 kvcache。默认情况允许在 kvcache 中缓存更多 token,但会产生额外的量化/反量化开销。总的来说,我们建议短请求使用 bfloat16 kvcache,长请求使用 fp8 kvcache。

如果您遇到类似 CUDA error (flashmla-src/csrc/smxx/mla_combine.cu:201): invalid configuration argument 的错误,可能是因为 batchsize 太大。尝试使用 --max-num-seqs 256 或更小的值(默认值为 1024)。

其他使用技巧,例如启用或禁用思考模式,请参考 DeepSeek-V3.1 使用指南。

额外资源