AI infra:从零起步到万卡AI集群数据中心。
作者 | 时间 |
王飞龙 | 2024年9月17日星期二(创建) |
自谷歌的大佬们发布 Transformer 模型以来。
中文可以看看:
神经网络算法 —— 一文搞懂Transformer !!-腾讯云开发者社区-腾讯云 (tencent.com)
AI就爆发了,AI infra 的基础设施就成了算力的军备竞赛。
首先要明白的是,AI集群的目标是把大量的GPU整合成一个超大的芯片,所以大带宽和低时延是最终的追求。如果目标不明确,就会越研究越懵逼被带偏了。
此论文研究的是AI集群的设计和搭建。
首先,现代计算机架构都是冯诺依曼结构,而现代CPU又为了结合成本和速度,在理论基础上加上了缓存这个东西。我们以E3 1231V3 和 DDR3 内存为例:
缓存 | 速率 | 时延 |
L1 Cache (read) | 892.74GB/s | 1.1ns |
L2 Cache (read) | 338.62GB/s | 3.2ns |
L3 Cache (read) | 175.57GB/s | 12.0ns |
内存 (read) | 18.24GB/s | 63.1ns |
由此可见内存和缓存的读写速度和时延差别有多大,而CPU缓存又及其娇贵,大小才几十MB,一级缓存设置是KB级。
那是怎么解决这个问题的呢?
根据马太效应,当一个程序执行时,绝大部分的指令都是重复的,而且读取数据的时候只要把程序附近的数据一起预读进CPU缓存(就是你们大学学硬件的时候老师说的寄存器),那么最少95%以上的数据都能读到,剩下的只有在运行时通过CPU中断去从内存里面读了,所以这也是为啥频繁切换任务对于程序性能影响非常大的原因,因为每次切换都要去读取内存数据到缓存中。
讲上面这个例子是为了引入下面的问题分析。其实很多计算机领域的硬件和方案设计都借鉴了上面的这种缓存方案。
接下来我们设计一个从0开始到建设万卡集群的演进方案,设计时需要考虑方案可行性,供应链稳定,成本等各个方面。
1、PCI总线
自从intel这个老六统治了X86服务器生态以来,躺着十几年挤牙膏终于现在被打得奄奄一息了,不过PCI这个历史问题还是被intel把持,导致CPU和外部设备的通信带宽一直被PCI带宽限制,目前的最新量产pci5.0 每条通道理论速率为 4GB/s,因为PCI的编码规则要浪费20%的字节。所以实际可用的带宽为3.2GB。400Gbit 的网卡需要pci5.0x16(注意Gbit 和 GB 的换算为1GB等于8Gbit)。
但是intel这个老六与其说在卖CPU,不如说在卖PCI通道。例如家用级芯片的PCI通道数才给20条(英特尔® 酷睿™ i9 处理器 14900K),插个NVME硬盘加个显卡就没得用了。服务器CPU贵十几倍,然后PCI也才80条(英特尔® 至强® CPU Max 9462 处理器)。相比而然AMD EPYC™ 给到了128条。而且内存通道数也比英特尔大,内存的吞吐速率也大于英特尔,所以活该INTEL倒闭。
CPU | 英特尔® 至强®Max 9462 | AMD EPYC™ 9754 |
PCI规格 | pci5.0x80 | PCIe® 5.0 x128 |
内存通道数 | 8 | 12 |
内存带宽 | 64 GB | 460.8 GB/ |
市场价格 | $7995.00 | $7,998.95 |
价格差不多,AMD要比Intel大方的多,所以选AMD没错。为什么只有比对一款CPU?Because CPU这个东东啊,你别看每一代发布它都有一堆型号,其实它就是一个产品没有区别。为何会有不同的核心不同的性能呢?你去江湖上打听打听什么叫做i9和i3是一条生产线。CPU生产是在硅晶体提纯后的晶圆上光蚀刻出来的,原理上就是通过无数的凸透镜叠加将电路刻到纳米级别,说起来简单做起来就难了。所以同一个晶圆体上的命好的就是高端CPU I9,命不好的在晶圆边缘的大概率就是I3甚至奔腾了。更有甚者I9卖不好直接划一刀,屏蔽几个核心当I5卖,服务器也一样,所以同一代产品拿一个型号来比对就够了。
所以基于上述的情况,一台AI算力集群的基本服务器配置就出来了
CPU | AMD只要有pci5.0x128即可 x2 |
内存 | 按需配置 |
磁盘 | 最好是nvme硬盘装系统跑得快 |
AI算力卡 | 7张,每张占用16条pci通道 |
网卡 | 7张,每张占用16条pci通道 |
接下来就是综合供应商实力,性价比等各种找对应的硬件产品了。实际买什么自由发挥。
由上可见,两个CPU可以提供256条 PCI 通道。实际只用了224条(磁盘的没算),余下的是因为如果需要单独的网卡连接存储资源池用的。极端点的话就上8张网卡,8张算力卡拉满,系统通过远程挂载启动,8网卡聚合存储算力管理共享一个网络。
2、网络
单机硬件的基础问解决后就回到了最重要的网咯问题。
还是那个需求,大带宽和低时延。因为单个GPU性能不够就有了多CPU的NVlink,同样因为单个服务器