当前位置: 首页 > 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;设置任务排序规则尤其重要&#xff0c;因为它让看板视觉上直观地体…...

Java-41 深入浅出 Spring - 声明式事务的支持 事务配置 XML模式 XML+注解模式

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; &#x1f680; AI篇持续更新中&#xff01;&#xff08;长期更新&#xff09; 目前2025年06月05日更新到&#xff1a; AI炼丹日志-28 - Aud…...

【git】把本地更改提交远程新分支feature_g

创建并切换新分支 git checkout -b feature_g 添加并提交更改 git add . git commit -m “实现图片上传功能” 推送到远程 git push -u origin feature_g...

鱼香ros docker配置镜像报错:https://registry-1.docker.io/v2/

使用鱼香ros一件安装docker时的https://registry-1.docker.io/v2/问题 一键安装指令 wget http://fishros.com/install -O fishros && . fishros出现问题&#xff1a;docker pull 失败 网络不同&#xff0c;需要使用镜像源 按照如下步骤操作 sudo vi /etc/docker/dae…...

第 86 场周赛:矩阵中的幻方、钥匙和房间、将数组拆分成斐波那契序列、猜猜这个单词

Q1、[中等] 矩阵中的幻方 1、题目描述 3 x 3 的幻方是一个填充有 从 1 到 9 的不同数字的 3 x 3 矩阵&#xff0c;其中每行&#xff0c;每列以及两条对角线上的各数之和都相等。 给定一个由整数组成的row x col 的 grid&#xff0c;其中有多少个 3 3 的 “幻方” 子矩阵&am…...

微软PowerBI考试 PL300-在 Power BI 中清理、转换和加载数据

微软PowerBI考试 PL300-在 Power BI 中清理、转换和加载数据 Power Query 具有大量专门帮助您清理和准备数据以供分析的功能。 您将了解如何简化复杂模型、更改数据类型、重命名对象和透视数据。 您还将了解如何分析列&#xff0c;以便知晓哪些列包含有价值的数据&#xff0c;…...

佰力博科技与您探讨热释电测量的几种方法

热释电的测量主要涉及热释电系数的测定&#xff0c;这是表征热释电材料性能的重要参数。热释电系数的测量方法主要包括静态法、动态法和积分电荷法。其中&#xff0c;积分电荷法最为常用&#xff0c;其原理是通过测量在电容器上积累的热释电电荷&#xff0c;从而确定热释电系数…...

Scrapy-Redis分布式爬虫架构的可扩展性与容错性增强:基于微服务与容器化的解决方案

在大数据时代&#xff0c;海量数据的采集与处理成为企业和研究机构获取信息的关键环节。Scrapy-Redis作为一种经典的分布式爬虫架构&#xff0c;在处理大规模数据抓取任务时展现出强大的能力。然而&#xff0c;随着业务规模的不断扩大和数据抓取需求的日益复杂&#xff0c;传统…...

DBLP数据库是什么?

DBLP&#xff08;Digital Bibliography & Library Project&#xff09;Computer Science Bibliography是全球著名的计算机科学出版物的开放书目数据库。DBLP所收录的期刊和会议论文质量较高&#xff0c;数据库文献更新速度很快&#xff0c;很好地反映了国际计算机科学学术研…...

linux设备重启后时间与网络时间不同步怎么解决?

linux设备重启后时间与网络时间不同步怎么解决&#xff1f; 设备只要一重启&#xff0c;时间又错了/偏了&#xff0c;明明刚刚对时还是对的&#xff01; 这在物联网、嵌入式开发环境特别常见&#xff0c;尤其是开发板、树莓派、rk3588 这类设备。 解决方法&#xff1a; 加硬件…...