picoLLM:大模型的量化魔术师 上

大模型技术论文不断,每个月总会新增上千篇。本专栏精选论文重点解读,主题还是围绕着行业实践和工程量产。若在某个环节出现卡点,可以回到大模型必备腔调重新阅读。而最新科技(Mamba,xLSTM,KAN)则提供了大模型领域最新技术跟踪。若对于如果构建生成级别的AI架构则可以关注AI架构设计专栏。技术宅麻烦死磕LLM背后的基础模型。

Picovoice首席执行官Alireza Kenarsari指出,“picoLLM是Picovoice 深度学习研究人员和量产工程师共同努力的成果。前者研究出X 位量化算法,而后者构建了跨平台的LLM 推理引擎。目的还是在于将LLM遍及到任何设备且将控制权交还给企业”。

picoLLM Inference可以免费使用,没有任何使用限制。无论是在PC上工作,还是为数百万用户提供服务。只需几行代码即可部署。

注:其余的产品线有非商用免费版,也有收费版

认识量化(Quantization

大模型有个基本的指标就是模型参数规模,客观而言参数规模越大,效果越佳,但是所需的内存越多。例如,要部署 7.7GB 大小的Mistral 7B,需要GPU的VRAM大小要超过8GB才能在GPU完全加载。因此意味着运行更大规模的模型将需要具有更大规格的硬件,从而增加成本。

量化是一种压缩技术,将高精度值映射到低精度值。对于任意的大模型,这意味着它们的权重和激活精度会被调整,肯定会对影响模型的能力。在实际的运用过程中发现,某些情况下虽然明显的减低精度,然而却又能获得和原来不相上下的结果。

量化通过降低内存带宽需求和提高缓存利用率来提高性能,不同精度级别的量化过程能够更多的设备上运行大模型。

LLMs通常使用全精度(float32)或半精度(float16)的浮点数进行训练。一个float16有16位,即2个字节。因此在 FP16上训练参数规模为1B的大模型则至少需要2GB的内存,这还不包括训练过程中的优化器内存、激活内存和梯度内存。

量化其实就是想找到一种方法,将FP32权重的值的范围([最小值,最大值])表示为较低精度的值,例如FP16甚至INT4(整数 4 位)的数据类型。典型的情况是从FP32到INT8。

下图为一个具体的例子,将FP16格式的数组量化为INT8的过程,当然最后可以从INT8再次还原为FP16。这样一来原来模型的存储大小就被有效的降低了。

其实换个思路来讲,就是将数轴进行压缩。这里的难题在于如何的量化才能降低存储开销,但是又能表达出原来的意思。

目前有不少的量化思路,均匀量化是模型量化中常用的一种技术,用于降低深度学习模型中权重和激活的精度。在量化过程中将值的范围划分为固定数量的等距区间,然后将每个值映射到最近区间的中心。此过程有助于减少表示每个值所需的位数。

与更复杂的量化技术相比,均匀量化的主要优势之一是其简单易用。然而,均匀量化可能并不总是能捕捉到数据分布的细微差别。想象一下原始参数的取值在[3.5,  3.9],若都被量化到4,的确会导致潜在的信息丢失和性能下降。

另一方面,非均匀量化允许量化步距不均匀分布,从而能更准确和更灵活。量化过程由离散量化水平 (Xi) 和相应的量化步骤 (∆i) 定义。当实数落在特定的量化步骤范围 (∆i, ∆i+1) 内时,量化器将其分配到相应的量化级别 (Xi)。非均匀量化方法(如对数分布)侧重于以指数而不是线性方式调整量化步骤和水平,这可以通过有效捕获重要值区域来提高准确性。

左图为对称量化,右图为非对称量化

微调中的量化

左图为QAT,右图为PTQ,两者的区别在于量化的位置。

PTQ是一种流行的技术,模型参数(通常以FP32等高精度格式存储)被转换为较低位精度的INT8。此转换过程允许在计算资源有限的硬件(如移动设备和嵌入式系统)上更高效地部署模型。PTQ 可以应用于神经网络的权重和激活,从而减小模型大小并提高推理速度,而不会显着降低准确性。

QAT具有在部署期间将应用的量化效应的意识。当对训练模型进行量化时,可能会导致模型参数出现扰动,从而可能导致模型偏离训练期间以浮点精度实现的收敛点。

为了解决这个问题,QAT使用量化参数重新训练神经网络模型,使模型能够收敛到损失减少的点。在QAT期间,在浮点对量化模型执行正向和后向传递,而模型参数在每次梯度更新后进行量化,类似于预测梯度下降。在浮点权重更新后执行投影对于防止零梯度或高误差梯度至关重要,尤其是在低精度场景中。

在QAT的反向传播过程中,处理不可微分的量化算子是一个挑战。一种常用方法是使用直通估计器 (STE) 通过将量化算子视为恒等函数来近似量化算子的梯度。

picoLLM

picoLLM Compression是Picovoice内部开发的一种新型大型语言模型量化算法。给定一个特定于任务的成本函数,picoLLM Compression 会自动学习跨权重和权重内LLM的最佳位分配策略。而目前现有技术方案都是固定分配。

picoLLM提供了一个全面的开源基准测试结果,例如下图,当应用于 Llama-3-8b ,picoLLM在2、3和 4位的量化设置下在MMLU的评测分数中,将采用GPTQ算法的正确率下降消灭于无形之中。随着量化位数的下降,几乎保持坚挺。

现有方法依赖于跨模型权重的固定位分配。但是,picoLLM 在量化过程中学习最优分配。每个模型最理想的量化位数取决于自身的架构和压缩比。例如,下面的三张图显示了压缩比为 3、5 和 7 时 Llama-2-7b不同组件之间的位最佳分布:

在MMLU (5-shot)任务上采用picoLLM的效果对比。

PicoLLM 框架支持Gemma、Llama、Mistral、Mixtral和Phi系列模型,并在Windows、macOS 和Linux上跨平台运行(包括Raspberry Pi 4和 5 上的Raspberry Pi OS)以及 Android 和 iOS。下次将详细地介绍它的内在原理。

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

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

相关文章

易语言推箱子游戏(附带源码)

易语言推箱子游戏 易语言易语言的安装易语言功能特色易语言安装步骤易语言常见问题 导入游戏源码部分源码领取源码下期更新预报 易语言 易语言(EPL)是一门以中文作为程序代码编程语言,其以“易”著称,创始人为吴涛。易语言早期版…

数字孪生在气象灾害防治中的重要贡献

数字孪生技术在气象灾害防治中正发挥着越来越重要的作用。数字孪生是指通过数字化方式在虚拟空间中构建与现实世界对应的虚拟模型,通过实时数据和模拟技术进行动态映射和交互。利用数字孪生技术,气象部门可以更高效、更精准地监测、预测和应对气象灾害&a…

德人合科技——天锐绿盾内网安全管理软件 | -文档透明加密模块

天锐绿盾文档加密功能能够为各种模式的电子文档提供高强度加密保护,丰富的权限控制以及灵活的应用管理,帮助企业构建更严密的立体保密体系。 PC地址: https://isite.baidu.com/site/wjz012xr/2eae091d-1b97-4276-90bc-6757c5dfedee ————…

退出登录后选择记住登录状态回显用户名和密码

项目背景 : react ant 需求 : 退出登录后 , 选择了记住登录 , 回显用户名和密码 ; 未选择记住 , 则不回显用户名和密码 如图注意 : 发现一个鸡肋的问题 , 未勾选退出后 , 还是会回显 , 后来我查看了cookie和自己的逻辑都没问题 , 原来是因为我保存了密码 , 浏览器保存后自动渲…

【Python】解决Python报错:ModuleNotFoundError: No module named ‘xxx.yyy‘

🧑 博主简介:阿里巴巴嵌入式技术专家,深耕嵌入式人工智能领域,具备多年的嵌入式硬件产品研发管理经验。 📒 博客介绍:分享嵌入式开发领域的相关知识、经验、思考和感悟,欢迎关注。提供嵌入式方向…

企业如何进行快递运费对账?

在电子面单寄件取代手写纸质面单之后,加上月结寄件模式的推行,企业快递运费对账,成了行政的一个难题...... 早期的手写纸质面单寄件,企业行政或者财务相关人员,遵循寄前审批,寄后报销的原则进行对账。随着电…

WebGoat靶场搭建

WebGoat靶场介绍 WebGoat是一个由OWASP(Open Web Application Security Project)组织开发的应用平台,专门用于进行Web应用程序安全漏洞的实验。它旨在通过模拟各种安全漏洞,帮助用户了解和学习如何识别和防御这些漏洞。WebGoat基…

Python导出Jira列表

import requests import urllib3 urllib3.disable_warnings() from jira import JIRA import pandas as pd def login_jira(username,password):jira JIRA("https://jira.cn/",basic_auth(username,password))#projectsjira.project(id13)# jqlproject"云链-…

跨境电商如何有效做好店铺账号管理?

跨境电商有效做好店铺账号管理至关重要,类似亚马逊、Temu、TikTok、ebay跨境电商账号涉及多个方面,包括多个账户的安全性、合规性、操作效率等。以下是一些我自己实操的策略和实践,希望能够帮助大家更好地管理跨境电商店铺账号。 一、哪些行为…

CISCN 2022 初赛 ez_usb

还是从第一个 URB向后看 发现 同时 存在 2.8.1 2.10.1 2.4.1 但是显然 2.4.1 是7个字节 不满足 usb流量要求 只考虑 2.8.1 和 2.10.1 tshark -r ez_usb.pcapng -T json -Y "usb.src \"2.8.1\"" -e usbhid.data > 281.json 正常取数据即可 import js…

Ubuntu基础使用

快捷键: 命令行打开快捷方式:Ctrl Alt T Ctrl l 清屏 截屏: LinuxOS命令: 显示当前工作目录所有内容:ls (-a -l、-lh) -a 输入全部内容(包括隐藏文件) -l 竖向展示…

opencv-python(一)

1. 图片加载与显示 import cv2 import numpy as npif __name__"__main__":rose cv2.imread(./rose.jpeg)print(rose.shape)print(type(rose))cv2.imshow(rose,rose) # 弹出窗口cv2.waitKey() # 等待键盘输入,任意输入,触发这行代码&#xff…

java mybatis处理大数据量,开启二级缓存和配置,及注意事项,已解决

注意事项: 尽量避免使用下面方式写sql否则会降低服务器性能: mybatis二级缓存开启后,避免使用事务注解(加上事务注解后二级缓存数据会导致两次访问不一致问题): 3. 返回的对象实体类,要实现Se…

超融合架构下,虚拟机高可用机制如何构建?

作者:SmartX 产品部 钟锦锌 虚拟机高可用(High Availability,简称 HA)是虚拟化/超融合平台最常用、关键的功能之一,可在服务器发生故障时通过重建业务虚拟机以降低故障对业务带来的影响。因此,为了充分保障…

Ollama+OpenWebUI+Phi3本地大模型入门

文章目录 Ollama+OpenWebUI+Phi3本地大模型入门一、基础环境二、Ollama三、OpenWebUI + Phi3Ollama+OpenWebUI+Phi3本地大模型入门 完全不懂大模型的请绕道,相信我李一舟的课程比较适合 Ollama提供大模型运行环境,OpenWebUI提供UI,Phi3就是那个大模型。 当然,Ollama支持超级…

单片机串口接收负数的处理方法

dp80中有很多外设处理相关的都是有符号数据。 如dpm计算的结果,插入dpm后有时候会得到0xFFFFFFFE-2(从调试界面也可以看到)。

JS-09-es6常用知识1

目录 1 模板字符串 1.1 模板字符串基本用法 1.2 模板字符串解决了一些痛点 2 解构赋值 2.1 对象的解构赋值 2.2 函数参数的解构赋值 2.3 补写:属性的简写 3 rest参数 3.1 arguments 3.2 rest参数 3.3 补充:判断数据类型 4 箭头函数 4.1 …

AI大模型的生命周期:从开发到退役的全面解析

前言 人工智能大模型(AI大模型)是当前AI领域的一大热点,它们具有强大的计算能力和广泛的应用前景。本文将全面介绍AI大模型的基础知识、训练过程、使用方法和应用场景。 一、初步了解AI大模型 AI大模型,通常指的是参数量达到亿…

Superset二次开发之Github项目推送到GitLab仓库

以下是从GitHub克隆Superset项目并将其推送到GitLab的详细操作步骤 lab 地址: xxx lab 配置: 生成SSH密钥 ssh-keygen -t rsa -b 4096 -C "邮箱地址" 默认情况下密钥会生成在~/.ssh (/c/Users/Administrator/.ssh/id_rsa)目录下。 公钥添加到GitLab: 打开公钥文件…

通过Excel,生成sql,将A表数据插入B表

文章目录 投机取巧的方式,进行表数据初始化通过navicat搜索A表数据,然后复制进excel中通过excel的函数方式,将该批量数据自动生成插入B表的sql语句然后一次性拷贝生成的sql语句,放进navicat中一次执行,直接完成数据初始化