|
在当前的大模型部署与应用中,计算资源的选择与优化至关重要。本报告通过在H20算力设备上的部署与测试,详细探讨了H20与4090在大型语言模型推理中的性能表现。通过对吞吐量、响应时间、token生成时间等关键指标的评估,旨在为高效部署提供有力的数据支撑和优化建议。 Ubuntu22.04,配备miniconda和pytorch,cuda版本12.4,vLLM框架 vLLM是一个开源且易于使用的大模型(LLM)推理加速框架,我们用vLLM部署训练好的大模型。vLLM通过PagedAttention高效地管理attention中缓存的张量,实现了比HuggingFace Transformers高14-24倍的吞吐量。 vLLM具有以下特点:
先进的服务吞吐量; PagedAttention对注意力Keys和Values存储的有效管理; 连续批处理传入请求,即continous batching,而不是static batching; 使用CUDA/HIP图快速执行模型; 支持张量并行推理和流式输出; 兼容 OpenAI 的接口服务; 与 HuggingFace 模型无缝集成。
测试大模型在H20上的表现,包括吞吐量,单个token花费的时间,以及token之间的延迟和响应速度等。 与4090相比,H20的吞吐量更高,延迟更低,响应更快。 用vllm的benchmark,测试8B,15B和34B的模型在4090和H20上的性能。 申请H20 8卡算力 24小时的实例; 下载llama3.1-8B-instruct、llama3-15B-stocktest、Yi-34B-Chat; 用vllm host不同的模型后,运行vllm benchmark脚本进行评测,记录结果; 在4090上重复步骤2、3,记录结果。
安装vllm后,nvidia-cublas-cu12版本为12.1.3.1。这一版本在4090上没有问题,但是在H20上会报错,升级后解决。 pipinstallnvidia-cublas-cu12==12.4.5.8 从huggingface上下载模型,没有代理可以从mirror上下载,或者下载到本地再scp传上去: https://hf-mirror.com/meta-llama/Meta-Llama-3.1-8B-Instruct https://huggingface.co/athirdpath/Llama-3-15b-StockTest https://huggingface.co/01-ai/Yi-1.5-34B-Chat https://huggingface.co/01-ai/Yi-34B-Chat-8bits
修改tp、pp、--enable-prefix-caching 等参数: vllmserve/root/data/Meta-Llama-3.1-8B-Instruct--dtypeauto\--host0.0.0.0--port8007--tensor-parallel-size1--pipeline-parallel-size1--disable-log-requests\ pythonbenchmarks/benchmark_serving.py\--host0.0.0.0\--port8000\--backendvllm\--modelMeta-Llama-3.1-8B-Instruct\--dataset-namesharegpt\--dataset-path/home/cuiyuxin/scripts/vllm/ShareGPT_Vicuna_unfiltered/ShareGPT_V3_unfiltered_cleaned_split.json 对于34B的模型,4张4090才可以跑起来,1张H20就足够。 4090:496.97 s; H20: 233.22 s。 H20整体花费的时间约为4090的1/2。 测试vllm的其他参数: use-v2-block-manager:响应速度快了一点,token间延迟低了一点(P99 ITL降低10ms左右),但吞吐量稍微降低(3个token左右)。 enable-prefix-caching:吞吐量变高(25个token左右),响应速度降低,延迟变长。 disable-custom-all-reduce:吞吐量变高,响应速度降低,延迟变长。 enable-chunked-prefill :吞吐量没有明显变化,响应速度变高,延迟降低(P99 ITL降低一半)。 max-num-batched-tokens :值为32768时吞吐量最高,对响应速度和延迟没有明显影响。
|