AMD推出了ROCm,这个GPU计算平台的体验如何?对比CUDA有没有优势?

您所在的位置:网站首页 1pflops等于多少tflops AMD推出了ROCm,这个GPU计算平台的体验如何?对比CUDA有没有优势?

AMD推出了ROCm,这个GPU计算平台的体验如何?对比CUDA有没有优势?

2023-04-14 21:45| 来源: 网络整理| 查看: 265

前两天刚入了一块二手Radeon Vii,装了Rocm2.9+Tensorflow1.15 。今天通过实战评测,谈谈我的体验。

一、背景小知识:

除了这个问题里的人之外,恐怕很多人都不知道,现在Nvidia已经不再是深度学习唯一的选择了。AMD对标CUDA的产品ROCm经过2年多的发展,对tensorflow和pytorch都实现了原生支持,A家最近几代GCN架构的显卡都可以跑,但不包括最新出的5700这种RDNA架构卡。

在GCN架构的消费级显卡中,卡皇当属2019年2月发布、7月就停产的的Radeon Vii。这块卡基于7nm工艺,能提供13.44TFLOPS的fp32算力,或者2倍于此的fp16算力,相比之下,RTX 2080ti的TFLOPS是13.4,2080是10.1,1080ti是11.3, 1080是8.9。Raveon vii的性能应该等于2080Ti,但售价只有一半。更奢侈的是,这卡配备了16G HBM2高速显存,光显存成本就占了显卡价格的一半,因此网友们都推测它其实是AMD计算卡Mi50的马甲,短暂下放只是为了不在旗舰级消费市场掉队,属于赔本赚吆喝的范畴。

其实,既然麻花腾不会亏,苏妈当然也不会亏,只有老黄赚大了,天下苦Nvidia久矣!

二、实战评测

本体:我收的是一块蓝宝石厂牌的Radeon Vii,比最低价要贵几百,但据说vbois和苹果更兼容,这是我的一个强需求。

Baseline:由于手头没有2080或者2080ti,我只能祭出原先用的是一块1080。讲道理这块卡我很喜欢,微星和贼船联合出品的Sea Hawk一体水冷,静音效果那叫一个棒。但是问题有二:显存只有8G,finetune个Bert不便;MAC OS 10.14之后不支持N卡。两点都是硬伤。

平台: 公平起见,两块卡都在以下平台上测试:6700K CPU,16G内存,Ubuntu-18.04,kernel-4.15,anaconda-2.7,tensorflow-1.15,cuda-10,cudnn-7.6,rocm-2.9。bare metal安装,不用docker。

2.1 tensorflow官方benchmark

tf官方提供了一个benchmark repo ,内含大部分常见卷积网络。废话不多说直接开跑,trainning examples/per sec对比如下,-部分是显存不够无法启动。

对应的speed up如图:

可以看出三个表现:

当今常用的cnn模型,如vgg16、resnet、inception3等上,Radeon Vii可以达到相比GTX1080 1.6~2倍的加速比,而且可以跑更大的ResNet101或者152模型。这相当不错,2080Ti我没用过,但是估计也就这个水平,甚至略不如Radeon Vii。 在lenet和alexnet这两个较早期的网络上,加速比只有1.3左右。这可以理解:这两个模型的计算量太小了,都达到成千上万的examples/sec,主要瓶颈不在计算,而在IO了。 MobileNet非常反常,Radeon Vii反倒只有GTX 1080七分之一的速度。事出反常必有妖。 2.2 深度分离卷积benchmark

这事出反常的妖,大概率出在MobileNet中大量使用的一类特殊卷积方法——深度分离卷积(Depthwise Separable Convolution)上。它将一步普通卷积拆解成两步Depthwise卷积+Pointwise卷积,以减少卷积核的参数量。其中Depthwise卷积独立作用到输入数据的每个channel上,Pointwise卷积则对输出结果再进行一次Dense变换。Depthwise部分在计算上比较独特,我猜测要么A家的libmiopen.so中没有提供足够的支持,要么就是tensorflow的开发人员用错了底层api。

深度分离卷积

为了验证这一点,我设计了一组对比实验,去除所有不必要的激活、池化、全连接,采用全卷积网络:A.普通卷积,B.深度分离卷积,C.将深度分离卷积中的Pointwise部分也去掉。结果如下

猜想证实,采用普通卷积时(conv),Radeon Vii可以达到1.65倍的加速;采用深度分离卷积(D+P conv)就立马降到1/6左右;更诡异的是,把P卷积去掉之后,理论上模型计算量减少了,GTX1080也反应了这一点,但Radeon Vii在batch=64时却更慢了。必须说tensorflow-rocm目前对深度分离卷积的支持一塌糊涂,ROCm和tensorflow开发组,必有一锅。要知道,这是我最爱的卷积核啊!在NLP问题里也很有用的!

2.3 LSTM benchmark

NLP玩家可能更关心LSTM的表现。这里我做了一个简单的模型,基于两层biLSTM的序列分类。结果如下

在小batch size时,Radeon Vii还不如GTX1080;当batch size达到256后,两者速度相等;继续增大batch size,Radeon Vii还能继续加速,GTX1080则显存OOM了。结果也算reasonable:LSTM只能在batch层面实现并行化,Vii的流处理器更多,但单核性能和底层库支持中必有一个力有不逮。早在CUDA8/9出来时就听闻对RNN有特别优化,rocm还需努力啊。

2.4 Transformer benchmark

最激动人心的部分终于来了。买这块卡的初衷之一就是应对Bert类场景。由于懒得一步一步按bert的代码试验,我就直接建了一个和Bert-Base一模一样的Layer=12,Hidden=768的Transformer网络,在长度为200(此处失误,该选512才能最大化压榨显存)的文本数据上从头开始训练,理论上和finetune的速度差不多。

Radeon Vii的速度大约是GTX1080的1.77倍,而且可以支持更大的batch size,这对finetune的收敛稳定性是有实际好处的。再说一遍这是文本长度200时的结果,本应测试512,但实验做到这里我实在是懒得再拆机箱插拔一遍显卡了,itx机箱使我后悔。

三、总结

总结一下目前(2019年11月)使用ROCm平台 + AMD卡皇 Radeon Vii进行深度学习的几点体验吧:

优点:

一般的CNN和Transformer上速度真的快,还能跑大batch size。可战2080Ti,价格便宜了一倍,真香!支持(黑)苹果,虽然ROCm只支持linux,但是倘若你愿意用Keras,它有一个冷门的backend叫做plaidML,可以在苹果上利用OpenCL或者Metal库加速,做做小实验够了。性能留待下次再给大家测试吧。AMD yes!A卡战未来!翻看rocm社区的记录,性能曲线一路彪升。听说亚马逊都和AMD签了云计算的合作协议,我在等着rocm完善的那一天。

缺点:

深度分离卷积的支持一塌糊涂,不知道是rocm还是tensorflow的锅,我准备去提个issue。由此推广,如果你有开发/使用其他奇技淫巧的需求,A卡可能会坑了你。LSTM的速度一般,小batch时不如N卡,不知道是单核性能不足,还是rocm优化问题。另外不论是N卡还是A卡,在大batch跑LSTM时都有很强的啸叫声,体验差。莫名其妙地,经常第一个batch会卡很久才启动,几十秒到几分钟左右,另人恼火。

总得来说,如果你是个深度学习萌新,或者依赖这块显卡来稳定生产,建议暂时别入坑。如果你是个爱折腾的geek,或者有黑苹果需求,建议入手。极高的性能,无尽的折腾,还有什么比这更吸引人呢?



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3