ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

开放加速规范下的AI服务器设计:OAM模块与UBB全解析

开放加速规范下的AI服务器设计:OAM模块与UBB全解析 简介浪潮信息发布的《开放加速规范AI服务器设计指南》是一份聚焦AI服务器设计与开发的技术文档主要面向AI基础设施架构师、服务器硬件设计人员以及算力平台规划者。内容以生成式AI大模型算力需求为背景梳理了应用导向、多元开放、绿色高效、统筹设计四项设计原则详细讲解OAM模块、UBB基板、散热设计、系统管理等节点层面规范并延伸至集群网络、液冷、运维、性能测评与模型调优等落地方法。文档同时回顾了开放加速规范的发展历程帮助读者理解从PCIe互连到OAI-UBB标准的演进逻辑。资源为单个PDF文件大小5.58MB全文结构清晰适合作为企业技术培训、产品选型和学术研究的参考资料。已有235人学习可在较短时间内获得开放加速AI服务器从架构设计到测试调优的完整知识框架。1. 为什么AI服务器的设计难题先要解决“接口不开放”2023年下半年大模型训练集群批量上架8卡GPU服务器几乎是标配但真正开始批量交付时问题反而出在接口上芯片厂商的加速卡和整机厂商的供电、散热、管理方案强绑定换一颗芯片就要重新设计一块主板交付周期按季度算。浪潮信息发布的《开放加速规范AI服务器设计指南》把答案收敛成一个关键词“开放加速规范”——通过 OAMOCP Accelerator Module这类公开的模块化规范把加速器的机械尺寸、电源定义、互联接口、管理协议一层层标准化最终让整机设计从“定制项目”变成“选型组装”。这篇文章不评价这份PDF里的具体章节只把它背后的设计逻辑、可复现的参数计算和落地验证方法讲清楚适合服务器硬件工程师、训练集群运维和数据中心规划的同学对照使用。2. 开放加速规范到底规范了什么OAM 模块的六类接口2.1 从 PCIe 板卡到 OAM 模块为什么插卡式设计喂不饱大模型训练在 PCIe Gen4 x16 时代一张加速卡的单向带宽约 32GB/s电源要靠板端插槽和外接供电线一起去凑信号完整性被连接器引脚和走线长度限制得很死。训练集群里8 张卡每个训练步都要做全量梯度同步如果走 PCIe Switch 组网带宽会很快变成瓶颈。OAM 换了一条路把加速器做成一个约 165mm×102.6mm 的独立模块底部用高密度连接器一次性引出电源、高速互联、边带管理、监控遥测四组信号机械上不再依赖传统挡板安装方式散热也独立设计。这就是开放加速规范最核心的设计理念把接口标准化把芯片之间的互联从“PCB 走线看运气”变成“规范里明确给出边界条件”。这个改动带来的直接好处是一颗加速器模块可以插在不同的整机平台上只要整机厂商遵守同一套机械和电气规范。芯片迭代时整机不需要推翻重来整机迭代时芯片也不需要对每一款机箱单独适配。对大规模采购方来说这等于把 AI 服务器的“兼容性”从口号变成了可验收的交付物。2.2 六类接口怎么拆机械、电源、高速信号、管理、监控与散热开放加速规范在工程上可以拆成六个接口域做整机设计时按这个维度逐项核对才不会漏项。接口域规范覆盖内容设计上最容易翻车的地方机械接口模块外形尺寸、定位孔、连接器配合高度公差叠加导致插拔力过大PCB 边缘翘曲电源接口主供电电压/电流、使能时序、缓启动上电时序不满足导致加速器保护性掉电高速信号接口PCIe、互连总线、以太网物理层引脚定义走线等长和层叠设计不到位信号劣化边带管理I2C、eSPI、UART 等低速通道I2C 地址冲突、上拉电阻阻值不准监控遥测板级温度、功耗、电压采样点采样点位置不同导致整机读数偏差散热接口热沉固定方式、风道方向、进风温度要求风道短路热风回流设计指南里最容易被忽略的是边带管理和监控遥测。工程师常常把注意力放在高速信号上结果固件调试时才发现 I2C 总线挂了 8 个模块地址不够用或者电平不匹配整机连枚举都过不去。所以我一般建议原理图评审阶段就把六类接口逐行过一遍尤其是管理通道的拓扑结构不能等样机出来再抓问题。2.3 为什么是 UBB 而不是背板模块化母板的设计取舍开放加速规范里承载多个加速器模块的板子被称为 UBBUniversal Baseboard和传统服务器里的“背板”是两个概念。背板通常只负责信号转发和电源分配上面不跑复杂的控制逻辑UBB 则是一个完整的系统母板上面要布 CPU、PCIe Switch、管理控制器和大量高速走线。把 8 个 OAM 模块放在同一块 UBB 上好处是拓扑固定、走线可控、生产测试可以用同一个治具。代价是 UBB 面积大、层数高板级成本不低一旦设计有缺陷改一版就是数月的周期。这也是开放加速规范对“整机设计”最大的影响——它把加速器问题收敛到模块内部但把互联问题全部交给了 UBB。整机厂商的核心竞争力不再是“能不能把 GPU 焊上去”而是“能不能在 UBB 上把 8 卡全互联拓扑跑稳”。从设计指南的角度看UBB 才是决定这台 AI 服务器上限的载体。3. 按设计指南落地一台 8 卡 AI 服务器系统架构与总线拓扑3.1 系统架构CPU 作为控制面加速器模块走数据面一台标准的 8 卡 OAM 服务器系统架构一般拆成两个平面。控制面由 1~2 颗 CPU 承担负责启动固件、跑操作系统、管理加速器驱动数据面由 8 个加速器模块通过 UBB 上的高速互连组成负责模型训练和推理时的张量搬运。网络侧通常每个加速器模块引出 2~4 个高速端口走 OSFP 或 QSFP-DD 连接器到机箱后面板直接对接数据中心交换机。设计指南里反复强调“控制面和数据面分离”。原因是训练流量对延迟和带宽极其敏感如果管理流量或者存储流量混进数据面哪怕只占 5% 的带宽也会在集合通信时产生抖动直接拉长训练步耗时。实际部署时我会把存储网络和管理网络单独各拉一根线不要复用加速器的高速端口。3.2 聚合带宽怎么算全互联和两跳拓扑的取舍8 个加速器之间最常见的互联是“全互联”也就是任意两个模块之间都有一条直接链路一共需要 C(8, 2)28 条链路。这种拓扑带宽最高但 UBB 走线密度也最高PCB 层数通常要到 24 层以上。另一类做法是两跳拓扑比如把 8 卡分成两组组内全互联组间通过少量上联链路通信。链路数量降下来了但跨组流量要多经过一次中转带宽折半。下面这段 Python 代码可以快速估算两种拓扑的聚合带宽做方案预研时直接改参数就能用。# 计算8卡全互联与两跳拓扑的理论聚合带宽 # 用途方案阶段对比拓扑带宽辅助UBB走线设计决策 def full_mesh_bandwidth(nodes, lane_rate_gbps, lanes_per_port): links nodes * (nodes - 1) // 2 # 全互联链路数 return links * lane_rate_gbps * lanes_per_port / 1000 # Tbps def two_hop_bandwidth(nodes, lane_rate_gbps, lanes_per_port): group_size 4 # 每组4个节点 groups nodes // group_size intra_links group_size * (group_size - 1) // 2 * groups inter_links groups * (group_size // 2) # 组间直连链路数 total_links intra_links inter_links return total_links * lane_rate_gbps * lanes_per_port / 1000 # 以单lane 50Gbps每端口8 lane为例对应常见高速互连的聚合速率 mesh full_mesh_bandwidth(8, 50, 8) two_hop two_hop_bandwidth(8, 50, 8) print(f全互联聚合带宽: {mesh:.2f} Tbps) print(f两跳拓扑聚合带宽: {two_hop:.2f} Tbps)参数说明lane_rate_gbps是单条串行通道的速率PCIe Gen5 为 25Gbps私有高速互连常见有 50Gbps 甚至 100Gbps按实际规格调整lanes_per_port是每个端口使用的通道数通常是 8 或 16。这个估算逻辑不区分具体协议只看链路数量和速率适合在拓扑选型初期快速判断——如果训练模型以张量并行为主全互联值得投入如果主要是推理场景两跳拓扑的性价比可能更高。3.3 供电链路和散热8 卡服务器最大的两个物理瓶颈8 卡 OAM 服务器的功耗不是线性求和那么简单。以单模块 450W 算8 个模块就是 3600W加上两颗 CPU 和交换部件整机输入功率通常落在 25~30kW 区间。供电链路设计要处理两个问题一是电源模块的冗余和动态响应二是从 PSU 到 UBB 再到加速器的各级电压转换效率。常见做法是先用 3000W 或更高功率的钛金 PSU 组成 41 冗余输出 12V 中间母线板上再通过 VR 模块降压到加速器需要的电压。散热上风冷方案按进风温度 35℃设计时需要在机箱前窗提供足够静压风道要直接贯通加速器热沉不能让气流先经过硬盘再吹芯片。液冷方案则通常采用冷板式把加速器模块的发热通过冷板导到 CDU温水冷却的水温可以到 30~45℃反而比风冷更容易控制芯片结温。做机房规划时单机柜功率密度超过 20kW 就要优先考虑液冷这条边界在指南里被提得最多。4. 设计指南给出的关键参数与选型计算4.1 典型 8 卡配置的参数基准表进入具体设计前我习惯先把所有关键参数拉成一张表后面所有计算都从这张表出发。参数项常见取值区间对设计的影响加速器模块 TDP350W ~ 500W决定供电功率、散热方案和机箱尺寸CPU 数量与 TDP1~2 路350W 级决定 PCIe 根节点数量和系统控制能力OAM 模块数量4 / 8决定 UBB 面积和互联拓扑复杂度单端口互联速率25 / 50 / 100 Gbps per lane决定 UBB 布线密度和板材等级外部网络端口2~4 × 400G OSFP决定后面板空间和交换机构型带外管理协议Redfish / IPMI决定运维自动化的实现方式电源冗余方式41 或 2N决定机箱空间占用和断电续航这份表格的价值不在“数值本身”而在于它标出了维度之间的耦合关系。比如把加速器 TDP 从 350W 提到 500W看起来只是功耗增加 43%实际上散热方案可能要从风冷被迫转液冷机箱结构、电源模块数量、机房单柜功率密度全都要跟着变。所以参数表的第一原则是先把 TDP 这个最高上限定死再谈其他。4.2 用 Python 复核整机功耗预算与散热量有了参数表下一步就是算总账。下面是复核整机输入功率和散热的脚本我的习惯是在提交方案评审前跑一遍避免在 PPT 里拍脑袋写数字。# 复核8卡AI服务器的整机功耗预算与散热需求 # 参数来自上一节的参数基准表 acc_tdp 450 # 单加速器TDP单位W acc_num 8 # 加速器数量 cpu_tdp 350 # 单CPU TDP单位W cpu_num 2 # CPU数量 switch_tdp 150 # 板载交换/存储部件功耗单位W power_eff 0.94 # 电源模块转换效率钛金典型值 ploss 0.05 # 板上VR和线缆损耗取5%作为工程余量 total_watts (acc_tdp * acc_num cpu_tdp * cpu_num switch_tdp) / (power_eff * (1 - ploss)) print(f整机输入功率预算: {total_watts:.2f} W) print(f对应散热量: {total_watts * 3.412:.0f} BTU/h) # 按年度运行估算电费75%平均负载率 load 0.75 hours_per_year 24 * 365 price 1.0 # 电价单位元/kWh annual_cost total_watts * load * hours_per_year / 1000 * price print(f单台年电费(75%负载, 1元/kWh): {annual_cost:.0f} 元)参数说明power_eff按 94% 已经是高标准了差的电源模块只有 90% 左右影响不小ploss的 5% 是给板级损耗留的余量很多人算功耗时只把 TDP 加起来漏掉这一块结果整机电流超出 PSU 规格。散热量用 BTU/h 表示是为了直接对照机房空调的制冷能力如果机房单机柜制冷量标的是 kW就除以 1000。4.3 结构布局与线缆走线的工程约束功耗算完了还要看机箱能不能装下。8 个 OAM 模块通常在 UBB 上排成两列每列 4 个中间留出 CPU 和电源模组的位置。高速端口在模块前端通过跳线或者直接背板出线到后面板这里有个常见问题模块前出线会挡住风道所以很多设计会把网络端口挪到机箱后窗让风流从前到后直通。硬盘位置也要提前想清楚。NVMe 硬盘是发热大户如果放在进风口和加速器之间会把进风温度抬高好几度直接恶化芯片散热条件。我的建议是存储位单独放在机箱前部下方用独立风道散热不要和加速器争抢冷风。结构评审时拿 3D 模型做一次简单风路仿真比事后改机箱省力得多。5. 从整机设计走向量产交付固件、管理与可靠性5.1 带外管理和功耗封顶的落地配置设计指南可以指导硬件选型但整机能不能稳定交付很大程度取决于带外管理好不好用。量产机通常用 BMC Redfish 做统一管理入口工程师可以在操作系统还没起来的时候直接查电源、温度、固件版本。下面这组命令是带外查询和设置功耗上限的常见操作。# 通过Redfish查询服务器当前功耗和功耗上限 curl -s https://bmc-ip/redfish/v1/Chassis/chassis-id/Power \ -H Authorization: Basic $(echo -n admin:password | base64) \ | jq .PowerControl[] | {PowerConsumedWatts, PowerLimit} # 将功耗上限设为12000W避免机柜超载 curl -X PATCH https://bmc-ip/redfish/v1/Chassis/chassis-id/Power \ -H Authorization: Basic $(echo -n admin:password | base64) \ -H Content-Type: application/json \ -d {PowerControl:[{PowerLimit:{LimitInWatts:12000}}]}参数说明bmc-ip是带外管理网口的地址chassis-id在 Redfish 树里通常是Chassis加数字编号PowerConsumedWatts是实时功耗PowerLimit.LimitInWatts是整机功耗封顶值。设置封顶时不要卡得太死训练负载的功耗波动很大至少留 15% 余量否则触发限流会导致加速器降频训练性能反而掉得更厉害。5.2 驱动、固件与加速器适配的常规流程OAM 模块的固件升级通常是独立于整机 BIOS 的通过厂商提供的工具或者 Redfish UpdateService 完成。这里最重要的原则是“基线管理”量产前必须把 BIOS、BMC、CPLD、加速器固件的版本组合固定下来任何一个组件单独升级后都要整机回归测试。驱动层面如果加速器是 NVIDIA GPU我会先用下面的命令确认拓扑和健康状态。# 查看加速器互联拓扑确认是否真的处于全互联模式 nvidia-smi topo -m # DCGM快速健康检查验证8卡是否都正常 dcgmi diag -r 1命令输出里要看两个东西。nvidia-smi topo -m显示的拓扑矩阵中如果两个卡之间的连线不是直接相连而是走了 CPU 或者 Switch就需要检查 UBB 转接设计。dcgmi diag -r 1跑硬件诊断其中 Board 项会报告温度、电压、供电是否在规格内跑一遍大约需要十几分钟建议在新机器上线前和更换加速器后各跑一次。5.3 生产环境里的三类典型故障与排查方向故障现象优先排查点与设计指南的对应关系系统上电后单个或多个加速器未被识别UBB 上的 I2C 枚举日志、供电时序管理接口和电源使能时序设计高速互联带宽只有标称值的一半链路协商速率、金手指接触状态高速信号走线与连接器安装质量满载训练时温度反复触顶进风温度、风扇转速策略、风道密封散热接口设计与系统散热仿真排障时最容易忽略的是“先看带外日志再看系统日志”。BMC 记录的上电时序和功耗曲线是硬件问题的第一手证据操作系统内看到的报错往往是次生故障。遇到掉卡问题先把 Redfish 的 EventLog 拉出来确认是供电不足还是 I2C 枚举失败再决定动硬件还是动固件。6. 用设计指南做选型和验收一个可执行的最小验证清单6.1 五分钟在线检查8 卡是否全部识别设备上架后第一步先确认 8 个加速器全部在线。以 NVIDIA 为例下面这段循环命令可以直接看到每张卡的温度和功耗如果厂商换成其他加速器把查询命令换成对应 SDK 即可。# 快速遍历8个加速器输出温度与实时功耗 for i in $(seq 0 7); do nvidia-smi -i $i --query-gpuindex,temperature.gpu,power.draw \ --formatcsv,noheader || echo GPU $i 未识别 done正常情况下空闲时每张卡的功耗应该在 20~60W温度明显低于满载线。如果某个卡显示“未识别”不要急着换卡先强制重启一次让 BMC 重新枚举再不行就检查金手指和供电。6.2 互联带宽实测用集合通信压出真实性能带外在线检查只说明“卡在”不能说明“链路通”。要验证 8 卡互联合不合格常规做法是用集合通信压测工具跑 all-reduce。# 以NCCL all_reduce测试为例消息大小从128MB扫到8GB mpirun -np 8 -hostfile hosts.txt ./build/all_reduce_perf -b 128M -e 8G -f 2性能判断标准在全互联拓扑下4GB 以上消息的 all-reduce 带宽应达到单条链路理论带宽的 70% 以上。如果只有 50% 甚至更低优先怀疑链路协商退回了低速模式去查连接器对应的训练日志或者用厂商诊断工具看每对端口的实际速率。6.3 把验证结果固化成验收条款选型或招标验收时把验证输出直接写成可勾选的条款避免口头承诺。一份可用的验收清单至少包含四条满载 8 小时无掉卡单卡达到额定 TDP 时整机输入功耗不超过计算预算互联带宽实测值不低于标称带宽的 70%BMC 的 Redfish 接口可查询功耗并成功执行功耗封顶。最后验收时把所有固件版本连同校验值归档保存之后每次升级都拿这份基线判断是否可回滚比任何说明书都管用。本文还有配套的精品资源点击获取
返回列表