Auto Byte

专注未来出行及智能汽车科技

微信扫一扫获取更多资讯

Science AI

关注人工智能与其他前沿技术、基础学科的交叉研究与融合发展

微信扫一扫获取更多资讯

小舟、泽南作者

英伟达RTX 3080值不值得抢?有人用它在TensorFlow上训练了卷积网络

一通跑分猛如虎,结果发现深度学习框架还不支持。

自 9 月份英伟达发布新一代安培架构消费级显卡 RTX 30 系列已过去两个月了,随着芯片代工者三星的产能爬坡,未来更多的人将有机会买到最新架构的 GPU RTX 3080 和 3090。不过由于价格的原因,更多时候我们还是希望能够先得知性价比再去下单。最近,在机器学习社区已有先行者进行了测试。


首先,测试得出的结果喜忧参半:对于卷积神经网络来说,英伟达 GeForce RTX 3090 要比专业的 AI 训练卡 Tesla V100 更快。不过在 TensorFlow 上使用 RTX 30 系列 GPU 的体验是非常不稳定的,至少在 NGC 容器之内是如此。

特别是在最新版的 TensorFlow 2 上,RTX 30 的性能似乎很差。

看来对于急需更高性能机器学习算力的人们来说,想要获得真正安培架构的速度还需要等待软件的适配。

在英伟达官网上,RTX 30 系列显卡的一些参数和价格。

近日,国外网站 fsymbols 使用容器中的 TensorFlow,测试了英伟达 GeForce RTX 3090、3080 对比 2080Ti 在部分流行卷积神经网络训练上的性能。在这些表格中,你会发现基准测试的结果有点奇怪,因为迄今为止框架对于新硬件的支持很差。

ResNet 测试

测试使用了目前最常见的项目,深度残差网络 ResNet50:




随后还有 ResNet 101 网络的结果:



AI Benchmark 测试

很多人都知道手机的 AI 算力有一个比较流行的基准测试,即苏黎世联邦理工大学研究者们提出的 AI Benchmark。目前这一基准也加入了台式电脑和笔记本电脑显卡的测试分类。作者还在 NGC 20.10-tf1 容器中运行了 AI-Benchmark. 的基准测试。

目前在 AI Benchmark 网站上排在榜单第一的计算卡还是英伟达 Tesla V100 SXM2 32GB,其推理分为 17761,训练分 18030,AI 分数 35791。RTX 3080 和 3090 均超过了这个分数。




虽然 PyTorch 是目前深度学习在学界和业界较为流行的框架,但这次测评中只有 TensorFlow 的数据,因为在开始进行基准测试时,PyTorch 对 RTX 3080 和 3090 卡的支持又被移除了。在某些网络上,它们的测试成绩和 2060 Super 成绩相近——这显然不是一个正常的成绩。

英伟达的 TensorFlow Docker 容器

英伟达的 TensorFlow 容器之间的性能差异很大,这让人很困惑。仅从容器 20.10 NGC 开始,TensorFlow 才开始正式支持 3090 和 3080 卡,但实际上 20.08 容器拥有更好的性能。如果像之前发布过的所有 AI 训练基准一样,只限制测试一个版本,就不会获得很多有用的信息。因此,作者对 3-7 个不同的 TensorFlow 容器进行了基准测试,并在 TensorFlow 1.x 和 TensorFlow 2.x NGC 容器中测试了 4 种不同的 ResNet 变体。

参数

所有结果均适用于自动混合精度(Automatic Mixed Precision)FP16 进行的模型训练。目前我们只需研究 Volta 系列计算卡及以后的设备,更早年代的 GPU 分数已经没有意义。这些测试是在 Ubuntu 20.04、Nvidia 驱动版本 455.28、本机 CUDA 11.1 版本的配置条件下运行的。当然,容器具有自己的 CUDA 版本,在容器内部启动 nvidia-smi 时,会报告 CUDA 版本。

批处理大小

例如,在 NGC 的 TFv1 20.10 容器的 se-resnext101–32x4d 训练基准上,一个批次 128 获得的训练速度是 96 张图像的更小批的 2.5 倍,192 张图像 1.5 倍批处理大小速度的 1.6 倍。对于要买新显卡的人们来说,重要的是比对 RTX3090 和 3080 之间 24G 和 10G 显存带来的性能差异——一倍的价格换 2.4 倍的显存是不是值得?

在相似的批处理大小下,3090 有时并不会比 3080 快很多,两者都无法满足各自快一万个 CUDA 核心的需求,但是增加 3090 的批处理大小,批处理大小可以超过 2.4 倍。因为批处理大小会影响激活占用的空间,而模型和梯度大小则具有固定的内存成本。

XLA 优化

另一个变数是 XLA 优化对 GPU 训练性能的影响。这足以让我们了解 TensorFlow 团队所做的优化效果如何。由于某些原因,在 NGC 20.09 TF1 容器上,RTX 3080/3090 在 XLA 优化情况下的性能较差。在某些情况下,特定用例的性能比基于相邻用例的预期性能低 9 倍。

内存

我们知道,GeForce RTX 30 系列有 GPU 界的多项「第一」:它是首款有着 24GB GDDR6X 显存的游戏图形卡;首批支持 HDMI 2.1 的 GPU,一块显卡即可实现 4k 高刷新率或 8k 游戏。其中来自美光的 GDDR6X 内存可谓大跨步的提升——此前,显存带宽最高速度为 64 GB/s,传统二进制标准依赖两级信号传输编码为 1s 或 0s 的数据,每周期可传输一位数据。而美光新型的 PAM4 技术采用四个不同层级,同时向内存输入及输出两位数据。

由此,GDDR6X 可以将单颗粒的内存带宽提升至 84 GB/s,从而使系统带宽提升为之前无法想象的 1TB/s。30 系列 GPU 的内存速度非常之快,相比 2080Ti,3090 的速度提升了两倍,24G 的容量也比之前来的更加充足。

基准是来自 20.10 版本的代码,大部分可以在英伟达 GitHub 上的 DeepLearningExamples 中找到。但是,作者对容器的 workspace/nvidia-examples/cnn/resnet.py 中的 Resnet-50 代码进行了轻微的改动,因为英伟达的示例代码被限制为仅使用很小一部分(例如 80%)的 GPU 内存。这是通过以下代码完成的:

… = tf.GPUOptions(per_process_gpu_memory_fraction=0.8)

… = tf.GPUOptions(per_process_gpu_memory_fraction=0.99)

CPU 型号不同是否会对成绩有影响?测试发现,在 i7-4960X 或 i9-7980XE CPU 上运行这些代码并没有造成太大的不同。但是大多数基准在 i7-4960X 上略胜一筹,因此不必为升级 CPU 过多担心。

对于 GPU 来说,在涉及深度学习的数学方面,30 系列仅略高于 20 系列,两者均具有 Tensor Core 32 位累加运算性能,而 RTX Titan 和 Quadro 卡(RTX 6000、A6000 等)的速度是 FP16 累积 Tensor Core 计算速率的一半,英伟达的研发者认为混合精度训练的 Tensor Core 的计算速率足以进行推理,但不能进行训练。因为 2080 Ti 的 Cuda Core(不是 Tensor Core)FP16 计算没有减少一半,性能却是 FP32 FLOP 的 2 倍。这次英伟达决定也将其削减,因此在 AI 计算中由于 FP16 计算的 FLOPS 和 FP32 一样多,因此改进几乎是微乎其微的,仅略高于 2080 Ti。你可以在英伟达的 30 系列规格 PDF 中发现这一点。

因此,如果你不是在训练 1x1 和 3x3 的,只看内存不看算力的卷积网络,而是在探索一些具有较大的「密集」/「全连接」非卷积层的计算密集型训练,现在更好的选择是购买二手 RTX Titan 卡,因为 RTX 20 系列 NVLink GPU 的价格正在迅速下降。当然,由于 AMD 今年十月发布了 Radeon RX 6900XT,明年春季 RTX 30 系列显卡的价格也有望下降,我们甚至有可能等来 RTX 3080Ti。

结论

新一代架构肯定是更好的,如果你打算训练大型卷积神经网络,那么 RTX 3090 一定比专业卡 Tesla V100 要好,而且成本方面也更划算。3090 更好的原因在于内存更大,能够运行比 V100 更大的网络。即使在 V100 上可以以小批量进行处理,但 3090 的速度要更快一些,因此无需缩小批处理大小,选择 3090 更加合适。

对比同属消费级的 RTX 2080Ti,新一代显卡 3080 在 AI 训练任务上可以获得 25-30% 的性能提升,这相比英伟达在发布会上宣传的对比 RTX 2080 有 100% 性能提升小了一些。但因为新品的价格没有提升,所以能买到的话还是物有所值。


如果用户确定只训练小型网络,并且也不需要在一台计算机上分配过多的计算量,那么 3080 将更具成本效益。至少在某种程度上,对于 NGC 容器,TensorFlow v2 的性能差强人意。

英伟达 RTX 3080 和 3090 是目前全球 AI 从业者最希望拥有的 GPU,但自发布两个月来出货量仍然很少,不论是加价购买、程序抢单还是纯靠运气,能够买到这些显卡并进行简单的深度学习测试就足以花费大量时间了。对于大多数人来说,目前看起来还可以等一等。

参考内容:
https://fsymbols.com/3080-3090-benchmarks/
产业英伟达(NVIDIA)GPUten
相关数据
深度学习技术

深度学习(deep learning)是机器学习的分支,是一种试图使用包含复杂结构或由多重非线性变换构成的多个处理层对数据进行高层抽象的算法。 深度学习是机器学习中一种基于对数据进行表征学习的算法,至今已有数种深度学习框架,如卷积神经网络和深度置信网络和递归神经网络等已被应用在计算机视觉、语音识别、自然语言处理、音频识别与生物信息学等领域并获取了极好的效果。

机器学习技术

机器学习是人工智能的一个分支,是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、计算复杂性理论等多门学科。机器学习理论主要是设计和分析一些让计算机可以自动“学习”的算法。因为学习算法中涉及了大量的统计学理论,机器学习与推断统计学联系尤为密切,也被称为统计学习理论。算法设计方面,机器学习理论关注可以实现的,行之有效的学习算法。

基准技术

一种简单的模型或启发法,用作比较模型效果时的参考点。基准有助于模型开发者针对特定问题量化最低预期效果。

参数技术

在数学和统计学裡,参数(英语:parameter)是使用通用变量来建立函数和变量之间关系(当这种关系很难用方程来阐述时)的一个数量。

TensorFlow技术

TensorFlow是一个开源软件库,用于各种感知和语言理解任务的机器学习。目前被50个团队用于研究和生产许多Google商业产品,如语音识别、Gmail、Google 相册和搜索,其中许多产品曾使用过其前任软件DistBelief。

深度残差网络技术

残差网络是为了解决深度神经网络(DNN)隐藏层过多时的网络退化问题而提出。退化(degradation)问题是指:当网络隐藏层变多时,网络的准确度达到饱和然后急剧退化,而且这个退化不是由于过拟合引起的。

卷积神经网络技术

卷积神经网路(Convolutional Neural Network, CNN)是一种前馈神经网络,它的人工神经元可以响应一部分覆盖范围内的周围单元,对于大型图像处理有出色表现。卷积神经网路由一个或多个卷积层和顶端的全连通层(对应经典的神经网路)组成,同时也包括关联权重和池化层(pooling layer)。这一结构使得卷积神经网路能够利用输入数据的二维结构。与其他深度学习结构相比,卷积神经网路在图像和语音识别方面能够给出更好的结果。这一模型也可以使用反向传播算法进行训练。相比较其他深度、前馈神经网路,卷积神经网路需要考量的参数更少,使之成为一种颇具吸引力的深度学习结构。 卷积网络是一种专门用于处理具有已知的、网格状拓扑的数据的神经网络。例如时间序列数据,它可以被认为是以一定时间间隔采样的一维网格,又如图像数据,其可以被认为是二维像素网格。

批次技术

模型训练的一次迭代(即一次梯度更新)中使用的样本集。

AMD机构

超威半导体(中国)有限公司专门为计算机、通信和消费电子行业设计和制造各种创新的微处理器(CPU、GPU、主板芯片组、电视卡芯片等),以及提供闪存和低功率处理器解决方案,公司成立于1969年。AMD致力为技术用户——从企业、政府机构到个人消费者——提供基于标准的、以客户为中心的解决方案。

https://www.amd.com/zh-hans
美光机构

美光是全球最大的半导体储存及影像产品制造商之一,其主要产品包括DRAM、NAND闪存、NOR闪存、SSD固态硬盘和CMOS影像传感器。总公司(Micron Technology, Inc.)设于美国西北部爱达荷州的首府博伊西。

https://cn.micron.com/
推荐文章
暂无评论
暂无评论~