如何让大语言模型在规格普通的硬件上运行 - 量化技术

近年来,大型语言模型(LLMs)的能力有了飞跃式的发展,使其在越来越多的应用场景中更加友好和适用。然而,随着LLMs的智能和复杂度的增加,其参数数量,即权重和激活值的数量也在增加,这意味着模型的学习和处理数据的能力在不断提升。例如,GPT-3.5拥有约1750亿个参数,而当前最先进的GPT-4则拥有超过1万亿个参数。

然而,模型越大,所需的内存也越多。这意味着只能在具有高规格硬件和足够数量的GPU的设备上运行这些模型——这限制了模型的部署选项,从而影响了基于LLM的解决方案的普及和应用。幸运的是,机器学习研究人员正在开发越来越多的解决方案来应对模型规模不断增长的挑战,其中最突出的解决方案之一就是量化技术

在本篇中,我们将探讨量化的概念,包括其工作原理、重要性和优势,以及量化语言模型的不同技术。

1. 什么是量化以及为什么它很重要?

量化是一种模型压缩技术,它将大型语言模型(LLM)中的权重激活值从高精度的数据表示转换为低精度的数据表示,也就是说,从可以容纳更多信息的数据类型转换为容纳较少信息的数据类型。一个典型的例子是将数据从32位浮点数(FP32)转换为8位或4位整数(INT8或INT4)。

理解量化的一个很好的类比是图像压缩。压缩图像涉及通过移除一些信息(即数据位)来减小其大小。虽然减小图像的大小通常会降低其质量(在可接受的范围内),但这也意味着在给定设备上可以保存更多的图像,同时传输或显示给用户所需的时间和带宽也会减少。同样,量化LLM增加了其可移植性和可部署方式的数量——尽管以可接受的细节或精度为代价。

量化在机器学习中是一个重要过程,因为减少模型每个权重所需的位数会显著减少其总体大小。因此,量化产生的LLM占用更少的内存、需要更少的存储空间、更节能,并且能够更快地进行推理。所有这些优点使得LLM可以在更广泛的设备上运行,包括单个GPU,而不是依赖昂贵的多GPU硬件,甚至在某些情况下可以在CPU上运行。

2. 量化是如何工作的?

从本质上讲,量化过程涉及将存储在高精度值中的权重映射到低精度数据类型。虽然在某些情况下这相对简单,例如将64位或32位浮点数映射到16位浮点数,因为它们共享表示方案,但在其他情况下则更加复杂。例如,将32位浮点值量化为4位整数就比较复杂,因为INT4只能表示16个不同的值,而FP32的范围非常广。

为了实现量化,我们需要找到将FP32权重值范围[最小值, 最大值]映射到INT4空间的最佳方式:一种实现此目的的方法称为仿射量化方案,其公式如下:

x_q = round(x/S + Z)

其中:
x_q – 对应于FP32值x的量化INT4值
S – FP32缩放因子,是一个正的float32值
Z – 零点:对应于FP32空间中的0的INT4值
round – 指将结果值四舍五入到最接近的整数

然而,要找到FP32值范围的==[最小值, 最大值]==,我们必须首先使用一个较小的校准数据集对模型进行校准。可以通过多种方式确定[最小值, 最大值],常见的解决方案是将其设置为观察到的最小和最大值。随后,所有超出此范围的值将被“截断”——即分别映射到最小值和最大值。

话虽如此,这种方法及类似方法的问题在于,离群值(即异常值)可能对缩放产生不成比例的影响:低精度数据类型的完整范围没有得到有效利用——这降低了量化模型的准确性。解决此问题的方法是块内量化,将权重按其值分为64或128的组。例如,每个块分别进行量化,以减轻离群值的影响并提高精度。

需要考虑的一点是,虽然LLM的权重和激活值将被量化以减少其大小,但在推理时会被反量化,因此在前向传播和后向传播期间可以使用高精度数据类型进行必要的计算。这意味着每个块的缩放因子也必须存储。因此,在量化过程中使用的块数越多,精度越高,但必须保存的缩放因子数量也越多。

3. 两种类型的大型语言模型量化:PTQ 和 QAT

虽然有多种量化技术,但总的来说,LLM 量化分为两类:

训练后量化(PTQ)

训练后量化指的是在大型语言模型已经训练完成后进行量化的技术。PTQ 比 QAT 更容易实现,因为它需要的训练数据更少且速度更快。然而,由于权重值精度的丧失,它也可能导致模型准确性的降低。

量化感知训练(QAT)

量化感知训练指的是在数据上进行微调时考虑量化的方法。与 PTQ 技术相比,QAT 在训练阶段集成了权重转换过程,即校准、范围估计、截断、舍入等。这通常会导致更优的模型性能,但计算需求更高。

4. 量化大型语言模型的优缺点

优点

模型更小:通过减少权重的大小,量化生成的模型更小。这使得它们可以在各种情况下部署,例如在硬件性能较低的设备上,并降低存储成本。

扩展性增强:量化模型的内存占用较小,这也使得它们的扩展性更强。由于量化模型对硬件的要求较低,组织可以更灵活地增加IT基础设施以适应它们的使用。

推理速度更快:权重使用的位宽较低,以及由此产生的较低内存带宽需求,使计算更加高效。

缺点

准确性降低:毫无疑问,量化的最大缺点是输出的准确性可能降低。将模型的权重转换为低精度可能会降低其性能——而且量化技术越“激进”,即转换数据类型的位宽越低,例如4位、3位等,准确性降低的风险就越大。

5. 不同的LLM量化技术

现在我们已经讨论了量化是什么以及它的好处,让我们来看看不同的量化方法及其工作原理。

QLoRA

Low-Rank Adaptation(LoRA)是一种参数高效微调 Parameter-Efficient Fine-Tuning(PEFT)技术,通过冻结基础LLM的权重并微调一小部分额外的权重(称为适配器 adapters),减少进一步训练基础LLM的内存需求。Quantized Low-Rank Adaptation(QLoRA)更进一步,将基础LLM中的原始权重量化为4位:减少LLM的内存需求,使其在单个GPU上运行成为可能。

QLoRA通过两个关键机制进行量化:4位NormalFloat(NF4)数据类型和双重量化。

NF4:一种用于机器学习的4位数据类型,将每个权重归一化为-1到1之间的值,与传统的4位浮点数相比,可以更准确地表示低精度权重值。然而,虽然NF4用于存储量化权重,QLoRA在前向和后向传播过程中使用另一种数据类型,即brainfloat16(BFloat16),这也是专为机器学习设计的。

双重量化(DQ):一种为了额外节省内存而对量化常量进行再次量化的过程。QLoRA将权重以64为一组进行量化,虽然这便于精确的4位量化,但还必须考虑每个组的缩放因子——这增加了所需的内存。DQ通过对每个组的缩放因子进行第二轮量化来解决这个问题。32位缩放因子被编译成256的块并量化为8位。因此,先前每个组的32位缩放因子为每个权重增加了0.5位,而DQ将其降至仅0.127位。尽管看似微不足道,但在例如65B LLM中,结合起来可以节省3 GB的内存。

PRILoRA

Pruned and Rank-Increasing Low-Rank Adaptation(PRILoRA)是一种最近由研究人员提出的微调技术,旨在通过引入两个额外的机制来提高LoRA的效率:ranks的线性分布和基于重要性的A权重剪枝。

回到low-rank分解的概念,LoRA通过结合两个矩阵来实现微调:W,包含整个模型的权重,和AB,表示通过训练额外权重(即适配器)对模型所做的所有更改。AB矩阵可以分解成两个更小的low-rank矩阵A和B,因此称为low-rank分解。然而,在LoRA中,low-rank r在所有LLM层中是相同的,而PRILoRA则线性增加每层的rank。例如,开发PRILoRA的研究人员从r = 4开始,并在最终层增加到r = 12——在所有层中产生了平均rank为8。

其次,PRILoRA在微调过程中每40步对A矩阵进行剪枝,消除最低的,即最不重要的权重。通过使用重要性矩阵来确定最低权重,该矩阵存储了每层的权重临时幅度和与输入相关的统计数据。以这种方式剪枝A矩阵减少了需要处理的权重数量,从而减少了微调LLM所需的时间和微调模型的内存需求。

尽管仍在研究中,PRILoRA在研究人员进行的基准测试中显示出了非常令人鼓舞的结果。这包括在8个评估数据集中有6个优于全量微调方法,同时在所有数据集中都取得了比LoRA更好的结果。

GPTQ

GPTQ(通用预训练Transformer量化 General Pre-Trained Transformer Quantization)是一种量化技术,旨在减少模型的大小,使其能够在单个GPU上运行。GPTQ通过一种逐层量化的方法工作:这种方法一次量化模型的一层,目的是发现最小化输出误差(即原始全精度层和量化层输出之间的均方误差(MSE))的量化权重。

首先,所有模型的权重被转换成一个矩阵,通过一种称为懒惰批更新 lazy batch updating的过程一次处理128列的批次。此过程包括批量量化权重,计算MSE,并将权重更新为减少MSE的值。在处理校准批次后,矩阵中的所有剩余权重根据初始批次的MSE进行更新——然后所有单独的层重新组合以生成量化模型。

GPTQ采用混合INT4/FP16量化方法,其中4位整数用于量化权重,激活值保持在更高精度的float16数据类型中。随后,在推理过程中,模型的权重实时反量化,以便计算在float16中进行。

GGML/GGUF

GGML

GGML(据说是以其创建者命名为Georgi Gerganov Machine Learning,或GPT-Generated Model Language)是一个基于C语言的机器学习库,旨在对Llama模型进行量化,使其能够在CPU上运行。更具体地说,该库允许你将量化后的模型保存为GGML二进制格式,从而可以在更广泛的硬件上执行。

GGML通过称为k-quant系统的过程来量化模型,该系统根据所选的量化方法使用不同位宽的值表示。首先,模型的权重被分成32个一组,每个组都有一个基于最大权重值(即最高梯度幅度)的缩放因子。

根据选择的量化方法,最重要的权重会被量化为高精度数据类型,而其余的权重则被分配为低精度类型。例如,q2_k量化方法将最大的权重转换为4位整数,其余权重转换为2位整数。或者,q5_0和q8_0量化方法分别将所有权重转换为5位和8位整数表示。你可以通过查看此代码库中的模型卡来查看GGML的全量化方法范围。

GGUF

GGUF(GPT-Generated Unified Format)是GGML的后继者,旨在解决其局限性——最显著的是使非Llama模型的量化成为可能。GGUF也是可扩展的:允许集成新功能,同时保持与旧LLM的兼容性。

然而,要运行GGML或GGUF模型,你需要使用一个名为llama.cpp的C/C++库——该库也是由GGML的创建者Georgi Gerganov开发的。llama.cpp能够读取以.GGML或.GGUF格式保存的模型,并使其能够在CPU设备上运行,而不是需要GPU。

AWQ

传统上,模型的权重量化时不考虑它们在推理过程中处理的数据。与之相反,激活感知权重量化 Activation-Aware Weight Quantization(AWQ)考虑了模型的激活,即输入数据中最显著的特征及其在推理过程中如何分布。通过根据输入的特定特性调整模型权重的精度,可以最大限度地减少量化引起的准确性损失。

AWQ的第一阶段是使用一个校准数据子集来收集模型的激活统计数据,即在推理过程中被激活的权重。这些被称为显著权重,通常占总权重的不到1%。为了提高准确性,显著权重在量化过程中会被跳过,保持为FP16数据类型。与此同时,其余的权重被量化为INT3或INT4,以减少LLM其余部分的内存需求。

6. 小结

量化是LLM领域的重要组成部分。通过压缩语言模型的大小,像QLoRA和GPTQ这样的量化技术有助于提高LLM的采用率。摆脱了全精度模型巨大内存需求的限制,组织、AI研究人员和个人都有更多的机会去尝试快速增长的各种LLM。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/729238.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

性价比高的洗地机推荐,测评员精选四款热门洗地机分享

家庭清洁新升级,家用洗地机可以让家里打扫变得轻松高效。面对众多品牌和型号,朋友们常犯难:到底应该怎么选家用洗地机?别急,我这回的普及知识可不含糊,亲测超十款热门洗地机,从中精挑细选了四款…

手机天线都去哪里了?

在手机的演变历程中,天线的设计和位置一直是工程师们不断探索和创新的领域。你是否好奇,现在的手机为什么看不到那些曾经显眼的天线了呢? 让我们一起揭开这个谜题。 首先,让我们从基础开始:手机是如何发出电磁波的&…

摄像头劫持——保护自己免受窥探

今天为您带来当今科技界的最新趋势及探索方法。本周,我们将为您提供五个防止黑客在您不知情的情况下访问您的网络摄像头的建议。 网络摄像头 一、摄像头劫持 你是否曾经怀疑过,即使你没有主动使用网络摄像头,也可能有人正在通过它窥视你&am…

【码银送书第二十一期】《大数据智能风控:模型、平台与业务实践》

人行印发的《金融科技(FinTech)发展规划(2022一2025年)》明确指出金融科技成为防范化解金融风险的利器,运用大数据、人工智能等技术建立金融风控模型,有效甄别高风险交易,智能感知异常交易&…

关于创建虚拟机时kdump服务的简介

kdump 是一种先进的基于 kexec 的内核崩溃转储机制。 当系统崩溃时,kdump 使用 kexec 启动到第二个内核,这个内核通常被称为捕获内核。它以较小的内存启动,用于捕获转储镜像。 第一个内核会保留一部分内存给第二个内核启动使用。由于 kdump 利…

掌握JavaScript ES6精髓:探索函数和对象的高级扩展与实用技巧

序言 JavaScript,作为前端开发中不可或缺的语言,已经发展到了ECMAScript 2015(简称ES6)以及后续的版本。ES6带来了诸多语法上的改进和创新,使得代码更加简洁、优雅,同时也提供了更多的编程模式和实用技巧。…

MySQL客户端与服务端建立连接抓包分析

文章目录 MySQL客户端与服务端建立连接流程抓包分析1.连接建立流程2.各类数据包介绍2.1挑战数据包2.2认证数据包2.3切换认证插件请求数据包2.4切换认证插件响应数据包2.5成功数据包2.6失败数据包3.注意点4.测试代码MySQL客户端与服务端建立连接流程抓包分析 抓包工具采用的是W…

【AI副业指南】用AI做心理测试图文号,单月稳赚7000+(附详细教程)

大家好,我是画画的小强 因为AI的出现,很多自媒体副业项目变得简单容易上手,也给予很多想要在业余时间变现的朋友更丰富的项目选择。 今天分享的赛道绝对颠覆大家的认知,本期将叫大家如何通过AI在自媒体平台上做心理测试账号。 …

vue中实现百度地图全国与省市地图切换

前言 本文主要是用于示例全国地图,点击省市地图直接跳转到该省市地图并展示,可以拓展在地图上显示标记点(本文未做示例),后续有完整代码,但是由于需要与本来项目业务代码进项分割,可能会有些问题…

nexus配置问题

错误信息: npm ERR! code E401 npm ERR! Unable to authenticate, need: BASIC realm"Sonatype Nexus Repository Manager"解决办法一: npm login --registryhttp://192.168.52.128:8081/repository/npm-repo 输入 用户名 密码 邮箱完成后会…

Tower 使用指南

Tower 使用指南 目录 打开 git 仓库查看分支历史切换分支提交修改推送修改创建标签自动拉取最新代码 打开 git 仓库 File -> Open然后选择项目目录 查看分支历史 切换分支 提交修改 推送修改 创建标签 自动拉取最新代码

aardio - 日历

写了个日历小例程,因 lunar 农历库存在问题,经过研究算是变相解决了,日历也完成了雏形,先开源出来,感兴趣的玩玩。 请下载最新paint库、customPlus库、lunar库。 不同的颜色搭配,实现不同的风格&#xff1…

WDG看门狗

一、WDG简介 1、WDG(Watchdog)看门狗 (1)看门狗可以监控程序的运行状态,当程序因为设计漏洞、硬件故障、电磁干扰等原因,出现卡死或跑飞现象时,看门狗能及时复位程序,避免程序陷入…

URLDNS利用链

利用链分析在我的Github主页 Java反序列化学习 下面写下POC思路 利用点HashMap的readObject private void readObject(java.io.ObjectInputStream s)throws IOException, ClassNotFoundException {// Read in the threshold (ignored), loadfactor, and any hidden stuffs.de…

JAVAWeb---- 数据库的简单了解

目录 1.什么是数据库 2.什么是数据库管理系统 3.什么是SQL 4.什么是关系型数据库 1.什么是数据库 用来存储和管理数据的“仓库”,简称DB(Database); 2.什么是数据库管理系统 对数据库的一切操作都是在数据库管理系统进行的,比如MySQL&a…

Ollama深度探索:AI大模型本地部署的全面教程

目录 引言一、Ollama概述1、定义与定位2、核心功能3、技术优势4、应用场景 二、安装与配置1、系统要求2、安装方法3、配置指南4、启动Ollama服务 四、快速开始1、启动Ollama2、部署运行模型3、REEST API 五、自定义模型1、定制化的必要性2、使用Modelfile定制模型3、参数调整4、…

【数据结构与算法】树的存储,森林 详解

树的几种存贮结构(双亲表示法、孩子表示法、孩子兄弟表示法)的优缺点,各自适应的运算。 双亲表示法: 优点:方便查找双亲及其祖先结点缺点: 查找孩子和兄弟结点比较费事未表示出结点之间的先后次序 适应的运算:查找节点…

iOS封装FrameWork

我们是整个项目封装给客户app用,项目里面有资源文件:xib和图片文件。有第三方,也有.a文件和第三方给我们的frameWork。下面记录下大体遇到的问题及遇到的冲突解决办法。 第一部分:封装frameWork 1.首先准备好,要封装的…

无线领夹麦克风哪款好,领夹麦克风哪个品牌好,多款麦克风推荐

​科技发展让无线领夹麦克风成为现代演讲、演出和采访不可或缺的工具。这种小巧便携的设备让我们摆脱线缆束缚,自由移动同时保持声音清晰稳定。无线领夹麦克风怎么选呢?接下来,我们介绍几款市面上综合表现相当不错的无线领夹麦克风给大家来参…

几十块就能“开盒”,还能查祖上三代?

近期,网络上突然开始掀起一阵“人肉开盒”风波。明星、博主、素人无一幸免。 隐匿在此般恶劣行径背后的幕后黑手们无视法律、充满戾气。他们才不管你是什么人,只要有哪里让他们不愉快,那么不好意思,马上“开”你没商量。 这个“…