GPU-笔记
GPU发展
PC时代随着图形操作系统的出现,大量需要 3D 图形运算的工具软件和游戏对于浮点运算的要求急剧升高,传统的 X86 CPU 处理器并不擅长这类任务,于是诞生了更擅长浮点运算的 GPU。在这类应用中,系统会把图形渲染等任务 offload 到 GPU 上去。

随着神经网络研究和应用的发展,GPU 中的浮点运算能力在这些领域的应用逐渐发展起来,英伟达敏感地抓住了市场机会,将其 GPU 在保留传统渲染能力的同时增加了对于通用计算和神经网络运算的能力,并称之为 GPGPU。
英伟达的 GPGPU 包含渲染以及神经网络(“NN”)运算。这种架构在同时需要两个能力的应用上会有一定的优势,但很显然对于技术积累要求也非常高。目前一些 AI 芯片初创公司所自称的 GPGPU 架构是指没有渲染的 NN 运算,而有一些声称做 GPU 的公司则是狭义的渲染 GPU,二者都不是通常英伟达所指的 GPGPU。英伟达由于有长年渲染 GPU 的技术积累,同时基于先发优势通过 CUDA 积累了生态优势,因此选择了 GPGPU 路线。而其他公司在这条路线上与其正面竞争是胜算很小的,即使国际知名公司(像英特尔和 AMD)在 GPGPU 市场与其竞争都有相当的难度。
然而,没有一个技术是完美的,由于 GPGPU 保留了大量神经网络运算所不需要的单元(即传统渲染), 在单纯的神经网络运算上并不是最高效的,因此谷歌基于特定域架构(DSA)为自己的特 定应用做了 TPU。DSA 架构给其他芯片公司带来了希望,包括 Intel、特斯拉等知名公司都开始在这条路线上发力。
- 集显和独显
在注重算力的服务器和注重便携性的移动端分别采用独立和集成GPU,而汽车、游戏主机、PC等主要采用独立+集成的GPU接入方式。

- GPU发展模式

- 国内外CPU生产线产商
- 设计:Nvidia、AMD几乎垄断
- 设备、材料和EDA/IP:国内外差距较大
- 制造:只有台积电和三星有5nm制程工艺,且需要美国设备
- 封测:中国大陆、美国、中国台湾三分天下


基础
GPU 性能
GPU 的性能需要综合考虑两个指标:算力、通信带宽。
- 算力
算力的单位是 Flops,即每秒所执行的浮点数运算次数。浮点数运算次数就是小数的四则运算,可以简单理解为机器每秒可以做多少次小数的加减乘除。
- 通信带宽
因为 GPU 的内存大小是固定的, 而训练使用的内存要超过单个 GPU 内存,所以就需要多个 GPU 并行计算,但并行计算就需要考虑数据交换带来的通信开销,通信开销越大,GPU 之间的数据交换速度就越快, 模型训练就越快,这就是通信带宽。
下面是 H100、A100 和 4090 卡的性能对比:

神经网络算力计算
神经网络一般分为:前向计算和反向计算两个步骤。
- 前向计算
以提足球为例,前向传播可以理解为球员站在任意位置踢球,然后观察足球离球框的距离,前向传播就是这个观察过程,记录球员在将足球踢向球框时的各个参数。
- 反向传播
反向传播就是根据前向传播记录的参数,再回头来改进球员的踢球的位置、踢法等参数,确保下一次踢球能命中的概率大些。
权重更新就是球员改进踢足球的方式。
总结,一次前向传播需要 1 次计算(观察记录),一次反向传播需要 2 次计算(观察记录+权重更新),则完成一次神经网络的迭代需要对所有输入数据和模型参数进行 3 次计算。由于每次计算都是矩阵运算,每次矩阵运算需要 1 次乘法和加法,共计 2 次浮点运算,所以对于每个 token、每个模型参数,需要 3 * 2 flops = 6 次浮点数运算。*
则总计需要 6 * token 数 * 模型参数量 flops,这就是完成一个神经网络模型需要的算力资源的大致估计,从而可以计算出所需的 GPU 数量。
大模型算力计算

以上图为例,GPT3 的参数规模为 175B,训练 300B,采用稠密(Dense)模型,按照公式计算:6 * 175B * 300B = 3.15e23 flops,公开的 GPT3 的运算量为:3.1e23 flops,基本一致。
- 所需 GPU 卡数/时
已知 GPT3 的运算量为 3.1e23 flops ,再除以 312 flops (一张 A100 fp16 精度下的算力) * 46.2%(利用率) * 3600(一个小时对应的秒数) = 60.67 w 张 A100 /小时 = 2.53 w 张 A100 /天,若是 1000 张 A100 ,则训练需要大约一个月。
其他影响
除了算力,还需考虑计算时的内存和通信带宽,若是单卡,只需考虑训练总内存 = 模型内存 + 优化器内存 + 激活内存 + 梯度内存。
fp32 对应 4 个字节,fp16 对应 2 个字节,精度越大,所需内存越多。
通信带宽决定张量并行计算的速度,因为要多卡计算,卡之间要传递张量计算时的中间数值。
市场现状
最新最强算力芯片: H100,性能超过谷歌的 TPU。

H100 产能受限的原因:
H100芯片需要使用SK海力士的HBM内存,以及台积电的CoWoS封装,两者都因过于昂贵,此前并没能大规模市场化,预备产能并不多。
GPU操作

这是电脑上的显卡,就2G,我说显示很不清晰。


参考
- GPU研究框架 ——行业深度报告(方正证券)
- 大模型所需算力笔记
GPU-笔记的更多相关文章
- Caffe学习笔记2--Ubuntu 14.04 64bit 安装Caffe(GPU版本)
0.检查配置 1. VMWare上运行的Ubuntu,并不能支持真实的GPU(除了特定版本的VMWare和特定的GPU,要求条件严格,所以我在VMWare上搭建好了Caffe环境后,又重新在Windo ...
- 【Todo】【转载】深度学习&神经网络 科普及八卦 学习笔记 & GPU & SIMD
上一篇文章提到了数据挖掘.机器学习.深度学习的区别:http://www.cnblogs.com/charlesblc/p/6159355.html 深度学习具体的内容可以看这里: 参考了这篇文章:h ...
- Udacity并行计算课程笔记-The GPU Hardware and Parallel Communication Patterns
本小节笔记大纲: 1.Communication patterns gather,scatter,stencil,transpose 2.GPU hardware & Programming ...
- 学习笔记︱深度学习以及R中并行算法的应用(GPU)
笔记源于一次微课堂,由数据人网主办,英伟达高级工程师ParallerR原创.大牛的博客链接:http://www.parallelr.com/training/ 由于本人白痴,不能全部听懂,所以只能把 ...
- 【Udacity并行计算课程笔记】- Lesson 2 The GPU Hardware and Parallel Communication Patterns
本小节笔记大纲: 1.Communication patterns gather,scatter,stencil,transpose 2.GPU hardware & Programming ...
- Unity3D学习笔记6——GPU实例化(1)
目录 1. 概述 2. 详论 3. 参考 1. 概述 在之前的文章中说到,一种材质对应一次绘制调用的指令.即使是这种情况,两个三维物体使用同一种材质,但它们使用的材质参数不一样,那么最终仍然会造成两次 ...
- Unity3D学习笔记7——GPU实例化(2)
目录 1. 概述 2. 详论 2.1. 实现 2.2. 解析 3. 参考 1. 概述 在上一篇文章<Unity3D学习笔记6--GPU实例化(1)>详细介绍了Unity3d中GPU实例化的 ...
- Unity3D学习笔记8——GPU实例化(3)
目录 1. 概述 2. 详论 2.1. 自动实例化 2.2. MaterialPropertyBlock 3. 参考 1. 概述 在前两篇文章<Unity3D学习笔记6--GPU实例化(1)&g ...
- caffe学习笔记(一),ubuntu14.04+GPU (用Pascal VOC2007训练数据,并测试)
把源代码跑起来了,将实验过程记录如下,用于新手入门. 今天和师兄师姐才跑通,来分享下心得.(预训练网络:ImageNet_model,训练集:PASCAL VOC2007, GPU) 首先,整个tra ...
- 虚幻引擎4笔记20160821 - 使用GPU粒子做雪花旋转镜头雪花忽有忽无的问题
在使用GPU进行雪花制作的时候,雪花总是在镜头旋转的时候,一会有,一会无的情况,后来下载别人的例子才知道,原来要给粒子加上边界,具体解决方法如下图
随机推荐
- SPI接口,如何对W25Q64进行读写操作?深度解析
一.SPI概述 SPI(SerialPeripheralInterface)是一种同步串行通信协议,广泛应用于微控制器和外围设备之间的数据传输.它由摩托罗拉公司开发,具有全双工通信能力,即可以同时 ...
- Java 并发编程实战学习笔记——串行任务转并行任务
package net.jcip.examples; import java.util.Collection; import java.util.List; import java.util.Queu ...
- 打包jar 程序,同时将依赖报一起打包
1.概述 有些时候,我们打包一个java 程序,我需要将所有的依赖也一起打包,这样执行起来方便. 2.我们可以使用maven 插件实现 <build> <plugins> &l ...
- windows 上部署 kafka 做测试
1.下载 需要下载 zookeeper 和kafka 我下载的版本是 2.部署 2.1 部署 zookeeper 2.1.1 新建配置文件 zoo.cfg 内容为 tickTime = 2000 da ...
- 【处理元组有关的题型的技巧】codeforces 1677 A. Tokitsukaze and Strange Inequality
题意 第一行输入一个正整数 \(T(1 \leq T \leq 1000)\),代表共有 \(T\) 组测试用例,对于每组测试用例: 第一行输入一个正整数 \(n(4 \leq n \leq 5000 ...
- orangepi zero3 使用dd命令进行SD卡系统备份与还原
1. 使用dd命令备份整个sd卡 首先使用 df -h命令查看sd卡挂载名,如下所示,sd卡挂载为 /dev/sdc meng@meng:~/桌面/code$ df -h 文件系统 大小 已用 可用 ...
- 【Vue】vite+vue3 如何实现点击进入详情页/文章页
如上图,点击标题可以进入详情页,关键代码截图如下: 然后去配置路由 那么组件如何从地址中接收参数呢
- 问题解决:Failed to download metadata for repo ‘appstream‘: Cannot prepare internal mirrorlist
https://cloud.tencent.com/developer/article/1993317 大家都知道Centos8于2021年年底停止了服务,大家再在使用yum源安装时候,出现下面错误& ...
- Web前端常见的英文缩写
PV (Page View)页面浏览量 FED(Front-End Development)前端开发 F2E(Front-End Engineer)前端工程师 WWW(World Wide Web)万 ...
- PMML讲解及使用
1. PMML概述 PMML全称预言模型标记语言(Predictive Model Markup Language),利用XML描述和存储数据挖掘模型,是一个已经被W3C所接受的标准.使用pmml储存 ...