趋近智
组成一个LLM的数百万或数十亿参数需要加载到计算机内存中才能运行。具体来说,为了在推理过程中进行快速处理,这些参数最好存在于GPU的专用内存,即VRAM中。但每个参数实际占用多少内存呢?答案取决于其数据类型和精度。
可以将数据类型想象成计算机内部存储数字的容器。就像你的厨房里有不同大小的容器来存放不同量的食物一样,计算机使用不同大小的数字容器来存储数字。容器的大小决定了数字的精度,本质上是它能表示多少细节。
传统上,许多机器学习模型,包括早期的LLM,都使用一种名为浮点32的数据类型进行训练,通常缩写为FP32。以FP32格式存储的每个参数占用32位内存。
由于一个字节有8位,一个FP32参数占用:
这听起来可能不多,但请记住,LLM有数十亿参数。让我们考虑一个相对较小的70亿参数模型(通常写作7B)。要使用FP32存储其参数,内存需求是:
那是280亿字节,相当于28千兆字节(GB)的内存,主要是VRAM,仅仅用于模型权重!这是一个很大的量,强调了为什么运行更大的模型需要大量硬件。
为了让LLM更易于使用和高效,开发者经常使用较低精度的数据类型。其中非常常见的一种是浮点16 (FP16),有时被称为“半精度”。顾名思义,每个FP16参数仅使用16位。
计算每个参数的内存:
现在,我们使用FP16重新计算70亿参数模型所需的内存:
这是14 GB。通过从FP32切换到FP16,我们将模型参数所需的内存减少了一半!这产生了巨大的影响。这意味着您可能能够在具有16 GB VRAM的GPU上运行该模型,而FP32版本将需要具有超过28 GB VRAM的GPU。
使用一半的精度会损害模型性能吗?有时精度会略有下降,但对于许多任务,特别是推理(运行模型),差异通常可以忽略不计,使得FP16成为部署LLM的流行选择。
我们可以使用整数数据类型,如整数8 (INT8),来进一步减少内存使用。一个INT8参数仅使用8位。
每个参数的内存:
对于我们的70亿参数示例模型,内存需求变为:
那仅是7 GB!这是FP16内存的一半,是原始FP32需求的四分之一。使用INT8使得更大的模型可以在更一般的硬件上运行。
然而,仅用8位表示参数会显著降低其范围和精度,与浮点类型相比。如果处理不当,这可能导致模型精度出现更明显的下降。通常需要量化感知训练或复杂的转换方法来最小化这种精度损失。
数据类型的选择直接影响所需的VRAM。让我们将使用这些不同精度存储70亿参数模型的估算内存需求可视化:
仅用于存储70亿参数LLM的模型参数所需VRAM估算,根据使用的数据类型精度。
如图所示,从FP32转向FP16使内存占用减少一半,而转向INT8则再次减少一半。这种减少是使得LLM能在消费级GPU上运行或在资源受限环境中优化其性能的重要因素。
在实际应用中,FP16已成为LLM推理的非常常见标准,因为它在内存节省、现代GPU上的速度提升以及对输出质量影响最小方面达到了很好的平衡。INT8也越来越多地被使用,特别是在内存或速度要求严格时,通常涉及我们接下来将介绍的一个过程:量化。理解这些数据类型是估算您所需硬件的第一步。
这部分内容有帮助吗?
© 2026 ApX Machine Learning用心打造