做算力租赁这行,平时被问得最多的就是“你们那还有卡吗”。前阵子我一次性布完60台5090设备租赁节点,从下单、装机、组网到上线跑通NCCL全流程,前后差不多折腾了三周。期间踩了不少坑,特别是被问到一个特有意思的问题:5090能不能P2P通讯。这篇文章把整个项目从头到尾拆一遍,把硬件选型、组网方案、P2P实测结果和几处避坑点都讲清楚,给想搞消费级显卡算力集群的朋友做个参考。
1. 项目思路拆解:60台5090设备租赁到底在做什么
接到这个需求的时候,对方的目标非常明确:要搭一个可供外部客户按需租用的算力池,节点规模锁定60张RTX 5090,应用场景覆盖大模型微调、多模态推理、AIGC批量渲染这一类偏“重算力”的活。机器可以不在一台物理机上堆满,但要保证单卡性能完全释放,同时尽量降低整机采购成本。
这里面有个很现实的问题:为什么是5090,而不是H100、L40S这类数据中心卡?答案很简单,租赁业务的核心从来不是单卡绝对性能,而是单位算力成本。5090单卡32GB GDDR7显存,黑威尔架构的FP4性能非常夸张,用来做推理和微调性价比极高。60台消费卡整机采购成本,可能只够买几块旗舰数据中心卡,但容量和并发能力完全不是一个量级。换句话说,用5090做租赁,卖的是“算力吞吐量”而不是“单卡规格”。
不过消费卡上租赁也意味着要承担一些数据中心卡不会遇到的事。比如电源和散热完全要自己设计,风道、机柜、配电都要按“长期满载”来考虑,而不是按“偶尔跑个游戏”来考虑。再比如P2P通讯能力,很多人一听消费卡没有NVLink就认为多卡之间没法高速互联,这个理解其实有偏差,后面我会拿实测数据说明。
这套项目的目标客户也很清晰:一类是高校实验室和中小AI团队,需要短期抢一批卡跑实验,买几十张卡不现实,按小时租正合适;另一类是做AIGC内容生产的公司,渲染、视频生成这类任务有波峰波谷,租比买灵活;还有一类是专门做模型微调的开发者,32GB显存对7B、13B甚至更大参数的LoRA微调非常友好。三类客户对网络、存储、并发能力的要求不完全一样,这直接影响集群该怎么搭。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 硬件选型与机房规划:不要只看显卡
决定用5090之后,真正费心思的是整机配置和机房配套。60张卡听起来不多,但满负载功耗算下来非常吓人,5090单卡TGP官方标称575W,加上CPU、内存、网卡和散热风扇,一台双卡整机峰值功耗轻松突破1400W,60张卡就是30台双卡机器,机柜总功耗在75kW到90kW之间。这个数字意味着普通办公室插座根本带不动,必须有独立配电柜和三相电,否则一开机就跳闸。
2.1 单机配置与PCIe通道的取舍
我给这套集群定的单机方案是“一机双卡”,30台双卡节点凑满60张卡。为什么不搞一机四卡?核心瓶颈是PCIe通道数。5090是PCIe 5.0 x16接口,一张卡就要占16条通道。消费级平台即便像X870E、Z890这种也最多拆成x8+x8+x4+x4,插四张卡时带宽损失太严重。而服务器平台能提供足够通道数的主板,价格又直接翻倍,折算到单卡成本上非常不划算。一机双卡则能把两张卡都跑在PCIe 5.0 x16满带宽上,整机成本和可维护性最平衡。
具体配置我列一下,给有同样计划的朋友参考:
- CPU:AMD Ryzen 9 9950X,16核32线程,处理数据预处理和DALI流水线够用,不追求极致但绝不能成为瓶颈
- 内存:128GB DDR5 5600,跑7B模型参数加载和数据集缓存非常宽裕,64GB会有点紧
- 主板:X870E芯片组,支持PCIe 5.0 x16+x16拆分,M.2数量充足
- 显卡:2 x RTX 5090 32GB
- 系统盘:1TB PCIe 5.0 NVMe SSD,装系统和驱动
- 数据盘:2块7.68TB U.2 NVMe,做本地训练数据缓存
- 网卡:NVIDIA ConnectX-6 Lx 25GbE,双口做聚合
- 电源:2000W 白金/钛金电源,双路12V-2x6模组线直供显卡
电源这里多说一句,不要用1600W以下配5090双卡。300W CPU加上1150W双卡,还有内存硬盘风扇网卡,瞬时功耗很容易超过1300W。电源长期在80%以上负载运行,效率下降不说,纹波还会变大,显卡出问题的概率会明显上升。我最初有一台用了1300W电源,跑一卡负载时没事,两张卡同时满载时偶尔出现nvml驱动报错,换2000W之后再没出现过。
2.2 机柜、散热与供电设计
消费卡的散热设计和数据中心涡轮卡完全不一样,5090大多是三风扇开放式散热器,热风直接排在机箱内。如果像服务器那样2U密排,相邻机器的显卡会互相“吃尾气”,温度很快冲到90度甚至强制降频。这个问题必须通过机架和风道解决。机器我建议选4U塔式机箱或工控机箱风道版本,每一层之间留足空隙,有条件就按“一机一托盘”布置,前后柜门保持通风。
整个机房供电我按100kW余量做的:每台双卡机器峰值1500W左右,30台是45kW;但加上空调、交换机、存储服务器和照明,实际总负载会到70kW以上。所以最终用了三相电进柜,每相等分负载,UPS只对控制节点和存储服务器做保护,算力节点不强求UPS,因为训练任务都有断点续训机制,真断电了损失可控。空调制冷量我按1kW电力对应3kW制冷量计算,大概配了2台12KW精密空调,实测高负载运行时柜内温度稳定在38度以下,显卡核心温度没超过80度。
3. 5090到底能不能P2P通讯:实测结果
这是全网问得最多的问题,也是我当时写方案最需要验证的点。先说结论:5090可以做P2P通讯,但这里的“P2P”和NVLink是两回事。5090砍掉了NVLink物理接口,卡与卡之间不可能通过NVLink互联;但它仍然可以通过PCIe总线做直接内存访问,也就是GPUDirect P2P,CUDA程序里调用cudaDeviceCanAccessPeer和cudaDeviceEnablePeerAccess完全可以跑通。
3.1 解析P2P层级:NVLink、PCIe P2P与RDMA
要理解5090在集群里的通讯上限,得先分清楚三个层级。第一层是NVLink,这是NVIDIA数据中心卡的专属特性,可以提供900GB/s级别的卡间直连带宽,训练超大模型时极有用,但5090没有,这条路径直接排除。第二层是PCIe P2P,即两张卡通过PCIe交换机和CPU的PCIe Root Complex直接交换数据,不经过系统内存拷贝。PCIe 5.0 x16的单向理论带宽是64GB/s,双向128GB/s,实测P2P读写在30GB/s到40GB/s左右,虽然不如NVLink,但已经远超走系统内存的十几GB/s。
第三层是跨节点通信。单机内再多卡,也就是一张服务器最多四张,60卡集群必然要跨30台机器。这时候卡与卡之间的数据要走网卡,NCCL会调用infiniBand或RoCE网卡做RDMA传输,这本质上不算GPU P2P,而是网络通信。但NCCL把这一层也抽象成了P2P传输通道,所以用户层面看,依然是“卡到卡”直接通信,只是物理链路换成了25GbE网卡。实测跨节点NCCL AllReduce带宽大约在22Gb/s左右,受限于25GbE网卡上限,比单机内PCIe P2P低一个数量级,但对推理场景完全够用。
3.2 单机内双卡P2P实测
为了验证单机内5090的P2P能不能用、性能到底如何,我在一台双卡节点上装了CUDA 12.9和配套驱动,先用nvidia-smi topo -m看了拓扑矩阵。结果两条链路都显示PIX,说明两张卡挂在同一个PCIe交换机下面,到CPU的同一条路径,这是最理想的P2P拓扑。接着跑NCCL的all_reduce_benchmark,命令是:
bash复制./build/all_reduce_perf -b 128M -e 8G -f 2 -g 2
结果很稳,消息大小在4GB时总线带宽约31GB/s,8GB时接近38GB/s。这个数字已经达到PCIe 5.0 x16链路正常的P2P水平,说明消费卡在Linux下跑单机多卡训练完全可行,数据交换效率远高于通过主机内存的中转模式。换句话说,如果你只在一台机器里插两张5090做DPO微调,P2P性能不会拖后腿。
3.3 NCCL配置与P2P调优
双卡P2P能跑通,不代表默认配置就是最优。NCCL会根据拓扑自动选择传输路径,但有些场景下自动选择会走保守路径,性能损失不小。我建议在启动训练前显式设置三个环境变量:
- NCCL_P2P_LEVEL=PIX:限定单机内P2P只走PIX层级,避免跨CPU甚至跨主板走慢速路径
- NCCL_NET_GDR_LEVEL=PIX:让跨节点通信尽量启用GPUDirect RDMA,数据从显存直接到网卡,不经过CPU内存拷贝
- NCCL_BUFFSIZE=33554432:适当增大通信缓冲区,消息量大的场景有一定收益
设置完之后再用all_reduce_perf复测,性能比默认值提升了大概8%到10%,不算巨大,但白捡的带宽不要白不要。不过要注意,如果主板BIOS里把PCIe拆分改成x8+x8,P2P带宽会跟着腰斩,所以拆卡模式下一定优先保证两张卡都跑在x16上。
4. 软件部署与作业调度:60张卡怎么管起来
硬件装好之后,软件层的坑比硬件还多。消费显卡集群和GPU服务器集群最大的差异在于驱动和虚拟化支持。5090作为消费卡不支持vGPU,也就是说不能像A100那样把一张卡切成多个虚拟实例,只能做到“一卡一容器”的颗粒度。好在32GB显存本身容量足够,大多数任务单卡就能吃满,部署逻辑反而更简单。
4.1 驱动、容器化和镜像管理
系统统一装的Rocky Linux 9.4,内核版本比较新,对Blackwell架构兼容性最好。驱动用的570系列,配CUDA 12.9。这里特别提醒,别用发行版自带的Nouveau开源驱动,默认被拉黑还没问题,一旦系统升级内核,可能把NVIDIA驱动模块搞崩,重新编译驱动能折腾半天。我在基础镜像里直接预装了PyTorch 2.7、TensorRT、SGLang、vLLM这套推理栈,客户租卡之后不用花时间配环境,容器拉起来就能跑。
容器化用Docker加NVIDIA Container Toolkit,每张卡通过环境变量NVIDIA_VISIBLE_DEVICES暴露给容器,一个任务一个容器,互不干扰。镜像管理用Harbor做私有仓库,把CUDA基础镜像、PyTorch镜像、推理服务镜像分别打tag缓存,客户要新环境时直接publish一个版本就行。这套流程跑起来之后,交付一台机器的时间压缩到了15分钟以内,以前手动配环境至少一个小时起步。
4.2 作业调度与租户管理
因为场景是“多租户按需租用”,不同客户同时跑不同任务很常见,所以需要一个简单的调度层。我没有上Kubernetes,而是选了SLURM,原因很直接:AI训练任务的调度模型更接近HPC,GPU分配、多节点分布式训练支持、任务排队机制都比K8s顺手,部署成本也低得多。
SLURM里按节点配置GPU资源,每个节点两个GPU,定义成一个分区,客户通过srun提交作业时用--gpus参数指定卡数。租户隔离靠Linux用户和cgroup实现,每个客户一个账号,限制其可访问的分区和资源额度。计费信息从SLURM数据库读取,任务结束自动记录GPU使用时长,脚本统计后导入计费系统。这个方案看起来简陋,但在60卡规模下非常稳定,半年跑下来没出过调度层面的问题。
5. 常见问题与排查技巧实录
这60台机器上线后,我整理了一份故障速查表,基本都是实操中真实遇到过的,分享出来给同行避坑。
| 现象 | 可能原因 | 排查方法与解决 |
|---|---|---|
| 开机后nvidia-smi看不到某张卡 | 显卡供电线没插紧或电源功率不够 | 检查12V-2x6接口是否卡到位,测量电源功率是否足够,换电源或调整负载分配 |
| 双卡同时满载时驱动报错 | 电源纹波过大或PCIe供电供电不足 | 更换更高功率白金电源,避免一张电源线分接两张卡 |
| NCCL初始化报“P2P can’t be used” | 两张卡跨CPU插槽或P2P未开启 | 用nvidia-smi topo -m查看拓扑,确认PIX/PXB链路;开启Above 4G Decoding和Resizable BAR |
| 训练时显卡温度95度并降频 | 机柜风道不畅,显卡热风回流 | 检查柜内风扇方向,确保前排进冷风后排热风,降低机柜密度 |
| 跨节点训练特别慢 | 没有启用GPUDirect RDMA或网卡带宽不够 | 配置RoCE网络并设置NCCL_NET_GDR_LEVEL,升级25GbE到100GbE |
| 租户容器内无法使用GPU | NVIDIA Container Toolkit未安装或driver版本不匹配 | 重装nvidia-container-toolkit,匹配驱动和CUDA版本 |
这里面最容易被忽略的是BIOS里的Resizable BAR和Above 4G Decoding。消费卡对这两个开关非常敏感,特别是5090这种大显存卡,如果不开启,驱动可能识别正常,但P2P分配显存时会有异常,跑NCCL时报奇怪的地址对齐错误。装机验收时我要求所有机器必须开启这两个选项,后续问题少了一大半。
另一个高频坑是P2P和供电的联动问题。双卡跑NCCL测试时,两张卡会同时向对方发送大量数据,显存和核心功耗急剧上升。有段时间一跑all_reduce就掉卡,排查到最后是电源的12VHPWR端子接触不良,换用原厂压纹线并重新插紧之后再也没有复现。所以机器在进机房之前,每一台我都做了连续两小时高负载烤机,电源、散热、P2P、网络一次全测完再开放租用。
6. 运营成本与定价心得:钱花在哪、怎么收
设备租赁不只要技术上跑得通,账也要算得明白。60张卡看着声势大,实际成本压力也不小。我把整集群的固定成本拆成三块:硬件折旧、电力、人工运维。硬件折旧按三年直线折旧来计算,5090现在行情一张在两万左右,60张卡加整机网络存储,硬件总投入大概在160万到180万之间,月折旧接近5万。电力按峰谷电价算,高负载月均用电约7万度,电价按0.8元/度算,一个月电费大概5.6万,如果客户任务吃不满,这个数会略降。人工运维摊下来一个月还要1.5万左右。
所以单看成本,租满的情况下月固定支出已经要12万以上,这还不算机房机柜租金。定价就得按“小时+包月”双轨制来做。短租按小时卖,市场价5090单卡大概在10到15元每小时,主要面向临时抢卡的AI开发者和渲染任务;长租按整机卖,一台双卡机器包月价格在2.2万到2.8万之间,锁定长期稳定需求。这样长短搭配,既能保证高峰期的利用率,也能缓解现金流压力。两个月跑下来,算力出租率稳定在75%左右,已经到了可盈利的平衡点。
我个人的体会是,这类消费卡集群最大的优势是灵活。60张卡可以随时拆分成30个单卡任务、15个双卡任务或者一个多节点的分布式训练任务。只要网络规划和调度层设计得好,客户很难感知到自己在用的其实是游戏卡。不过有一点必须提前跟客户说明白:5090没有NVLink,单机内跨卡走PCIe,跨节点走网卡,如果你要跑千亿级参数全量预训练,还是得用数据中心卡。把这个预期管理做好,售后问题能少一大半。
这个项目做完之后,我给自己的团队定了一条规矩:任何新机型上线前,先跑三件套测试,nvidia-smi看链路、nccl-tests看带宽、vllm_benchmark看推理延迟,一遍下来能不能租、怎么租、该收多少钱就全清楚了。设备租赁这行,最怕的不是硬件坏,而是参数好看但实际跑不动。这个教训,应该是所有做算力集群的人都该记住的。
