
AI/模型蒸馏&量化
文章平均质量分 67
AI模型压缩
u013250861
这个作者很懒,什么都没留下…
展开
-
模型蒸馏:MiniLLM论文阅读(MiniLLM: Knowledge Distillation of Large Language Models )【基座模型蒸馏】
发现单步的生成策略往往是很重要的,所以对刚刚的梯度公式做了一些变换,将单步的梯度分离出来。那如果我们可以获得更多的大模型的信息,比如说模型生成句子的概率,甚至是整个的白盒的模型,我们能否比现在做的更好。这个问题首先是有意义的,因为现在开源的优质大模型越来越多,相比于用GPT4去蒸馏,其实这些大模型也足以作为训练小模型的比较好的teacher模型。随着生成式大语言模型的兴起,很多工作也尝试从chatgpt的API中获取数据,然后来蒸馏生成式的小模型,这种蒸馏方法实际上就是所谓的Sequence KD。原创 2025-02-09 21:36:26 · 880 阅读 · 1 评论 -
OmniQuant-目前最优的LLM PTQ量化算法
LLMs已经彻底改变了自然语言处理任务。然而,它们的实际部署受到其巨大的内存和计算需求的阻碍。尽管最近的后训练量化(PTQ)方法在减少LLM的内存占用和提高计算效率方面取得了有效成果,但它们手工制作的量化参数导致了性能低下,并且无法处理极低比特量化。为了解决这个问题,我们引入了一种全方位校准量化(OmniQuant)技术。它在保持PTQ的计算效率的同时,在多样化的量化设置中取得了良好的性能,通过有效优化各种量化参数。原创 2025-02-09 17:42:30 · 1129 阅读 · 0 评论 -
论文笔记(LLM+蒸馏):Distilling step-by-step+代码分析
部署大型语言模型(llm)具有挑战性,因为对于实际应用而言,它们的内存效率低下且计算密集型。作为回应,研究人员通过对人类标签进行微调或使用llm生成的标签进行蒸馏来训练较小的特定任务模型。然而,微调和蒸馏需要大量的训练数据才能达到与llm相当的性能。本文提出逐步蒸馏,作为一种新机制可以(a)训练优于llm的更小的模型;(b)比微调或蒸馏所需的更少的训练数据。本方法提取了LLM的rationales,作为在多任务框架中训练小型模型的额外监督。原创 2025-02-09 17:38:06 · 1066 阅读 · 0 评论 -
模型量化1-概述1:量化的过程就是选取合适量化参数(scale factor,zero point,clipping value)以及数据映射方式,让原来的浮点值映射到整型值后,尽量保持准确率不下降
模型量化(Model Quantization)通过某种方法将浮点模型转为定点模型。比如说原来的模型里面的权重(weight)都是float32,通过模型量化,将模型变成权重(weight)都是int8的定点模型16位: (半精度(FP16),单精度(FP32),双精度(FP64)) Floating points8位 最常见也相对成熟。各种主流框架和硬件都支持。8位以下目前而言学界相对玩得多些,工业界有少量支持,但还没有太成熟。原创 2024-06-22 12:42:44 · 1661 阅读 · 0 评论 -
模型量化1-概述2:
在 AI 模型训练时,通常使用浮点数(Float32 等)进行计算,这样能够确保更好的精度表现当然浮点数运算也是一把双刃剑,在提升了计算精度的同时带来了更多的计算量和储存空间占用具体的表现就是模型的计算速度较慢、模型的文件体积较大在模型推理的时候,大多数时候并不需要如此高的计算精度,或者说低精度的运算不会对模型精度产生太大的影响这个时候就可以将模型映射到较低精度的运算上,降低计算量,提升运行速度,减少模型文件的体积,方便传输。原创 2024-06-22 21:47:34 · 831 阅读 · 0 评论 -
模型量化2:最常用的数据类型:float32 (FP32)、float16 (FP16) 、 bfloat16 (BF16)【IEEE754制32位浮点数转换为十进制】
数据类型的选择决定了所需的计算资源的数量,从而影响模型的速度和效率。在深度学习应用中,平衡精度和计算性能成为一项至关重要的练习,因为更高的精度通常意味着更大的计算需求。在各种数据类型中,浮点数主要用于深度学习,因为它们能够以高精度表示各种值。通常,浮点数使用n位来存储数值。这种设计允许浮点数以不同的精度级别覆盖广泛的值。原创 2024-06-22 16:11:29 · 1637 阅读 · 0 评论 -
模型量化3-量化类型1:线性量化、非线性量化
线性量化:q=x*s+z。非线性量化,如log。相比来说,非线性量化理论上精度更高(仍然实际不一定),但是实现难度更大。实践中大多都采用线性量化方案。原创 2024-06-22 22:11:00 · 739 阅读 · 0 评论 -
模型量化3-量化类型2:对称量化与非对称量化【是否以0为中心,0两边的动态范围是否一致。】
https://zhuanlan.zhihu.com/p/526293372原创 2024-06-22 22:12:02 · 262 阅读 · 0 评论 -
模型量化3-量化类型3:饱和量化和非饱和量化
https://zhuanlan.zhihu.com/p/526293372原创 2024-06-22 22:12:51 · 322 阅读 · 0 评论 -
模型量化3-量化类型4:Pre-channel量化和pre-tensor量化(从量化粒度来分)【权重通常采取Pre-channel量化,激活值通常采取pre-tensor量化】
https://zhuanlan.zhihu.com/p/526293372原创 2024-06-22 22:14:05 · 270 阅读 · 0 评论 -
模型量化3-量化类型5:训练后量化和量化感知训练(从量化是否参与训练来分)
训练后量化(QAT)直接用训练好的模型获取量化系数,量化感知训练(PTQ)边训练边量化。通常来说量化感知训练的效果更好。原创 2024-06-22 22:14:57 · 430 阅读 · 0 评论 -
模型量化4-Int8量化1:映射fp32的张量(模型权重或模型输入)到int8张量【absmax量化(对称)、Zeropoint量化(非对称)】【零点量化比absmax稍好,但计算成本也更高】
目标都是映射 FP32 张量X(原始权重)到 INT8 张量Xquant(量化权重)。原创 2024-06-22 17:29:36 · 840 阅读 · 0 评论 -
模型量化5:onnx模型的静态量化和动态量化【使用 ONNXRuntime 内置的量化工具对 ONNX 模型进行静态量化和动态量化】
ONNXRuntime 中的量化是指 ONNX 模型的 8 bit 线性量化。Scale 是一个正实数,用于将浮点数映射到量化空间,计算方法如下:Zero_point 表示量化空间中的零。重要的是,浮点零值在量化空间中可以精确地表示。这是因为许多 CNN 都使用零填充。如果在量化后无法唯一地表示 0,则会导致精度误差。原创 2024-06-22 21:43:28 · 2926 阅读 · 0 评论 -
模型量化6:模型量化误差分析【①量化误差来源;②误差度量函数;③网络误差分析;④精度调试工具】
2. KL散度:衡量分布差异,TensorRT的方案,因此使用较广泛。同系列的还有symKL、JSD等。3. 余弦相似度:衡量向量方向上的差异,余弦相似度越接近1误差越小,优化时是最大化余弦相似度。1. L2距离:并不关注准确的L2距离,只需要比较相对大小。原创 2024-06-22 22:07:22 · 618 阅读 · 0 评论 -
Pytorch量化+部署
Open Neural Network Exchange (ONNX, 开放神经网络交换)格式,是一个用于表示深度学习模型的标准,可使模型在不同框架之间进行转移。ONNX是一种针对机器学习所设计的开放式的文件格式,用于存储训练好的模型。它使得不同的人工智能框架(如PyTorch, MXNet)可以采用相同格式存储模型数据并交互。ONNX的规范及代码主要由微软、亚马逊、Facebook和IBM等公司共同开发。原创 2024-06-22 12:36:41 · 1806 阅读 · 0 评论 -
NLP-模型压缩-知识蒸馏:TextBrewer工具包
TextBrewer为NLP中的知识蒸馏任务设计,融合了多种知识蒸馏技术,提供方便快捷的知识蒸馏框架。模型无关:适用于多种模型结构(主要面向Transfomer结构)方便灵活:可自由组合多种蒸馏方法;可方便增加自定义损失等模块非侵入式:无需对教师与学生模型本身结构进行修改支持典型的NLP任务:文本分类、阅读理解、序列标注等TextBrewer软标签与硬标签混合训练动态损失权重调整与蒸馏温度调整。原创 2023-06-28 21:32:39 · 428 阅读 · 1 评论 -
模型压缩:模型量化、模型蒸馏、模型剪枝
模型压缩:模型量化、模型蒸馏、模型剪枝(用的少)原创 2022-03-03 23:15:00 · 450 阅读 · 0 评论 -
模型压缩-方案(四):模型蒸馏【先用完整复杂模型基于训练集训练出来一个老师模型,然后设计一个小的学生模型,再固定老师模型的权重参数,然后设计一系列Loss,让学生在蒸馏中的预测精度逐渐逼近老师】
名词解释其中,专门针对Bert模型的蒸馏方法有很多,如tinybert,distillBert,pkd-bert等等。下面我就从上述几个角度分别总结一下。主要关注的是将蒸馏方法仅作用在Finetune阶段。经过实验,发现仅在对Finetune后的原始模型进行蒸馏,很难保持原始的精度,或多或少都会有一定程度的精度损失。我们能做的就是在inference性能和inference精度两边做一定的平衡。...原创 2022-03-05 02:41:02 · 7030 阅读 · 0 评论 -
模型压缩-方案(三):模型量化【通过减少表示每个权重所需的“比特”数来压缩原始网络】【建立一种浮点数据和定点数据间的映射关系,可以有效的降低模型计算强度、参数大小和内存消耗,但往往带来巨大的精度损失】
量化即通过减少表示每个权重所需的比特数来压缩原始网络。原创 2022-03-05 02:24:49 · 846 阅读 · 0 评论 -
模型压缩-方案(二)-剪枝【①训练一个基准模型;②、对权重值的幅度进行排序,去掉低于一个预设阈值的连接,得到剪枝后的网络;③、对剪枝后网络进行微调以恢复损失的性能;④、重复第②步】
深度学习网络模型从卷积层到全连接层存在着大量冗余的参数,大量神经元激活值趋近于0,将这些神经元去除后可以表现出同样的模型表达能力,这种情况被称为过参数化,而对应的技术则被称为。......原创 2022-03-05 23:55:16 · 518 阅读 · 0 评论 -
模型压缩-方案(一)-参数共享:ALBERT、BERT-of-Theseus
ALBERT中使用和BERT大小相近的30K词汇表。假如我们的embeddingsize和hiddensize一样,都是768,那么如果我们想增加了hiddensize,就也需要相应的增加embeddingsize,这会导致embeddingtable变得很大。原创 2022-07-19 21:07:22 · 348 阅读 · 0 评论