大模型术语
本文主要简述一下“蒸馏”、“RAG”、“Embedding model”、“LLM model”的定义,选取和调优,适用性和局限性;考虑到后续大概率是多样化AI Agent的时代,但是基本上都是拿来用的话,要注意升级和平滑迁移的问题,同时也要考虑是否可以通过混合LLM的权重结合业务场景做垂直落地。
蒸馏与量化
模型蒸馏(Model Distillation)和模型量化(Model Quantization)是两种常用的深度学习模型优化技术,旨在降低模型的计算成本、存储需求或提升推理速度,同时尽量保持模型性能。
目前除了满血的一些知名AI大模型之外,很多LLM通常会表现出很高的蒸馏度。由于智能模型的运营成本过高,所以大量模型供应商通过蒸馏等方法来改进小模型的能力,然后依靠这些小模型来盈利。
比较明显的证据是:很多模型会在声明自己身份等问题时出现矛盾,比如 llama 3.1 会说自己是 OpenAI 开发的,Qwen-Max 说自己由 Anthropic 创造。
蒸馏这项技术主要指的是:通过将知识从更大更强的 LLM 迁移到更小的模型中。
蒸馏固然是一种提升模型能力的有效方法,但作者也指出,过度蒸馏会导致模型同质化,减少模型之间的多样性,并损害它们稳健处理复杂或新颖任务的能力。
核心概念与区别
模型蒸馏:将大型复杂模型(教师模型)的知识“迁移”到小型轻量模型(学生模型)中,使小模型在保持性能的同时减少参数量和计算量。
原理:
- 知识迁移:教师模型通过训练数据生成“软标签”(Soft Labels,即概率分布),而不仅仅是硬标签(Hard Labels,如分类结果)。例如,图像分类任务中,教师模型可能输出“猫: 0.8,狗: 0.15,其他: 0.05”,而真实标签只是“猫: 1”。
- 学生模型学习:学生模型不仅学习真实标签,还学习教师模型的输出分布(软标签),从而模仿教师模型的决策逻辑,最终达到类似或接近教师模型的性能。
典型应用场景:
- 将大型模型(如BERT、GPT)压缩为轻量级模型(如TinyBERT、DistilBERT)。
- 在资源受限的设备(如手机、嵌入式设备)上部署轻量模型。(边缘设备的AI嵌入)
优点:
- 模型体积和计算量显著降低。
- 学生模型可能泛化能力更强(因学习到更丰富的信息)。
模型量化:通过降低模型参数的数值精度(如从32位浮点数转为8位整数),减少模型存储空间和计算资源需求,同时加速推理速度。
原理:
精度压缩:将模型权重和激活值从高精度(如FP32)转换为低精度(如INT8)。
量化方法:
- 训练后量化(Post-training Quantization):直接对已训练好的模型进行量化,无需重新训练。
- 量化感知训练(Quantization-aware Training):在训练过程中模拟量化效果,使模型适应低精度表示。
典型应用场景:
- 移动端或边缘设备上的模型部署(如手机、IoT设备)。
- 需要减少内存占用(如嵌入式系统)或加速推理的场景(如实时视频处理)。
优点:
- 显著减少内存占用(例如,FP32→INT8可压缩4倍)。
- 提升计算速度(低精度运算更快,且支持硬件加速)。
- 几乎不改变模型结构。
核心区别
特性 | 模型蒸馏 | 模型量化 |
---|---|---|
优化目标 | 模型结构简化(参数量减少) | 计算/存储效率(数值精度降低) |
实现方式 | 训练学生模型模仿教师模型 | 直接压缩模型权重和激活值 |
性能影响 | 可能轻微下降,但可通过设计优化 | 精度可能下降,需校准或者补偿 |
适用阶段 | 训练阶段 | 训练后或者训练中(量化感知训练) |
部署灵活性 | 需重新训练学生模型 | 可直接应用或微调 |
在实际应用中,蒸馏和量化可以结合:
- 先用蒸馏得到轻量模型;
- 再对蒸馏后的模型进行量化,进一步压缩和加速。
例如,TinyBERT + INT8量化可在移动端实现高效推理。
总结
模型蒸馏:通过知识迁移缩小模型体积,适合需要轻量级模型但希望保留复杂模型能力的场景。
模型量化:通过降低数值精度优化存储和计算,适合资源受限的部署环境。
两者互补,是模型压缩和部署的重要技术手段。
大模型蒸馏情况判断
下述工作人员希望通过自己提出的方法系统地量化蒸馏过程及其影响,从而提供一个系统性方法来提高 LLM 数据蒸馏的透明度。
为什么要测试大模型蒸馏情况?
蒸馏优势:数据蒸馏成为了一个显著的后发优势,能够以更少的人工标注和更少的计算资源与探索来实现 SOTA 性能。
但是,这个优势同时也导致了:它阻止了学术机构的研究人员和欠发达的 LLM 团队还有相关企业自主探索新技术,并促使他们直接从最先进的 LLM 中蒸馏数据。此外,现有的研究工作已经揭示了数据蒸馏导致的鲁棒性下降。
量化LLM的蒸馏面临的问题
- 蒸馏过程的不透明性使得难以量化学生模型和原始模型之间的差异;
- 基准数据的缺乏使得需要采用间接方法(如与原始 LLM 输出的比较)来确定蒸馏的存在;
- LLM 的表征可能包含大量冗余或抽象信息,这使得蒸馏的知识难以直接反映为可解释的输出。
最重要的是,数据蒸馏在学术界的广泛使用和高收益导致许多研究人员避免批判性地检查与其使用相关的问题,导致该领域缺乏明确的定义。
量化LLM蒸馏程度的方法
分别是响应相似度评估(RSE)和身份一致性评估(ICE)。
RSE 采用原始 LLM 的输出与学生大语言模型的输出之间的比较,从而衡量模型的同质化程度。
ICE 则采用一个知名的开源越狱框架 GPTFuzz,通过迭代构造提示来绕过 LLM 的自我认知,评估模型在感知和表示身份相关信息方面的差异 。
响应相似度评估(RSE)
RSE 从 LLM_test 和参考 LLM获取响应。从三个方面评估 LLM_test 和 LLM_ref 的响应之间的相似度:响应风格、逻辑结构和内容细节,可将 RSE 作为对 LLM 蒸馏程度的细粒度分析。
身份一致性评估(ICE)
ICE 通过迭代构造提示来绕过 LLM 的自我认知,旨在揭示嵌入其训练数据中的信息,如与蒸馏数据源 LLM 相关的名称、国家、位置或团队。在 ICE 中采用 GPTFuzz 进行身份不一致性检测。首先,将源 LLM 的身份信息定义为事实集 F,F 中的每个 f_i 都清楚地说明了 LLM_ti 的身份相关事实
使用带有身份相关提示的 P_id 来准备 GPTFuzz :用于查询 LLM_test 中的 LLM 关于其身份的信息,详见附录 B。使用 LLM-as-a-judge 初始化 GPTFuzz 的 F^G,以比较提示的响应与事实集 F。具有逻辑冲突的响应会被识别出来,并相应地合并到 F^G 的下一次迭代中。
实验结果
ICE 的实验结果,宽松分数和严格分数都表明 GLM-4-Plus、Qwen-Max 和 Deepseek-V3 是可疑响应数量最多的三个 LLM,这表明它们具有更高的蒸馏程度。相比之下,Claude-3.5-Sonnet 和 Doubao-Pro-32k 几乎没有显示可疑响应,表明这些 LLM 的蒸馏可能性较低。宽松分数指标包含一些假阳性实例,而严格分数提供了更准确的衡量。
相比于监督微调(SFT)的 LLM,基础 LLM 通常表现出更高程度的蒸馏。这表明基础 LLM 更容易表现出可识别的蒸馏模式,可能是由于它们缺乏特定任务的微调,使它们更容易受到评估中利用的漏洞类型的影响。
RAG与Embedding模型局限性
RAG(检索增强生成):是一种结合了信息检索技术与语言生成模型的技术,旨在提升AI系统在处理知识密集型任务时的准确性和可靠性。
RAG通过从外部知识库中检索相关信息,并将其作为提示输入给大语言模型(LLM),以增强模型在生成文本时的准确性和时效性。
工作原理:RAG工作流程主要分为三个步骤:检索、增强和生成。
- 检索:根据用户的查询内容,从外部知识库中检索相关信息。这一步通过将用户的查询转换为向量,并与知识库中的向量进行比对,找出最匹配的信息。
- 增强:将检索到的信息与用户的查询内容一起嵌入到一个预设的提示词模板中,作为大语言模型的输入。
- 生成:将增强后的提示词内容输入到大语言模型中,生成所需的输出。
Embedding:将复杂的单词、上下文和语义关系压缩为简单而强大的向量表示,使得计算机能够理解和操作这些抽象的语言信息,通过向量的数学运算,嵌入能捕捉深层次的语义和上下文关系。
Embedding技术导致的问题
Embedding技术在处理相似度搜索时可能存在问题,导致RAG系统提供错误的检索结果。
例如由于嵌入和语义含义的偏差,因为嵌入model是用语义相似来捕捉关系的,但是不同的嵌入model可能有不同的效果,语义上的相似并不等于内容一致。这样会导致歧义,导致生成的回答基于无关的信息,从而降低了系统的准确性和可靠性。
当然有些人可能会觉得上下文如果足够长,是否可能挖掘出相应的关系,从而使嵌入model的效果更完美,实际上是不行的,通过一些实验可以发现,上下文并不能保证让RAG的情况变得更好。这个原因是因为LLM训练语料会造成干扰,其干扰会导致RAG的嵌入model并不能准确抓到需要的信息。
同时也有学者提出各种建议:重新排序、查询重写、BM25、知识图片(图索引)这些RAG高阶手段能否弥补嵌入技术的缺陷?
知识图谱的RAG甚至比普通嵌入RAG的准确率还要低。结合了多种高级RAG搜索方法的性能仍旧达不到实际应用要求,且因为其查询耗时更长了,限制了实际场景中的应用性。
解决方案
不要完全依赖向量嵌入,我们可以将向量嵌入作为一种优化手段——先用同义词搜索锁定范围,再用向量嵌入筛选最相关的结果。
简单来说就是需要区分下面的几种业务场景,作为搜索范围的锁定业务执行逻辑。
术语 | 关系 |
---|---|
同义词 | 词义相近 |
上位词 | 泛化类别(父类) |
下位词 | 具体类别(子类) |
整体词 | 整体包含部分 |
部分词 | 部分属于整体 |
要结合场景和数据去做优化,而不是根据固定的RAG的流程做设计。
Embedding模型的选取
一般可以根据业务场景是中文还是英文,在Huggingface上面根据所需的业务场景和评分来选择对应的模型,Huggingface上面的Embedding模型是实时更新Rank的,当然最后还是要看你业务场景哪个使用更适合来确定。
Embedding模型的训练原理:
其实底层是这样的,对于一个word的话是根据不同词的维度扩大来做区分的。对于句子则是通过bert后做pooling操作(池化),然后表征后,再用cosine-sim(u,v)计算余弦相似度,然后再跟target计算Loss做一个更新迭代。
其中bert是双向的模型,考虑了上下文。而bert结构是transformer,其self-attention也很适合句子的语义表示。
可以基于以下四点选取Embedding模型:
- sequence length的选择,如果query对应的answer无法用这个大小表征出来,那么就应该选择更大的,考虑token的长度。
- embedding dimensions的选择,这个取决于业务场景,如果语义特别丰富,那么就越大越好,如果比较精专于某个领域,那么就应该选择小一些的。
- model size的选择,这个就看设备的硬件情况了,例如边缘设备的话可能就不能选择很大的了,主要看显存。
- 做测试,通过降维之后的demo来看可视化的划分结果,如果效果不错就可以选择作为参考,但是这个是降维后的,所以可能出现降维的效果很差,但是高维的效果很不错的情况。
LLM模型和deepseek业务使用
目前DeepSeek是比较火,但是我们知道在做Springboot项目开发AI应用的时候,实际上是去调取相应的接口。但是DeepSeek目前的模型有:R1和V3。
在API调用层面,R1和V3还是有较大区别的:
R1提供了深度思考,但是不支持function-call,不支持向量数据大模型;V3是蒸馏模型,然后不支持深度思考,支持function-call,但是不支持向量数据大模型。
如果是在阿里云百炼中注册的api,则用的是阿里通义内置的一些向量模型。所以使用的是复合型的大模型才能用来做相应功能开发,当然实际上只需要将对话模型设定为V3就可以。
主要就是开发需要使用相应的function-call,可以认为是向大模型注册业务组件,然后在和人工智能对话的时候,AI就可以自己去调用相应的业务组件。
目前LLM层出不穷,关于LLM的更新迭代不太可能由微小企业或者单人开发者做出,所以如果像是这种API调用的方式,可以在后续转换相应的API接口就成,无需做LLM训练和微调。然后利用RAG的方式去补充知识,让AI应用向垂直行业落地。