所有文章 > 日积月累 > 如何提升预训练LLMs:从零打造到微调优化的全攻略
如何提升预训练LLMs:从零打造到微调优化的全攻略

如何提升预训练LLMs:从零打造到微调优化的全攻略

近年来,随着大语言模型(LLMs)的爆发式发展,越来越多的开发者和中小型公司希望利用这些强大的工具。然而,从零开始构建一个拥有数十亿参数的模型并不现实,算力、资源和技术壁垒让这一目标望尘莫及。

幸运的是,我们可以借助大公司推出的预训练模型,如 Meta LlamaMicrosoft OrcaCohere AyaGoogle GemmaMistral AI 等,直接在其基础上进行优化,以满足具体应用需求。

当现成的预训练模型无法完全满足使用场景时,有三种常见解决方案可供选择:Prompt Engineering(提示工程)、Retrieval-Augmented Generation(检索增强生成)以及 Fine-tuning(微调)。

今天,我们将着重探讨微调方法,帮助你快速掌握这一领域的核心技巧。

为什么选择 Fine-tuning?

相比简单的提示工程或检索增强生成,微调可以让模型真正掌握领域知识,适应特定任务需求。通过调整超参数、优化损失函数或结合领域数据,微调能从根本上提升模型的生成质量和实用性。

无论你选择哪种微调方法,关键在于找到适合自己场景的工具和技术。比如 SFT 适合初学者,RLHF 在偏好明确的任务中表现优越,而 ORPO 则是最新潮的选择,为复杂应用提供了新的可能性。

常见的 Fine-tuning 方法

1. 监督式微调(Supervised Fine-Tuning, SFT)

这是最常见且易于上手的微调方法。

  • 核心思路:通过提供一对描述(如问题+回答或段落+总结),用交叉熵损失(CrossEntropyLoss)训练模型预测完整文本。
  • 过程:SFT 的训练方式本质上是让自回归模型(Autoregressive Model)不断预测下一个 token,逐步提高生成文本的质量。
  • 适用场景:需要模型掌握某一特定领域的知识或生成特定风格的内容。

2. 偏好对齐方法(Preference Alignment)

(1) 基于人类反馈的强化学习(Reinforcement Learning with Human Feedback, RLHF)
  • 三步流程:
  1. 收集偏好数据集:针对同一个问题,提供两个答案并标注优劣。
  2. 训练奖励模型(Reward Model):基于偏好数据集,构建一个评分机制。
  3. 强化学习优化:结合奖励模型与强化学习算法(如 PPO),教导 LLM 提供更优质的回答。
  • 典型训练流程:预训练 → SFT → 偏好对齐
  • 优缺点:虽然效果显著,但训练过程复杂且需要大量人力标注。
(2) 直接偏好优化(Direct Preference Optimization, DPO)
  • 特点:
  • 直接使用损失函数对偏好进行优化,无需训练奖励模型。
  • 训练过程更简单,且更稳定。
  • 适用场景:大部分应用中,DPO 是更易于实施的选择,尤其在小型数据集上更具优势。
  • 研究发现:在部分数据集中,RLHF 仍表现更佳,但成本较高。
(3) 单体偏好优化(Monolithic Preference Optimization, ORPO)
  • 创新点:ORPO 是 2024 年提出的全新方法,旨在融合 SFT 和偏好对齐的步骤。
  • 原理:
  • 解决了 SFT 过程中负对样本(不偏好的答案)缺乏惩罚的问题。
  • 在优化过程中,不仅提升了理想答案的预测概率,还有效减少了不理想答案的可能性。
  • 优势:结合领域知识学习和偏好对齐,同时保证收敛稳定性,适合更复杂的微调任务。

原文:https://arxiv.org/abs/2403.07691

ORPO Fine-tuning:https://huggingface.co/blog/mlabonne/orpo-llama-3

微调LLM常用的工具库与框架

在微调大语言模型(LLMs)的过程中,选择合适的工具库和框架可以极大地简化开发流程,提高效率。以下是常用的工具和集成框架汇总,让你快速入门并灵活应用。

常用工具库

  1. bitsandbytes
  • 提供多种 LLM 量化(quantization)相关的工具,包括层(layer)、函数(function)和优化器(optimizer)。
  • 适用于需要优化存储和算力的任务,尤其是大规模模型的微调。
  1. Parameter-Efficient Fine-Tuning (PEFT)
  • 专注于参数高效微调,提供多种方法,其中最知名的是 LoRA(Low-Rank Adaptation)及其衍生算法。
  • 隶属于 HuggingFace 生态系统,支持无缝集成 HuggingFace 的模型,非常适合快速开发和实验。
  1. Transformer Reinforcement Learning (TRL)
  • SFT(监督式微调)。
  • RLHF所需的奖励建模(Reward Modeling, RM)和近端策略优化(PPO)。
  • DPO(直接偏好优化)。
  • 同样属于 HuggingFace 生态系统,支持多种微调方法:
  • 适合需要实现复杂训练流程的开发者。
  1. wandb
  • 用于跟踪和记录模型训练过程中的数据,包括超参数设置、训练进度等信息。
  • 是许多训练框架的配套工具,让实验更加可视化和规范化。

常用微调框架

  1. LLaMA-Factory
  • 微调框架,尽管以 “LLaMA” 命名,但实际上支持超过 100 种语言模型(LM)。
  • 提供微调所需的各种工具,并集成了友好的 WebUI 界面,大幅简化了训练流程,非常适合初学者快速上手。
  1. Alpaca-Lora
  • 早期开源项目,提供简单的微调脚本,支持基础的 LoRA 微调功能。
  • 注意:项目已停止更新,但仍可作为入门参考(曾有人提议整合 QLoRA,但未被采纳)。
  1. torchtune
  • 由 PyTorch 团队推出的微调框架,整体架构设计简洁易懂,适合学习和实践。
  • 推荐:框架上手简单,本文后续会提供独立教程,进一步介绍其使用方法与案例。

完整代码:

Github REAME : https://github.com/jeff52415/yoga-model-hub/blob/main/docs/fine_tune_llm.md

Jupyter Notebook Tutorial:https://github.com/jeff52415/yoga-model-hub/blob/main/notebooks/fine_tune_llm.ipynb

原文转载出自:@AI技术研习社《如何提升预训练LLMs:从零打造到微调优化的全攻略》

#你可能也喜欢这些API文章!