全部文章

大模型参数介绍、资源占用推理、GPU选择

 

1. 大模型参数介绍

当你第一次了解一些开源大模型的时候,往往会困惑于模型琳琅满目的开源版本,不知道自己应该如何选择合适的模型,这些模型的差异又是什么?以下是大模型的相关参数介绍以供为大家解答这方面的疑惑。

1.1.1 模型参数单位

在浏览模型信息的时候常常会看到类似:"6b"、"13b"、"70b"等字样,这个术语通常指的是大型神经网络模型的参数数量。其中的 "b" 代表 "billion",也就是十亿。表示模型中的参数量,每个参数用来存储模型的权重和偏差等信息。例如:

"6b" 意味着模型有大约 60 亿个参数。"13b" 意味着模型有大约 130 亿个参数。"70b" 意味着模型有大约 700 亿个参数。

1.1.2 模型参数精度

模型参数的精度通常指的是参数的数据类型,它决定了模型在内存中存储和计算参数时所使用的位数。以下是一些常见的模型参数精度及其含义,以及它们在内存中所占用的字节数。

  • 单精度浮点数 (32位) - float32:

    • 含义:单精度浮点数用于表示实数,具有较高的精度,适用于大多数深度学习应用。

    • 字节数:4字节(32位)

  • 半精度浮点数 (16位) - float16:

    • 含义:半精度浮点数用于表示实数,但相对于单精度浮点数,它的位数较少,因此精度稍低。然而,它可以在某些情况下显著减少内存占用并加速计算。

    • 字节数:2字节(16位)

  • 双精度浮点数 (64位) - float64:

    • 含义:双精度浮点数提供更高的精度,适用于需要更高数值精度的应用,但会占用更多的内存。

    • 字节数:8字节(64位)

  • 整数 (通常为32位或64位) - int32, int64:

    • 含义:整数用于表示离散的数值,可以是有符号或无符号的。在某些情况下,例如分类问题中的标签,可以使用整数数据类型来表示类别。

    • 字节数:通常为4字节(32位)或8字节(64位)

模型参数精度的选择往往是一种权衡。使用更高精度的数据类型可以提供更高的数值精度,但会占用更多的内存并可能导致计算速度变慢。相反,使用较低精度的数据类型可以节省内存并加速计算,但可能会导致数值精度损失。 在实际应用中,选择模型参数的精度需要根据具体任务、硬件设备和性能要求进行权衡考虑。

实际上,通常情况下并没有标准的整数数据类型为int4或int8,因为这些整数数据类型不太常见,且在大多数计算机体系结构中没有直接支持。在计算机中,整数通常以字节为单位进行存储,所以int4表示一个4位的整数,int8表示一个8位的整数。

然而,近年来在深度学习领域中,出于模型压缩和加速的考虑,研究人员开始尝试使用较低位数的整数来表示模型参数。例如,一些研究工作中使用的int4、int8等整数表示法是通过 量化(quantization) 技术来实现的。

在量化技术中,int4和int8分别表示4位和8位整数。这些整数用于表示模型参数,从而减少模型在存储和计算时所需的内存和计算资源。量化是一种模型压缩技术,通过将浮点数参数映射到较低位数的整数,从而在一定程度上降低了模型的计算和存储成本。以下是对这两种精度的解释以及它们在内存中占用的字节数:

  • int4 (4位整数):

    • 含义:int4使用4位二进制来表示整数。在量化过程中,浮点数参数将被映射到一个有限的范围内的整数,然后使用4位来存储这些整数。

    • 字节数:由于一个字节是8位,具体占用位数而非字节数,通常使用位操作存储。

  • int8 (8位整数):

    • 含义:int8使用8位二进制来表示整数。在量化过程中,浮点数参数将被映射到一个有限的范围内的整数,然后使用8位来存储这些整数。

    • 字节数:1字节(8位)

在量化过程中,模型参数的值被量化为最接近的可表示整数,这可能会导致一些信息损失。因此,在使用量化技术时,需要平衡压缩效果和模型性能之间的权衡,并根据具体任务的需求来选择合适的量化精度。

1.1.3 模型文本后缀

开源模型的不同后缀通常指示了模型的特定版本或特化用途,反映了模型被调整或优化的方向。

  • 无后缀模型:这通常指的是标准模型,未经过特殊优化或调整,可用于广泛的用途和基本的自然语言处理任务。

  • Instruct模型:指令微调模型。在指令微调模型中输入的“指令”通常是清晰、明确的文本命令,用于告诉模型应该执行什么样的任务。这些指令旨在使模型理解并精确执行所需的操作,这些操作可以是生成文本、回答问题、提供信息、甚至进行复杂的数据分析等。

  • chat模型:这类模型专为对话系统和聊天应用优化。它们经过训练以更好地处理交互式对话,可能包括更好的上下文保持能力和回复生成的连贯性。

  • MoE模型:是指模型采用(混合专家 · Mixture of Experts)架构来部署的。这种方法的工作原理是将复杂的任务划分为更小、更易于管理的子任务,每个子任务都由专门的迷你模型或「专家」处理。

具体的文本类型后缀,我们可以在模型下对应的介绍页面中找到具体的意义。

chat类模型通常是我们最常选择的部署模型,尤其在尝试Agent开发的过程中,希望获得更好的交互式对话体验。

1.2 推理显存计算

模型推理(inference)是指在已经训练好的模型上对新的数据进行预测或分类。推理阶段通常比训练阶段要求更低的显存,因为不涉及梯度计算和参数更新等大量计算。以下是计算模型推理时所需显存的一些关键因素:

  • 模型结构: 模型的结构包括层数、每层的神经元数量、卷积核大小等。较深的模型通常需要更多的显存,因为每一层都会产生中间计算结果。

  • 输入数据: 推理时所需的显存与输入数据的尺寸有关。更大尺寸的输入数据会占用更多的显存。

  • 批处理大小BatchSize: 批处理大小是指一次推理中处理的样本数量。较大的批处理大小可能会增加显存使用,因为需要同时存储多个样本的计算结果。

  • 数据类型DataType: 使用的数据类型(如单精度浮点数、半精度浮点数)也会影响显存需求。较低精度的数据类型通常会减少显存需求。

  • 中间计算: 在模型的推理过程中,可能会产生一些中间计算结果,这些中间结果也会占用一定的显存。

以 ChatGLM3-6B 为例

因为全精度模型参数是float32类型, 占用4个字节,粗略计算:1b(10亿)个模型参数,约占用4G显存(实际大小:10^9 * 4 / 1024^3 ~= 3.725 GB),如果选择ChatGLM3-6B的参数量为6b,那么加载模型参数需要的显存为:3.725 * 6 ~= 22.35 GB

如果您的显存不足32GB,那么可以设置半精度的FP16/BF16来加载,每个参数只占2个字节,所需显存就直接减半,只需要约11GB。虽然模型效果会因精度损失而略微降低,但一般在可接受范围。

如果您的显存不足16GB,那么可以采用int8量化后,显存再减半,只需要约5.5GB,但是模型效果会更差一些。

如果您的显存不足8GB,那么只能采用int4量化,显存再减半,只需要约2.75GB,但是这个效果就差强人意了。

上述是加载模型到显存所需大小,在模型的推理过程中,可能会产生一些中间计算结果,这些中间结果也会占用一定的显存,所以显存大小不能刚好是参数量的大小。

1.4 GPU选择指南

1.4.1 学习实践

开源大模型的本地部署,不论是推理还是微调都离不开GPU这一硬件需求。相对而言,对CPU和内存的要求并不高。(尽管像GLM系列开源模型支持Intel CPU和Mac上运行,但部署操作十分繁琐且占用大量内存,因此大模型的相关应用探索,更推荐在GPU上进行。)CPU部分无论你是Intel还是AMD都可以,内存16G或者32G都可以,都十分灵活。

除硬件外,操作系统推荐使用Linux系统,相比Windows和MacOS,Linux对于大模型推理和微调有着更完善的支持,同时也是工业应用场景中使用最多的操作系统。

模型精度 7B 推理 7B训练(PEFT) 最低配置显卡 显卡显存 硬件成本 租赁在线GPU成本
FP32全精度 28GB 40GB 3090*2 48GB 8500*2 30/h
FP16半精度 14GB 20GB 3090 24GB 8500 30/h
      4080 16GB 7200 25/h
Int8 精度 7GB 10GB 2080Ti 11GB 2200 12/h
      3080Ti 12GB 4200 15/h

我们当前的基本硬件配置如下:

1.4.2 工业应用

对于大模型工业级的实践要求,常见的消费及显卡就不能满足需求了。

显卡 目标市场 性能 应用场景 价格
4090 消费者 通用计算,图形渲染,高端游戏,4k/8k视频制作 14599(24G)
T4 企业/AI推理 AI推理,轻量级训练,图形渲染 8000(14G)
A10 企业/图形 图形渲染,轻量级计算 19000 (24G)
V100 数据中心/AI 深度学习训练/推理,高性能计算 43000 (32G)
A100 数据中心/AI 深度学习训练/推理,高性能计算 70000 (40G)
H100 数据中心/AI 深度学习训练/推理,高性能计算,大数据分析 242000 (80G)
A800 数据中心/AI 中高 深度学习推理,高性能计算,大数据分析 110000 (40G)

22年10月美国商务部限制 GPU 对华出口的算力不超过 4800 TOPS 和带宽不超过 600 GB/s,导致最强的 H100 和 A100 禁售。黄仁勋随后推出针对中国市场的 A800 和 H800,但随后23年10月,再次被禁止向中国出售。

  • 对于本地个人研发项目,GeForce RTX 4090 等消费级 GPU 足以满足中等规模的需求。

  • 对于公司的大规模数据和复杂模型,推荐使用如 NVIDIA A100 的高性能 GPU。

  • 数据规模小时,可考虑预算内的 A10 或 T4 型号。

  • 如果没有双精度需求,追求性价比,可以选择把 4090 显卡搭建服务器使用。不适用于全量训练,可微调和推理。

大模型训练需要高性能的计算机硬件来保证训练的效率和速度。建议选择具有高速的ECC或DDR5内存。现在训练时一般在 GLM 、 LLaMA 等大模型的基础上进行训练,国内会选择 A800/H800 x 8 的 GPU 配置,与此同时内存一般会选择相似大小以提升效率,常规选择 512 内存。

磁盘方面,大模型训练需要存储大规模的数据集和模型参数,因此需要足够的存储资源来保证数据能够快速地被读取和处理。建议选择具有大容量、高速的存储设备,如 SSD 或 NVMe 固态硬盘。一般 4T-8T 不等。

 

posted @ 2025-09-29 16:39  指尖下的世界  阅读(15)  评论(0)    收藏  举报