我们的大模型训练和推理过程的存储解决方案基于YRCloudFile系统,整体架构包含四个核心组件:1)集群管理服务,采用一主多备的高可用架构;2)元数据服务,支持海量小文件场景,我们的元数据集群能够横向水平扩展;3)集群服务,能够水平扩展;4)客户端。相比于基于FUSE的用户态私有客户端,它有更高的性能。在硬件方面,我们能够支持标准x86架构,也支持Arm架构的鲲鹏服务器、海光服务器和飞腾服务器;在数据冗余方面,支持副本的方式,也可以支持低成本的纠删码的方式;在网络方面,支持25Gb、100Gb、200Gb的以太网,以及支持200Gb、400Gb的Infiniband网络,也支持RoCE网络;在协议层面,支持标准的NFS、SMB、S3、HCFS以及私有的POSIX协议。针对大模型训练场景,我们提供了一系列功能和特性,以支持和加速模型的训练过程。其中包括Multi-Channel技术,支撑单节点提供超高性能带宽和IOPS的核心技术。其次是GPU Direct Storage(GDS)技术。随着客户内存的不断增大,传统的缓存技术已经无法满足数据集的存储需求,GDS技术应运而生。还有内核私有客户端,能够减少上下文的切换,能够提供高带宽和IOPS。第四,能够支持400Gb NDR的网络,结合Multi-Channel技术,在x86架构下,提供单节点90GBps的带宽,以及300万IOPS的性能。针对多模态的海量小文件场景,我们提供了分布式元数据集群,单个集群能够支撑千亿级的文件数量。我们线上最大的单一集群包含接近400亿文件,拥有100多个元数据节点,是目前线上最大的单一元数据集群。在功能层面,我们提供了多种功能。第一,智能分层。能够有效地将数据下沉到对象存储中,从而极大地降低成本。即便在提供高性能的情况下,也能够实现低成本。第二,目录级Quota和QoS。为运维人员提供方便的管理工具,同时提供了日审计和回收站功能,使运维同学能更好地应对客户的需求和问题。第三,协议网络支持。近一年来,对多协议网络支持的需求急剧增加。由于GPU卡供应紧张,数据中心构建时出现了异构网络场景,既有InfiniBand网络,又有以太网。在这种情况下,构建多套存储是不现实的,因为存储之间不互通,且会增加成本和管理复杂度。我们提供了多网络协议支持,在同一个集群中可以同时支持InfiniBand和以太网访问,方便数据中心存储设施的构建和管理。GDS技术的最大优势在于能够有效减少CPU和CPU Memory的使用,从而极大地降低了CPU的利用率。在没有GDS技术时,数据的传输路径通常是从网卡拷贝到CPU Memory,涉及多次内存的拷贝。而使用了GDS技术后,数据可以直接从网卡经由DMI方式传输到GPU的Memory里面,减少了内存拷贝的次数,有效降低了CPU的利用率。接下来是一些我们在实验环境和客户现场测得的数据。我们对比了使用GDS和不使用GDS的情况,在带宽和延迟方面都取得了显著的性能提升。具体来说,在带宽方面,使用了GDS后,整体带宽性能提升了近40%;而在延迟方面,我们观察到有50%至60%的性能提升。当然,在低负载情况下,性能提升不太明显,但在高负载情况下,其效果显著。这与GDS的作用相符合。在CPU利用率方面,我们可以看到,在高并发量的情况下,CPU负载显著降低。使用了GDS后,CPU的利用率基本上处于空闲状态。针对推理环节的解决方案,主要在于存储和计算之间的网络瓶颈。由于推理集群通常采用25Gb以太网络,无法像训练集群那样构建200Gb或400Gb的IB网络,因此存储和计算之间的带宽成为一个重要瓶颈。我们推出了客户端缓存池解决方案,该方案在加载模型时充分利用计算节点的本地SSD形成一个大的缓存池。当需要加载模型时,我们首先将模型并发加载到客户端缓存池中,然后再由客户端缓存池将模型加载到GPU中。这样一来,我们有效地解决了启动风暴的问题。随着计算节点规模的增加,缓存池的性能也会相应提升,从而有效地应对启动风暴的挑战。 04.训练推理无法在单一数据中心完成,多云方式带来一系列挑战
之前我们讨论了单一数据中心内的解决方案,然而,由于诸多因素的影响,如卡的采购、资源租赁等,训练和推理往往无法在单一数据中心完成。因此,我们不得不采用多云的方式,但这也带来了一系列挑战。对于大模型厂商而言,通常会将所有数据存放在一个称为“Source of Truth”的数据中心内,而训练集群和推理集群则分布在多个云上,它们之间通过公网或专网连接。训练集群通常需要共享数据,而不是为每个集群提供一份全量数据,这样做成本高且管理复杂。推理集群也需要共享模型数据,以便灵活扩展推理业务。由于边缘数据中心的存储容量有限,我们的训练集群和推理集群都需要按需加载数据。我们面临两个主要特点:共享和按需。在这种情况下,通常会有一个中心的“Source of Truth”数据湖提供对象存储访问。当我们在边缘数据中心进行训练时,需要通过数据编排的方式将数据集按需加载到数据中心。当训练产生模型数据或结束后,我们可以将模型数据导出到数据湖中,而其他推理集群可以根据需要订阅并拉取这些模型数据到各自的集群中。整个架构的基本思路就是这样,所有边缘数据中心都能与数据湖进行连接,数据的流转通过数据编排的方式按需拉取或导回到数据湖中。实现数据的灵活流转,需要具备相应的功能支持。其中,数据加载功能可以让数据在各个平台之间灵活地流动;Dataload功能可以与主流的调度平台对接起来进行数据编排,对接标准的S3,如公有云的OSS、COS、BOS以及开源的对象存储,如Ceph、Minio等。Dataload功能能够关联对象和文件,将对象bucket或者Prefix与文件路径关联起来,并支持多次导入导出;通过API方式,可以按需进行数据流转。为了方便管理员管理,我们提供了查看导入导出进度和历史记录的功能。这些功能不会影响业务对数据的访问,业务仍然可以通过标准的NFS、SMB、POSIX、S3等接口进行访问。当数据发生变化时,例如A集群的数据推送到Source of Truth的数据湖中,其他集群可以通过订阅方式实时感知这些数据的变化。这样,我们可以通过API制定策略,选择是否要更新本地数据。同时,我们还适配了Fluid对数据集进行编排,使用户的访问更加灵活。以上是张文涛演讲内容的完整整理。(本文系网易新闻•网易号特色内容激励计划签约账号【智东西】原创内容,未经账号授权,禁止随意转载。)