微调方法概述

大语言模型的微调是将通用模型适配到特定领域或任务的关键技术。目前主流有三种微调范式:全量微调、LoRA和QLoRA,它们在资源消耗、效果和灵活性上各有优劣。

全量微调

全量微调会更新模型的所有参数,理论上能达到最佳效果,但对硬件要求极高。以LLaMA-7B为例,全量微调需要至少4张A100 80GB显卡。全量微调的适用场景包括:

  • 需要彻底改变模型行为模式
  • 有充足的GPU资源
  • 追求极致性能

LoRA微调

LoRA(Low-Rank Adaptation)通过在原始权重旁插入低秩矩阵来微调,只更新这些新增的参数。核心优势包括:

  • 训练参数量仅为原模型的0.1%-1%
  • 单张消费级显卡即可微调7B模型
  • 多个LoRA权重可以动态切换

在实际应用中,LoRA的秩(rank)设置为8-64之间,目标模块通常选择Attention层的Q和V矩阵。

QLoRA微调

QLoRA在LoRA的基础上引入4-bit量化,进一步降低显存占用。使用NF4数据类型的量化结合双重量化技术,可以在保持效果的前提下将显存需求降低4倍。

QLoRA的关键组件包括:

  1. NF4量化:基于正态分布的4-bit数据类型,比普通int4更适合模型权重分布。
  2. 双重量化:对量化常数再次量化,进一步减少显存占用。
  3. 分页优化器:利用CPU内存作为显存溢出时的缓冲。

数据准备

数据质量决定了微调效果的上限。高质量的数据集应满足:

  • 多样性与覆盖度:覆盖目标领域的各种场景
  • 格式标准化:统一采用ChatML或ShareGPT格式
  • 质量过滤:去除低质量、重复和有偏见的数据

推荐使用datasets库进行数据加载和预处理,配合tokenizers进行统一的分词处理。

评估方法

微调后的模型评估应从多个维度进行:

  1. 自动评估:使用BLEU、ROUGE、Perplexity等指标
  2. 人工评估:构建评估集进行盲测对比
  3. 任务特定评估:针对目标任务的准确率、召回率等

推荐使用lm-evaluation-harness框架进行标准化的模型评估,确保结果的可比性。

选择微调方法时,建议从QLoRA开始快速验证数据有效性,然后根据效果和资源决定是否升级到LoRA或全量微调。

实战建议

微调不是万能药。在决定微调之前,先尝试Prompt工程和Few-shot学习——很多时候精心设计的Prompt就能达到80%的效果。只有当Prompt优化已经穷尽、任务高度特定、且需要高频调用时才值得投入微调。微调失败的头号原因是训练数据质量问题,花在数据清洗上的时间比调参更重要。