当前位置: 首页 > 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…...

多云管理“拦路虎”:深入解析网络互联、身份同步与成本可视化的技术复杂度​

一、引言&#xff1a;多云环境的技术复杂性本质​​ 企业采用多云策略已从技术选型升维至生存刚需。当业务系统分散部署在多个云平台时&#xff0c;​​基础设施的技术债呈现指数级积累​​。网络连接、身份认证、成本管理这三大核心挑战相互嵌套&#xff1a;跨云网络构建数据…...

JavaSec-RCE

简介 RCE(Remote Code Execution)&#xff0c;可以分为:命令注入(Command Injection)、代码注入(Code Injection) 代码注入 1.漏洞场景&#xff1a;Groovy代码注入 Groovy是一种基于JVM的动态语言&#xff0c;语法简洁&#xff0c;支持闭包、动态类型和Java互操作性&#xff0c…...

【Oracle APEX开发小技巧12】

有如下需求&#xff1a; 有一个问题反馈页面&#xff0c;要实现在apex页面展示能直观看到反馈时间超过7天未处理的数据&#xff0c;方便管理员及时处理反馈。 我的方法&#xff1a;直接将逻辑写在SQL中&#xff0c;这样可以直接在页面展示 完整代码&#xff1a; SELECTSF.FE…...

【HarmonyOS 5.0】DevEco Testing:鸿蒙应用质量保障的终极武器

——全方位测试解决方案与代码实战 一、工具定位与核心能力 DevEco Testing是HarmonyOS官方推出的​​一体化测试平台​​&#xff0c;覆盖应用全生命周期测试需求&#xff0c;主要提供五大核心能力&#xff1a; ​​测试类型​​​​检测目标​​​​关键指标​​功能体验基…...

cf2117E

原题链接&#xff1a;https://codeforces.com/contest/2117/problem/E 题目背景&#xff1a; 给定两个数组a,b&#xff0c;可以执行多次以下操作&#xff1a;选择 i (1 < i < n - 1)&#xff0c;并设置 或&#xff0c;也可以在执行上述操作前执行一次删除任意 和 。求…...

基于数字孪生的水厂可视化平台建设:架构与实践

分享大纲&#xff1a; 1、数字孪生水厂可视化平台建设背景 2、数字孪生水厂可视化平台建设架构 3、数字孪生水厂可视化平台建设成效 近几年&#xff0c;数字孪生水厂的建设开展的如火如荼。作为提升水厂管理效率、优化资源的调度手段&#xff0c;基于数字孪生的水厂可视化平台的…...

【单片机期末】单片机系统设计

主要内容&#xff1a;系统状态机&#xff0c;系统时基&#xff0c;系统需求分析&#xff0c;系统构建&#xff0c;系统状态流图 一、题目要求 二、绘制系统状态流图 题目&#xff1a;根据上述描述绘制系统状态流图&#xff0c;注明状态转移条件及方向。 三、利用定时器产生时…...

12.找到字符串中所有字母异位词

&#x1f9e0; 题目解析 题目描述&#xff1a; 给定两个字符串 s 和 p&#xff0c;找出 s 中所有 p 的字母异位词的起始索引。 返回的答案以数组形式表示。 字母异位词定义&#xff1a; 若两个字符串包含的字符种类和出现次数完全相同&#xff0c;顺序无所谓&#xff0c;则互为…...

CMake控制VS2022项目文件分组

我们可以通过 CMake 控制源文件的组织结构,使它们在 VS 解决方案资源管理器中以“组”(Filter)的形式进行分类展示。 🎯 目标 通过 CMake 脚本将 .cpp、.h 等源文件分组显示在 Visual Studio 2022 的解决方案资源管理器中。 ✅ 支持的方法汇总(共4种) 方法描述是否推荐…...

Spring Cloud Gateway 中自定义验证码接口返回 404 的排查与解决

Spring Cloud Gateway 中自定义验证码接口返回 404 的排查与解决 问题背景 在一个基于 Spring Cloud Gateway WebFlux 构建的微服务项目中&#xff0c;新增了一个本地验证码接口 /code&#xff0c;使用函数式路由&#xff08;RouterFunction&#xff09;和 Hutool 的 Circle…...