360智算中心:万卡GPU集群落地实践

360智算中心是一个融合了人工智能、异构计算、大数据、高性能网络、AI平台等多种技术的综合计算设施,旨在为各类复杂的AI计算任务提供高效、智能化的算力支持。360智算中心不仅具备强大的计算和数据处理能力,还结合了AI开发平台,使得计算资源的使用更加高效和智能化。

360内部对于智算中心的核心诉求是性能和稳定性,本文将深入探讨360智算中心在万卡GPU集群中的落地实践过程,包括算力基础设施搭建、集群优化、AI开发平台建设、以及训练和推理加速的实现。

01

基础设施建设

1.1 服务器选型

以A100/A800为例,主机内拓扑采用如下

  • 2片CPU

  • 2张存储网卡(负责带内管理、访问存储)

  • 4块PCIe Gen4 Switch 芯片

  • 6块NVSwitch 芯片

  • 8块GPU芯片

  • 4张IB网卡

09e4ff71cfa5f3342a3413b7bbdc2bf4.jpeg

2张存储网卡采用的是25Gb/s的网卡,通过PCIe直连CPU,主要有2个用途,第一个是带内管理,如ssh登录、监控采集等,第二个是访问分布式存储,如读取训练数据、写Checkpoint等。大语言模型训练过程中,对于文本类数据读取量级要求并不高,且一般都会采用异步加载的方式,此时25Gb/s的网卡带宽可以满足需求。但是模型训练过程中保存checkPoint时,会有瞬时大量写流量,此时25Gb/s的网卡会成为瓶颈,阻塞训练的正常进行。为了平衡成本与性能的问题,我们内部采用了软硬件结合的方案,首先两张网卡采取bond4的网卡绑定方式,可以将整体带宽提高到50Gb/s,虽然牺牲了一定的容错能力,但是极大提高了网络的吞吐量。另外我们也在训练框架层做了2个方面的优化,第一个优化是通过分布式的方式存储checkpoint,将整个模型的checkpoint部分分别在不同的节点上保存以减少网卡的压力。第二个优化是多阶段异步保存,第一个阶段将模型与优化器从显存拷贝到内存,不阻塞模型的训练,第二个阶段将内存中的模型拷贝到分布式存储,其中第一个阶段结束后就可以继续训练了,第二个阶段可以在后台异步进行。软件层的优化主要是在基于网卡受限的场景下,通过减少checkpoint保存时间最大化GPU有效训练时长,最后经过验证,智脑7B的模型保存时间从最开始的383s降低到5s,性能提升约70倍。

8块GPU通过6块NVSwitch芯片全互联,在A100中每块GPU与每块NVSwitch芯片由2条双向25GB/s的NVLink3连接,所以每块GPU共有12条双向25GB/s的lane,即12 25 2 = 600GB/s。A800在NVLink这里做了阉割,只有8条,所以变成了8 25 2 = 400GB/s,很多人都担心在大规模分布式训练时A800的NVLink会成为瓶颈,我们经过多次内部验证,至少在跑千卡训练任务时,NVLink并不是瓶颈。

ee9399fbe46b3aae5bef0fa98c0966bc.png

我们内部采用的是4张200Gb/s 的Mellanox CX6网卡,采用200Gb/s网卡的原因是同主机GPU与相邻的网卡之间通过PCIe Gen4 Switch芯片通信,PCIe Gen4 x16的通信带宽是单向32GB/s,网卡的通信性能是200Gb/s = 25GB/s,接近PCIe的通信性能,如果采用400Gb/s的CX7网卡,此时受限于PCIe Gen4的带宽,CX7的网卡性能很难发挥出来。NVIDIA推荐的单台A100配备8张CX6网卡,我们经过验证和调研,如上图所示,Megatron-LM在32台A100节点上跑7.5B模型的时候,4张网卡单次迭代时间是2张网卡一半,但是8张网卡相比于4张网卡提升非常小,因此为了节约成本,我们采用了4网卡的方案。硬件拓扑为每块PCIe Gen4 Switch配备一张网卡,与之相邻的2块A800可以启用GPU Direct RDMA通信,可以通过nvidia-smi topo -m佐证查看,经过实际验证,开启了GDR后大模型训练速度最高可以提升50%。

1.2 网络建设

传统的数据中心网络一版聚焦在对外提供服务的流量模型设计,流量主要是数据中心与外部流量交互,即以南北向流量(数据中心外的流量)为主,东西向流量(数据中心内部流量)为辅。而智算中心的流量则以东西向流量为主,南北向网络为辅。

### 智算中心的建设方案与技术架构 #### 1. **智算中心的整体建设方案** 智算中心的建设通过领先的体系架构设计,涵盖了多个维度的关键技术支持。具体而言,它以算力基建化为核心主体,辅以算法基建化为引领方向,同时依靠服务智件化来提升用户体验,并以设施绿色化作为可持续发展的基础支持[^1]。 这种全面的设计理念使得智算中心能够从基础设施搭建、硬件设备选型、软件环境配置以及高级算法研发等多个层面展开工作,确保整个系统的稳定性和高效性。 --- #### 2. **AI计算中心的技术架构** ##### (1)**核心功能模块** 为了应对不同行业的多样化需求,智算中心会在其AI平台上预先成多种类型的行业算法模型。这些模型覆盖了诸如实例分割、目标检测、边缘检测、图像分类等领域,并针对特定应用场景进行了性能优化[^2]。这不仅降低了企业的开发成本和技术门槛,还显著加快了智慧应用的实际落地速度。 ##### (2)**网络通信层** 在网络通信方面,InfiniBand网络因其出色的性能表现而成为首选之一。此网络利用专用适配器或交换机完成高效率的数据传递任务,具备良好的可扩展特性,可以灵活适应各种复杂的网络结构变化。特别是在处理大规模并行运算时,如HPC超级计算机群组中的端到端连接场景下,InfiniBand展现出了无可比拟的优势[^3]。 --- #### 3. **典型部署案例——360智算中心** 以360智算中心为例,该机构采用了一种基于GPU群的独特架构形式来进行实际操作管理。这一模式充分利用了现代图形处理器的强大计算能力,为企业级用户提供了一个高度定制化的开放服务平台。借助于母公司丰富的资源积累和技术沉淀,“360智汇云”成功实现了数据价值的最大挖掘潜力释放过程,真正做到了让每一份信息都能发挥出应有的作用[^4]。 以下是部分代码示例展示如何初始化一个简单的 GPU 群用于深度学习训练: ```python import torch.distributed as dist from torch.nn.parallel import DistributedDataParallel as DDP def setup_gpu_cluster(rank, world_size): """设置分布式GPU环境""" dist.init_process_group(backend='nccl', init_method='env://', rank=rank, world_size=world_size) def cleanup(): """清理进程组""" dist.destroy_process_group() class Model(torch.nn.Module): def __init__(self): super(Model, self).__init__() # 定义神经网络层... if __name__ == "__main__": local_rank = int(os.environ['LOCAL_RANK']) setup_gpu_cluster(local_rank, WORLD_SIZE) model = Model().to(local_rank) ddp_model = DDP(model, device_ids=[local_rank]) optimizer = torch.optim.SGD(ddp_model.parameters(), lr=0.001) loss_fn = nn.CrossEntropyLoss() for epoch in range(EPOCHS): outputs = ddp_model(inputs) loss = loss_fn(outputs, labels) optimizer.zero_grad() loss.backward() optimizer.step() cleanup() ``` 上述脚本展示了在一个典型的多节点环境中启动 PyTorch 的 DDP (Distributed Data Parallel) 训练流程的方法。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值