生成式AI为提高效率带来了令人难以置信的商机,但我们仍然面临着一个阻碍广泛采用的巨大挑战:运行推理的高昂成本。

我们已经听说过大型语言模型(LLM)训练期间产生的惊人费用:大量的GPU,高昂的电费。分析师估计,Meta 2024年可能会在GPU上花费150亿美元。生成式AI需要大量的内存和带宽来进行权重计算和数据处理,这是大规模运行模型的主要障碍。就连OpenAI的Sam Altman也表示:“没有突破,就不可能实现这一目标。这促使我们加大对核聚变的投资。”

迄今为止,CPU、GPU和许多定制设计的加速器一直是AI的主要选择,但即使是最先进的解决方案也会被传统的冯·诺伊曼架构所拖累。定制设计的ASIC、FPGA和APU提供具有更高内存带宽的专用控制器,并且需要大量RAM来将模型保存在内存中,这使得生成式AI几乎不可能经济地交付。

昨天,AMD正式推出其最新款用于笔记本电脑的Ryzen AI Max芯片。与上一代产品相比,新芯片在性能上实现了较大提升,可以满足内容创作者和游戏玩家对高性能图形和人工智能处理能力的需求。

AMD Ryzen AI

Ryzen AI Max配备了16个核心,专注于图形性能和AI计算。AMD在多项基准测试中将该芯片与苹果的标准M4和M4 Pro芯片进行了对比。在测试中,AMD称Ryzen AI Max在v-ray工作负载中比12核的Apple M4 Pro芯片提升了86%。此外,在Blender和Corona等渲染基准测试中,Ryzen AI Max也表现优异,继续保持领先。在多线程的Cinebench 2024测试中,Ryzen AI Max+仅比12核的M4 Pro领先2%,而比14核的M4 Pro则落后3%。

谷歌宣布其第二代专用集成电路来加速公司的机器学习处理时,笔者的电话开始响个不停,问这对半导体行业的潜在影响。世界上最大的数据中心“Super 7”的其它成员是否都急于为AI制造自己的芯片?这对AI芯片和平台的领先供应商NVIDIA、AMD、Intel等其它公司以及许多希望进入这个利润丰厚市场的初创公司有何影响?当GPU和FPGA开始看起来如此有前途的时候,它们的游戏结束了吗?为了回答这些问题,让我们进入这些互联网巨头的头脑,看看他们可能在计划什么。

Google AI TPU

AI的硅景观

正如笔者在今年早些时候的一篇文章中所探讨的,有四种主要类型的技术可用于加速深度神经网络的训练和使用:CPU、GPU、FPGA和ASIC。老式备用CPU具有无限可编程的优势,性能不错,但不是很出色。它主要用于推理工作负载,其中训练好的神经网络引导计算对输入数据项做出准确的预测。另一方面,Intel和Xilinx的FPGA在极低功耗下提供出色的性能,但也提供了更大的灵活性,允许设计人员更改底层硬件以最好地支持不断变化的软件。FPGA主要用于机器学习推理,视频算法和成千上万的小批量专用应用。然而,编程FPGA硬件所需的技能很难获得,并且FPGA的性能在某些工作负载下无法接近高端GPU的性能。

由于Nvidia的第一代Blackwell B200系列处理器在量产时出现问题不断跳票,同时还有未经证实的服务器过热问题。据外媒报道,Nvidia或将提前发布第二代Blackwell B300 GPU,性能将比B200提高50%,TDP随之增加200W。

Nvidia B300 AI GPU

据报道,B300系列处理器进行了大量的改进设计,但仍将使用台积电的4NP制造工艺(针对Nvidia进行优化的4nm节点),具有更高的FLOPS性能。同时在高带宽内存方面,将采用12-Hi HBM3E内存,每个GPU的将配备288GB内存,每GPU带宽仍为8TB/s。据称,B300的性能比B200提高了50%,代价是TDP也将提高200W,达到史无前例的1400W。有消息称,在B200交付后约半年时间,B300就将上市。

除了更高的性能和更大的内存外,基于B300 GPU的GB300平台将采用800G ConnectX-8 NIC网卡(收购自Mallenox),相比当前使用的400G ConnectX-7 NIC,带宽提高了一倍。并且,PCIe通道数量也从上一代的32条提升到了48条,这意味着将具有更好的横向扩展能力。

1 NVIDIA GPU util:一个令人困惑的现象

即使只有一个任务在 GPU 的一小部分上运行,由 nvidia-smi 或其他基于 nvml 的工具报告的 "GPU util" 指标也可能显示设备被完全占用,这对用户来说相当令人困惑。

为了更清楚地理解这一点,让我们看看 NVIDIA 开发者论坛上的一个例子


__global__ void simple_kernel() {
    while (true) {}
}

int main() {
    simple_kernel<<<1, 1>>>();
    cudaDeviceSynchronize();
}

这段代码会在单个流式多处理器(SM)上启动一个指定的内核(线程)。根据传统理解,GPU 的"利用率"应该按照 1 / SM数量 * 100% 来计算。例如:

  • 如果 GPU 上有 10 个 SM,那么"GPU 利用率"应该是 10%
  • 如果 GPU 上有 20 个 SM,那么"GPU 利用率"应该是 5%

然而,我们观察到 nvidia-smi 可能会报告 "GPU-Util" 为 100%,如下面的示例输出所示:


$ nvidia-smi
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|                               |                      |               MIG M. |
|===============================+======================+======================|
|   0  Tesla V100-SXM2...  Off  | 00000000:1A:00.0 Off |                    0 |
| N/A   42C    P0    67W / 300W |   2602MiB / 32510MiB |    100%      Default |
|                               |                      |                  N/A |
+-------------------------------+----------------------+----------------------+

问题出在哪里?让我们来寻找答案。