DP基本概念#
DP在推理场景下的核心思想,在多个 GPU/节点上完整复制同一个模型权重,每个副本独立处理不同的请求或批次,从而近似线性提升吞吐。与训练中的 DP 需要梯度聚合不同,推理 DP 没有参数同步,通信负担主要来自调度、路由、指标与可选的缓存协同。
具体来说
- 每个 GPU/设备都拥有模型的完整副本
- 输入数据被分割成多个批次,通过负载均衡分配给不同设备
- 各设备独立进行前向推理
- 每个设备产生各自批次的输出结果
在DP部署方式下由于单卡的计算效率基本保持不变,因此吞吐提升近似是线性:理论上2 张卡就是 2 倍吞吐,4 张卡就是 4 倍,以此类推。
在大规模部署DP的时候,由于整体可支持的吞吐翻倍,API服务器需要面临成倍的压力,因此API服务器(Tokenize等预处理)可能会成为系统瓶颈。vllm可以使用--api-server-count命令行选项来扩展,最终暴露给用户的是一个Endpoint,在内部实现API服务器的扩展。