人工智能GPU算力评估分析

news2024/11/25 12:28:53

GPU算力评估

7c90d76e65b2751e430da0d1a08c8603.jpeg

一、 关于训练GPU的带宽

大模型训练算力需求:总算力(Tlops)=6倍模型参数量×训练数据token量,精准高效满足大规模训练需求。

需要把那么计算量和通信量的比例是多少?

  • 3:指的是一次正向两次反向,反向是梯度和权重。
  • 在Transformer模型中,heads num代表了自注意力计算的并行度。输入嵌入向量被分解为多个“头”,每个“头”独立执行自注意力运算。这种设计使得每个“头”仅需处理部分嵌入向量,显著降低了内存需求,提升了模型效率。优化后的Transformer模型通过heads num的设置,实现高效且精准的自注意力计算。
  • "bytes per param"指的是每个参数的字节数。对于BF/FP16类型的参数,每参数占用2字节。除以该值,旨在将内存需求从字节量转化为参数数量,实现精准的资源评估。

若以每个head分配至一个GPU进行运算,并采用点对点通讯,基于4090的330 Tflops性能,为避免通信瓶颈,所需带宽至少为1.7 TB/s(330T / 384 * 2)。这一需求远超PCIe Gen4 x16的64 GB/s,即使NVLink的900 GB/s也难以满足。由此可见,高效通信技术在当前高性能计算领域具有极其重要的地位。

强调一点,注意力头(attention heads)在GPU间的分割,特指在训练大型深度学习模型(如Transformer)时,通过并行处理将不同注意力头分配到不同GPU,以优化计算效率。此分割通常限于单服务器内的多GPU操作,实现高效计算。

对于4090的330 Tflops性能,为确保通信无阻,所需带宽至少为859 GB/s(330T / 384),双向通信则翻倍至1.7 TB/s,远超PCIe Gen4 x16的64 GB/s带宽,确保高性能计算无瓶颈。

在应用张量并行时,不应过度细分工作负载,确保每个GPU处理足够多的attention heads。这样,由于多个attention heads共享输入矩阵X,输入矩阵的通信开销可以在这些heads之间分摊,从而提高计算量与通信量的比例。以NVIDIA 4090 GPU为例,其计算能力和单向通信带宽为330Tflops和32GB/s(因为64GB/s的带宽需要除以2来考虑单向通信)。这种情况下,计算和通信的比例至少需要达到10000,计算得张量并行的GPU数量应不超过2.4。这意味着,使用张量并行时最多只能使用两个GPU,超过这一数量,GPU的计算能力就无法被充分利用。

然而,当使用更为先进的NVIDIA H100 GPU,情况则有所不同。H100的峰值计算能力为989Tflops,而NVLink的双向带宽为900GB/s。这使得计算量与通信量的比例至少需要1100,计算得出张量并行的GPU数量可以达到11。这表明,在单机配置8张GPU卡进行张量并行是可行的,对于embedding size等于8192的模型,通信不会成为限制因素。

在优化模型性能时,对于embedding size为8192的模型,其参数存储与GPU数量的关系为:2 * 3 * 8192 / (GPU数量 * 2) ≥ 1100。经计算,张量并行GPU数量应不多于11个,即单机8卡配置恰好满足需求,确保通信不会成为性能瓶颈。这一配置优化了模型在GPU上的并行处理能力。

Llama3架构揭秘&FMOps

NVIDIA H200计算力等同H100,GPU显存与内存速度显著增强,将为用户带来前所未有的性能提升体验。

1. 显存提升的影响

  • 大显存助力训练更大规模模型,支持更大batch size,显著提升模型性能与训练效率,实现更高效学习。

2. 内存速度提升的影响

二、3D并行

Tensor、Pipeline和Data三种并行策略分别针对模型层内、层间及训练数据,优化GPU资源分配。这三者的并行度相乘,即确定训练任务所需的总GPU数量,实现高效资源利用与训练效率提升。

fa795dc28f071bdf94e9f2ec42155efe.jpeg

数据并行,即各GPU独立处理不同输入数据,计算梯度后汇总平均,再广播至各GPU进行更新(allreduce)。此方式直观高效,实现模型参数的快速同步更新。

702612ce29eea3639558f2b913c4ce27.jpeg

模型训练所需GPU内存涵盖模型参数、梯度、优化器内存及正向传播中的激活状态。确保充足资源,优化训练效率。

Pipeline parallelism(流水线并行)

当单GPU无法满足模型需求时,我们需借助多GPU实现model parallelism(模型并行),主要策略包括pipeline parallelism与tensor parallelism,确保高效并行处理大型模型。

8f0eb153c1579ec5e1cf1350d3a67b9c.jpeg

面临的问题是,链上仅一个GPU工作,其余闲置。为提升效率,可将一个batch切分为多个mini-batch,实现并行计算,每个mini-batch独立处理,显著提升整体运算效能。

9e25436b70ff62daa29ff287418f4fa7.jpeg

那么,是不是把 pipeline 搞的越深越好,每个 GPU 只算一层?

正向传播中间状态的存储容量随流水级数N成倍增长,对内存容量构成巨大挑战。每级流水线计算后,需历经2N-2轮正反向传播才能利用该中间状态,期间产生并保存2N-1个中间状态。当N值较大时,存储容量急剧膨胀,成为不可忽视的问题。因此,优化存储容量管理,提高内存使用效率,成为亟待解决的关键任务。

在pipeline设计中,相邻流水级间需通信,级数增加会直接导致通信数据量和时延显著上升,影响整体性能。


确保pipeline顺畅运行,需将batch size设为Transformer层数(通常几十层),再乘以data parallelism的并行数。尽管此设定下batch size较大,但务必注意其对模型收敛速度和精度的潜在影响。

因此,在内存容量足够的情况下,最好还是少划分一些流水级

LLaMA-2 70B模型:参数占140GB,梯度同;若选Adam优化器,状态需额外840GB。高效存储,强大性能,满足大规模AI应用需求。

正向传播的中间状态跟 batch size 和选择性重新计算的配置有关,我们在算力和内存之间取一个折中,那么正向传播的中间状态需要 token 长度 * batch size * hidden layer 的神经元数量 * 层数 * (10 + 24/张量并行度) 字节。假设 batch size = 8,不用张量并行,那么 LLaMA-2 70B 模型的正向传播中间状态需要 4096 * 8 * 8192 * 80 * (10 + 24) byte = 730 GB,是不是很大?

总需求高达1850GB,远超单模型参数的140GB。对于A100/H100卡(每卡80GB),至少需24张;而若选择4090(每卡24GB),则至少需78张。这一庞大需求彰显了计算资源的巨大挑战,体现了高性能计算在现代科技中的核心地位。

LLaMA-2模型仅80层,每张卡承载一层,完美契合。实现80个流水级并行,每个并行batch均能填满流水线,高效运算。

正向传播的中间状态存储膨胀至160轮,即放大160倍,难以承受。即便采用选择性重新计算策略,如将80层划分为8组,每组10层,中间状态存储仍激增16倍,挑战显著。

除极端情况需全面重算,常规反向传播无需逐层重新计算正向结果。但此举计算成本随层数激增,如80层模型需算3240层,开销是正常计算的40倍。如此高昂的代价,岂能容忍?优化算法势在必行,以减轻计算负担,提升模型效率。

中间状态存储挑战严峻,2048张卡间通信开销更是不可小觑。这些卡采用层级分配,各卡以不同输入数据进行独立流水计算,相当于独立参与数据并行处理。在数据并行中,每轮传输涉及梯度和全局平均梯度,其数据量等同于模型参数数量,这进一步加剧了通信负担。

把 70B 模型分成 80 层,每一层大约有 1B 参数,由于优化器用的是 32 bit 浮点数,这就需要传输 4 GB 数据。那么一轮计算需要多久呢?总的计算量 = batch size * token 数量 * 6 * 参数量 = 8 * 4096 * 6 * 1B = 196 Tflops,在 4090 上如果假定算力利用率 100%,只需要 0.6 秒。而通过 PCIe Gen4 传输这 4 GB 数据就已经至少需要 0.12 秒了,还需要传两遍,也就是先传梯度,再把平均梯度传过来,这 0.24 秒的时间相比 0.6 秒来说,是占了比较大的比例。

当然我们也可以做个优化,让每个 GPU 在 pipeline parallelism 中处理的 80 组梯度数据首先在内部做个聚合,这样理论上一个 training step 就需要 48 秒,通信占用的时间不到 1 秒,通信开销就可以接受了。

当然,通信占用时间不到 1 秒的前提是机器上插了足够多的网卡,能够把 PCIe Gen4 的带宽都通过网络吐出去,否则网卡就成了瓶颈。假如一台机器上插了 8 块 GPU,这基本上需要 8 块 ConnectX-6 200 Gbps RDMA 网卡才能满足我们的需求。

聚焦batch size,2048张卡集群运行时,每GPU mini-batch设为8,总batch size高达16384,堪称大规模训练之典范。然而,再增大batch size可能影响模型收敛速度及精度。因此,当前配置已趋近最佳,确保训练高效且精准。

大模型训练时,流水线并行与数据并行的核心挑战在于级数过多,引发正向传播中间状态存储容量瓶颈,亟需解决。

Tensor parallelism(张量并行)

仍有转机!最后一招是Tensor parallelism(张量并行),作为模型并行的高级形式,它在层内而非层间进行划分。这一方法将同一层的attention计算和Feed Forward Network分散至多个GPU处理,从而显著提升计算效率。

张量并行技术巧妙解决了GPU存储限制导致流水级过多的挑战。原本需80个GPU才能容纳的模型,通过单机8卡张量并行,仅需10个流水级即可。此外,该技术还能降低batch size,因各GPU协同处理同一输入数据,实现了高效计算与资源优化。

3d23b8a985bdb9c4de9ff18b2f0cb05a.jpeg

Attention计算高效并行,得益于多head机制,能同时关注输入序列不同位置。简单拆分head,即可实现并行处理,提升效率。

8edbf3f93bb72dcd06b12a60994ec471.jpeg

三、Batch size的公式

fadf592346ac34c4ae600edca94d3637.jpeg

global_batch_size =

gradient_accumulation_steps

* nnodes (节点数)

* nproc_per_node (每个节点卡数)

* per_device_train_batch_si(micro bs大小)

我们想象一个场景:

假设情景:

  • batch_size = 10 #每批次大小
  • total_num = 1000 #数据总量

按照 训练一个批次数据,更新一次梯度;

训练步数 train_steps = 1000 / 10 = 100

梯度更新步数 = 1000 / 10 = 100

当显存不足以支持每次 10 的训练量!需要减小 batch_size

通过设置gradient_accumulation_steps = 2

batch_size = 10 / 2 =5

优化后文案:采用每5个数据作为一个批次,训练2批次后更新一次梯度,既减轻显存负担,又确保每次更新基于10个数据,效率与准确性并存。

梯度更新步数 1000 / 10 = 100 未改变

梯度累加优化策略:每batch数据计算梯度后不清零,持续累加,直至达到gradient_accumulation_steps次数,再更新参数并清零梯度,实现高效参数更新,循环推进训练进程。

直接调小Batch Size的影响

 

  1. 训练稳定性
    • 小批量尺寸易导致梯度估计方差上升,影响训练稳定性。相反,大批量尺寸能提供更稳定的梯度估计,优化训练过程。
  2. 训练时间
  3. 学习率调整
    • 调整学习率对于较小的batch size至关重要。建议降低学习率,防止梯度更新过大引发训练波动,确保训练过程更加稳定。

使用梯度累加的优势

  1. 保持有效批次大小
  2. 减少训练步数
    • 梯度累加可以减少训练步数,因为每次参数更新仍然基于较大的有效批次大小。

f8b80c90f3b6fcb3e39189d11aa04ba7.jpeg

                   

 

-对此,您有什么看法见解?-

-欢迎在评论区留言探讨和分享。-

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

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

相关文章

程序员职场升级攻略:学AI技能,稳步迈向月薪破万之路

在人工智能高速发展的今天,AI技术已经成为职场人士提升收入的有力武器。许多人通过学习AI技能,成功跻身高收入行业,实现了月薪破万的目标。本文将揭秘高收入行业与城市,并提供一条清晰的学习路线,助你成为AI领域的一员…

ubuntu:更新阿里云apt源

前言 我用vmware也搭建了ubuntu服务器,并同样发现apt几乎完全用不了(系统默认用的是清华源,可能较老了) 更新阿里云apt源 1、去阿里云官网找系统对应的apt源配置 阿里云镜像:阿里巴巴开源镜像站-OPSX镜像站-阿里云开发…

Unity教程(九)角色攻击的改进

Unity开发2D类银河恶魔城游戏学习笔记 Unity教程(零)Unity和VS的使用相关内容 Unity教程(一)开始学习状态机 Unity教程(二)角色移动的实现 Unity教程(三)角色跳跃的实现 Unity教程&…

WindowsAPI 查阅笔记:进程间管道通信

进程间有名管道的通信: 1.1 重叠I/O(Overlapped I/O) 重叠I/O(Overlapped I/O)是Windows编程中的一种异步 I / O 处理方式,它允许程序在发出I/O请求后继续执行其他任务,而不必等待I/O操作完成…

萌啦定价工具,萌啦数据ozon定价工具

在电商行业日益竞争激烈的今天,精准定价成为了商家们获取市场竞争优势的关键一环。尤其是对于在Ozon平台上耕耘的卖家而言,无论是本土卖家还是跨境商家,如何快速、准确地制定出既符合市场需求又能保障利润的价格策略,成为了亟待解…

高防服务器的机制和原理

高防服务器是一种具备强大防御能力的服务器,旨在保护网站免受各种网络攻击,如DDoS(分布式拒绝服务)攻击、CC(ChallengeCollapsar)攻击等。今天小编将从流量过滤与清洗、负载均衡与反向代理、实时监控与报警…

圈内水刊“三巨头”之首实至名归?发文量飙升至9000+,硕博小白照样发1区TOP!

【SciencePub学术】昨天,小编给大家介绍了环境水刊“三巨头”之一的《Journal of Hazardous Materials》,本期,给大家带来的是位于环境水刊“三巨头”之首的《Science of the Total Environment》,属于JCR1区中科院1区TOP&#xf…

冷数据归档(历史库),成本与性能如何兼得?| OceanBase应用实践

随着数据量的迅猛增长,企业和组织在数据库管理方面遭遇的挑战愈发凸显。数据库性能逐渐下滑、存储成本节节攀升,以及数据运维复杂性的增加,这些挑战使得DBA和开发者在数据管理上面临更大的压力。 为了应对这些挑战,对数据生命周期…

vulnstack-5

环境搭建 靶场虚拟机共用两个,一个外网一个内网,用来练习红队相关内容和方向,主要包括常规信息收集、Web攻防、代码审计、漏洞利用、内网渗透以及域渗透等相关内容学习。 虚拟机密码 win7 sun\heart 123.com sun\Administrator dc123.com # …

华为软件测试笔试真题,赶快收藏

软件测试工程师笔试题目 一.填空 1、 系统测试使用( C )技术, 主要测试被测应用的高级互操作性需求, 而无需考虑被测试应用的内部结构。 A、 单元测试 B、 集成测试 C、 黑盒测试 D、白盒测试 2、单元测试主要的测试技术不包括(…

【nvidia-smi】Failed to initialize NVML: Driver/library version mismatch

服务器更新后,输入nvidia-smi出现如下报错: 解决方法参考: 已解决【nvidia-smi】Failed to initialize NVML: Driver/library version mismatch解决方法-腾讯云开发者社区-腾讯云 (tencent.com) 输入命令查看nvidia驱动的版本号&#xff1a…

Linux软件包yum

目录 Linux软件包管理器 yum关于rzsz注意事项查看软件包如何安装软件卸载命令 Linux开发工具Linux编辑器-vim使用1. vim的基本概念2. vim的基本操作3. vim正常模式命令集4. vim末行模式命令集5. vim操作总结 小彩蛋 Linux软件包管理器 yum 软件包 在Linux下安装软件&#xff…

java基础学习笔记2(8.9)

String equals比较堆里值 字符串比较用str1.equals(str2); 比较栈里的值 JDK7以后字符串常量池进入了堆里面。 在Java中,StringBuffer 和 StringBuilder 是用于创建可变字符串的类。它们提供了比 String 更高效的字符串操作,尤其是在需要…

ICM-20948芯片详解(13)

接前一篇文章:ICM-20948芯片详解(12) 六、寄存器详解 2. USER BANK 0寄存器详述 (60)FIFO_COUNTH 高5位,计数表示FIFO中写入的字节数。 (61)FIFO_COUNTL 低8位,计数表…

IMAX ENHANCED认证的护眼三色激光投影仪,选极米 RS 10 Pro把专业IMAX影院带回家

对于追求大屏体验的用户来说,智能投影仪有着电视机无法比拟的优势。因此,智能投影仪如今也逐步替代传统电视机,成为了许多家庭的必备家电之一。对于当代年轻人而言,无论是追剧、看电影还是打游戏,大屏幕都始终比传统电…

西部数据拒绝2.62亿美元巨额赔偿:硬盘专利侵权案将上诉

西部数据(Western Digital,简称WD)被加州的一个陪审团裁定需支付2.62亿美元的赔偿金,原因是该公司侵犯了德国科学家Dieter Suess拥有的硬盘驱动器(HDD)记录技术专利。Suess是维也纳大学功能性材料物理学教授…

linux系统编程:进程(2)

1.在fork函数前打开函数和fork之后打开文件区别 1.fork之前open 子进程会继承父进程已打开的文件的相关信息所以,此时父子进程 会影响统一个offset值 2.fork之后open 父子进程各自有各自的打开文件的信息:相互之间不会有影响。 2.进程创建好之后: 1.任务--- …

Java流程控制01:用户交互Scanner

本节教学视频链接:https://www.bilibili.com/video/BV12J41137hu?p33&vd_sourceb5775c3a4ea16a5306db9c7c1c1486b5https://www.bilibili.com/video/BV12J41137hu?p33&vd_sourceb5775c3a4ea16a5306db9c7c1c1486b5 Scanner 类用于扫描输入文本从字符串中提…

具备长短距离注意力模块的Lite Transformer

Transformer在自然语言处理(例如,机器翻译、问答)中已经变得无处不在;然而,它需要大量的计算才能实现高性能,这使得它不适合受硬件资源和电池严格限制的移动应用程序。在本文中,提出了一个高效的移动NLP架构,Lite Tran…

jq8900-16p与stm32f103c8t6测试

jq8900-16p与stm32f103c8t6测试 引言 本文从购买器件, 到连线步骤, 再到驱动的模块原理讲解, 后面根据不同的语音, 进行文字转语音步骤,全在资料导航里面. 本模块后面着重讲解, jq8900快速移植 本文资料导航 模块购买步骤 跳转 连线步骤 跳转 https://blog.csdn.net/qq_57484…