一、免费GPU汇总
- 阿里云天池TCC V100 16G显存 8c32g 单次最长运行24小时
- Google colab T4 16G显存 单次最长运行12小时 (GPU/TPU)
- Kaggle Notebook (GPU/TPU) P100 16G显卡 43H每周使用时长
- 百度的AI Studio V100 32G显卡,只能使用paddle
二、GPU购买指南
目前独立显卡主要有AMD和NVIDIA 两家厂商。其中NVIDIA 在深度学习布局较早,对深度学习框架支持更好。因此,目前大家主要会选择NVIDIA 的 GPU。
NVIDIA 有面向个人用户(如GTX系列)和企业用户(如 Tesla系列)的两类 GPU。这两类GPU的计算能力相当,然而,面向企业用户的GPU通常使用被动散热并增加了显存校验,从而更适合数据中心,并通常要比面向个人用户的 GPU 贵上 10倍。
如果是拥有100台机器以上的大公司用户,通常可以考虑针对企业用户的NVIDIA Tesla系列。如果是拥有10~100台机器的实验室和中小公司用户,预算充足的情况下可以考虑 NVIDIA DGX 系列,否则可以考虑购买如 Supermicro之类的性价比比较高的服务器,然后再购买安装GTX 系列的GPU
NVIDIA一般每一两年发布一次新版本的GPU,例如,2016 年发布的 GTX 1000系列以及2018 年发布的 RTX 2000系列。每个系列中会有数个不同的型号,分别对应不同的性能。
GPU的性能主要由以下3个参数构成。
- 计算能力。通常我们关心的是32位浮点计算能力。16位浮点训练也开始流行,如果只做预测的话也可以用8位整数。
- 显存大小。当模型越大或者训练时的批量越大时,所需要的显存就越多。(3)显存带宽。只有当显存带宽足够时才能充分发挥计算能力。
三、GPU—Graphics Processing Unit—俗称显卡
1、 概述
图形处理器,又称显示核心、视觉处理器、显示芯片,是一种专门在个人电脑、工作站、游戏机和一些移动设备(如平板电脑、智能手机等)上图像运算工作的微处理器。
用途是将计算机系统所需要的显示信息进行转换驱动,并向显示器提供行扫描信号,控制显示器的正确显示,是连接显示器和个人电脑主板的重要元件,也是“人机对话”的重要设备之一。显卡作为电脑主机里的一个重要组成部分,承担输出显示图形的任务,对于从事专业图形设计的人来说显卡非常重要。
2、 优点
GPU适合深度学习的三大理由(按重要程度排序):
●高宽带的内存
●多线程并行下的内存访问隐藏延迟
●数量多且速度快的可调整的寄存器和L1缓存
3、 在GPU上运行代码流程
1)判断GPU是否可用
device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu") print(device)
2)将模型参数和输入数据转换为cuda支持的类型
model.to(device)
x_true.to(device)
3)在GPU上计算结果也为cuda的数据类型,需要转化为numpy或者torch的cpu的tensor类型
predict = predict.cpu().detach().numpy()
5、 NVIDIA显卡产品线
5.1 NVIDIA常见的三大产品线如下
Quadro类型: Quadro系列显卡一般用于特定行业,比如设计、建筑等,图像处理专业显卡,比如CAD、Maya等软件。
GeForce类型: 这个系列显卡官方定位是消费级,常用来打游戏。但是它在深度学习上的表现也非常不错,很多人用来做推理、训练,单张卡的性能跟深度学习专业卡Tesla系列比起来其实差不太多,但是性价比却高很多。
Tesla类型: Tesla系列显卡定位并行计算,一般用于数据中心,具体点,比如用于深度学习,做训练、推理等。Tesla系列显卡针对GPU集群做了优化,像那种4卡、8卡、甚至16卡服务器,Tesla多块显卡合起来的性能不会受>很大影响,但是Geforce这种游戏卡性能损失严重,这也是Tesla主推并行计算的优势之一
Quadro类型分为如下几个常见系列
NVIDIA RTX Series系列: RTX A2000、RTX A4000、RTX A4500、RTX A5000、RTX A6000
Quadro RTX Series系列: RTX 3000、RTX 4000、RTX 5000、RTX 6000、RTX 8000
GeForce类型分为如下几个常见系列
Geforce 10系列: GTX 1050、GTX 1050Ti、GTX 1060、GTX 1070、GTX 1070Ti、GTX 1080、GTX 1080Ti
Geforce 16系列:GTX 1650、GTX 1650 Super、GTX 1660、GTX 1660 Super、GTX 1660Ti
Geforce 20系列:RTX 2060、RTX 2060 Super、RTX 2070、RTX 2070 Super、RTX 2080、RTX 2080 Super、RTX 2080Ti
Geforce 30系列: RTX 3050、RTX 3060、RTX 3060Ti、RTX 3070、RTX 3070Ti、RTX 3080、RTX 3080Ti、RTX 3090 RTX 3090Ti
Tesla类型分为如下几个常见系列
A-Series系列: A10、A16、A30、A40、A100
T-Series系列: T4
V-Series系列: V100
P-Series系列: P4、P6、P40、P100
K-Series系列: K8、K10、K20c、K20s、K20m、K20Xm、K40t、K40st、K40s、K40m、K40c、K520、K80
5.2 GPU信息
型号 | 显存 | 半精度(TFLOPS) | 单精度(TFLOPS) | 双精度(TFLOPS) | CUDA核心数量 | Tensor核心数量 | 架构 | 显存类型 |
NVIDIA RTX A5000 | 24GB | 55.50 | 27.77 | 0.867 | 8192 | 256 | Ampere | GDDR6 |
Quadro RTX 5000 | 16GB | 22.30 | 11.15 | 0.348 | 3072 | 384 | Turing | GDDR6 |
GeForce 3090Ti | 24GB | 80 | 40.0 | 0.627 | 10752 | 336 | Ampere | GDDR6X |
GeForce 3090 | 24GB | 71 | 35.58 | 0.558 | 10496 | 328 | Ampere | GDDR6X |
GeForce 3080Ti | 12GB | 68.5 | 34.71 | 0.533 | 10240 | 320 | Ampere | GDDR6X |
GeForce 3080 | 12GB | 58.9 | 29.77 | 0.465 | 8704 | 272 | Ampere | GDDR6X |
GeForce 3070 | 8GB | 40.6 | 20.31 | 0.318 | 5888 | 184 | Ampere | GDDR6X |
GeForce 3060Ti | 8GB | 33.4 | 16.20 | 0.253 | 4864 | 152 | Ampere | GDDR6 |
GeForce 3060 | 12GB | 25.5 | 12.74 | 0.199 | 3584 | 112 | Ampere | GDDR6 |
GeForce 2080Ti | 11GB | 26.9 | 13.4 | 0.42 | 4352 | 544 | Turing | GDDR6 |
Tesla V100 NVLink | 32GB | 31.33 | 15.7 | 7.8 | 5120 | 640 | Volta | HBM2 |
Tesla V100 NVLink | 16GB | 31.33 | 15.7 | 7.8 | 5120 | 640 | Volta | HBM2 |
Tesla V100S PCIE | 32GB | 32.71 | 16.4 | 8.2 | 5120 | 640 | Volta | HBM2 |
Tesla P100 PCIE | 16GB | 21.22 | 10.6 | 5.3 | 3584 | 无 | Pascal | HBM2 |
Tesla T4 | 16GB | 16.30 | 8.141 | 0.254 | 2560 | 320 | Turing | GDDR6 |
GeForce ITAN X | 12GB | 13.28 | 6.691 | 0.153 | 3072 | 无 | Maxwell | GDDR5 |
5.3 显卡性能主要根据如下几个参数来判断:
- 显存: 显存即显卡内存,显存主要用于存放数据模型,决定了我们一次读入显卡进行运算的数据多少(batch size)和我们能够搭建的模型大小(网络层数、单元数),是对深度学习研究人员来说很重要的指标,简述来讲,显存越大越好。
- 架构:在显卡流处理器、核心频率等条件相同的情况下,不同款的GPU可能采用不同设计架构,不同的设计架构间的性能差距还是不小的,显卡架构性能排序为:Ampere > Turing > Volta > Pascal > Maxwell > Kepler > Fermi > Tesla
- CUDA核心数量:CUDA是NVIDIA推出的统一计算架构,NVIDIA几乎每款GPU都有CUDA核心,CUDA核心是每一个GPU始终执行一次值乘法运算,一般来说,同等计算架构下,CUDA核心数越高,计算能力会递增。
- Tensor(张量)核心数量:Tensor 核心是专为执行张量或矩阵运算而设计的专用执行单元,而这些运算正是深度学习所采用的核心计算函数,它能够大幅加速处于深度学习神经网络训练和推理运算核心的矩阵计算。Tensor Core使用的计算能力要比Cuda Core高得多,这就是为什么Tensor Core能加速处于深度学习神经网络训练和推理运算核心的矩阵计算,能够在维持超低精度损失的同时大幅加速推理吞吐效率。
- 半精度:如果对运算的精度要求不高,那么就可以尝试使用半精度浮点数进行运算。这个时候,Tensor核心就派上了用场。Tensor Core专门执行矩阵数学运算,适用于深度学习和某些类型的HPC。Tensor Core执行融合乘法加法,其中两个4*4 FP16矩阵相乘,然后将结果添加到4*4 FP16或FP32矩阵中,最终输出新的4*4 FP16或FP32矩阵。NVIDIA将Tensor Core进行的这种运算称为混合精度数学,因为输入矩阵的精度为半精度,但乘积可以达到完全精度。Tensor Core所做的这种运算在深度学习训练和推理中很常见。
- 单精度: Float32 是在深度学习中最常用的数值类型,称为单精度浮点数,每一个单精度浮点数占用4Byte的显存。
- 双精度:双精度适合要求非常高的专业人士,例如医学图像,CAD。
6、 选择指标
卷积网络和Transformer:Tensor核心数>单精度浮点性能>显存带宽>半精度浮点性能
循环神经网络:显存带宽>半精度浮点性能>Tensor核心数>单精度浮点性能
四、 NPU——Network Processing Unit
嵌入式神经网络处理器(NPU)采用“数据驱动并行计算”的架构,特别擅长处理视频、图像类的海量多媒体数据。
NPU处理器最明显的优势就是信息处理能力块。采用数据驱动并行计算架构。颠覆了冯诺依曼计算机架构
NPU的典型代表有国内的寒武纪芯片和IBM的TrueNorth
五、TPU
全称是Tensor Processing Unit,即张量处理器。
TPU与同期的CPU和GPU相比,可以提供15-30倍的性能提升,以及30-80倍的效率(性能/瓦特)提升。
据称Google提供的服务,都使用了Google的TPU加速计算