GPU 云服务器的软件系统设计和实践
2025/3/11 16:57:00

  当我们在云上部署 DeepSeek 系列大模型的时候,可以选择多机或者单机 8 卡的 GPU 裸金属实例运行满血版,或者选择单卡和双卡 GPU 虚拟机运行蒸馏版。这些 GPU 云服务器实例能否发挥多机、多卡、单卡的性能,将直接影响部署的 DeepSeek 服务的吞吐能力。除此之外,在训练场景中这些实例的相关能力能将直接影响训练时长。本文将针对 GPU 云服务器的软件系统设计和实现进行概述,并分享百度智能云的新实践成果。
 
  1.GPU 处理数据流程
 
  在具体讨论 GPU 云服务器的软件设计工作之前,我们首先来看下 GPU 在服务器中是如何工作的。下图是一个简化的 GPU 处理数据的流程图,以便梳理一下影响 GPU 云服务器性能的关键因素。从图中我们可以看到,数据处理分为以下几个步骤:
 
  第 1 步,所有数据都需要从网络或者存储中读取到内存。这里就涉及到网络或者存储的传输性能。
 
  第 2 步,当读取到内存之后,CPU 需要从内存中读取相关数据进行预处理,然后将预处理后的数据再写回到内存中。这个过程就涉及到内存自身的带宽性能和 CPU 的处理性能。
 
  第 3 步 ,数据需要从内存拷贝到 GPU 的显存中。这就涉及到 GPU 和系统内存之间的数据传输性能,一般称之为 H2D(Host To Device)。
 
  第 4 步,GPU 从 GPU 显存中读取相关的数据进行运算。此时主要涉及 GPU 的显存带宽和 GPU 的计算性能。如果数据比较庞大,单个GPU无法处理,就涉及到多个 GPU 的处理,那么这里就涉及到多 GPU 之间的集合通信。
 
  第 5 步,如果是单机多卡的情况,就涉及到 GPU 在机内之间数据传输的性能;如果是多机多卡的场景,那么就涉及到多节点之间的网络传输性能。
 
  第 6 步,当 GPU 运算完成后,数据需要从 GPU 的显存再拷贝到内存中。这里也涉及到 GPU 和系统内存之间的数据传输性能。一般称之为 D2H(Device To Host)。
 
  我们在设计 GPU 云服务器时,需要综合考虑上面 GPU 数据处理链路的每一个环节,然后结合业务特点和使用成本,进行 GPU 云服务器的设计。
 
  2.GPU 云服务器设计的层次划分
 
  谈到 GPU 云服务器的设计,我们一般分为了 4 个层次。下图展现了这个层次结构,涉及到硬件和软件的多个层面。
 
  首先从下面来看,主要是 GPU 云服务器底层基础技术组件,包括如硬件选型、拓扑结构、GPU 互联和虚拟化技术。这些技术不仅决定了单卡运行的效率,也会影响上层多卡通信的效率。
 
  向上一层是多卡通信方式。此时我们需要考虑硬件和软件的支持程度,比如是采用共享内存、P2P 、NVLink 还是 GDR 结构,每一种结构都需要考虑到对应的硬件和软件实现。比如有的软件不支持 P2P,此时我们可能就需要退回到共享内存的方式。如果涉及到大模型就需要采用多机多卡,此时还涉及到 RDMA 网络的通讯。
 
  再上一层是集合通信库,即在多卡通信的场景下,我们需要考虑如何提升集合通信的性能,一般会各种 CCL (Collective Communications Library )的通信库,这些库会基于 GPU 卡的互联技术和软件支持,来进行合理的选路。一般来说会先探测出当前的 GPU 能进行哪些通信(比如支持 P2P 或者支持共享内存),然后根据该结果进行合理的选路,并通过合适的通信算法,大化提升集合通信的性能。
 
  再往上就是 AI 框架。AI 框架依赖于集合通信的性能以提高 AI 计算的能力。
 
  下面我们将详细叙述底部的 2 个层次如何影响到 GPU 云服务器设计。
 
  2.1.GPU 云服务器基础技术
 
  首先来看下 GPU 云服务器的底层实现技术,这关系到 GPU 云服务器性能的基础,通常包括如下几方面:
 
  硬件选型:选择合适的硬件,包括 CPU,内存,GPU,网络和存储等。
 
  拓扑结构,包括实际的硬件拓扑。如果 GPU 云服务器采用虚拟化技

下一页
返回列表
返回首页
©2025 云计算世界-云计算资料和交流中心 电脑版
Powered by iwms