一句话定义:GPU 小时(GPU-hour)是计算资源用量的计量单位,等于“一块 GPU 被占用一小时”。八张卡跑三小时,就是 24 GPU 小时。
它实际上在计什么
GPU 小时本质是一个乘法:卡数 × 小时数。它最初是云厂商和内部集群用来记账的单位——就像停车费按“车位 × 小时”收,不管是轿车还是货车,占一个位子一小时就算一份。问题也恰恰出在这儿:停车位大小一样,GPU 可不一样。运维把它当电表读数,财务把它当账单行项目,算法工程师把它当排期筹码——三个人说的是同一个词,脑子里想的却是三件不同的事。
常见的计算方式有几种:按独占整卡计(不管用没用满),按 MIG 切片或虚拟化后的份额折算,按实际占用时长向上取整到分钟或小时。所以看到“我们用了 10 万 GPU 小时”这句话,先问三件事:什么卡、怎么算、利用率多少。
为什么 H100 一小时和 4090 一小时不是一回事
GPU 小时只能在同一类卡内部做加法,跨卡型几乎不可比,原因至少四层:
- 算力与精度:不同卡的 FP16、BF16、FP8 吞吐差异很大,同一份训练代码在两块卡上的吞吐量可能差出数倍,而这些是“小时”这个单位完全看不见的。
- 显存与带宽:大模型训练常常先被显存卡住。显存不够,卡再多也装不下模型,只能切分、卸载、反复搬运,最后浪费的是时间。
- 互联:数据中心卡之间有高速互联(如 NVLink)和高带宽网卡,消费级卡通常只能走 PCIe。多卡并行时,通信会成为瓶颈;此时加卡未必提速,GPU 小时反而白白消耗。
- 生态与稳定性:驱动、算子库、编译器的成熟度,以及长时间训练会不会掉卡,都会直接改变“有效 GPU 小时”的产出。
打个比方:GPU 小时像“人工小时”。请一个资深工程师干一小时,和请一个实习生干一小时,账面上都是 1 人时,交付物却完全不同。所以业内更看重的是“有效 GPU 小时”(effective GPU-hour)——乘以利用率之后的数字;或者干脆用产出反推,比如每 GPU 小时产出多少 token、多少张训练图。
| 概念 | 计量对象 | 能否跨卡型比较 |
|---|---|---|
| GPU 小时 | 占用时长 × 卡数 | 否,只适合同型号内部 |
| 算力(FLOPS) | 理论或实测吞吐 | 部分可以,需注明精度 |
| 实例小时(instance-hour) | 云上整台机器 | 否,配置差异更大 |
| 有效 GPU 小时 | 时长 × 利用率 | 同型号内更接近真实成本 |
和相邻概念的区别
GPU 小时常被和“算力”混用。算力描述“多快”,GPU 小时描述“用了多久、占了多少”,两者相乘才接近“做了多少事”。它也不同于云上的实例小时:一台实例可能含 8 张卡,还带 CPU、内存和存储。至于用 token 计费的大模型 API,那是按产出计价,把“用了多少资源”的风险转移给了服务方。
对从业者的实际意义
对工程师:排期时把 GPU 小时换算成“实验能跑几轮”比换算成钱更有用;同时盯住利用率,卡空转时 GPU 小时照样在流失,而这往往由数据加载、检查点写入或等待同步造成。
对管理者和采购:GPU 小时是预算语言,但只适合同型号横向比价。要跨型号比较,必须固定任务,用实测吞吐或单位产出成本来比较;云厂商定价和计费细则各家不同,以官方页面为准。
一句话记住:GPU 小时是“会计单位”,不是“物理单位”。它能告诉你花了多少卡时,但不能告诉你这些卡时值多少。
