Llama - 量化

本文翻译整理自:
https://llama.meta.com/docs/how-to-guides/quantization/

文章目录

    • PyTorch中支持的量化模式
    • 使用 TorchAO 进行 Pytorch量化
    • HF支持的量化
      • Quanto
      • AQLM
      • AWQ
      • AutoGPTQ
      • BitsAndBytes


量化是机器学习中使用的一种技术,用于减少模型的计算和内存需求,使它们在服务器和边缘设备上的部署更加高效。
它涉及表示模型权重和激活,通常是32位浮点数,使用精度较低的数据,如16位浮点数、大脑浮点数16位、8位整数,甚至4/3/2/1位整数。
量化的好处包括更小的模型大小、更快的微调和更快的推理——在resource-constrained环境中特别有益。然而,权衡是由于精度损失导致模型质量下降。


PyTorch中支持的量化模式

  • 训练后动态量化:权重提前预量化,激活在推理期间转换为int8,就在计算之前。由于高效的int8矩阵乘法,这导致计算速度更快,并保持激活层的准确性。
  • 训练后静态量化:该技术通过将网络转换为使用整数算术和整数8内存访问来提高性能。它涉及通过网络馈送批量数据并计算不同激活的结果分布。此信息用于确定不同激活在推理时应如何量化。
  • 量化感知训练(QAT):在QAT中,所有权重和激活在向前和向后的训练过程中都被“假量化”。这意味着浮点值被四舍五入以模仿int8值,但所有计算仍然使用浮点数完成。这种方法通常比其他两种方法产生更高的准确性,因为训练期间的所有权重调整都是在“意识到”模型最终将被量化的事实的情况下进行的。

关于这些方法以及它们如何应用于不同类型的模型的更多细节可以在官方的PyTorch留档中找到。此外,社区已经对Meta Llama 3上常见量化方法的有效性进行了研究,要评估的结果和代码可以在这个GitHub存储库中找到。

我们接下来将关注Meta Llama 模型可用的量化工具。由于这是一个不断发展的空间,这里详述的库和方法是目前使用最广泛的,并且会随着空间的发展而发生变化。


使用 TorchAO 进行 Pytorch量化

在TorchAO库中提供了几种量化方法,每种方法都有不同的激活和权重量化方案。

对于仅权重量化,我们支持8位和4位量化。4位量化还具有GPTQ支持以提高精度,这需要校准,但具有相同的最终性能。

对于动态量化,我们支持8位激活量化和8位权重量化,我们还支持这种类型的 smoothquant ,以提高精度,这需要校准,性能稍差。

此外,该库提供了一个简单的API来测试不同的方法,并自动检测给定模型的最佳量化,称为自动量化。
该API从8位动态和仅8位权重的量化中选择最快的量化形式。
它首先识别不同线性层看到的激活形状,然后在不同类型的量化和非量化层之间对这些形状进行基准测试,以选择最快的一个。此外,它与 torch.compile() 组合以生成快速内核。
有关 torch.compile 的更多信息,请参阅此一般教程。

注意:该库处于beta阶段并处于积极开发中;预计会发生API更改。


HF支持的量化

拥抱脸(HF)提供了多种方法来使用他们的变压器库进行LLM量化。除了这里介绍的简短摘要之外,有关如何使用其中每一个的更多指南和示例,请参阅他们的量化指南 和 transformers 量化配置留档。
llama-recipes 代码使用bitsandbytes 8位量化来加载模型,用于推理 和 微调。(有关在Llama中使用bitsandbytes库的更多信息,请参阅下文。)


Quanto

Quanto是一个使用线性量化的多功能PyTorch量化工具包,它提供了诸如权重量化、激活量化以及与各种设备和模式的兼容性等特性,支持量化感知训练,并且易于与特定设备的自定义内核集成,更多详细信息可以在公告博客、GitHub存储库和HF指南中找到。


AQLM

语言模型的加法量化(AQLM)是LLM的一种压缩方法。
它利用多个权重之间的相互依赖关系将多个权重一起量化。
AQLM将每个权重由8到16个权重组成的组表示为多个向量代码的总和。
该库还通过集成到HF的PEFT库中,支持使用Parameter-高效微调和LoRA对其量化模型进行微调。更多详细信息可以在GitHub 存储库中找到。


AWQ

激活感知权重量化(AWQ)保留了对LLM性能很重要的一小部分权重,从而减少了量化损失。
这允许模型以4位精度运行,而不会出现性能下降。变压器支持加载使用llm-awq和autoawq库量化的模型。有关如何使用变压器库加载它们的更多详细信息,请参阅HF指南。


AutoGPTQ

AutoGPTQ库实现了GPTQ算法,这是一种训练后量化技术,权重矩阵的每一行都被独立量化。
这些权重被量化为int4,但在推理过程中它们会动态恢复到fp16,节省4倍的内存使用量。
更多细节可以在GitHub 存储库中找到。


BitsAndBytes

BitsAndBytes是将模型量化为8位和4位的简单选项。该库支持任何模式的任何模型,只要它支持使用拥抱脸加载加速并包含torch. nn.线性层。
它还提供了在CPU和GPU之间卸载权重的功能,以支持将非常大的模型拟合到内存中,调整8位量化的异常值阈值,跳过某些模型的模块转换,以及使用8位和4位权重进行微调。
对于4位模型,它允许更改计算数据类型,对从正态分布初始化的权重使用正态浮点4(NF4)数据类型,并使用嵌套量化来节省额外的内存,而不会产生额外的性能成本。
更多详细信息可以在HF指南中找到。


2024-07-16(二)

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PyTorch张量数值计算

文章目录 1、张量基本运算2、阿达玛积3、点积运算4、指定运算设备⭐5、解决在GPU运行PyTorch的问题 🍃作者介绍:双非本科大三网络工程专业在读,阿里云专家博主,专注于Java领域学习,擅长web应用开发、数据结构和算法&am…

【设计模式】【创建型模式】【02工厂模式】

系列文章 可跳转到下面链接查看下表所有内容https://blog.csdn.net/handsomethefirst/article/details/138226266?spm1001.2014.3001.5501文章浏览阅读2次。系列文章大全https://blog.csdn.net/handsomethefirst/article/details/138226266?spm1001.2014.3001.5501 目录 系…

【安全】系统安全设计规范(DOC完整版)

1.1安全建设原则 1.2 安全管理体系 1.3 安全管理规范 1.4 数据安全保障措施 1.4.1 数据库安全保障 1.4.2 操作系统安全保障 1.4.3 病毒防治 1.5安全保障措施 1.5.1实名认证保障 1.5.2 接口安全保障 1.5.3 加密传输保障 1.5.4终端安全保障 软件资料清单列表部分文档&…

只需点击几下即可从Mac恢复已删除或丢失的文件

当无聊袭来时,您的 Mac 不是一个有趣的朋友吗?它确实是您“全天候”的主力军,可以兼顾日常工作。而且,它存储了大量关键文件,包括视频、图片、歌曲、文档等等。 如果丢失此数据会怎样?你的“数字生活”可能…

Vue学习---创建非默认选项项目vue2 vue3

vue create test-vue2 选择 Manually select features 选择初始化创建的组件 空格选中然后回车 vue-cli 在询问你,对于 Router 你是否以它的 history 模式使用它?默认值是 Yes 。 如果不使用 Router 的 history 模式,那自然就是 hash 模式。 …

CVE-2024-24549 Apache Tomcat - Denial of Service

https://lists.apache.org/thread/4c50rmomhbbsdgfjsgwlb51xdwfjdcvg Apache Tomcat输入验证错误漏洞,HTTP/2请求的输入验证不正确,会导致拒绝服务,可以借助该漏洞攻击服务器。 https://mvnrepository.com/artifact/org.apache.tomcat.embed/…

【Linux杂货铺】期末总结篇3:用户账户管理命令 | 组账户管理命令

🌈个人主页:聆风吟_ 🔥系列专栏:Linux杂货铺、Linux实践室 🔖少年有梦不应止于心动,更要付诸行动。 文章目录 第五章5.1 ⛳️Linux 账户5.2 ⛳️用户配置文件和目录(未完待续)5.2.1 …

南京邮电大学统计学课程实验2 用EXCEL进行参数估计假设检验 指导

一、实验描述 实验目的 1、学会用Excel进行参数估计; 2、学会用Excel进行z检验-双样本平均差检验; 实验环境 实验中使用以下软件和硬件设备 (1)Windows XP操作系统; (2)PC机、EXCEL软件&…

Qt篇——在线程中更新ui控件

一般不建议直接在子线程更新ui控件,而是推荐使用信号触发到主线程更新ui。如果为了方便省事想简单地在子线程中更新ui控件,可以使用QMetaObject::invokeMethod函数。如下: //这是一个线程 void MainWidget::threadXXXX() {//updateLabelInTh…

面试题 29. 顺时针打印矩阵

顺时针打印矩阵 题目描述示例 题解 题目描述 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。 示例 示例 1: 输入:matrix [[1,2,3],[4,5,6],[7,8,9]] 输出:[1,2,3,6,9,8,7,4,5] 题解 从外往里一圈一圈遍历并…

python实现九九乘法表

1.self i 1 while i<9:j 1while j< i:print("j * i ",end)print(j * i ,end)print(" ",end)j 1i 1print() 实现结果&#xff1a; 2.改进 i 1 while i<9:j 1while j< i:# print("j * i ",end)# print(j * i ,end)# print(&…

基于centos2009搭建openstack-t版-ovs网络-脚本运行

openstackT版脚本 环境变量ip初始化 controlleriaas-pre.shiaas-install-mysql.shiaas-install-keystone.shiaas-install-glance.shiaas-install-placement.shiaas-install-nova-controller.shiaas-install-neutron-controller.shiaas-install-dashboard.sh computeiaas-instal…

誉天人工智能AI大模型火热报名中(HCIA-AI Solution Architect课程简介)

课程亮点 1.涵盖大模型prompt、RAG、LangChain、Fine-Turning、多模态、视觉生成等主流开源大模型技术 2.OpenAl开源大模型、昇腾大模型产品丝滑融合 3.从大模型产品开发到商业闭环到产品运营一站式打造大模型高级解决方案架构师 4.金牌讲师团队昇腾计算一线专家倾力交付 5.岗位…

2024嘶吼网络安全产业图谱(高清完整版)

在数字化和智能化浪潮的推动下&#xff0c;网络安全产业正处于一个快速变革的时期。从传统的防御手段和被动的威胁应对&#xff0c;到如今主动预防和智能检测技术的普及&#xff0c;网络安全领域的焦点和需求正不断演进。为了更好的理解当前网络安全产业现状和未来发展方向&…

PDF 转图片并插入到 EXCEL 再转PDF

pom.xml 引用 <dependency><groupId>com.aspose</groupId><artifactId>aspose-cells</artifactId><version>21.11</version></dependency><dependency><groupId>com.aspose</groupId><artifactId>as…

自动驾驶SLAM

SLAM是Simultaneous Localization and Mapping的缩写&#xff0c;中文译作“同时定位与地图构建”。 它是指搭载特定传感器的主体&#xff0c;在没有环境先验信息的情况下&#xff0c;于运动过程中建立环境的模型&#xff0c;同时估计自己的运动。如果这里的传感器主要为相机&…

KITTI 3D 数据可视化

引言 KITTI 视觉基准测试套件&#xff08;KITTI Vision Benchmark Suite&#xff09;提供了大量用于理解自动驾驶场景的工具。尤其是3D数据可视化在分析和解释传感器&#xff08;如激光雷达&#xff09;与环境的复杂交互中起到了至关重要的作用。本文将详细探讨KITTI数据集中3…

基于单片机的直流电机控制

摘 要 &#xff1a;在目前的电机控制中&#xff0c;主要包括单片机、集成电路以及PLC3种控制方式&#xff0c;这3种控制方式都可以对直流电动机进行数学化控制。其中单片机直流电机 主要受单片机进行控制。只有充分了解单片机的内部工作原理和进行直流电动机控制过程的基本步骤…

网络请求之urllib.parse的使用

urllib.parse的作用是解析url。 为什么要解析呢&#xff0c;我来举个例子。在百度图片里面搜一下历史人物&#xff0c;比如樱由罗&#xff1a; 点击百度一下跳转到页面如下&#xff1a; 我们找到url分析一下看看&#xff1a; https://image.baidu.com/search/index?tnbaidu…

PCL从理解到应用【06】 RANSAC原理分析 | 案例分析 | 代码实现

前言 本文分析RANSAC算法的原理&#xff0c;集合案例深入理解&#xff0c;同时提供源代码。 RANSAC&#xff0c;随机采样一致性&#xff0c;是一种迭代的算法&#xff0c;用于从一组包含异常值的数据中估计模型参数。 应用案例&#xff1a;平面拟合、线段拟合、球体拟合等。…