使用vLLM多卡部署大模型测试推理性能

当大模型的参数量过大,单张显卡的显存无法装下大模型时,我们不得不考虑使用多卡来部署大模型。vLLM主要通过 Tensor Parallelism (张量并行) 来实现多卡部署,从而解决单卡显存限制。

  • 原理: vLLM 在加载模型时,会将模型中的线性层(如 QKV 投影、FFN)的权重横向切分到集群中的多张 GPU 上。
  • VRAM 占用: 如果您使用 4 张 GPU,每张 GPU 大约只需要存储 1 / 4 1/4 1/4 的模型权重。
  • 用途: 这种方法不仅解决了 VRAM 限制,而且由于计算任务也被并行化,还能显著提高推理吞吐量
  • 限制: 目前 vLLM 的 Tensor Parallelism 仅限于单台机器内部(多张 GPU 在同一个节点上)。

之前使用vLLM测试过3090和4090两张显卡大模型单卡推理的性能比较:

vLLM大模型推理场景显卡性能实测

这里使用vLLM测试下多卡推理场景下3090和4090两张显卡的性能表现。

还是在AI算力租赁平台 晨涧云 分别租用3090显卡和4090显卡的vLLM云容器,实例配置选择两张显卡进行测试。

大模型选择

选择 Qwen3-14B的模型进行测试,3090和4090 都是单卡24G显存,使用两张显卡进行部署。

让大模型帮忙写个测试脚本,控制部署和推理的参数一致:

  • 使用复杂度近似的N个prompts;

  • MAX_TOKENS配置256,让每次请求需要一定的生成时长便于采样显卡的使用指标,减少波动;

  • 选择[1, 4, 8, 16] 4种BATCH_SIZES测试不同并发度下的性能表现;

  • 每轮测试执行3次推理,指标取平均;

  • 同时需要模型预热,消除第一次推理响应延时过大的问题;

  • 显卡的显存占用和GPU使用率指标使用两卡相加的值。

执行测试脚本,查看输出结果:

3090多卡推理测试

vLLM多卡推理-3090

4090多卡推理测试

vLLM多卡推理-4090

测试结果解释

  • Batch Size:一次推理调用的并发prompt数量

  • 平均耗时 (s):多次推理平均响应时长

  • 平均吞吐量 (tokens/s):多次推理平均Token生成速度

  • 平均显存 (MB):多次推理平均显存使用量,两卡相加

  • 平均GPU使用率(%):多次推理平均GPU使用率,两卡相加

3090显卡和4090显卡在多卡模型推理过程中的显存和GPU使用率都比较接近,主要看平均耗时平均吞吐量两个指标:

Batch Size指标双卡 3090双卡 4090对比
1平均耗时(s)5.654.72
1平均吞吐量(tokens/s)45.354.3119.9%
4平均耗时(s)6.154.81
4平均吞吐量(tokens/s)166.5213.0127.9%
8平均耗时(s)6.845.01
8平均吞吐量(tokens/s)291.9398.7136.6%
16平均耗时(s)8.285.47
16平均吞吐量(tokens/s)491.2748.2152.3%
  • 从平均耗时来看,4090在1~8的较低并发度下耗时较为稳定,性能接近线性增长,16并发度下面略微衰减;3090在1~8较低并发度下耗时逐步增加,并且在16并发度下耗时明显增大,性能衰减比4090更加明显。

  • 平均吞吐量指标也能说明相应的情况,对比数据可以看出4090和3090在1~16的并发度下面,差异被逐渐拉大,16并发度下面4090的性能是3090的1.5倍左右。

比较及选择

  1. 4090延迟更稳定:4090在1~8并发度下平均耗时基本接近,4090凭借更强的核心和更大的L2缓存,小并发场景延迟较为稳定。

  2. 4090具备更高吞吐:4090的Tokens/s输出率在高并发下远超3090,效率提升最高可达50%+!这意味着同时服务更多用户,响应更快。

  3. 性价比选择:如果是个人学习/轻度使用,二手的3090性价比无敌;如果是企业级项目部署,希望对外提供服务或者追求极致效率,直接上4090!

### 使用 VLLM 进行GPU部署 为了在GPU上高效部署大型模型VLLM 提供了一套完整的解决方案。这不仅简化了开发者的操作流程,还显著提高了模型推理的速度和效率。 #### 安装依赖项 确保环境中已安装 Python、Ray 库以及最新版本的 VLLM 及其相关组件[^1]: ```bash pip install ray vllm ``` 对于更全面的支持,特别是当计划使用特定功能如 `xformers` 或者来自 ModelScope 的预训练模型时,则需进一步扩展安装列表[^3]: ```bash pip install -U xformers torch torchvision torchaudio triton --index-url https://download.pytorch.org/whl/cu121 pip install modelscope vllm ``` #### 初始化 Ray 集群并启动服务 创建一个简单的脚本来初始化 Ray 并加载目标模型到内存中。此过程会自动检测可用的 GPU 设备数量,并据此分配资源给各个 worker 实例处理请求。 ```python import os from vllm import LLM, SamplingParams # 设置环境变量以启用所有可见的 CUDA 设备 os.environ["CUDA_VISIBLE_DEVICES"] = "0,1,2,3" # 假设有四块 GPU def start_llm_service(model_name='facebook/opt-1.3b'): llm = LLM( model=model_name, tensor_parallel_size=len(os.getenv('CUDA_VISIBLE_DEVICES', '').split(',')), seed=0 ) sampling_params = SamplingParams(temperature=0.7) return llm.generate(["你好"], sampling_params=sampling_params)[0].outputs[0].text if __name__ == '__main__': result = start_llm_service() print(f'Generated text: {result}') ``` 上述代码片段展示了如何指定要使用GPU 列表,并通过设置 `tensor_parallel_size` 参数告知 VLLM模型切分至少个设备上去运行。这里假设拥有四块 GPU,在实际应用中应根据实际情况调整该参数值。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值