Bootstrap

基于 Qwen2 大模型微调技术详细教程(LoRA 参数高效微调和 SwanLab 可视化监控)

我之前曾把大模型比作成一位无所不能无所不知且不知疲惫的“大师”。我们在日常工作、学习中等一些通用知识方面的问题,通常情况下,我们均可通过 Prompt 提示词就能从“大师”那里得到期望的结果。

但是,在某些垂直场景的特定任务(包括:个性化服务、内部私有数据等)中,这位“大师”可能就不一定能胜任了:

  1. 数据隐私安全: 保密项目、创业团体和企业内部数据是需要保证绝对安全的,“大师”的知识来自预训练的公开数据,在推理时就缺乏这方面知识。
  2. Prompt 长度和截取: 使用清晰详细的 Prompt 提示词,确实能帮助“大师”理解我们需求,从而更好的输出结果。但是大模型对输入序列的长度有限制,超长会被截断,同时超长的 Prompt 提示意味着推理成本更高、推理效率更低,可能达不到预期的效果。
  3. 个性化需求: 预训练的大模型,其对问题的理解和输出方式基本固定,无法满足个性化的需求。

这个时候,我们可以通过标记好的结构化数据,让“大师”进一步学习(即:微调),通过调整“大师”的知识(即:调整大模型参数),达到处理特定任务的能力。

根据我们需要调整的大模型的参数量,微调技术大致可以分为 2 种:

  1. 全量微调FFT(Full Fine-Tuning),它使用特定领域的数据集对模型的所有参数进行调整,微调的参数量跟预训练时一样多,训练成本和资源会很高,同时可能因数据集等原因出现过拟合问题,导致发生灾难性遗忘(Catastrophic Forgetting),即我们可能会让大模型在某个领域的能力变的更好,但也可能会让原来其它表现好领域的能力变差。
  2. 参数高效微调PEFT(Parameter-Efficient Fine-Tuning),它仅更新模型中的小部分参数,保持大部分预训练权重不变,在保持模型性能的同时减少所需的计算资源和存储空间,可在有效避免过拟合问题的同时,还有助于保留模型在广泛任务上的通用知识(即:泛化能力)。

LoRA(Low-Rank Adaptation)是一种高效的大模型PEFT微调技术,它是通过在预训练模型的关键层(如全连接层和自注意力层)之间添加低秩矩阵来完成微调。这些低秩矩阵的引入使得模型能够适应新的任务,而无需改变原有的大量参数。由于低秩矩阵的参数数量远小于原有层的参数数量,这就大大减少了需要训练的参数总数。

LoRA的优势在于,即使在资源有限的情况下,也可以有效地对大型预训练模型进行微调,使其适应各种下游任务,如文本分类、命名实体识别等。此外,由于 LoRA 的微调通常只需要较少的数据,这也使得它成为小数据集场景下的一个有力工具。

我将通过本教程,基于Qwen2-0.5B开源的预训练大模型,和大家一起进行一次大模型文本分类能力的微调。在 AI 蓬勃发展的今天,期望能通过本教程,与大家一起在我们的 AI 知识库里新增储备微调知识,逐步做到肚里有货,从容不迫

完成一次完整的大模型微调,大致需要以下几个步骤:

  1. 环境准备: 主要是 Python 依赖库安装
  2. 数据集准备: 针对特定任务,准备相关的数据,数据内容包含Prompt 提示词输出即可
  3. 准备大模型: 我们可以通过 HF、ModelScope 等下载预训练大模型权重
  4. 大模型微调: 包括加载大模型、数据集格式化处理、LoRA 参数准备等。最后,微调过程我们通过swanlab可视化界面查看

环境准备和安装依赖包

首先,我们需要通过Miniconda安装 Python 依赖库:

# 切换环境
conda activate PY3.12.2

# 安装依赖库
pip install transformers datasets peft accelerate modelscope swanlab

以上 6 个库的主要用途简单介绍:

  1. transformers HuggingFace 出品的深度学习框架,是 NLP(自然语言处理)领域最流行的训练与推理框架。在本教程中主要用于加载模型、训练以及推理。
  2. datasets HuggingFace 出品的数据集工具,在本教程中主要用于加载数据集。
  3. peft HuggingFace 出品的微调工具,是一个流行的实现 LoRA 和其他微调技术的库。本教程中主要用于微调训练,与微调后模型推理。
  4. accelerate HuggingFace 出品的帮助简化分布式训练和混合精度训练的库。本教程中主要用于支持混合精度训练。
  5. modelscope ModelScope 库使开发人员能够通过丰富的 API 设计执行推理、训练和评估,从而促进跨不同 AI 领域的最先进模型的统一体验。代码中将主要用于在国内环境中下载 Qwen 大模型。
  6. swanlab 西安电子科技大学出品,深度学习实验管理与训练的可视化工具,可记录整个实验的超参数、指标、训练环境、Python 版本等,并通过可视化图表展示,帮助我们分析训练的结果。本教程中主要用于记录指标和可视化界面。

;