我看了AMD官网上的文档,跑了github上的几个例子,简单说一下。
resnet50入门的那个例子,目前和CPU运行相比,基本上速度是一样的。但是用CPU跑,CPU占用率是65%,用IPU跑,CPU占用率大概1%,这基本证实IPU确实能用。
然后跑本地大模型,速度只有用CPU跑的一半。 估计是AMD/Xilinx软件开发人员的锅。
另外看了AMD官方文档,不准确的说,IPU大概可以看作某种二进制格式文件的执行器,就像CPU执行exe一样。AMD目前提供了两种二进制格式文件,他们叫做target,一个是1x4、一个是5x4。IPU执行前者时,可以提供2T的算力,支持5个程序同时利用IPU。执行后者时可以提供10T算力,只支持1个程序利用IPU。
网络模型本身编译时就需要指定target,运行时要保持和编译时target一致。根据github上别人反映和我本人的试验,5x4现在似乎不能用,还会导致崩溃死机,所以只有1x4能用。也期待别人的实验结果。
为什么没有比CPU快呢?我没有仔细调查,只是琢磨了一下。除了优化不到位,其实不是IPU慢,而是CPU快。onnx这类应该是为AVX512甚至VNNI优化了,在代码库里用AVX等关键字搜索一下,可以提供个大致的证据。
这样量化到8bit的网络,哪怕硬件按照256bit的AVX单元算,一个周期的操作大概是32倍,再加上8核,以4G频率计算,对于矩阵乘加运算,本身也能提供1T左右的算力。实际上AMD加入AVX512后,很多测试分数大幅提高,我这个估算很可能还保守了。另一方面,CPU上的计算本身延迟更低,也更容易优化。
这就是为什么我长期持支持AVX512的立场,自Intel消费级CPU不支持AVX512以后,再也不购买也不推荐Intel的CPU的原因。
回过头看IPU,可以做个简单结论:还是有用的,尤其是将来5x4的target能够启用、并优化得当的话。对普通人来讲,可以用作照片分类等日常任务,比如原来目录里排序,可以有日期什么,以后就可以用人脸分组等等。github一个demo就是干这个的。这时候用CPU做,就算算力够用,也会面临占用率过高、发热之类的问题,用IPU就好得多。
最后说一下零刻,还是给大家解决了问题,这样的售后目前看还是过关的。就我个人体验,并未比华硕等“大厂”反应更慢,应该给予肯定。
resnet50入门的那个例子,目前和CPU运行相比,基本上速度是一样的。但是用CPU跑,CPU占用率是65%,用IPU跑,CPU占用率大概1%,这基本证实IPU确实能用。
然后跑本地大模型,速度只有用CPU跑的一半。 估计是AMD/Xilinx软件开发人员的锅。
另外看了AMD官方文档,不准确的说,IPU大概可以看作某种二进制格式文件的执行器,就像CPU执行exe一样。AMD目前提供了两种二进制格式文件,他们叫做target,一个是1x4、一个是5x4。IPU执行前者时,可以提供2T的算力,支持5个程序同时利用IPU。执行后者时可以提供10T算力,只支持1个程序利用IPU。
网络模型本身编译时就需要指定target,运行时要保持和编译时target一致。根据github上别人反映和我本人的试验,5x4现在似乎不能用,还会导致崩溃死机,所以只有1x4能用。也期待别人的实验结果。
为什么没有比CPU快呢?我没有仔细调查,只是琢磨了一下。除了优化不到位,其实不是IPU慢,而是CPU快。onnx这类应该是为AVX512甚至VNNI优化了,在代码库里用AVX等关键字搜索一下,可以提供个大致的证据。
这样量化到8bit的网络,哪怕硬件按照256bit的AVX单元算,一个周期的操作大概是32倍,再加上8核,以4G频率计算,对于矩阵乘加运算,本身也能提供1T左右的算力。实际上AMD加入AVX512后,很多测试分数大幅提高,我这个估算很可能还保守了。另一方面,CPU上的计算本身延迟更低,也更容易优化。
这就是为什么我长期持支持AVX512的立场,自Intel消费级CPU不支持AVX512以后,再也不购买也不推荐Intel的CPU的原因。
回过头看IPU,可以做个简单结论:还是有用的,尤其是将来5x4的target能够启用、并优化得当的话。对普通人来讲,可以用作照片分类等日常任务,比如原来目录里排序,可以有日期什么,以后就可以用人脸分组等等。github一个demo就是干这个的。这时候用CPU做,就算算力够用,也会面临占用率过高、发热之类的问题,用IPU就好得多。
最后说一下零刻,还是给大家解决了问题,这样的售后目前看还是过关的。就我个人体验,并未比华硕等“大厂”反应更慢,应该给予肯定。