#环境参数#

H20 141G 单机8卡,CUDA 12.4,vLLM v0.8.3,flashinfer v0.2.2

#服务化命令#

基于知乎大神的推荐出装与前期H800双机生产环境测试,在H20上开启EP、MLA等核心优化参数,实现推理吞吐性能最优吞吐量破10000tokens/s,VLLM 0.8.1版本驱动下的Deepseek-r1 671Bhttps://zhuanlan.zhihu.com/p/1887527788514346095?utm_campaign=shareopn&utm_medium=social&utm_psn=1887760069761938542&utm_source=wechat_session

VLLM_ATTENTION_BACKEND=FLASHMLA \
VLLM_TEST_ENABLE_EP=1 VLLM_USE_V1=1 \
vllm serve /DS_test \
--served-model-name deepseek-r1 \
--enable-prefix-caching \
--max-model-len 131072 \
--gpu-memory-utilization 0.95 \
--tensor-parallel-size 8 \
--enable-chunked-prefill \
--enable-reasoning \
--reasoning-parser deepseek_r1 \
--max_num_batched_tokens 32768 \
--block-size 64 \
--port 8000 

#FlashMLA依赖环境配置 

vLLM v0.8.3框架未与flashinfer v0.2.3及以上版本完成适配,且flashinfer自身不支持向下兼容,建议回退到v0.2.2版本 

[topk_topp_sampler.py:38] Currently, FlashInfer top-p & top-k sampling sampler is disabled because FlashInfer>=v0.2.3 is not backward compatible. Falling back to the PyTorch-native implementation of top-p & top-k sampling.

 #NVIDIA GPU架构

 启动服务化过程中会出现 TORCH_CUDA_ARCH_LIST is not set的问题

明确该参数后, PyTorch 在构建过程中可针对CUDA 架构版本进行优化,实现性能5%~10%提升

python -c "import torch; print(torch.cuda.get_device_capability())" ##获取参数
export TORCH_CUDA_ARCH_LIST="9.0" ##配置环境变量

 # 测试结果

采用vLLM内置benchmark脚本进行测试,按照短对话(128输入、512输出),长对话(4k输入、1k输出)进行吞吐性能测试

   vllm bench serve \
        --model "/DS_test" \
        --seed 12345 \
        --served-model-name deepseek-r1 \
        --dataset-name random \
        --request-rate inf \
        --random-input-len 128 \
        --random-output-len 512 \
        --num-prompts 1024

开启MLA后,吞吐性能提升测试结果如下:

H20-DeepSeekR1性能测试
测试组并发数总吞吐(t/s)单用户吞吐(t/s)首字延迟(ms)字间时差(ms)性能提升
短输入输出-1并发132.06 32.06 71.09 31.11 0.470%
短输入输出-2并发268.46 34.23 104.95 29.03 -0.117%
短输入输出-4并发4124.31 31.08 138.10 31.95 -0.249%
短输入输出-8并发8199.43 24.93 211.80 39.57 -0.484%
短输入输出-16并发16335.49 20.97 257.52 47.25 8.929%
短输入输出-32并发32485.13 15.16 362.53 57.69 0.647%
短输入输出-64并发64803.36 12.55 507.49 71.89 3.390%
短输入输出-128并发1281379.88 10.78 813.57 80.54 1.527%
短输入输出-256并发2562210.55 8.63 1647.61 99.48 -0.797%
短输入输出-512并发5123242.10 6.33 4058.10 142.88 -1.824%
短输入输出-1024并发10244093.34 4.00 7883.23 236.33 -1.066%
长输入输出-1并发131.60 31.60 139.22 31.54 0.349%
长输入输出-2并发266.25 33.13 366.97 29.83 -0.015%
长输入输出-4并发4117.83 29.46 793.19 33.17 -0.582%
长输入输出-8并发8189.19 23.65 1075.26 41.22 0.772%
长输入输出-16并发16320.77 20.05 2139.90 47.74 8.872%
长输入输出-32并发32447.60 13.99 4208.34 79.27 2.015%
长输入输出-64并发64666.81 10.42 6661.36 167.95 1.115%
长输入输出-128并发128909.42 7.10 11280.51 237.09 3.948%
长输入输出-256并发256781.70 3.05 94509.18 275.17 -4.569%
长输入输出-512并发512725.57 1.42 257414.50 332.60 0.012%
长输入输出-1024并发1024723.96 0.71 591347.34 273.59 0.035%

####后续调优方向

当前测试场景,开启MLA优化后,整体吞吐性能提升不明显,且随着对话长度增长,整体吞吐性能下降明显。

后续考虑通过torch插件,打印prefill阶段更详细的日志信息,确认vLLM框架下MLA优化器的工作效率。

(当前服务侧日志信息)

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐