大模型的微调与蒸馏技术的比较¶
LLM 已经彻底改变了人工智能,特别是具有数十亿到数百亿参数的模型,使其在各种自然语言处理(NLP)任务中实现了最先进的表现。然而,它们庞大的体量带来了计算效率、适应性和部署可行性方面的挑战,微调 和 蒸馏 这两种主要技术已经成为关键的优化策略。
- 微调:涉及调整预训练模型的参数,以提高在特定领域任务上的表现。虽然完整的微调会更新所有权重,但近年来如 LoRA(Low-Rank Adaptation,低秩适应)及其变体 QLoRA 在 PEFT(Parameter-Efficient Fine-Tuning,参数高效微调)方面的进展,使得我们可以 只更新总参数的一小部分。将 QLoRA 将 4 位量化(例如,使用 NormalFloat,NF4)与 LoRA 结合,能显著减少内存使用,同时不牺牲性能。
- 蒸馏:大型高容量教师模型的行为被转移到较小的学生模型中,这种压缩技术通常涉及任务特定的损失函数和教师引导的散度(通常通过Kullback–Leibler散度衡量),旨在减少模型的体积和推理成本,同时保持准确性。
尽管传统上这两种方法被视为独立的策略,但最近的研究表明,混合方法可以充分发挥这两种策略的优势。将参数高效的微调与蒸馏相结合,可以使得一个强大的预训练模型适应特定领域并进行压缩,从而实现高效的推理。
本文将探讨微调与蒸馏在架构、计算和性能方面的权衡,分析 LoRA、4 位量化以及像 KD-LoRA 这样的混合框架等创新如何重塑 LLM 优化的未来。
1. 技术背景¶
LLM 的故事,本质上是规模与效率之间的较量。一个模型的智能并非受限于计算的理论极限,而是受限于内存、延迟和功耗等实际约束。模型的参数越多,它对语言的理解就越丰富,——但它对必须训练和运行它的机器所带来的负担也越重。
目前主要有两种方法可以在保持控制的同时将这些模型适应于新任务,
- 第一种是 微调,它通过调整模型的参数,使其针对特定任务进行优化;
- 第二种是 蒸馏,它将一个大型、复杂模型的精髓提取到一个更小、更高效的模型中。
每种方法都有其折衷:微调保持了模型的深度,但需要大量的计算资源,而蒸馏则通过牺牲部分知识来换取速度和效率。
1.1 微调与参数高效策略¶
在深度学习的早期,微调其实是一种粗糙的手段。当你微调一个模型时,你会改变它的所有参数,用新信息覆盖旧的知识。这种方法有效,但在计算能力和内存方面代价高昂。这个过程类似于强迫一个专家通过重写他们脑中的百科全书每一页来重新学习一门新职业。这种方法称为 全微调(Full Fine-Tuning),虽然强大,但效率低下,通常需要在高端硬件上处理数天。
后来出现了一个更优雅的想法—— PEFT(Parameter-Efficient Fine-Tuning,参数高效微调),与修改整个模型不同,为什么不只修改其中一小部分呢?通过对庞大的数据集进行预训练,模型的大部分知识可以保持不变,而通过一组轻量级、可训练的适配器来微调系统,完成新的任务。
最广泛使用的 PEFT 技术是 LoRA(Low-Rank Adaptation,低秩适应),LoRA 并不更新整个网络,而是 在冻结的模型中引入可训练的低秩矩阵,使模型能够在不显著增加计算成本的情况下调整输出。这些矩阵就像小旋钮一样,微调模型的响应,同时保持其基本结构不变。LoRA大幅减少了微调的内存占用,使得在消费级 GPU 上也能进行 LLM 的适应。
但即便是 LoRA 也有其局限性。真正的突破来自于 QLoRA(Quantized LoRA,量化 LoRA),通过结合先进的量化技术进一步提升了效率。QLoRA 的核心创新包括以下三个关键改进:
- 4 位 NormalFloat(NF4)量化
- 传统模型将权重存储为 16 位或 32 位精度,这会占用大量内存。QLoRA 将这些权重转换为紧凑的 4 位表示,在保留模型知识的同时,显著降低存储和计算成本。这个过程不仅仅是对数字的简单截断,而是利用正态分布权重的统计特性来最小化信息丢失。
- 双重量化
- 即便将模型权重压缩到 4 位,QLoRA 通过**量化过程**进一步获得效率提升。通过精确地构建数字精度分配,QLoRA 从已经优化的系统中挤出了更多的内存节省。
- 分页优化器
- 微调的一个隐藏成本是 梯度更新需要巨大的内存资源,在大型模型中训练迭代会产生内存峰值,超出硬件的承载能力将会导致崩溃或变慢。QLoRA 引入 分页优化器 来解决这个问题,它通过动态分配内存,防止内存过度峰值。这样,我们就可以 在一块 48GB 的GPU上微调 65B 参数的模型。
这些创新使得微调在以前被认为不适合的硬件上变得可行,现在模型无需整个服务器群组,可以在一台高端工作站上进行适应。QLoRA 本质上是一场效率革命——它保留了完整微调的力量,同时使得这一过程对更多研究人员和开发者变得可及。
1.2 模型蒸馏¶
如果微调是关于 适应模型,那么蒸馏则是关于 简化模型。知识蒸馏 的基本前提很简单:一个较小的 学生模型 应当学习模仿一个更大、更强大的 教师模型。理想情况下,这个学生模型将在消耗更少资源的同时,保留教师模型的大部分能力。
蒸馏是出于需求而诞生的,大型模型表现优秀,但 运行缓慢且代价高昂。将它们大规模部署(例如移动设备上)是不可行的。蒸馏的目标是 从一个庞大的模型中提取核心知识,并将其编码成一个更小、更快的版本。然而,这一过程远非简单。
蒸馏的挑战在于知识的转移方式,一种简单的方法为仅仅在同样的数据集上训练一个更小的模型——是行不通的,因为小模型无法学习相同的复杂模式。因此,采用了一种更复杂的方法,涉及两个关键组成部分:
- 任务特定损失
- 学生模型使用传统的监督学习技术(如交叉熵损失)进行训练,确保它在特定任务上的表现良,这可以帮助学生模型学习基础知识,但并没有考虑教师模型中更深层次的知识。
- 知识转移损失
- 蒸馏中一个更微妙但至关重要的部分是,学生模型并不是仅仅从硬标签的真实值中学习。相反,它 从教师的软输出中学习,即教师模型对各种可能答案分配的概率分布。此时,Kullback-Leibler(KL)散度发挥了作用,学生模型并不是把教师当作一个提供绝对答案的神谕,而是鼓励学生近似教师的“不确定性”与“信心水平”。
这个过程使得学生模型 不仅能吸收答案,还能理解答案背后的推理。然而,知识蒸馏也有其局限性,一个较小的模型不可避免地 缺乏较大模型的表征能力。压缩总是有代价的,关键的权衡在于确定在追求更高效率的同时,能够接受多少知识损失。
蒸馏的主要优点是:
- 显著减少内存和推理延迟,使得模型能够在实时环境中部署。
- 可能提升模型的泛化能力,因为蒸馏后的模型可能学到比从头训练的模型更鲁棒的决策边界。
然而,蒸馏过程 计算开销很大。与微调仅需修改一小部分参数不同,蒸馏需要从头开始训练一个全新的模型。此外,教师模型必须在蒸馏之前先进行微调,这增加了额外的复杂性。
蒸馏在很多方面是一个悖论:它创造了一个更小、更快的模型,但这一过程本身比仅仅微调还要 更慢且计算要求更高。理想的解决方案为 既不是选择微调也不是蒸馏,而是将两者结合,在最有效的地方使用每种方法。
1.3 哲学的冲突¶
微调和蒸馏代表了 LLM 优化中的两种竞争哲学。微调是关于 适应,即通过最小的修改来调整模型以适应新的目的;蒸馏则是 减少冗余,将智能压缩到更小、更高效的形式,两者并没有本质上的优劣。微调擅长保留模型的深度,适合 领域特定的专业化;蒸馏优先考虑效率,适合 实时部署。AI 的未来不会属于某一种方法,而是属于那些能够无缝集成两者的系统,利用微调实现精度,利用蒸馏实现规模。
随着研究人员不断推动AI效率的极限,微调与蒸馏的融合最终可能会产生既强大又实用的模型——既能深入思考,又能快速运行的智能机器。