当前位置: 首页 > news >正文

大语言模型LLM权重4bit向量量化(Vector Quantization)/查找表量化基本原理

参考

https://apple.github.io/coremltools/docs-guides/source/opt-palettization-overview.html

https://apple.github.io/coremltools/docs-guides/source/opt-palettization-algos.html

Apple Intelligence Foundation Language Models

苹果向量量化:

DKM: Differentiable K-Means Clustering Layer for Neural Network Compression

eDKM: An Efficient and Accurate Train-time Weight Clustering for Large Language Models

高通向量量化: 

GPTVQ: The Blessing of Dimensionality for LLM Quantization

向量量化基础

针对大语言模型权重的4bit量化,除了常规的广泛使用的group-wise均匀量化,如GPTQ, AWQ等等,苹果提出了一种称为Palettization的lookup table (LUT)查找表量化技术,高通也提出了新的一种向量量化技术,其实这两种技术原理基本上大体是相同的。

首先,均匀量化就不多说了,基于一个仿射变换来映射量化后的整数值和非量化的浮点数值,一般采用r=(q-z)*s,可以参考深度学习模型量化基础_深度学习 量化-CSDN博客

常规的查找表量化则是一种非均匀量化,比如同样的4bit量化为0-15的整数,查找表LUT可以建立这0-15的每个整数到他们分别对应的一个浮点数的对应关系。这个对应关系可以是任意采样方式的,因此为非均匀量化。

Vector Quantization (VQ)向量量化,其实第一性原理也挺简单的:相对于上面所描述的标量量化把一个标量的浮点映射到其对应的一个整数。而向量量化则是要把一个浮点的d维向量映射为一个n bit的标量整数。具体实现通常采用聚类算法,在d维空间中进行聚类为k=2^n个类别,每个聚类中心采用一个整数表示,从而建立一个整数到聚类中心d维向量的查找表。量化阶段根据输入的d维向量到每个聚类中心的距离分配其对应的量化值,而反量化则根据每个量化后的整数,根据查找表恢复聚类中心的d维向量,这显然是一个非均匀有损量化。具体细节如何获得每个聚类中心则是另一个核心技术点。

Product quantization:把一个大D维的向量均匀split为多个更短的d维向量,每个d维向量采用VQ量化。Vector Quantization和Product quantization本身是从其他领域引入到大语言模型量化,麻烦读者查询相关的资料进行进一步了解。

高通GPTVQ的Vector Quantization量化LLM权重

假设每2个元素一起作为一个向量,每个元素4bit,那么2个元素一起量化就有4x2=8bit的budget,那么LUT查找表大小将为2^8=256大小。而维度更高,LUT粒度更小。但是LUT大小将剧烈增长:

we use bits per dimension (b) to indicate the number of index bits stored for each individual weight. This means that, for VQ with dimension d, the total number of index bits is d × b, and the number of centroids in a codebook is k = 2^(d×b).

可以看到高通的这个方法基本上只能用于2维向量量化,更高维度意味着急剧增长的查找表大小。

苹果的方法

Palettization, also referred to as weight clustering, compresses a model by clustering the model’s float weights, and creating a lookup table (LUT) of centroids, and then storing the original weight values with indices pointing to the entries in the LUT.

Weights with similar values are grouped together and represented using the value of the cluster centroid they belong to, as shown in the following figure. The original weight matrix is converted to an index table in which each element points to the corresponding cluster center.

N={1,2,3,4,6,8} are supported, where N is the number of bits used for palettization.

http://www.lryc.cn/news/434555.html

相关文章:

  • 学习threejs,创建立方体,并执行旋转动画
  • 2024网安周今日开幕,亚信安全亮相30城
  • Unity Qframework 加载UI的方式
  • 使用 Python 创建自动抽奖程序
  • 推荐10款功能强大的电脑监控软
  • ‘“node“‘ �����ڲ����ⲿ���Ҳ���ǿ����еij��� ���������ļ���
  • MQ-135空气质量传感器(STM32)
  • 动手学深度学习(pytorch)学习记录27-深度卷积神经网络(AlexNet)[学习记录]
  • zookeeper是啥?在kafka中有什么作用
  • 华为手机集大成之作?带你看全球首款三折叠手机 Mate XT 非凡大师
  • 构建安全畅通的道路网络:EasyCVR视频汇聚平台在道路监控中的创新应用
  • Mac M1安装Hive
  • shader 案例学习笔记之绘制圆
  • c++的模板编程技术及其发展历程
  • Unity 一个比较适合学习的FSM状态机(汉化和功能简述)
  • 25、Wpf之App资源应用
  • 【深度好文】反模式:10种滥用设计模式案例分析
  • OkHttp Interceptor日志上报
  • 高性能反向代理--HAProxy
  • 数据结构应用实例(四)——最小生成树
  • 为OneAPI配置MySQL数据库及设置开机启动
  • 完整的k8s搭建服务器流程
  • 【Petri网导论学习笔记】Petri网导论入门学习(一)
  • Zabbix监控自动化
  • pytorch pyro 贝叶斯神经网络 bnn beyesean neure network svi ​定制SVI目标和培训循环,变更推理
  • Openeuler22 部署 RackTables0.22.0
  • 从传统到智能:高标准农田灌区信息化助力农业现代化
  • 堆排序-建堆,增删替换
  • 使用AI写WebSocket知识是一种怎么样的体验?
  • 若依系统(Security)增加微信小程序登录(自定义登录)