当前位置: 首页 > news >正文

2023 年最佳多 GPU 深度学习系统指南

动动发财的小手,点个赞吧!

alt

本文[1]提供了有关如何构建用于深度学习的多 GPU 系统的指南,并希望为您节省一些研究时间和实验时间。

1. GPU

让我们从有趣(且昂贵)的部分开始!

alt

购买 GPU 时的主要考虑因素是:

  • 内存(显存)
  • 性能(张量核心、时钟速度)
  • 槽宽
  • 功耗(热设计功耗)

内存

对于当今的深度学习任务,我们需要大量的内存。大语言模型甚至需要进行微调,而且计算机视觉任务可能会占用大量内存,尤其是在使用 3D 网络时。当然,最重要的方面是 GPU 内存。对于大语言模型,我建议至少 24 GB 内存,对于计算机视觉任务,我不会低于 12 GB。

性能

第二个标准是性能,可以用 FLOPS(每秒浮点运算次数)来估计:

alt

过去最关键的数字是电路中CUDA核心的数量。然而,随着深度学习的出现,NVIDIA 推出了专门的张量核心,可以在每个时钟执行更多的 FMA(融合乘加)运算。这些已经得到了主要深度学习框架的支持,并且是您在 2023 年应该寻找的。

下面是我经过大量手动工作后编译的按内存分组的 GPU 原始性能图表:

alt

请注意,在比较不同 GPU 的性能时必须格外小心。不同代/架构的张量核心不具有可比性。例如,A100 每个时钟执行 256 次 FP16 FMA 操作,而 V100“仅”64 次。此外,较旧的架构(Turing、Volta)不支持 32 位张量操作。

使比较变得更加困难的是,NVIDIA并不总是报告FMA,甚至在白皮书中也没有,并且相同架构的GPU可以有不同的FMA。另请注意,NVIDIA 经常宣传具有稀疏性的张量 FLOPS,这是一个仅在推理时可用的功能。

为了确定价格方面最好的 GPU,我使用 eBay API 收集了 eBay 价格,并计算了新卡每美元 (USD) 的相对性能:

alt

要选择最适合您预算的 GPU,您可以选择一款具有您能承受的最大内存的顶级 GPU。我的建议是:

alt

槽宽

在构建多 GPU 系统时,我们需要规划如何将 GPU 物理安装到 PC 机箱中。随着 GPU 变得越来越大,尤其是游戏系列,这变得更加成为一个问题。消费类主板拥有多达 7 个 PCIe 插槽,PC 机箱也是围绕此设置构建的。根据制造商的不同,4090 很容易占用 4 个插槽,因此您可以明白为什么这会成为一个问题。此外,我们应该在非鼓风机式或水冷式的 GPU 之间至少留出 1 个插槽,以避免过热。我们有以下选择:

  • 水冷

水冷型号最多需要 2 个插槽,但价格更昂贵。您也可以转换风冷 GPU,但这将使保修失效。如果您没有获得一体化 (AIO) 解决方案,您将需要构建自定义水冷回路。如果您想安装多个水冷 GPU,情况也是如此,因为 AIO 散热器可能不适合机箱。构建自己的循环是有风险的,我个人不会使用昂贵的卡来这样做。我只会直接从制造商那里购买 AIO 解决方案(规避风险)。

  • 风冷 2–3 插槽卡和 PCIe 转接卡

在此场景中,您将 PCIe 插槽上的卡与通过 PCIe 转接电缆连接的卡交错放置。 PCIe 转接卡可以放置在 PC 机箱内部或露天的某个位置。无论哪种情况,您都应该确保 GPU 受到保护(另请参阅有关 PC 机箱的部分)。

电源

现代 GPU 变得越来越耗电。例如,A 4090 需要 450 W,而 H100 最高可达 700 W。除了电费外,安装三个或更多 GPU 也成为一个问题。

如果您接近可以从 PSU/电源插座获取的最大功率,则此问题的解决方案是功率限制。降低 GPU 最大消耗功率所需要做的就是:

sudo nvidia-smi -i <GPU_index> -pl <power_limit>

where:
GPU_index: the index (number) of the card as it shown with nvidia-smi
power_limit: the power in W you want to use

事实证明,功率限制 10-20% 可使性能降低不到 5%,并使卡保持较低温度(Puget Systems 进行的实验)。例如,将四个 3090 的功率限制 20%,会将其功耗降低至 1120w,并且可以轻松安装在 1600w PSU/1800w 插座中(假设其余组件为 400w)。

2. 主板和CPU

构建的下一步是选择支持多个 GPU 的主板。这里主要考虑的是 PCIe 通道。我们至少需要每张卡具有 x8 通道的 PCIe 3.0 插槽(请参阅 Tim Dettmers 的帖子)。 PCIe 4.0 或 5.0 较少见,大多数深度学习用例都不需要。

除了插槽类型之外,插槽的间距也将决定 GPU 的放置位置。确保您已经检查了间距,并且您的 GPU 确实可以到达您想要的位置。请注意,当您使用多个 GPU 时,大多数主板会对某些 x16 插槽使用 x8 配置。

无需花费大量时间进行研究,并且让您的系统面向未来的最简单方法是选择到处都有 x16 插槽的主板。您可以使用 PCPartPicker 并筛选具有 7 个以上 PCIe x16 插槽的主板。这为我们提供了 21 种产品可供选择。然后,我们通过选择我们想要的最小 RAM 量(例如 128 GB)和 DDR4 / DDR5 类型来减少列表,将其减少到 10 个产品:

alt

上述列表中支持的 CPU 插槽为 LGA2011–3 和 LGA2066。然后我们进行 CPU 选择并选择具有所需核心数量的 CPU。这些主要用于数据加载和批量准备。目标是每个 GPU 至少有 2 个核心/4 个线程。对于 CPU,我们还应该检查它支持的 PCIe 通道。过去十年的任何 CPU 都应该支持至少 40 个通道(在 x8 通道上覆盖 4 个 GPU),但安全总比后悔好。通过过滤,例如具有上述插槽的 16 个以上核心,我们得到以下 CPU:

  • Intel Xeon E5 (LGA2011–3)
  • Intel Core i9 (LGA2066)

然后,我们根据核心数量、可用性和价格选择我们最喜欢的主板和 CPU 组合。

LGA2011–3 和 LGA2066 插槽都很旧(分别是 2014 年和 2017 年),。华擎 X99 WS-E 主板和 18 核 Intel Xeon E5–2697 V4 在二手状态下的成本不到 300 美元。不要购买更便宜的 ES 或 QS 版本的 CPU,因为这些是工程样本,可能会失败。

如果您想购买更强大的和/或更新的和/或 AMD CPU,您可以查看带有例如4 个以上 PCIe x16 插槽,但请确保检查插槽间距。

3. 内存

这里最重要的方面是 RAM 的数量。 RAM 用于深度学习周期的不同地方:从磁盘加载数据以进行批量创建、加载模型,当然还有原型设计。所需的数量在很大程度上取决于您的应用程序(例如,3D 图像数据将需要更多的额外 RAM),但您的目标应该是 GPU 的 VRAM 总量的 1 倍到 2 倍。类型至少应该是 DDR4,但 RAM 不是很重要,所以不要把钱花在那里️。

购买 RAM 时,您应该确保外形尺寸、类型、模块数量和每个模块的内存都符合您的主板规格。

4. 硬盘

另一个可以保存的组件是磁盘。同样,磁盘空间量很重要并且取决于应用程序。您不一定需要超快磁盘或 NVME,因为它们不会影响您的深度学习性能。无论如何,数据都会加载到 RAM 中,为了不造成瓶颈,您可以简单地使用更多并行 CPU 工作线程。

5. 电源

正如我们所见,GPU 是耗电组件。在设置多 GPU 系统时,PSU 的选择成为一个重要的考虑因素。大多数 PSU 可提供高达 1600w 的功率 — 这符合美国插座的功率限制。有一些 PSU 可以提供更多服务,但需要一些研究,而且它们特别针对矿工。

alt

要确定系统的瓦数,您可以再次使用 PCPartPicker 来计算构建的总量。为此,我们需要额外增加 10% 以上,以便安心,因为 GPU 的功率峰值将超过其规格。

一个重要的标准是标有 80 PLUS 等级的 PSU 效率。电源将达到其宣传的瓦数,但在此过程中会损失一些功率。 80 PLUS 铜牌电源的额定效率为 82%,与其他电源相比效率将达到 87% 的 Gold。如果我们有一个消耗 1600w 功率的系统,并且我们使用它的时间为 20%,那么假设成本为 0.16 美元/千瓦时,我们使用具有 Gold 评级的 GPU 每年可以节省 22 美元。

alt

当满负载运行时,某些 PSU 比其他 PSU 噪音更大,因为它们使用高转速的风扇。如果您在靠近箱子的地方工作(或睡觉!),这可能会产生一些影响,因此最好检查手册中的分贝。

选择电源时,我们需要验证它是否有足够的连接器来容纳我们的所有部件。 GPU 特别使用 8(或 6+2)针电缆。这里需要注意的一个重要事项是,对于 GPU 的每个电源插槽,我们应该使用单独的 8 针电缆,而不是使用同一电缆的多个输出(菊花链)。 8 针电缆的额定功率通常约为 150w。当使用一根电缆连接多个电源插槽时,GPU 可能无法获得足够的功率和油门。

6. 机箱

最后但并非最不重要的一点是,选择电脑机箱并非易事。 GPU 可能会变得巨大,而某些情况下可能无法容纳它们。例如 4090 的长度可达 36 厘米!

最重要的是,使用 PCIe 转接卡安装 GPU 可能需要一些技巧。有一些较新的机箱允许安装附加卡,特别是像 Phanteks Enthoo 719 这样的双系统机箱。另一个选择是 Lian-Li O11D EVO,它可以通过 Lian-Li 直立 GPU 支架将 GPU 放置在直立位置。我没有这些手机壳,所以我不确定它们是否适合,例如多个 3090 / 4090。但是,即使您的 PC 机箱不直接用 Lian-Li 支架支撑 GPU,您仍然可以直立安装 GPU。

alt

Reference

[1]

Source: https://towardsdatascience.com/how-to-build-a-multi-gpu-system-for-deep-learning-in-2023-e5bbb905d935

本文由 mdnice 多平台发布

相关文章:

2023 年最佳多 GPU 深度学习系统指南

动动发财的小手&#xff0c;点个赞吧&#xff01; 本文[1]提供了有关如何构建用于深度学习的多 GPU 系统的指南&#xff0c;并希望为您节省一些研究时间和实验时间。 1. GPU 让我们从有趣&#xff08;且昂贵&#xff09;的部分开始&#xff01; 购买 GPU 时的主要考虑因素是&am…...

Kotlin异常处理runCatching,getOrNull,onFailure,onSuccess(1)

Kotlin异常处理runCatching&#xff0c;getOrNull&#xff0c;onFailure&#xff0c;onSuccess&#xff08;1&#xff09; fun main(args: Array<String>) {var s1 runCatching {1 / 1}.getOrNull()println(s1) //s11&#xff0c;打印1println("-")var s2 ru…...

【深入探究人工智能】:历史、应用、技术与未来

深入探究人工智能 前言人工智能的历史人工智能的应用人工智能的技术人工智能的未来当代的人工智能产物结语&#x1f340;小结&#x1f340; &#x1f389;博客主页&#xff1a;小智_x0___0x_ &#x1f389;欢迎关注&#xff1a;&#x1f44d;点赞&#x1f64c;收藏✍️留言 &am…...

【设计模式】五、原型模式

文章目录 概述示例传统的方式的优缺点原型模式原理结构图-uml 类图 原型模式解决克隆羊问题的应用实例Sheep类实现clone()运行原型模式在 Spring 框架中源码分析 深入讨论-浅拷贝和深拷贝浅拷贝的介绍 小结 概述 示例 克隆羊问题 现在有一只羊 tom&#xff0c;姓名为: tom, 年…...

day36-注解

1. 注解 1.1 注释和注解的区别&#xff1f;&#xff08;掌握&#xff09; 共同点&#xff1a;都可以对程序进行解释说明。 不同点&#xff1a;注释&#xff0c;是给程序员看的。只在Java中有效。在class文件中不存在注释的。 ​ 当编译之后&#xff0c;会进行注释擦除。 ​…...

【C语言数据结构——————栈和队列4000字详解】

欢迎阅读新一期的c语言数据结构模块————栈和队列 ✒️个人主页&#xff1a;-_Joker_- &#x1f3f7;️专栏&#xff1a;C语言 &#x1f4dc;代码仓库&#xff1a;c_code &#x1f339;&#x1f339;欢迎大佬们的阅读和三连关注&#xff0c;顺着评论回访&#x1f339;&#…...

电子地图 | VINS-FUSION | 小觅相机D系列

目录 一、相关介绍 二、VINS-FUSION环境安装及使用 &#xff08;一&#xff09;Ubuntu18.04安装配置 1、Ubuntu下载安装 2、设置虚拟内存&#xff08;可选&#xff09; &#xff08;二&#xff09;VINS-FUSION环境配置 1、ros安装 2、ceres-solver安装 3、vins-fusion…...

C++goto语句

在本文中&#xff0c;您将了解goto语句&#xff0c;它是如何工作的&#xff0c;以及为什么应该避免它。在C 编程中&#xff0c;goto语句用于通过将控制权转移到程序的其他部分来更改程序执行的正常顺序。 goto语句的语法 goto label; ... .. ... ... .. ... ... .. ... label…...

Spring学习笔记11 GoF代理模式

Spring学习笔记10 JdbcTemplate_biubiubiu0706的博客-CSDN博客 新建个maven模块 static-proxy 演示静态代理 订单接口 测试 需求:统计每个业务方法的耗时 package com.example.proxy.service;/*** author hrui* date 2023/9/25 8:42*/ public class OrderServiceImpl implem…...

代码随想录二刷 Day23

669. 修剪二叉搜索树 找到小数字的右子树与大数字左子树必须要重新检查一遍然后让root的左右直接指向return的左右节点&#xff1b; class Solution { public:TreeNode* trimBST(TreeNode* root, int low, int high) {if (root NULL) return NULL;if (root->val < low…...

Ubuntu `apt` 报错 “Errors were encountered while processing: base-passwd“ 的解决方法

Ubuntu apt 更新时出现报错&#xff1a; Setting up base-passwd (3.5.52build1) ... Changing home-directory of irc from /var/run/ircd to /run/ircd 1 changes have been made, rewriting files Writing passwd-file to /etc/passwd Error making backupfile /etc/passwd…...

XXL-JOB分布式任务调度

XXL-JOB分布式任务调度 ​ 在实际项目中&#xff0c;为了降低耦合&#xff0c;通常会把定时任务的逻辑单独抽离出来&#xff0c;构建成一个新的工程。也有可能需要定时任务实现高可用&#xff0c;组建成集群&#xff0c;提高容错率。 ​ 那么问题也就来了。既然定时任务是多个…...

加拿大人工智能数据搜索平台【Secoda】完成1400万美元A轮融资

来源&#xff1a;猛兽财经 作者&#xff1a;猛兽财经 猛兽财经获悉&#xff0c;总部位于加拿大多伦多的人工智能数据搜索平台【Secoda】今日宣布已完成1400万美元A轮融资。 本轮融资由Craft Ventures领投&#xff0c;参与投资的投资机构有Abstract Ventures、现有投资者YCombi…...

less与sass

1.变量&#xff1a; Less: my-color: #ff0000;.container {background-color: my-color; } Sass:$my-color: #ff0000;.container {background-color: $my-color; } 在这点上&#xff0c;Less和Sass的变量概念基本相同&#xff0c;都是以声明的方式存储值&#xff0c;然后在…...

c-const修饰指针-day16

...

已解决: Go Error: no Go files in /path/to/directory问题

&#x1f337;&#x1f341; 博主猫头虎&#xff08;&#x1f405;&#x1f43e;&#xff09;带您 Go to New World✨&#x1f341; &#x1f984; 博客首页: &#x1f405;&#x1f43e;猫头虎的博客&#x1f390;《面试题大全专栏》 &#x1f995; 文章图文并茂&#x1f996…...

2022年6月和7月的工作经历

6月 3D打标软件 3D打标软件&#xff0c;要求在Open3d上加几个2D文字。大致有如下几个方案&#xff1a; 依葫芦画瓢&#xff0c;但O3DVisualizer派生于gui::Window&#xff0c;我的程序派生于Visualizer。工作量不小。 利用OpenGL输出文字&#xff0c;Baidu的两种方法一个编…...

【图像处理】SIFT角点特征提取原理

一、说明 提起在OpenCV中的特征点提取&#xff0c;可以列出Harris&#xff0c;可以使用SIFT算法或SURF算法来检测图像中的角特征点。本篇围绕sift的特征点提取&#xff0c;只是管中窥豹&#xff0c;而更多的特征点算法有&#xff1a; Harris & Stephens / Shi–Tomasi 角点…...

flutter开发实战-应用更新apk下载、安装apk、启动应用实现

flutter开发实战-应用更新apk下载、安装apk、启动应用实现 在开发过程中&#xff0c;经常遇到需要更新下载新版本的apk文件&#xff0c;之后进行应用更新apk下载、安装apk、启动应用。我们在flutter工程中实现下载apk&#xff0c;判断当前版本与需要更新安装的版本进行比对判断…...

DispatcherServlet初始化之Spring容器创建1.0

一、前言 在SpringMVC框架中&#xff0c;DispatcherServlet扮演着非常重要的角色&#xff0c;它负责接收所有的HTTP请求并将其分发给相应的处理器。在DispatcherServlet的初始化过程中&#xff0c;会创建一个Spring容器来管理应用程序中的Bean。 二、步骤 1、加载配置文件&a…...

CSS的基础

CSS美化HTML&#xff0c;布局网页 CSS最大的价值&#xff1a;由HTML专注去做结构呈现&#xff0c;样式给CSS&#xff0c;结构&#xff08;HTML)与样式&#xff08;CSS&#xff09;相分离 CSS主要由选择器以及一条或多条声明 在<head></head>中实现CSS在<body…...

mathtype如何嵌入到word中?详细mathtype安装步骤教程

mathtype是一款功能特别强大的数学方式编辑软件&#xff0c;为用户提供各种强大的数学公式符号帮助用户进行计算&#xff0c;并且速度很快。有小伙伴知道mathtype如何嵌入到word中吗&#xff0c;这里小编就给大家详细介绍一下mathtype嵌入到word中的方法&#xff0c;有需要的小…...

云安全之访问控制的常见攻击及防御

访问控制攻击概述 访问控制漏洞即应用程序允许攻击者执行或者访问某种攻击者不具备相应权限的功能或资源。 常见的访问控制可以分为垂直访问控制、水平访问控制及多阶段访问控制 (上下文相关访问控制)&#xff0c;与其相应的访问控制漏洞为也垂直越权漏洞(普通用户可以访问或…...

Java编程技巧:跨域

目录 1、跨域概念2、后端CORS&#xff08;跨域资源共享&#xff09;配置原理3、既然请求跨域了&#xff0c;那么请求到底发出去没有&#xff1f;4、通过后端CORS&#xff08;跨域资源共享&#xff09;配置解决跨域问题代码4.1、SpringBoot&#xff08;FilterRegistrationBean&a…...

react create-react-app 配置less

环境信息&#xff1a; create-react-app:v5 react:18.2.0 node:18.16.0 如果你不必须使用 less 建议直接使用scss。 因为less配置会遇到很多问题。 配置less过程&#xff1a; 如果你只需要 sass的话&#xff0c;就可以直接使用sass。因为默认配置了scss。 npm、yarn、cnpm、…...

树的表示——孩子兄弟表示法

从图中可以看出&#xff0c;树的每个结点&#xff0c;都有不确定的指向他们的孩子的节点&#xff0c;如果我们定义这样一个结构体来便是数的结构的话&#xff1a; struct TreeNode { int val; struct TreeNodep1; struct TreeNodep1; … }; 是不能够表示一棵树的&#xff0c;因…...

Windows11安装MySQL8.1

安装过程中遇到任何问题均可以参考(这个博客只是单纯升级个版本和简化流程) Windows安装MySQL8教程-CSDN博客 到官网下载mysql8数据库软件 MySQL :: Download MySQL Community Server 下载完后,解压到你需要安装的文件夹 其中的配置文件内容了如下 [mysqld]# 设置3306端口po…...

Linux编程——经典链表list_head

1. 关于list_head struct list_head是Linux内核定义的双向链表&#xff0c;包含一个指向前驱节点和后继节点的指针的结构体。其定义如下&#xff1a; struct list_head {struct list_head *next, *prev; //双向链表&#xff0c;指向节点的指针 };1.1 链表的定义和初始化 有两…...

基于51单片机NEC协议红外遥控发送接收仿真设计( proteus仿真+程序+原理图+报告+讲解视频)

基于51单片机NEC协议红外遥控发送接收仿真设计 讲解视频1.主要功能&#xff1a;2.仿真3. 程序代码4. 原理图5. 设计报告6. 设计资料内容清单&&下载链接 基于51单片机NEC协议红外遥控发送接收仿真设计 51单片机红外发送接收仿真设计( proteus仿真程序原理图报告讲解视频…...

Jmeter分布式压力测试

目录 1、场景 2、原理 3、注意事项 4、slave配置 5、master配置 6、脚本执行 1、场景 在做性能测试时&#xff0c;单台机器进行压测可能达不到预期结果。主要原因是单台机器压到一定程度会出现瓶颈。也有可能单机网卡跟不上造成结果偏差较大。 例如4C8G的window server机…...

wordpress调用/网站流量监控

转载自https://www.cnblogs.com/klchang/p/5719470.html C标准函数库中&#xff0c;常见的堆上内存管理函数有malloc(), calloc(), recalloc(), free()。 之所以使用堆&#xff0c;是因为栈只能用来保存临时变量、局部变量和函数参数。在函数返回时&#xff0c;自动释放所占用…...

为什么一个网站做中英文双语版/品牌广告文案

大部分时候&#xff0c;开发者都会使用Androidstudio对应用进行打包签名&#xff0c;那么关于应用打包签名涉及到哪些步骤呢&#xff1f;首先你要知道什么是签名&#xff1f;为什么要对应用进行签名&#xff1f;对应用签名就相当于对外界说这款应用是我开发的&#xff0c;签名实…...

河北电子商务网站建设/免费私人网站建设平台

系统中有表过了10亿, 须对原表进行备份 前期&#xff1a;准备建新表sql,须由旧表结构更改&#xff08;注意务必保留所有分区信息&#xff09;a. 停掉所有应用 (较关键&#xff0c;数据库访问量大时做rename等操作有风险)b. rename old_table to new_talbec. 建新表 --- rename及…...

大良品牌网站建设/怎么制作个人网站

android获得图的总结&#xff01;&#xff01; //1&#xff0c;已将图片保存到drawable目录下 //通过图片id获得Drawable Resource resgerResource(); Drawable drawableres.getDrawable(id);//id为R.drawable.图片名称 //通过图片id获得Bitmap Resource resgerResource(); Bi…...

琼山网站制作/百度识图搜索网页版

我的博客本来打算使用layui的富文本编辑器&#xff0c;但是出了一个问题&#xff0c;无法获取编辑器内容&#xff0c;我参考官方文档&#xff0c;获取内容也就那几个方法而已&#xff0c;但是引入进去后始终获取的值为空&#xff0c;百度和bing都试过了&#xff0c;但是始终还是…...

weui做购物网站的案例/推广一般收多少钱

...