>在笔记本电脑上运行自己的chatgpt:llm量化指南
>>曾经梦想直接在笔记本电脑上运行自己的chatgpt? 得益于大语言模型(LLMS)的进步,这已成为现实。 关键是量化 - 一种技术,它缩小了这些庞大的模型,以适合消费者硬件,而性能损失最少(完成正确!)。本指南解释了量化,其方法,并向您展示了如何使用拥抱Face的Quanto库以两个简单的步骤来量化模型。 使用DataCamp Datalab。
> LLMS的不断增长
LLM的复杂性爆炸了。 GPT-1(2018)有910亿个参数; GPT-2(2019),15亿; GPT-3(2020),高达1750亿; GPT-4拥有超过1万亿。这种巨大的增长会产生记忆瓶颈,阻碍训练和推理,并限制可及性。 量化通过降低模型的大小而在保留性能的同时解决这一问题。
量化是一种模型压缩技术,可降低模型的权重和激活的精度。 这涉及将数据从较高精确的类型(例如32位浮点)转换为较低精确的类型(例如8位整数)。 较少的位意味着一个较小的模型,消耗较少的内存,存储和能量。
考虑图像压缩:高分辨率图像被压缩以供网络使用,减少大小和加载时间以一些细节为代价。 同样,量化LLM可以减少计算需求,从而使其能够在功能较低的硬件上运行。
>更快的Web加载的图像压缩。
量化引入了噪声(量化误差),但研究重点是最大程度地减少以维持性能。。
>
>示例:重量矩阵(左)及其量化版本(右)。
原始矩阵和量化矩阵之间的差异是量化误差。
量化误差矩阵。
在实践中,量化涉及更改数据类型(降低)。 例如,从float32(每个参数4个字节)转换为INT8(每个参数1个字节)可显着降低内存使用量。
>>大脑浮点(BF16)和降低
由Google开发的BF16> BF16在Float32的动态范围和Float16的效率之间提供了平衡。降低(从较高精确到较低精确的数据类型)降低速度,但会导致数据丢失和错误传播,尤其是数据类型较小。
量化类型存在几种量化类型:
>
示例:权重矩阵的线性量化。
>去量化和量化误差。
块量化:在较小的块中量化权重,更有效地处理非均匀分布。
> 权重与激活量化:量化可以应用于权重(静态)和激活(动态)。 激活量化更为复杂。
>培训后量化(PTQ)与量化感知训练(QAT):
某些方法需要校准 - 对数据集的推断以优化量化参数。 技术包括百分比校准和平均/标准偏差校准。 诸如Qlora之类的方法避免校准。
量化的工具
from transformers import AutoModelForCausalLM, AutoTokenizer model_name = "EleutherAI/pythia-410m" model = AutoModelForCausalLM.from_pretrained(model_name, low_cpu_mem_usage=True) tokenizer = AutoTokenizer.from_pretrained(model_name)
quantize()
转换模型。from quanto import quantize, freeze quantize(model, weights=torch.int8, activations=None)
freeze()
将量化应用于权重。freeze(model)
compute_module_sizes()
是一个自定义函数;有关实现的Datacamp Datalab)。
结论
量化使LLMS更容易访问和高效。 通过了解其技术并使用拥抱Face Quanto之类的工具,您可以在功能较小的硬件上运行强大的模型。 对于较大的模型,请考虑升级您的资源。
>llm量化常见问题解答
quantize()
>
calibration()
model_name
以上是大型语言模型(LLMS)的量化:有效降低AI模型大小的详细内容。更多信息请关注PHP中文网其他相关文章!