@余凯_地平线民工 发微博吐槽 http://t.cn/AXYMJU14,有的智驾芯片把稠密算力乘以六七倍,叫“等效算力”【图1】。
他自己就没这么夸张。地平线征程 6P 的稠密算力是 280 TOPS,标 560 TOPS,只乘了两倍。因为英伟达 Orin X 也是这么算的,他就把这个叫作“NV 算力”。
我第一反应,大家都不是老实人,都是往高了报,这不是五十步笑百步吗?你可以乘以 2,人家就不能乘以 4?只要胆子够肥,你乘 8 也可以啊!
可仔细一想,乘 2 和乘 6,真的只是胆子大小的区别吗?先别说乘 4、乘 6,光乘 2 这件事也值得查一查。英伟达和地平线凭什么能乘 2 呢?
假设模型有一组权重 [5, 0.01, 7, 0.02],刚好要和 [2, 3, 4, 6] 对应相乘,再把结果加起来【图2】。
▸ 按稠密方式,四项都算。5×2+0.01×3+7×4+0.02×6=38.15。
▸ 把第二、第四个权重改成零,只算第一项和第三项。5×2+7×4=38。
这道题里,答案只差了 0.15,乘法从四次减到两次。把小权重改成零,这一步叫剪枝【图11】。英伟达的芯片把这个规则做进了硬件【图3】。
权重每四个一组,最多留两个非零值。芯片知道留下的是哪两个位置,就只取对应的数来乘。对符合条件的矩阵乘法,同样的时间里,原来能算完一组,现在理论上能算完两组。于是就得到了两倍稀疏算力。http://t.cn/AXYMJU1U
征程 6P 的 560 TOPS,官网也注明了是按 50% 稀疏条件折算的【图4】。
但问题来了,哪有这么巧,训练出来的权重每四个恰好有两个零?
这两个零是主动剪出来的。英伟达公开过一种做法。先把稠密模型训好,再把参与剪枝的权重四个一组,每组挑两个绝对值最小的置零。然后固定这些零,再训一遍,让剩下的权重重新调整【图5】。
那剪完到底损失多少,又快了多少?
英伟达拿 ResNeXt-101 做过图像分类实验【图6】。看表里的第二行,原来在 ImageNet 上的分类准确率是 79.3%,剪成 2:4 再训练,报告的准确率还是 79.3%。
这项测试里准确率没降,那速度提升是大是小,都是净赚!
同一颗 A100,FP16 稠密峰值是 312 TFLOPS,稀疏峰值是 624 TFLOPS,正好两倍【图7】。可用 TensorRT 8.0 跑完整个图像分类模型呢?一次处理 8 张图,图上大约快 10%。批量拉到 1024,才接近 20%【图8】。
为什么整网没快两倍?因为能吃到这两倍的,是符合 2:4 条件、又用上稀疏计算的那些层。其余层还得照跑,中间数据也还得读写【图9】。
也有剪了以后,效果补不回来的。我找到一篇 ICLR 2024 的论文,叫《A Simple and Effective Pruning Approach for Large Language Models》,提出的剪枝方法叫 Wanda。它把 LLaMA-7B 剪成 2:4,七项任务的平均准确率从 59.99% 掉到 48.53%。再做全参数微调,回到 56.19%,还差 3.8 个百分点【图10】。
同一篇论文另做了一项速度测试。2:4 的 LLaMA-7B,端到端用时从 312 毫秒降到 251 毫秒,速度约是原来的 1.24 倍【图11】。
那既然每四个能剪掉两个,每四个剪掉三个、每六个剪掉五个,能不能折算成四倍、六倍?
单看乘法次数,可以这么算。模型这头也有个取舍。同一个网络里剪得更多,损失更大。
但如果换成一个更大的网络再剪,最后留一样多的权重,能不能把效果补回来?另一篇 ICLR 2024 的论文就比了这个。
假设两边最后都只留 100 个非零权重。按 2:4 剪,可以从一个有 200 个权重位置的模型开始。按 1:4 剪,可以从一个有 400 个位置的模型开始。起步的网络更大,剪下去的比例也更高。最后都留下 100 个,哪个效果更好【图12】?
看图,在横轴上找同一个点,两边留下的非零权重就一样多。紫色是 2:4,棕色是 1:4。线越低,验证损失越小。这两条线挨得很近【图13】。
论文表 1 把差距算了出来,在这组 T5 实验里,留下同样 100 个非零权重。2:4 的效果大约要用 156 个权重的稠密模型才能追上,1:4 则要 162 个把稠密的 100 当基准【图12】。
第一步从 100 到 156,等效模型规模多了 56%。第二步从 156 到 162,再多的只有约 3.8%。这两个百分比说的是,达到同样的验证效果,稠密模型得做多大。
读完我倒愿意收回“五十步笑百步”这句。余凯这次的质疑有道理。毕竟2倍稀疏的提升立竿见影,也有理论依据。但2倍稀疏到4倍、6倍稀疏,究竟有多大提升、难道只是为了追求一个更大的TOPS显得好看?目前没有定论,需要进一步的研究论证!
就这笔账来说,余凯和黄教主倒还真算老实人。#地平线HSD##AI算力##DeepSeek[超话]#
