来源:互联网 更新时间:2026-08-15 14:53
最近大模型赛道又有新动静:Imbue 发布了自研的 70B 参数模型,性能直接对标 LLaMA-3 70B,在某些推理任务上甚至超过了 zero-shot 的 GPT-4o。但更值得关注的是,Imbue 还顺手公开了一份从零搭建大规模 GPU 集群的端到端实操指南——从裸机到跑起 70B 模型,网络拓扑怎么搭、系统怎么装、训练中踩过哪些坑、怎么填的,全写出来了。配套的工具和脚本也一并开源在 GitHub。本文就围绕这份指南展开,结合我们自己的实战经验做些补充和注解。
其实最近不少公司都晒出了自家的 AI 基础设施方案,比如字节跳动的 MegaScale(万卡级训练)、上海 AI Lab 的 Acme、阿里的 C4 和 HPN、腾讯的星脉网络 2.0、百度的 HPN-AI Pod,还有蚂蚁的 DLRover。这个领域正在加速从“能不能跑”进入“怎么跑得稳、反赌”的阶段。
Imbue 整个集群有 511 个 8×H100 GPU 节点,合计 4088 块 H100。为什么不是 512 台、4096 块?后面会解释。网络用的是 3 层 InfiniBand 胖树,实现了无收敛(fully non-blocking)拓扑。
单个节点的硬件配置如下:
IB 网络采用了 NVIDIA 的标准方案,交换机型号 QM97xx,每个 64 个 400Gbps 端口,Leaf 和 Spine 均配置 32 个下行、32 个上行。整体拓扑和 NVIDIA SuperPod 基本一致,总共 320 台交换机:
参考 NVIDIA 的 DGX SuperPod,127 个节点。理论上可以到 128,但因为 Leaf 交换机有一部分要连接 UFM(统一结构管理器),所以实际只用了 127 个节点。
用 QM9700 交换机,2 级胖树最多支持 2048 个 GPU 无阻塞;3 级胖树最多 65536 个。Imbue 采用 16 SU 方案,理论上能连 4096 个 GPU,算上 UFM 占用,实际是 4088。
为什么不凑到完整的 512 节点对称结构?可能有两点考虑:一是 UFM 能带来更高效可靠的网络管理,提升整体稳定性和性能;二是 GPU 节点故障率不低,很难长期无异常。一旦节点出问题需要隔离,对称结构就被打破了。如果硬要维持对称,就得加冗余节点(比如阿里 HPN 的做法),但那又会导致无收敛网络无法实现。
通过辅助管理网络和 BMC(即使系统未启动或宕机也能工作),可以远程与每台机器交互,实现硬件监控和管理。
先用 iDRAC 在单台节点上装 Ubuntu 22.04,这台节点将作为后续所有配置的母机。iDRAC 支持从本地挂载 ISO 镜像并在浏览器中提供虚拟控制台。这是整个过程中唯一需要手动操作的部分。
装好第一台后,用 Ubuntu 的 MAAS(Metal-as-a-Service)来完成剩余服务器的自动安装。通过 PXE 和 iDRAC 工具,让每个节点从网络启动,MAAS 响应 PXE 请求并执行安装。当然过程不会一帆风顺:Imbue 遇到了时钟偏差导致 HTTPS 证书验证失败,进而影响 apt 安装软件包。
和所有大规模集群初始化一样,大约 10% 的机器无法正常启动,基本都是硬件问题:以太网线没插或插错、iDRAC 硬件故障、电源损坏、NVMe 损坏、网卡或 GPU 无法识别。部分机器甚至直接退回戴尔做进一步检测。
在每个节点上安装以下软件:
有趣的是,Imbue 在并行安装时居然遭遇了带宽瓶颈——访问集群外的带宽远小于内部,导致下载卡住。同时第一次收到了各种高温报警,后来通过固件更新解决。
装完环境后,需要确认每个节点能独立跑 GPU 负载。这个过程中发现问题还真不少:
这些软件装完基本就能用了,但通常还会跑 benchmark 做验证,比如用 nvbandwidth 测 GPU 通信带宽,用 nccl-tests 做性能测试。有些初始配置不符合预期会导致性能偏差,比如 IO 虚拟化(VT-d/IOMMU)可能引起性能下降。我们曾在这个阶段发现 Device to Host 带宽明显低于 Host to Device,最后定位是初始化时不小心打开了 Intel 的 Sub NUMA Clustering(SNC),关掉后恢复正常。至于 SNC 为什么会导致带宽不对称,至今没找到明确答案。
此外也可以单节点跑一些真实训练任务(如 ResNet、BERT),对照 MLPerf 结果验证有无瓶颈。
InfiniBand 的好处是有一个中心化的“大脑”——UFM。首先要搞清楚哪些交换机连哪些节点,然后对应接线图,重命名交换机。
刚开始 UFM 检测不到全部 320 台 IB 交换机,更别提节点了。后来发现结构设计有误:本来应该是一个统一结构,却被搭成了 8 个独立的网络。重新布线后再逐一核对物理连接。
布线搞定后 UFM 与所有交换机建立了连接,但数据还没跑,几乎每个端口都开始报温度过高,有些甚至超过 70℃。最后发现是机柜内交换机之间的空间问题导致热空气回流,调整后解决。
很多端口依然报高错误率,或者在正常和损坏状态之间来回切换(flapping)。这类问题只有在端口被使用时才暴露,所以很难提前发现。需要数据中心伙伴协助清理或重新插拔,有时还得换光模块。IB 对硬件故障有很强的容错能力,但一旦有 10% 的结构出问题,自适应路由功能就可能不可靠。Imbue 尝试用 100~200 个节点做多节点训练,但每次换节点子集,默认的 IB 连接子集也在变,很难定位问题。
为此他们专门设计了一个高负载测试:尽可能在每个端口同时发送大量数据,而不是 AllReduce(因为 AllReduce 会大量利用 NVLink)。当大部分端口负载超过理论容量 97% 时,UFM 开始报警,有些交换机直接崩溃。持续压测一天后,仍然正常的端口被视为稳定,剩下的被禁用等待维修。相关代码已开源。
为了让 GPU 通信时绕过 CPU,需要打开 GPUDirect RDMA。两个关键步骤:启用额外内核模块(nvidia-peermem),并关闭 PCIe ACS(Access Control Service)以避免系统挂死。
使用最新硬件 GPU 集群的经验法则是:每周约 3% 的机器会故障。但要注意,并非每台机器都是 3%——少数机器可能反复故障直到彻底修复。这就是大规模集群的优势:与其在随机机器上“打地鼠”,不如集中精力组建一组已知稳定的机器。
IB 维护主要就是响应 UFM 报警、更换故障线缆和收发器,偶尔诊断交换机故障。大规模问题通常有两种:固件升级导致 UFM 状态异常(需重启 UFM),以及同时大规模启动 GPU 导致 UFM 状态更新冲突(同样需要重启 UFM)。
实际使用中发现,很多因素会导致训练失败或降速,而且不少问题不会立刻显现。于是 Imbue 写了一套健康检查工具(已开源),确保节点足够健康再投入训练。具体包括:
此外还会检查 PCIe Switch Bus(PSB)是否健康,确认 GPU 和网卡的相关连接速度和带宽符合预期。更复杂的健康检查包括:
ib_write_bw --use_cuda 通过 IB 网卡发送数据并测量 PCIe 和 IB 带宽,跑 15 分钟以捕捉不稳定的 IB 连接。硬件就绪后正式开训,Imbue 整理了一系列训练中可能遇到的问题。
这类错误最好处理,因为容易复现。先检查代码、配置和环境变量,虽然基础但常出问题。然后确认机器是否都正常,用 Loki、Prometheus、Grafana 等日志聚合平台追踪。Imbue 还构建了失败自动重启系统,此时日志和错误聚合就变得尤为重要,避免不同任务混淆。常见错误包括:
首要任务是搭建自动诊断系统:重新运行所有健康检查,驱逐异常机器,然后自动重启训练。有些错误重启就能解决,有些则需要返厂或更换,比如不可纠正的 ECC 错误。Imbue 还遇到过训练数据导致的问题,比如语料库中一个超大文件触发了 CPU 或 GPU OOM。为防止这种情况,需要一个完全确定性的 DataLoader,能指定 epoch 或 step 数,方便复现或跳过。训练中 loss 有时会出现 spike,也需要跳过部分 step。最后,聚合网络或节点的统计信息很有帮助——有些短暂问题不聚合很难发现。
这是最难调试的一类,因为没有有效信息,很难可靠复现。常见信息如 NCCL 超时错误:所有节点都可能显示同样的超时,没法区分具体是哪台出了问题。Imbue 为此 fork 了 NCCL 代码,添加时间戳,以便确认崩溃发生时正在执行的操作,从而定位阻塞的节点或 GPU。他们还通过“反向定位法”——找出哪些节点没有生成某些日志消息,来判断工作进程是否落后或崩溃。此外,用 Py-Spy 和 GDB 实时调试挂起的进程,能捕获到一些特定问题。
这种问题更让人头疼。除了 Py-Spy、堆栈检查和 GDB,还可以用 NVIDIA Nsight 等 Profiling 工具,不过在大规模分布式环境下不太好用。MFU 下降的原因多样:
Imbue 总结了一套快速调试吞吐量下降的 checklist:
经过前面的措施,训练通常能跑出不错的效果。但要让训练持续顺利运行,还需要一些自动化的工具和系统,尽量减少人工干预。几乎所有训练故障都可归结为节点或网络组件失效——在大规模集群中这是常态,所以自动驱逐故障节点并启动修复流程是必须的。
Imbue 开发了一套系统:任务异常时自动从最新 Checkpoint 重启。重启时在所有可用节点上运行健康检查,根据结果分类,然后从最健康的节点上重新启动训练。
所有网络组件故障都被 UFM 检测并记录在事件日志中。所以只需要解析 UFM 日志,针对每个事件采取相应操作。UFM 事件系统很复杂,有几十种类型,但实践中只有少数几种真正表明有问题:主要是链路断开或高符号错误。识别出这些事件后,可以写脚本自动禁用相关连接或端口。
进出集群的以太网带宽相对较小,多人同时下载数据集或 Checkpoint 容易成为瓶颈。Imbue 在本地搭了缓存系统,用 3 副本配置加一致性哈希均匀分配负载。集群存储空间有限,所以还得开发工具跟踪文档生命周期,及时清理无用文件。
使用 Kraken 实现 Docker 镜像的点对点传输,运行下来没有遇到问题。
默认配置了 Torch Profiler 和 NVIDIA Nsight。Nsight 能准确捕获前向/后向传播及 NCCL 通信时间,帮助判断在给定模型大小和线程数下,瓶颈在通信还是计算。但 Nsight 用起来有点麻烦:Docker 需要特权模式,还要禁用与性能监控事件相关的安全检查,保存文档时也得停训练。Imbue 发现自己编写工具来检查缓慢的 Batch 并了解原因更实用——最有用的工具是监控每个 Batch 的耗时,在异常慢时转存每个 worker 的堆栈,从而定位细微的硬件或软件问题。
早期经常遇到训练任务在一组机器上失败却不知道具体哪台有问题。Imbue 的做法是把机器分成更小的子集,在每个子集上启动小作业。比如一组 48 台机器失败,就分成 6 个 8 台子集分别跑;如果还有问题,再在 8 组 6 台集群的子集上跑,交叉比对就能锁定异常机器。蚂蚁的 DLRover 中也提到过类似方案。
总结下来,有几点值得记取:
腾讯ima怎么把微信内容一键导入知识库?
黄金价格不断创新高!黄金稳定币XAU、PAXG市值达11亿美元
CC币价格预测(2026-2035):Canton币今日价格走势+长期价格预测
新浪互联网热点小时报丨2026年07月26日16时_今日实时互联网热点速递
新浪机器学习热点小时报丨2026年07月25日18时_今日实时机器学习热点速递
2026鸣潮账号交易安全指南:五大交易平台对比与风险避坑分析
腾讯ima怎么创建共享知识库?
今日比特币暴涨分析:Metaplanet的比特币BTC投资推动股价上涨17%
蚂蚁庄园今日答案7月21日(今日已更新) 蚂蚁庄园今天正确答案是什么呢
新浪人工智能热点小时报丨2026年07月30日18时_今日实时人工智能热点速递
抖音怎么取消申请退货退款?抖音上取消退货怎么操作
比特币(BTC)核心周期指标复刻历史走势 价格或跌破5.8万美元关键支撑位
Windy卫星云图怎么看?云层变化识别技巧
9条破亿视频,新号涨粉百万,过去半年谁在制造AI爆款?
短剧《史上最强洪荒修为》剧情介绍
kimi提示词专家使用方法新手指南
Celestia价格预测2026-2032:TIA币能否引领山寨币上涨行情?历史价格回顾
如何修复Edge浏览器无法通过微软账号进行身份验证?
原神霜月三处月灵龛具体位置汇总
五菱星光L六座新能源SUV上市:三版可选,中配12.28
手机号码测吉凶
本站所有软件,都由网友上传,如有侵犯你的版权,请发邮件haolingcc@hotmail.com 联系删除。 版权所有 Copyright@2012-2013 haoling.cc