深度学习GPU选购指南

news2024/11/14 20:41:30

【导读】最近,曾拿到斯坦福、UCL、CMU、NYU博士offer、目前在华盛顿大学读博的知名测评博主Tim Dettmers在自己的网站又上线了深度学习领域的GPU深度测评,到底谁才是性能和性价比之王?

众所周知,在处理深度学习和神经网络任务时,最好使用GPU而不是CPU来处理,因为在神经网络方面,即使是一个比较低端的GPU,性能也会胜过CPU。

深度学习是一个对计算有着大量需求的领域,从一定程度上来说,GPU的选择将从根本上决定深度学习的体验。

但问题来了,如何选购合适的GPU也是件头疼烧脑的事。

怎么避免踩雷,如何做出性价比高的选择?

曾经拿到过斯坦福、UCL、CMU、NYU、UW 博士 offer、目前在华盛顿大学读博的知名评测博主Tim Dettmers就针对深度学习领域需要怎样的GPU,结合自身经验撰写了万字长文,最后给出了DL领域的推荐GPU。

Tim Dettmers此人的研究方向是表征学习、硬件优化的深度学习,他自己创建的网站在深度学习和计算机硬件领域也是小有名气。

Tim Dettmers此文推荐的GPU全部来自N厂,他显然也认为,搞机器学习,AMD目前还不配拥有姓名。

原文链接小编也贴在下面啦。

原文链接:https://timdettmers.com/2023/01/16/which-gpu-for-deep-learning/#GPU_Deep_Learning_Performance_per_Dollar

RTX40和30系的优缺点

与英伟达图灵架构RTX 20系列相比,新的英伟达安培架构RTX 30系列具有更多优势,如稀疏网络训练和推理。其他功能,如新的数据类型,应更多地被看作是一种易用化功能,因为它们提供了与图灵架构相同的性能提升,但不需要任何额外的编程要求。

Ada RTX 40系列甚至有更多的进步,比如上面介绍的张量内存加速器(TMA)和8位浮点运算(FP8)。与RTX 30相比,RTX 40系列也有类似的电源和温度问题。RTX 40的电源连接器电缆融化的问题可以通过正确连接电源电缆而轻松避免。

稀疏的网络训练

安培允许在密集的速度下进行细粒度结构的自动稀疏矩阵乘法。这是如何做到的?以一个权重矩阵为例,把它切成4个元素的碎片。现在想象这4个元素中的2个元素为零。图1显示了这种情况的样子。

图1:Ampere架构GPU中的稀疏矩阵乘法功能所支持的结构

当你将这个稀疏权重矩阵与一些密集输入相乘时,安培的稀疏矩阵张量核心功能会自动将稀疏矩阵压缩为密集表示,其大小为图2所示的一半。

在压缩之后,密集压缩的矩阵瓦片被送入张量核心,张量核心计算的矩阵乘法是通常大小的两倍。这有效地产生了2倍的速度,因为在共享内存的矩阵乘法过程中,带宽要求减半。

图2:在进行矩阵乘法之前,稀疏矩阵被压缩为密集表示。

我在研究中致力于稀疏网络训练,我还写了一篇关于稀疏训练的博文。对我的工作的一个批评是:"你减少了网络所需的FLOPS,但并没有产生速度的提升,因为GPU不能进行快速的稀疏矩阵乘法"。

随着Tensor Cores的稀疏矩阵乘法功能的增加,我的算法或其他稀疏训练算法,现在实际上在训练期间提供了高达2倍的速度。

开发的稀疏训练算法有三个阶段:(1)确定每层的重要性。(2) 删除最不重要的权重。(3) 提升与每层的重要性成比例的新权重。

虽然这一功能仍处于实验阶段,而且训练稀疏网络还不普遍,但在你的GPU上拥有这一功能意味着你已经为稀疏训练的未来做好了准备。

低精度计算

在我的工作中,我之前已经表明,新的数据类型可以提高低精度反向传播期间的稳定性。

图4:低精度深度学习8位数据类型。深度学习训练得益于高度专业化的数据类型

目前,如果你想用16位浮点数(FP16)进行稳定的反向传播,最大的问题是普通FP16数据类型只支持[-65,504, 65,504]范围内的数字。如果你的梯度滑过这个范围,你的梯度就会爆炸成NaN值。

为了防止在FP16训练中出现这种情况,我们通常会进行损失缩放,即在反向传播之前将损失乘以一个小数字,以防止这种梯度爆炸。

Brain Float 16格式(BF16)对指数使用了更多的比特,这样可能的数字范围与FP32相同,BF16的精度较低,也就是有效数字,但梯度精度对学习来说并不那么重要。

所以BF16所做的是,你不再需要做任何损失缩放,也不需要担心梯度会迅速爆炸。因此,我们应该看到,通过使用BF16格式,训练的稳定性有所提高,因为精度略有损失。

这对你意味着什么。使用BF16精度,训练可能比使用FP16精度更稳定,同时提供相同的速度提升。使用TF32精度,你可以得到接近FP32的稳定性,同时提供接近FP16的速度提升。

好的是,要使用这些数据类型,你只需用TF32取代FP32,用BF16取代FP16--不需要修改代码。

不过总的来说,这些新的数据类型可以被看作是懒惰的数据类型,因为你可以通过一些额外的编程努力(适当的损失缩放、初始化、规范化、使用Apex)来获得旧数据类型的所有好处。

因此,这些数据类型并没有提供速度,而是改善了训练中低精度的使用便利性。

风扇设计和GPU温度

虽然RTX 30系列的新风扇设计在冷却GPU方面表现非常好,但非创始版GPU的不同风扇设计可能会出现更多问题。

如果你的GPU发热超过80C,它就会自我节流,减慢其计算速度/功率。解决这个问题的办法是使用PCIe扩展器,在GPU之间创造空间。

用PCIe扩展器分散GPU对散热非常有效,华盛顿大学的其他博士生和我都使用这种设置,并取得了巨大的成功。它看起来并不漂亮,但它能使你的GPU保持凉爽!

下面这套系统已经运行了4年,完全没有问题。如果你没有足够的空间在PCIe插槽中安装所有的GPU,也可以这么用。

图5: 带PCIE扩展口的4显卡系统,看起来一团乱,但散热效率很高。

优雅地解决功耗限制问题

在你的GPU上设置一个功率限制是可能的。因此,你将能够以编程方式将RTX 3090的功率限制设置为300W,而不是其标准的350W。在4个GPU系统中,这相当于节省了200W,这可能刚好足够用1600W PSU建立一个4x RTX 3090系统的可行性。

这还有助于保持GPU的冷却。因此,设置功率限制可以同时解决4x RTX 3080或4x RTX 3090设置的两个主要问题,冷却和电源。对于4倍的设置,你仍然需要高效散热风扇的 GPU,但这解决了电源的问题。

图6:降低功率限制有轻微的冷却效果。将RTX 2080 Ti的功率限制降低50-60W,温度略有下降,风扇运行更加安静

你可能会问,「这不会降低GPU的速度吗?」 是的,确实会降,但问题是降了多少。

我对图5所示的4x RTX 2080 Ti系统在不同功率限制下进行了基准测试。我对推理过程中BERT Large的500个小批次的时间进行了基准测试(不包括softmax层)。选择BERT Large推理,对GPU的压力最大。

图7:在RTX 2080 Ti上,在给定的功率限制下测得的速度下降

我们可以看到,设置功率限制并不严重影响性能。将功率限制在50W,性能仅下降7%。

RTX 4090接头起火问题

有一种误解,认为RTX 4090电源线起火是因为被弯折过度了。实际上只有0.1%的用户是这个原因,主要问题是电缆没有正确插入。

因此,如果你遵循以下安装说明,使用RTX 4090是完全安全的。

1. 如果你使用旧的电缆或旧的GPU,确保触点没有碎片/灰尘。

2.使用电源连接器,并将其插入插座,直到你听到咔嚓一声--这是最重要的部分。

3. 通过从左到右扭动电源线来测试是否合适。电缆不应该移动。

4.目视检查与插座的接触情况,电缆和插座之间无间隙。

H100和RTX40中的8位浮点支持

对8位浮点(FP8)的支持是RTX 40系列和H100 GPU的一个巨大优势。

有了8位输入,它允许你以两倍的速度加载矩阵乘法的数据,你可以在缓存中存储两倍的矩阵元素,而在Ada和Hopper架构中,缓存是非常大的,现在有了FP8张量核心,你可以为RTX 4090获得0.66 PFLOPS的计算量。

这比2007年世界上最快的超级计算机的全部算力还要高。4倍于FP8计算的RTX 4090,可与2010年世界上最快的超级计算机相媲美。

可以看到,最好的8位基线未能提供良好的零点性能。我开发的方法LLM.int8()可以进行Int8矩阵乘法,结果与16位基线相同。

但是Int8已经被RTX 30 / A100 / Ampere这一代GPU所支持,为什么FP8在RTX 40中又是一个大升级呢?FP8数据类型比Int8数据类型要稳定得多,而且很容易在层规范或非线性函数中使用,这在整型数据类型中是很难做到的。

这将使它在训练和推理中的使用变得非常简单明了。我认为这将使FP8的训练和推理在几个月后变得相对普遍。

下面你可以看到这篇论文中关于Float vs Integer数据类型的一个相关主要结果。我们可以看到,逐个比特,FP4数据类型比Int4数据类型保留了更多的信息,从而提高了4个任务的平均LLM零点准确性。

GPU深度学习性能排行

先上一张图来看GPU的原始性能排行,看看谁最能打。

我们可以看到H100 GPU的8位性能与针对16位性能优化的旧卡存在巨大差距。

上图显示的是GPU的原始相对性能,比如对于8位推理,RTX 4090的性能大约是 H100 SMX 的 0.33 倍。

换句话说,与RTX 4090相比,H100 SMX的8位推理速度快三倍。

对于此数据,他没有为旧GPU建模8位计算。

因为8位推理和训练在Ada/Hopper GPU上更有效,而张量内存加速器 (TMA) 节省了大量寄存器,这些寄存器在 8 位矩阵乘法中非常精确。

Ada/Hopper 也有 FP8 支持,这使得特别是 8 位训练更加有效,在Hopper/Ada上,8位训练性能很可能是16位训练性能的3-4倍。

对于旧GPU,旧GPU的Int8推理性能则接近16位推理性能。

每一美元能买到多少算力

那么问题来了,GPU性能强可是我买不起啊......

针对预算不充足的小伙伴,接下来的图表是他根据各个GPU的价格和性能统计的每美元性能排名(Performance per Dollar),侧面反映了GPU性价比。

选择一个完成深度学习任务并且符合预算的GPU,可分为以下几个步骤:

  • 首先确定你需要多大的显存(至少12GB用于图像生成,至少24GB用于处理Transformer);

  • 针对选8位还是16位(8-bit or 16-bit),建议是能上16位就上,8位在处理复杂编码任务时还是会有困难;

  • 根据上图中的指标,找到具有最高相对性能/成本的GPU。

我们可以看到,RTX4070Ti 对于8位和16位推理的成本效益最高,而RTX3080对于16位训练的成本效益最高。

虽然这些GPU最具成本效益,但他们的内存也是个短板,10GB和12GB的内存可能无法满足所有需求。

但对于刚入坑深度学习的新手来说可能是理想GPU。

其中一些GPU非常适合Kaggle竞赛,在Kaggle比赛中取得好成绩,工作方法比模型大小更重要,因此许多较小的 GPU非常适合。

Kaggle号称是全球最大的数据科学家汇聚的平台,高手云集,同时对萌新也很友好。

如果用作学术研究和服务器运营的最佳GPU似乎是 A6000 Ada GPU。

同时H100 SXM的性价比也很高,内存大性能强。

个人经验来说,如果我要为公司/学术实验室构建一个小型集群,我推荐66-80%的A6000 GPU 和20-33%的 H100 SXM GPU。

综合推荐

说了这么多,终于到了GPU安利环节。

Tim Dettmers专门制作了一个「GPU选购流程图」,预算充足就可以上更高配置,预算不足请参考性价比之选。

这里首先强调一点:无论你选哪款 GPU,首先要确保它的内存能满足你的需求。为此,你要问自己几个问题:

我要拿GPU做什么?是拿来参加 Kaggle 比赛、学深度学习、做CV/NLP研究还是玩小项目?

预算充足的情况下,可以查看上面的基准测试并选择适合自己的最佳GPU。

还可以通过在vast.ai或Lambda Cloud中运行您的问题一段时间来估算所需的GPU内存,以便了解它是否能满足你的需求。

如果只是偶尔需要一个GPU(每隔几天持续几个小时)并且不需要下载和处理大型数据集,那么vast.ai或 Lambda Cloud也能很好地工作。

但是,如果一个月每天都使用GPU且使用频率很高(每天12小时),云GPU通常不是一个好的选择。

参考资料:

https://timdettmers.com/2023/01/16/which-gpu-for-deep-learning/#more-6

https://timdettmers.com/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/464683.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

马云的创业故事及他人生中的摆渡人-创建阿里巴巴(六)

著名的“18罗汉大会” 以及“马云成功背后的男人” 1999年大年初五,杭州湖畔花园小区,18个人坐满了一屋子, 这是阿里巴巴的第一次全员大会,马云激情澎湃地讲了2个小时,并且专门请了摄影师全程录像。 这就是传说中的…

边界点射箭问题

问题 题目 问题: 给定一个有目标位置和边界单元格为空的 n n 方格表,找出哪个位于边界单 元格的箭头会击中最多连续的目标而不经过目标之间的任何空单元格。箭头方向为: (A)←、(B) ↑、 © →、(D) ↓、(E) ↖、 (F) ↗、 (G) ↘ 和 (H) ↙。 将…

Nginx反向代理+Keepalived实现Nginx高可用

Keepalived概述: keepalived 是一个类似于 layer3, 4 & 5 交换机制的软件,也就是我们平时说的第 3 层、第 4 层和第 5层交换。 Keepalived 的作用是检测 web 服务器的状态,如果有一台 web 服务器死机,或工作出现故障&#xff…

[极客大挑战 2019]Havefun、[ACTF2020 新生赛]Include、[SUCTF 2019]EasySQL

[极客大挑战 2019]Havefun 进入环境就如下图啥都没给我查看了一下源码 直接给出了flag???尝试了一下结果是一个假的flag,然后我们分析源代码很容易看出我们通过GET方式给cat传一个值,如果cat的值为dog就输出flag,这很简单了我们通过get方…

京东2023年Q1财报预测:短期增速承压,收入和净利润预测被下调

来源:猛兽财经 作者:猛兽财经 猛兽财经获悉,中信证券近期发布研报维持京东(JD)买入评级,中信证券在研报中预计京东2023年第一季度的营收将达到2,383亿元/同比减少-0.6%,Non-GAAP净利润50.6亿元/…

AI剧本拆解,教你利用AI快速拆解剧本

AI剧本拆解是一项将影视、戏剧等剧本进行分析和优化的技术,可以帮助制作团队更好地规划角色、情节、场景等元素,并提升作品的艺术水平和观赏体验。 1、为什么要拆解剧本? 剧本拆解是制片人和导演的第一项工作,把剧本中各项要素分…

【Python入门第五十四天】Python丨NumPy ufuncs

什么是 ufuncs? ufuncs 指的是“通用函数”(Universal Functions),它们是对 ndarray 对象进行操作的 NumPy 函数。 为什么要使用 ufuncs? ufunc 用于在 NumPy 中实现矢量化,这比迭代元素要快得多。 它们…

win系统jenkins搭建+tomcat启动

简介 Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件项目可以进行持续集成 下载war包 下载地址 (镜像安装 docker pull jenkins/jenkins:lts) …

面板数据进行熵值法

面板数据熵值法分析流程如下: 一、案例背景 当前有9家公司连续5年(2018-2022年)的财务指标数据,想要通过这份数据,确定各个财务指标的权重。熵值法根据指标离散程度确定赋权大小,客观公正准确度高。本次收…

python安装三方库教程:关于pip命令的一切,到底怎么用?

python安装三方库教程:关于pip命令的一切,到底怎么用? 一、pip设置国内源:1.1如何本地配置源:1.1.1 方法1:下载的时候指定地址1.1.2 方法2:使用pip命令生成配置文件1.1.3 方法3:自定…

vue---组件通信

目录 1、组件跨层级访问 (1)$emit (2)$root 、 $parent、$refs 2、依赖注入 3、透传及组件二次封装 组件间通信的三种方案: 1、组件跨层级访问,2、依赖注入,3、透传(用于组件二次封装&…

React Hooks 钩子函数错误用法,你还在犯这些错误吗

React Hooks 常见错误 前言 本片文章主要是在写react hooks的时候,遇到的常见错误的写法,和错误。也是一个对只是的巩固和总结。 错误一 上代码:正确写法 function TestReactHooksError() {const [test, setTest] useState(test);useEff…

论文阅读:PVO: Panoptic Visual Odometry

全景视觉里程计、同时做全景分割和视觉里程计 连接:PVO: Panoptic Visual Odometry 0.Abstract 我们提出了一种新的全景视觉里程计框架PVO,以实现对场景运动、几何和全景分割信息的更全面的建模。我们将视觉里程计(VO)和视频全景分割(VPS)在一个统一的…

【hello Linux】进程间通信——匿名管道

目录 前言: 总结下上述的内容: 1. 进程间通信目的 2. 进程间通信的分类 1. 匿名管道 2. 匿名管道的使用 1. 匿名管道的创建 2. 使用匿名管道进行父子间通信 Linux🌷 前言: 进程具有独立性,拥有独立的数据、代码及其他…

人工智能时代来临,殊不知低代码早已出手

科普一下人工智能的等级划分,按照实力,人工智能可以分为弱人工智能(Artificial Narrow Intelligence,简称ANI)、强人工智能(Artificial General Intelligence简称AGI)、超人工智能(Artificial Superintelligence简称ASI)三个等级。 弱人工智能…

Windows下 批量重命名文件【bat实现】

目录 前言 一、Windows简单实现重命名 二、使用命令行和Excel实现重命名 前言 在实际应用中,我们经常会遇到将指定文件夹下的文件重命名,以便程序读写。 本文介绍了两种方式,都是在Windows系统中自带的重命名方式。 一、Windows简单实现…

面试题目 002

分享一位读者面试美团 java 岗位的面经。主要在考察 javamysql 算法题目 最长回文串 根据前序中序恢复二叉树 说一说 MySQL 的索引 MySQL 的索引是一种存储数据结构, 按照数据结构划分,MySQL 可以分为 B 树索引、Hash 索引、全文索引 按照 B 树的叶子…

Windows云主机崩溃了怎么办?

​  无法避免服务器崩溃已不是什么秘密,无论选择Windows 云主机还是 Linux 云主机。但不可否认的是,任何错误都可能给企业带来灾难性的后果。该怎么办?持续监控服务器是可能的解决方案之一。即便如此,如果服务器已经处于关闭阶段&#xff…

机器学习实战教程(十):逻辑回归

概述 逻辑回归(Logistic Regression)是一种用于解决二分类或多分类问题的统计学习方法。它以自变量线性组合的形式进行建模,并使用Sigmoid函数将结果映射到[0, 1]的值域内,表示样本属于某个类别的概率。 Logistic Regression是最…

6个好用的企业管理软件推荐

企业管理软件的范围很广,财务、人力、客户关系管理、ERP、客户体验管理等等。国内来看,有些企业管理软件产品能覆盖企业数字化所有部分,在每个领域,也有很突出的头部厂商,产品功能和服务都大幅领先于竞对,我…