找回密码
 立即注册
查看: 1136|回复: 0

模型推理场景该如何选型GPU

[复制链接]
发表于 2024-1-20 12:12 | 显示全部楼层 |阅读模式
在人工智能的快速成长中,GPU(图形措置器)已经成为了模型推理的主要驱动力。在许多深度学习场景中,GPU不仅可以大幅提升推理速度,还可以显著降低功耗。然而,选择适合的GPU并不总是那么容易,因为分歧的推理场景可能需要分歧的GPU配置。本文将深入探讨GPU的硬件架构,以及分歧推理场景对GPU的分歧需求,以辅佐读者更好地舆解这一范围。
一、如何读懂GPU的硬件参数
1.1 GPU的基本布局



图1 SM的硬件布局

相信大部门人都知道GPU超强的并行计算能力要归功于它成千上万的CUDA Core. 然而GPU中并不仅是Cuda Core, 还有RT Core、Tensor Core、SFU等计算单元、寄存器、L1/L2 Cache、全局内存等存储单元,以及warp调剂、指令分发等控制单元。要理解GPU,需要先了解GPU的核心组件-SM(Streaming Multiprocessor)。
SM和CUDA Core是紧密相关的,它们都是GPU中的重要组件。SM是NVIDIA在推出全新的Fermi架构时引入的一个概念,它实际上是GPU的基本运算区块。而CUDA Core则是SM中的核心,负责执行GPU的算术运算。我们从SM中各组件的功能角度可以将SM划分为三块:

  • 计算单元,SM中包含整型(int32)计算单元,浮点(FP32)计算单元, 特殊函数(比如正余弦函数)计算单元(SFU),此外还有Volta架构开始引入的RT Core(图形学范围常用的光线追踪)和Tensor Core(专注于矩阵运算),我们凡是所说的CUDA Core指的是SM中的FP32计算单元,凡是所说的GPU的峰值算力也是以FP32计算单元的算力来统计的。
  • 存储单元,SM中包含寄存器、L0 指令cache, L1 Cache和SharedMemory等存储单元,注意L2 Cache和DRAM(全局内存)这些都不在SM内部,见图2。
  • 调剂/控制单元,Warp调剂单元和指令分发单元。一个warp是32个线程,一个SM上可以同时调剂多个warp,warp的切换是通过warp调剂单元来控制。



图2 GPU的内存布局

Memory类型描述(以A100为例)
L1 Cache带宽:19TB/s
空间:192KB*108=20MB(每个SM 192KB)
L2 Cache带宽:4 TB/s(估算)
空间:40MB
DRAM带宽:1.5TB/s
空间:40/80 GB
需要注意的是,分歧的GPU架构可能会有分歧的SM和CUDA Core的组织方式,以及各种存储单元的尺寸也会有明显分歧。因此,在具体的应用中,需要按照具体的GPU架构来理解SM和CUDA Core的关系。
1.2  理解GPU核心参数



A10 datasheet

当我们想了解一款GPU时,都是会去查询该GPU的datasheet,上图是A10的datasheet,里面列举了该款GPU的核心指标参数。这些参数该如何理解呢,在我们了解了GPU的基础架构后,对这些参数的理解也可以分成三个方面:

  • 算力层面, 主要存眷两部门,其一是FP32算力,这部门是由cuda core提供,其二是tensor core提供的算力,不外tensor core只能措置FP16、int8/4、bf16、bf8、TF32等精度。在一些处所可能会看到针对fp16会提供两种算力,一种是基于cuda core的算力,一种是基于tensor core的算力。凡是tensor core提供的峰值算力是cuda core算力的8倍以上,表2中列举了常见的几种GPU的算力。所以如果你的模型推理时需要FP32精度,那么你只需要考虑GPU的FP32算力即可。
  • 存储层面。凡是在应用这个层次考虑,我们将不再考虑其寄存器大小了,我们会更加存眷L1 cache/shared memory尺寸以及全局内存(DRAM,也就是常说的显存)尺寸、显存越大,可容纳的模型尺寸就越大。此外还会存眷全局内存的带宽。像LLM推理场景中的flashattention方案有效的前提LLM的推理是memory-bound的,而A系列卡的shared memory有128KB/192KB每SM, 同时shared memory的带宽是DRAM带宽的10倍以上,flashattention充实操作shared memory以减少对DRAM的访存次数进而达到提升吞吐的效果。
  • 其他,比如功耗(常会在统计推理成本时使用)、连接方式(PCI/SMX)、encoder/decoder(gpu上独立的编解码芯片,在视觉推理场景常用)。



表2 常见GPU的cuda core和tensor core 算力对比

二、如何判断哪种GPU更适合本身的法式
2.1 显存大小的选择
在选型GPU时最先要考虑的就是显存的大小,模型推理场景需要消耗显存的主要有两个处所:

  • 模型参数。
  • 中间值、激活值、输入输出等。
模型参数的尺寸凡是是固定的,不会在推理阶段呈现变化。但中间值、激活值这些需要占用的尺寸可能会在推理过程中动态变化,最常见的场景是很多时候需要通过增加batch size来提升推理的吞吐量,而中间值、激活值这些占用的显存大小与batch size是成正比的,尽管大部门场景模型尺寸对比于激活值要大很多,但总有例外。比如在LLM的推理场景,130B的模型,如果要输出2k或者4k长度的上下文,凡是需要的kv-cache尺寸多大几十GB,batch size每增加1,kv-cache消耗就要增几十GB, 在这种场景下这些中间值的消耗经常会比模型参数更多。这里简单列出了主流GPU的显存大小。



表三:主流GPU显存大小

2.2 gpu 型号的选择
我们总但愿选择最高性价比的GPU,但如何才能做到呢。这就需要我们既要了解GPU的算力(可以参考:模型推理的主流GPU硬件参数整理(不按期更新) - 知乎 (zhihu.com))又要了解本身的法式。上文中提到GPU的算力单元可以分两部门:cuda core和tensor core,cuda core只能提供FP32和FP16算力,tensor core可以提供FP16\INT8\INT4等算力,而且tensor core的峰值算力要大出一个数量级。但是这里需要知道tensor core是从Volta架构以后才撑持,如果要使用之前的kelper或者pascal系列的显卡,是不撑持tensor core的。如果我们的模型必需要使用FP32算力,那么我们就找一款FP32峰值算力较高的机器即可,如果要使用FP16或者int8,这时就可以考虑使用具备tensor core的GPU。
三、总结与展望
在选择模型推理的GPU时,我们需要考虑多个因素,包罗模型大小、运算复杂度、显存需求等等。通过对比分歧GPU的性能指标和性价比,我们可以得出一个合适的选型方案,以满足模型推理的需求。
在未来的博文中,我们将会探讨更多关于模型推理GPU选型的细节和技巧,以及更具体的GPU型号和配置对比。但愿您能够存眷我们的博文,并与我们共同探讨相关问题。
谢谢您的阅读和撑持!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2024-11-22 09:01 , Processed in 0.103364 second(s), 27 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表