我才意识到:
1)能低精度计算,对推理速度至关重要!
2)除了nvida以外,其他家的显卡对低精度计算的支持是多么地弱!
事情是这样的:
我最近在用我的4070tis 16g跑ideogram4(最新的开源图生图模型,conditional和unconditional模型nvfp4下5.5g),我怕爆显存于是就用nvfp4跑,发现速度奇慢。
我很不解,问了gpt才知道:40系(Ada Lovelace系)居然不支持nvfp4下的计算!所以nvfp4对40系显卡而言仅仅是节省了显存,实际计算是:
1)先反量化到bf16;
2)再分层计算。
所以速度很慢——很粗略地说等于花了“bf16的生图时间+反量化时间”。
作为对比,我改用FP8跑(conditional和unconditional模型,FP8下 9.3g),comfyui可以动态加载显存于是不会爆显存,果然4070tis 16g运行FP8的速度大于nvfp4的速度。
我又查了一下,40系果然是支持FP8精度计算的,但让我很震惊的是,FP8——这么一个ai生图领域的极其常见的量化格式——直到40系显卡才支持。甚至20和30系显卡都不支持(仅支持int4)
于是我又继续查了一下,发现mac无论是FP8/INT8/FP4/INT4,都不支持——mac甚至更惨,直到M5才在gpu里面加入“tensor core”(neural accelerator)。
怪不得我在M4 pro里面里面跑Q4量化的krea2.gguf(另一个最新的开源图生图模型),速度要30-60s/it,合着量化后对mac来说,也是先反量化到bf16再推理。
然后我又想到M4 max/M5 max/M3 ultra等这些大统一内存跑LLM时,很多所谓“Q4、Q8量化的LLM”,实际上也是因为无法进行低精度计算,导致“先反量化到bf16再推理”,吐字速度是多么地慢!白白浪费了硬件性能。
回到正题:
DGX spark的优势来了!虽然一直被吐槽显存带宽低,但我才一直到DGX spark能够支持“nvfp4”和“fp8”等低精度计算是多么可贵,以及牢黄当时吹的“1T q4算力”其实真的很有应用场景。
nvfp4应该是最好的4-bit量化方式了(比q4 gguf好多了),损失的信息少,可显著减少硬件开销;我看社区里面,qwen小模型量化为q4、q8的gguf后经常会无限吐重复字循环,但是量化为nvfp4后这种问题很少。
如果支持“nvfp4低精度计算”,等于变相地节省了显存带宽。
甚至可以暴论(新的不等式):dgx spark 273g/s带宽>RTX 4070 500g/s带宽>M3 ultra 819g带宽!
背后的逻辑是dgx spark最低支持nvfp4,4070最低支持fp8,m3 ultra仅支持bf16。而模型在4bit→8bit→16bit下,大小(大概)依次翻倍。
发这个贴只是一个AI小白的感叹,以前只非常浅显地关注显存、带宽、算力,没想过“低精度计算”的如此重要。