【大模型微调】LLMs微调从基础到突破的最终指南:全面评审技术、研究、最佳实践、应用研究挑战与机遇

随笔2个月前发布 流沙阿安
63 0 0

从基础到突破的最终指南:全面评审技术、研究、最佳实践、应用研究挑战与机遇的LLMs微调

url: https://arxiv.org/abs/2408.13296

摘要

本技术报告深入研究了微调大型语言模型(LLMs)的过程,融合了理论见解和实践应用。首先追溯了LLMs的历史发展,强调它们从传统自然语言处理(NLP)模型的演变及其在现代人工智能系统中的关键角色。分析区分了各种微调方法,包括监督学习、无监督学习和基于指令的方法,强调它们对特定任务的各自影响。报告介绍了一个结构化的七阶段微调管道,涵盖了从数据准备到模型部署的完整生命周期。关键考虑因素包括数据收集策略、处理不平衡数据集、模型初始化和优化技术,特别关注超参数调整。报告还突出了参数高效的微调方法,如低秩适应(LoRA)和半微调,这些方法平衡资源限制与最佳模型性能。探索还扩展到高级微调技术和配置,如内存微调、专家混合(MoE)和代理混合(MoA),展示了这些方法如何利用专业网络和多代理协作以改善结果。探讨了近端策略优化(PPO)和直接偏好优化(DPO)作为与人类偏好对齐的创新方法,同时检查了修剪和路由优化的效率提升。报告后续部分深入探讨了验证框架、部署后监控和推理优化技术,并讨论了在分布式和云平台上部署LLMs的问题。此外,还涵盖了多模态LLMs和音频及语音处理的微调等前沿主题,以及与可伸缩性、隐私和问责制相关的新兴挑战。该报告旨在为研究人员和从业者提供全面的指南,提供有关微调LLMs的可操作见解,同时应对这一快速发展领域中固有的挑战和机遇。

目录

1 引言 … 6
1.1 大型语言模型(LLMs)的背景 … 6
1.2 历史发展与关键里程碑 … 6
1.3 从传统NLP模型到最先进LLMs的演变 … 6
1.3.1

quad

统计语言模型(SLMs) … 6
1.3.2 神经语言模型(NLMs) … 7
1.3.3

quad

预训练语言模型(PLMs) … 7
1.3.4 大型语言模型(LLMs) … 7
1.4 当前领先LLMs的概述 … 8
1.5 什么是微调? … 8
1.6 LLM微调的类型 … 9
1.6.1 无监督微调 … 9
1.6.2 监督微调(SFT) … 9
1.6.3 通过提示工程进行的指令微调 … 10
1.7 预训练与微调 … 10
1.8 微调LLMs的重要性 … 10
1.9 检索增强生成(RAG) … 11
1.9.1 传统RAG管道和步骤 … 11
1.9.2 使用RAG的好处 … 12
1.9.3 服务RAG的挑战与考虑 … 12
1.9.4 用例和示例 … 12
1.9.5 在RAG与微调之间选择的考虑事项 … 12
1.10 报告目标 … 13
1.10.1 目标与范围 … 13
1.10.2 关键问题与解决的议题 … 13
1.10.3 报告结构概述 … 13
2 LLM的七阶段微调管道 … 14
2.1 阶段1:数据集准备 … 14
2.2 阶段2:模型初始化 … 14
2.3 阶段3:训练环境设置 … 14
2.4 阶段4:部分或全微调 … 15
2.5 阶段5:评估与验证 … 15
2.6 阶段6:部署 … 16
2.7 阶段7:监控与维护 … 16
3 阶段1:数据准备 … 17
3.1 数据准备涉及的步骤 … 17
3.1.1 数据收集 … 17
3.1.2 数据预处理与格式化 … 17
3.1.3 处理数据不平衡 … 17
3.1.4 数据集划分 … 19
3.2 现有和潜在的研究方法 … 19
3.2.1 数据注释 … 19
3.2.2 数据增强 … 20
3.2.3 使用LLMs生成合成数据 … 20
3.3 微调LLMs的数据准备挑战 … 20
3.4 可用的LLM微调数据集 … 21
3.5 最佳实践 … 21
3.5.1 高质量数据收集 … 21
3.5.2 有效的数据预处理 … 21
3.5.3 管理数据不平衡 … 21
3.5.4 增强和注释数据 … 21
3.5.5 伦理数据处理 … 21
3.5.6 定期评估与迭代 … 21
4 阶段2:模型初始化 … 22
4.1 模型初始化涉及的步骤 … 22
4.2 模型初始化的工具与库 … 23
4.3 模型初始化中的挑战 … 24
4.4 教程 … 24
5 阶段3:训练设置 … 26
5.1 训练设置涉及的步骤 … 26
5.2 设置训练环境 … 26
5.3 定义超参数 … 27
5.3.1 超参数调整的方法 … 27
5.4 初始化优化器和损失函数 … 28
5.4.1 梯度下降 … 28
5.4.2 随机梯度下降(SGD) … 28
5.4.3 小批量梯度下降 … 29
5.4.4 AdaGrad … 29
5.4.5 RMSprop … 30
5.4.6 AdaDelta … 30
5.4.7 Adam … 31
5.4.8 AdamW … 31
5.5 训练设置中的挑战 … 32
5.6 最佳实践 … 32
6 阶段4:微调技术的选择及适当模型配置 … 34
6.1 微调涉及的步骤 … 34
6.2 LLM的微调策略 … 35
6.2.1 任务特定微调 … 35
6.2.2 领域特定微调 … 35
6.3 参数高效微调(PEFT)技术 … 37
6.3.1 适配器 … 37
6.3.2 低秩适应(LoRA) … 38
6.3.3 QLoRA … 40
6.3.4 权重分解低秩适应(DoRA) … 41
6.3.5 使用多个适配器的微调 … 43
6.4 半微调 … 45
6.4.1 使用半微调的好处 … 45
6.4.2 HFT与LoRA的比较 … 46
6.5 Lamini内存调优 … 47
6.5.1 Lamini-1 – 基于Lamini的模型架构 … 47
6.6 专家混合 … 48
6.6.1 Mixtral 8x7B架构及性能 … 48 6.7 代理的混合 … 49
6.7.1 方法论 … 49
6.7.2 与 MoE 的类比 … 50
6.7.3 MoA 的成功因素是什么? … 50
6.8 邻近策略优化(PPO) … 50
6.8.1 PPO 的好处 … 51
6.8.2 PPO 的限制 … 52
6.8.3 使用 PPO 技术训练模型的教程 … 52
6.9 直接偏好优化(DPO) … 52
6.9.1 DPO 的好处 … 53
6 6.9.2 DPO 的最佳实践 … 53
6.9.3 使用 DPO 技术训练模型的教程 … 53
6.9.4 DPO 是否优于 PPO 用于 LLM 对齐? … 53
6.10 优化路由和修剪操作(ORPO) … 54
6.10.1 何时修剪 AI 模型? … 54
6.10.2 修剪的好处 … 55
6.10.3 修剪的挑战 … 55
7 第五阶段:评估和验证 … 56
7.1 评估和验证微调模型的步骤 … 56
7.2 设置评估指标 … 56
7.2.1 交叉熵对 LLM 训练和评估的重要性 … 56
7.2.2 超越交叉熵:高级 LLM 评估指标 … 56
7.3 理解训练损失曲线 … 57
7.3.1 解读损失曲线 … 58
7.3.2

quad

避免过拟合 … 58
7.3.3 嘈杂梯度的来源 … 59
7.4 运行验证循环 … 59
7.5 监控和解读结果 … 59
7.6 超参数调整和其他调整 … 59
7.6.1 数据大小和质量 … 59
7.7 微调 LLM 的基准测试 … 60
7.8 在安全基准上评估微调 LLM … 61
7.9 使用 AI 模型评估微调 LLM 的安全性 … 61
7.9.1 Llama Guard … 61
7.9.2 Shield Gemma … 62
7.9.3 WILDGUARD … 62
8 第六阶段:部署 … 64
8.1 部署微调模型的步骤 … 64
8.2 LLM 部署的云服务提供商 … 64
8.3 在推理时优化模型性能的技术 … 65
8.3.1 传统的本地 GPU 部署 … 65
8.3.2 分布式 LLM:torrent 风格的部署和并行前向传递 … 66
8.3.3 基于 WebGPU 的 LLM 部署 … 67
8.3.4 使用 WebLLM 在 WebGPU 上运行 LLM … 67
8.3.5 量化 LLM … 69
8.3.6 vLLMs. … 69
8.4 LLM 部署的关键考虑因素 … 69
9 第七阶段:监控和维护 … 71
9.1 监控和维护已部署微调 LLM 的步骤 … 71
9.2 持续监控模型性能 … 72
9.2.1 功能监控 … 72
9.2.2 提示监控 … 72
9.2.3 响应监控 … 72
9.2.4 报警机制和阈值 … 72
9.2.5 用户界面 (UI) 监控 … 73
9.3 更新 LLM 知识 … 73
9.3.1 重新训练方法 … 73
9.3.2 其他方法 … 73
9.3.3 关键考虑因素 … 73
9.4 LLM 更新的未来 … 74
10 LLM 的工业微调平台和框架 … 75
10.1 Autotrain … 77
10.1.1 使用 Autotrain 微调的步骤 … 77
10.1.2 使用 Autotrain 的最佳实践 … 79
10.1.3 使用 Autotrain 的挑战 … 79
10.1.4 何时使用 Autotrain … 79
10.1.5 教程 … 79
10.2 Transformers 库和 Trainer API … 79
10.2.1 Transformers 库和 Trainer API 的限制 … 80
10.3 Optimum:提高 LLM 部署效率 … 80
10.3.1 使用 Optimum 的最佳实践 … 81
10.3.2 教程 … 81
10.4 亚马逊 SageMaker JumpStart … 81
10.4.1 使用 JumpStart 的步骤 … 81
10.4.2 使用 JumpStart 的最佳实践 … 82
10.4.3 使用 JumpStart 的限制 … 83
10.4.4 教程 … 83
10.5 亚马逊 Bedrock … 83
10.5.1 使用亚马逊 Bedrock 的步骤 … 83
10.5.2 使用亚马逊 Bedrock 的限制 … 84
10.5.3 教程 … 84
10.6 OpenAI 的微调 API … 84
10.6.1 使用 OpenAI 微调 API 的步骤 … 84
10.6.2 OpenAI 微调 API 的限制 … 85
10.6.3 教程 … 85
10.7 NVIDIA NeMo 自定义工具 … 85
10.7.1 NVIDIA NeMo 的主要特性 … 86
10.7.2 NVIDIA NeMo 的组件 … 86
10.7.3 自定义大型语言模型 (LLMs) … 86
10.7.4 教程 … 87
11 多模态 LLM 及其微调 … 88
11.1 视觉语言模型 (VLMs) … 89
11.1.1 架构 … 89
11.1.2 对比学习 … 89
11.2 多模态模型的微调 … 90
11.2.1 全参数微调 … 90
11.2.2 医疗领域的多模态微调案例研究 … 91
11.3 多模态模型的应用 … 92
11.4 音频或语音 LLM 或大型音频模型 … 92
11.4.1 标记化和预处理 … 94
11.4.2 微调技术 … 94
11.4.3 微调 Whisper 以实现自动语音识别 (ASR) … 94
11.4.4 案例研究和应用 … 9512个开放挑战与研究方向 … 96
12.1 可扩展性问题 … 96
12.1.1 微调过程中的挑战 … 96
12.1.2 可扩展解决方案的研究方向 … 97
12.1.3 硬件与算法的协同设计 … 98
12.2 微调大型语言模型(LLMs)的伦理考量 … 98
12.2.1 偏见与公平性 … 98
12.2.2 隐私问题 … 99
12.2.3 安全风险 … 99
12.3 问责制与透明度 … 100
12.3.1 需要问责制与透明度 … 100
12.3.2 最近的研究与行业实践 … 100
12.3.3 促进问责制与透明度 … 100
12.3.4 伦理微调的提议框架/技术 . . . . . . . . . . . . . . 100
12.4 与新兴技术的整合 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
12.4.1 机会 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
12.4.2 挑战 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
12.5 未来研究领域 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102

词汇表 103

第一章 引言

1.1 大型语言模型(LLMs)的背景

大型语言模型(LLMs)在理解和生成自然语言的计算系统中代表了一个重要的飞跃。基于传统的语言模型( LMs )如 N-gram 模型 [1],LLMs 解决了稀有词处理、过拟合和捕捉复杂语言模式等限制。显著的例子,如 GPT-3 和 GPT-4 [2],利用了变换器架构中的自注意力机制来有效管理序列数据并理解远程依赖关系。关键进展包括在上下文学习,以从提示中生成连贯文本,以及基于人类反馈的强化学习(RLHF) [3] 用于利用人类响应来改进模型。诸如提示工程、问答和对话交互等技术在自然语言处理(NLP)领域取得了显著进展 4 。

1.2 历史发展与关键里程碑

语言模型是自然语言处理(NLP)的基础,利用数学技术来概括用于预测和生成的语言规则和知识。在数十年的发展中,语言建模已从早期的统计语言模型(SLMs)演变为今天的先进大型语言模型(LLMs)。这种快速的进展使 LLMs 能够以与人类相当的水平处理、理解和生成文本 5, 6。
图 1.1 显示了大型语言模型从早期统计方法到当前先进模型的演变。

1.3 从传统NLP模型到最先进的LLMs的演变

理解LLMs需要追溯语言模型的发展,包括统计语言模型(SLMs)、神经语言模型(NLMs)、预训练语言模型(PLMs)和 LLMs 的阶段。

1.3.1 统计语言模型(SLMs)

统计语言模型(SLMs)于 1990 年代出现,使用概率方法分析自然语言,以确定文本中句子的可能性。例如,句子 “I am very happy” 的概率

P

(

S

)

P(S)

P(S) 为:

P

(

S

)

=

P

(

ω

1

,

ω

2

,

ω

3

,

ω

4

)

=

P

(

I

,

 am, very, happy 

)

(1.1)P(S)=P(ω1,ω2,ω3,ω4)=P(I, am, very, happy )” role=”presentation”>P(S)=P(ω1,ω2,ω3,ω4)=P(I, am, very, happy )(1.1)(1.1)P(S)=P(ω1,ω2,ω3,ω4)=P(I, am, very, happy )egin{equation*} P(S)=Pleft(omega_{1}, omega_{2}, omega_{3}, omega_{4}
ight)=P(mathrm{I}, ext { am, very, happy }) ag{1.1} end{equation*}

P(S)=P(ω1​,ω2​,ω3​,ω4​)=P(I, am, very, happy )​(1.1)​

这个概率可以使用条件概率计算:

P

(

I

,

 am , very, happy 

)

=

P

(

I

)

P

(

a

m

I

)

P

(

 very 

I

,

 am 

)

P

(

 happy 

I

,

 am , very 

)

(1.2)P(I, am , very, happy )=P(I)⋅P(am∣I)⋅P( very ∣I, am )⋅P( happy ∣I, am , very )” role=”presentation”>P(I, am , very, happy )=P(I)⋅P(am∣I)⋅P( very ∣I, am )⋅P( happy ∣I, am , very )(1.2)(1.2)P(I, am , very, happy )=P(I)⋅P(am∣I)⋅P( very ∣I, am )⋅P( happy ∣I, am , very )egin{equation*} P(mathrm{I}, ext { am } ext {, very, happy })=P(mathrm{I}) cdot P(mathrm{am} mid mathrm{I}) cdot P( ext { very } mid mathrm{I}, ext { am }) cdot P( ext { happy } mid mathrm{I}, ext { am } ext {, very }) ag{1.2} end{equation*}

P(I, am , very, happy )=P(I)⋅P(am∣I)⋅P( very ∣I, am )⋅P( happy ∣I, am , very )​(1.2)​

条件概率使用最大似然估计(MLE)进行估计:

【大模型微调】LLMs微调从基础到突破的最终指南:全面评审技术、研究、最佳实践、应用研究挑战与机遇

图 1.1:展示大型语言模型(LLMs)从1990年到2023年的演变时间线。这一进程始于早期统计模型,如N-grams,经过神经语言模型(如Word2Vec和RNN/LSTM),并进入引入变换器和注意机制的预训练模型时代。该图强调了重要的里程碑,包括BERT、GPT系列以及最近的创新,如GPT-4和ChatGPT,展示了LLM技术随着时间的快速进展。(改编自 [6])

P

(

ω

i

ω

1

ω

2

ω

i

1

)

=

C

(

ω

1

ω

2

ω

i

)

C

(

ω

1

ω

2

ω

i

1

)

(1.3)P(ωi∣ω1ω2⋯ωi−1)=C(ω1ω2⋯ωi)C(ω1ω2⋯ωi−1)” role=”presentation”>P(ωi∣ω1ω2⋯ωi−1)=C(ω1ω2⋯ωi)C(ω1ω2⋯ωi−1)(1.3)(1.3)P(ωi∣ω1ω2⋯ωi−1)=C(ω1ω2⋯ωi)C(ω1ω2⋯ωi−1)egin{equation*} Pleft(omega_{i} mid omega_{1} omega_{2} cdots omega_{i-1}
ight)=frac{Cleft(omega_{1} omega_{2} cdots omega_{i}
ight)}{Cleft(omega_{1} omega_{2} cdots omega_{i-1}
ight)} ag{1.3} end{equation*}

P(ωi​∣ω1​ω2​⋯ωi−1​)=C(ω1​ω2​⋯ωi−1​)C(ω1​ω2​⋯ωi​)​​(1.3)​

1.3.2 神经语言模型(NLMs)

神经语言模型(NLMs)利用神经网络来预测词序列,克服了SLMs的局限性。词向量使计算机能够理解词的含义。工具如Word2Vec 77 在一个向量空间中表示词,其中语义关系反映在向量角度中。NLMs由互联的神经元组成,组织成层,类似于人类大脑的结构。输入层连接词向量,隐藏层应用非线性激活函数,输出层使用Softmax函数预测后续词,以将值转换为概率分布。
图 1.2 说明了神经语言模型的结构,突出了用于预测后续词的层和连接。

1.3.3 预训练语言模型(PLMs)

预训练语言模型(PLMs)最初在大量未标记文本上进行训练,以理解基本的语言结构(预训练)。然后在较小的特定任务数据集上进行微调。这种“预训练和微调”的范例,由GPT-2 [8] 和BERT [9] 的例子说明,导致了多样和有效的模型架构。

1.3.4 大型语言模型(LLMs)

像GPT-3、GPT-4、PaLM [10] 和LLaMA [11]等LLMs在庞大的文本语料库上进行训练,参数数量达到数百亿。LLMs经历了一个两阶段的过程:首先在一个庞大的语料库上进行预训练,然后与人类价值观对齐。这种方法使LLMs能够更好地理解人类的命令和价值观。

【大模型微调】LLMs微调从基础到突破的最终指南:全面评审技术、研究、最佳实践、应用研究挑战与机遇

图 1.2:神经语言模型的示意图,展示了层次架构,其中输入层处理顺序数据,隐藏层捕捉依赖关系,输出层生成预测。该图强调了通过连接和矩阵乘法的信息流动,最终通过softmax函数产生概率分布。(改编自6)

1.4 当前领先的LLMs概述

LLMs是NLP中强大的工具,能够执行诸如翻译、摘要和对话交互等任务。变换器架构、计算能力和庞大数据集的进步推动了他们的成功。这些模型接近人类的表现,使其在研究和实际应用中极具价值。LLMs的快速发展已促进了建筑创新、训练策略、扩展上下文长度、微调技术和多模态数据的整合研究。它们的应用不仅限于NLP,还助力于人机交互和创建直观的AI系统。这凸显了整合最新发展的综合评审的重要性 12 。
图 1.3 提供了当前领先的LLMs的概述,突出了它们的能力和应用。

1.5 什么是微调?

微调使用预训练模型,例如OpenAI的GPT系列,作为基础。该过程涉及在较小的特定领域数据集上进一步训练。这种方法建立在模型的既有知识之上,增强了在特定任务上的表现,同时减少了数据和计算需求。
【大模型微调】LLMs微调从基础到突破的最终指南:全面评审技术、研究、最佳实践、应用研究挑战与机遇

图1.3:思维导图描绘了大型语言模型(LLMs)的各个维度,涵盖了从预训练和微调方法到效率、评估、推理和应用领域的各个方面。每个维度与特定的技术、挑战和体现所讨论特性的模型示例相关联。该图表作为LLMs开发和部署中的多方面考虑的概述。(改编自[13])

1.6 LLM微调的类型

1.6.1 无监督微调

这种方法不需要标注数据。相反,LLM接触到大量来自目标领域的未标注文本,从而提升其对语言的理解。这种方法适用于法律或医疗等新领域,但在特定任务(如分类或摘要)中精确度较低。

1.6.2 监督微调(SFT)

SFT涉及向LLM提供针对目标任务定制的标注数据。例如,为商业上下文中的文本分类微调LLM时,使用带有类别标签的文本片段数据集。尽管有效,这种方法需要大量的标注数据,这可能成本高昂且耗时。

1.6.3 通过提示工程进行指令微调

这种方法依赖于提供自然语言指令给LLM,适用于创建专业助手。它减少了对大量标注数据的需求,但对提示的质量依赖性很大。

1.7 预训练与微调

表1.1提供了预训练与微调的比较,突出了它们各自的特征和流程。

方面 预训练 微调
定义 在大量未标注的文本数据上训练 将预训练模型调整到特定任务
数据需求 大量多样的未标注文本数据 较小的特定任务标注数据
目标 构建一般语言知识 针对特定任务专业化模型
过程 数据收集、在大数据集上训练、预测下一个词/序列 特定任务的数据收集、调整最后一层以适应任务、在新数据集上训练、基于任务生成输出
模型修改 整个模型训练 最后几层调整以适应新任务
计算成本 高(大数据集、复杂模型) 较低(小数据集、微调层)
训练持续时间 数周到数月 数天到数周
目的 一般语言理解 特定任务性能改进
示例 GPT, LLaMA 3 微调LLaMA 3以进行摘要

表1.1:大型语言模型(LLMs)中预训练与微调的比较概述。该表概述了预训练和微调阶段在定义、数据需求、目标、过程、模型修改、计算成本、训练持续时间及其各自目的等方面的关键差异,示例突出了具体模型和任务。预训练涉及在大量未标注数据上进行广泛训练以构建一般语言知识,而微调则使用较小的标注数据集将预训练模型调整到专业任务,专注于特定任务的性能改进。

1.8 微调LLMs的重要性

迁移学习:微调利用预训练期间获得的知识,将其调整到特定任务上,减少计算时间和资源。降低数据需求:微调需要较少的标注数据,专注于将预训练特征调整到目标任务。提高泛化能力:微调增强了模型对特定任务或领域的泛化能力,捕捉一般语言特征并进行定制。高效模型部署:微调后的模型在实际应用中更高效,计算效率高,适合特定任务。对各种任务的适应性:微调后的LLMs可以适应广泛的任务,在各种应用中表现良好,而无需特定任务的架构。领域特定性能:微调使模型在领域特定任务中表现出色,通过适应目标领域的细微差别和词汇。更快的收敛:微调通常能够更快收敛,从而以已经捕捉到的通用语言特征的权重开始。

1.9 检索增强生成(RAG)

利用自己的数据的一个流行方法是在查询LLM模型时将其纳入提示中。这种方法称为检索增强生成(RAG),涉及检索相关数据并将其作为LLM 的附加上下文使用。RAG工作流程不是仅依赖训练数据中的知识,而是提取相关信息,将静态LLMs与实时数据检索相连接。通过RAG架构,组织可以部署任何LLM模型,并通过提供少量自己的数据来增强结果的相关性(见图1.4的视觉工作流程)。此过程避免了与微调或预训练模型相关的成本和时间。

【大模型微调】LLMs微调从基础到突破的最终指南:全面评审技术、研究、最佳实践、应用研究挑战与机遇

图1.4:传统检索增强生成(RAG)管道步骤的插图,描绘了从客户端查询到响应生成的顺序过程。管道以客户端的问题开始,接着在向量数据库中进行语义搜索,在生成LLM模型的提示之前,上下文性地丰富数据。最终响应经过后处理并返回给客户端。

1.9.1 传统RAG管道和步骤

数据索引:高效地组织数据以便快速检索。这涉及使用索引策略(如搜索索引、向量索引和混合索引)处理、分块和存储数据在向量数据库中。输入查询处理:优化用户查询以改善与索引数据的兼容性。这可能包括简化或向量变换,以提高搜索效率。搜索和排名:基于相关性检索和排名数据,使用搜索算法(如TF-IDF、BM25)和深度学习模型(如BERT)来理解查询的意图和上下文。提示增强:将从搜索结果中提取的相关信息纳入原始查询,以为LLM提供额外上下文,从而提升响应的准确性和相关性。响应生成:使用增强的提示生成响应,将LLM的知识与当前的特定数据结合,确保高质量的、有上下文基础的回答。

1.9.2 使用RAG的好处

最新和准确的响应:提高LLM的响应质量,利用当前外部数据,提高准确性和相关性。减少不准确响应:为LLM的输出提供相关知识基础,降低生成不正确信息的风险。领域特定响应:提供针对组织专有数据的上下文相关响应。效率和成本效益:提供一种具有成本效益的方法,以定制LLM,而无需广泛的模型微调。

1.9.3 在提供RAG中的挑战和考虑

用户体验:确保适合实时应用的快速响应时间。成本效益:管理服务数百万响应的相关成本。准确性:确保输出的准确性,以避免误信息。时效性与相关性:保持响应和内容最新,以符合最新数据。业务上下文意识:确保LLM响应与具体业务上下文相一致。服务可扩展性:在控制成本的同时管理增加的能力。安全性和治理:实施数据安全、隐私和治理的协议。

1.9.4 用例和示例

问答聊天机器人:将LLM与聊天机器人集成,以从公司文档中生成准确答案,增强客户支持。搜索增强:使用LLM生成的答案增强搜索引擎,以提高信息查询的准确性。知识引擎:使用LLM回答与内部功能(如人力资源和合规)相关的问题,使用公司数据。

1.9.5 选择RAG与微调之间的考虑

【大模型微调】LLMs微调从基础到突破的最终指南:全面评审技术、研究、最佳实践、应用研究挑战与机遇

图 1.5:比较不同场景下所需的模型适应与所需外部知识水平的图,突出检索增强生成(RAG)、微调及其在问答系统、客户支持自动化和摘要任务等各种上下文中的混合应用的作用。(改编自 [14])

1.10 报告目标

1.10.1 目标与范围

本报告的主要目标是对大型语言模型(LLMs)的微调技术进行全面分析。这涉及到理论基础、实际实施策略及挑战的探索。报告研究了各种微调方法及其应用和最新进展。

1.10.2 关键问题和解决方案

本报告探讨了围绕微调LLMs的关键问题,首先提供LLMs的基础见解、演变和在自然语言处理(NLP)中的重要性。报告定义了微调,将其与预训练区分开,并强调其在为特定任务调整模型中的作用。关键目标包括提升模型在特定应用和领域中的性能。

报告概述了结构化的微调过程,展示了高层次的管道,包含视觉表示和详细的阶段解释。它涵盖了实际实施策略,包括模型初始化、超参数定义以及微调技术,如参数有效微调(PEFT)和检索增强生成(RAG)。报告还探讨了行业应用、评估方法、部署挑战和最近的进展。

1.10.3 报告结构概述

报告的其余部分提供了对LLMs微调的全面理解。主要章节包括对微调管道、实际应用、模型对齐、评估指标和挑战的深入探讨。最后的部分讨论微调技术的发展,强调正在进行的研究挑战,并为研究人员和从业者提供见解。

第2章 LLM的七阶段微调管道

微调大型语言模型(LLM)是一个综合过程,分为七个不同的阶段,每个阶段对于将预训练模型适应特定任务和确保最佳性能至关重要。这些阶段涵盖了从最初的数据集准备到最终的部署和维护微调模型的所有内容。通过系统地遵循这些阶段,模型得到了优化和调整,以满足精确的要求,最终增强了其生成准确和上下文适当的响应的能力。这七个阶段包括数据集准备、模型初始化、训练环境设置、微调、评估和验证、部署以及监控和维护。图2.1展示了微调LLMs的综合管道,涵盖了从数据集准备到监控和维护的所有必要阶段。

2.1 阶段1:数据集准备

微调大型语言模型(LLM)始于通过使用新的数据集更新其参数,从而将预训练模型适应特定任务。这涉及到清理和格式化数据集以符合目标任务,比如指令调优、情感分析或主题映射。数据集由<

输入

,

输出

输入, 输出

输入,输出>对组成,展示模型所需的行为。例如,在指令调优中,数据集可能看起来像:
###人类:$<输入查询>$
###助手:$<生成输出>$
在这里,“输入查询”是用户提出的请求,而“生成输出”是模型的响应。这些对的结构和风格可以根据任务的具体需求进行调整。

2.2 阶段2:模型初始化

模型初始化是设置LLM的初始参数和配置的过程,在训练或部署之前。这一步对确保模型性能最佳、训练高效以及避免梯度消失或爆炸等问题至关重要。

2.3 阶段3:训练环境设置

为LLM微调设置训练环境涉及配置必要的基础设施,以适应现有模型的特定任务。这包括选择相关的训练数据,定义模型的架构和超参数,以及运行训练迭代以调整模型的权重和偏差。目标是提升LLM在特定应用(如内容创作、翻译或情感分析)中生成准确和上下文适当的输出的能力。成功的微调依赖于仔细的准备和严格的实验。

【大模型微调】LLMs微调从基础到突破的最终指南:全面评审技术、研究、最佳实践、应用研究挑战与机遇

图2.1:大型语言模型(LLMs)微调的综合管道,展示了七个关键阶段:数据集准备、模型初始化、训练环境设置、微调、评估和验证、部署,以及监控和维护。每个阶段在将预训练模型适应特定任务和确保其在整个生命周期内的最佳性能中,都发挥了至关重要的作用。

2.4 阶段4:部分或完全微调

这一阶段涉及使用任务特定的数据集更新LLM的参数。完全微调更新模型的所有参数,确保全面适应新任务。或者,可以采用半微调(HFT)[15]或参数有效微调(PEFT)方法,例如使用适配层来部分微调模型。这种方法将额外的层附加到预训练模型上,允许以更少的参数进行高效微调,从而解决与计算效率、过拟合和优化相关的挑战。

2.5 阶段5:评估和验证

评估和验证涉及评估微调后的LLM在未见数据上的表现,以确保其良好的泛化能力和达到预期目标。评估指标如交叉熵,衡量预测误差,而验证则监控损失曲线及其他性能指标,以检测过拟合或欠拟合等问题。这一阶段有助于指导进一步的微调,以实现最佳模型性能。

2.6 阶段6:部署

部署LLM意味着使其在特定应用中操作和可访问。这涉及配置模型以在指定的硬件或软件平台上高效运行,确保其能够处理自然语言处理、文本生成或用户查询理解等任务。部署还包括设置集成、安全措施和监控系统,以确保在实际应用中的可靠和安全性能。

2.7 阶段7:监控和维护

在部署后监控和维护LLM至关重要,以确保其持续性能和可靠性。这包括持续跟踪模型的性能,解决出现的任何问题,并根据需要更新模型以适应新数据或变化的需求。有效的监控和维护有助于维持模型的准确性和有效性。

第3章 阶段1:数据准备

3.1 数据准备涉及的步骤

3.1.1 数据收集

数据准备的第一步是从各种来源收集数据。这些来源可以是CSV、网页、SQL数据库、S3存储等任何格式。Python提供了多种库以高效和准确地收集数据。表3.1展示了一些常用数据格式及其对应的Python库。

3.1.2 数据预处理和格式化

数据预处理和格式化对于确保高质量的数据进行微调至关重要。这一步骤涉及清理数据、处理缺失值,以及将数据格式化为符合任务特定需求的形式。一些库可以辅助文本数据处理,表3.2包含了一些在Python中最常用的数据预处理库。

3.1.3 处理数据不平衡

处理不平衡的数据集对于确保所有类别的平衡性能至关重要。采用多种技术和策略:

过采样和欠采样:如SMOTE(合成少数类过采样技术)等技术生成合成样本以实现平衡。
Python库:imbalanced-learn
描述:imbalanced-learn提供了处理不平衡数据集的各种方法,包括SMOTE等过采样技术。调整损失函数:修改损失函数,以赋予少数类更大的权重,设置类权重与类的频率成反比。焦点损失:一种交叉熵损失的变体,添加因子以降低简单样本的权重,并专注于难分类的负样本。
Python库:focal loss
描述:focal_loss包提供了多种焦点损失函数的强大实现,包括二元焦点损失和稀疏分类焦点损失。成本敏感学习:将误分类的成本直接纳入学习算法,分配更高的成本给少数类样本的误分类。集成方法:使用如袋装和提升等技术组合多个模型以处理类别不平衡。
Python库:sklearn.ensemble
描述:scikit-learn提供了各种集成方法的强大实现,包括袋装和提升。

数据格式 Python库 描述 库链接
CSV文件 pandas pandas是一个强大的数据处理与分析库。它提供了read_csv函数,用于方便高效地将CSV文件读取到DataFrame对象中。它还支持读取Excel、JSON等格式的数据。

p

a

n

d

a

s

文档

pandas文档

pandas文档

SQL数据库 SQLAlchemy SQLAlchemy是一个用于Python的SQL工具包和对象关系映射(ORM)库,提供一整套企业级持久化模式。 SQLAlchemy文档
S3存储 boto3 boto3是Amazon Web Services(AWS)为Python提供的SDK,允许开发人员使用Amazon S3和EC2等服务。它使与AWS服务的交互成为可能,包括上传、下载和管理S3桶文件。 boto3文档
数据集成 RapidMiner RapidMiner是一个全面的数据准备、机器学习和预测分析环境,允许高效处理和将原始数据转换为可操作的见解。 RapidMiner文档
数据清理 Trifacta Wrangler Trifacta Wrangler专注于简化和自动化数据整理过程,将原始数据转换为干净且结构化的格式。 Trifacta Wrangler文档

表3.1:用于数据收集和集成的Python库和工具的概述,提供常用库、其功能以及官方文档链接,以便于高效的数据管理和处理。
6. 分层抽样:确保训练期间每个小批量都包含每个类别的均等或按比例表示。
Python库:sklearn.model_selection.StratifiedShuffleSplit
描述:scikit-learn提供分层抽样工具,确保跨类别的平衡表示。
7. 数据清理:移除嘈杂和错误标记的数据,这可能会对少数类产生不成比例的影响。
Python库:pandas.DataFrame.sample
描述:pandas提供从DataFrame中抽样数据的方法,适用于数据清理和预处理。
8. 使用适当的指标:在处理不平衡数据集时,精确度-召回率AUC、F1评分和Cohen的Kappa等指标比准确率更具信息量。
Python库:sklearn.metrics
描述:scikit-learn提供一整套工具,用于评估分类模型的性能,特别是在不平衡数据集上。

库名称 数据预处理选项 链接
spaCy SpaCy提供强大的文本预处理能力,包括标记化、词干化和高效的句子边界检测。 spaCy文档
NLTK NLTK提供一整套用于数据预处理的工具,例如标记化、词干提取和停用词移除。 NLTK文档
HuggingFace HuggingFace通过其transformers库提供广泛的文本预处理能力,包括标记化功能和对各种预训练模型的支持。 HuggingFace文档
KNIME KNIME分析平台允许可视化工作流程设计,用于数据集成、预处理和文本挖掘、图像分析等高级操作。 KNIME文档

表3.2:概述了常用于文本数据预处理的Python库,包括spaCy、NLTK、HuggingFace和KNIME。详细阐述了每个库提供的特定预处理选项,并提供了官方文档的链接,以便用户获取有关其使用的更深入指导。

3.1.4 数据集拆分

用于微调的数据集拆分涉及将其分成训练集和验证集,通常使用80:20的比例。不同的技术包括:

随机抽样:随机选择数据的一个子集以创建代表性样本。Python库:sklearn.model_selection.train_test_split分层抽样:将数据集划分为子组,并从每个子组中抽样以保持类别平衡。
Python库:sklearn.model_selection.StratifiedShuffleSplitK折交叉验证:将数据集拆分成K折,并进行K次训练和验证。
Python库:sklearn.model_selection.KFold留一法交叉验证:使用单个数据点作为验证集,其他数据用于训练,对每个数据点重复此过程。
Python库:sklearn.model_selection.LeaveOneOut
有关模型选择的进一步详细信息,请参阅scikit-learn的文档。

3.2 现有和潜在的研究方法

3.2.1 数据标注

数据标注涉及用与模型训练目标相关的特定属性标记或标注文本数据。这个过程对监督学习任务至关重要,并极大地影响经过微调的模型的性能。最近的研究强调了数据标注的各种方法:

人工标注:人工专家的手动标注仍然是黄金标准,因为它准确且理解上下文。然而,对于大型数据集来说,它是耗时且成本高昂的。工具如Excel、Prodigy和Iinnodata可促进此过程。

半自动标注:结合机器学习算法和人工审核,以更高效地创建标注数据集。这种方法平衡了效率和准确性。像Snorke等工具使用弱监督生成初始标签,然后由人工标注员进行细化。

自动标注:完全自动化的标注利用机器学习算法在没有人工干预的情况下对数据进行标签,提供了可扩展性和成本效益。像Amazon SageMaker Ground Truth这样的服务利用机器学习自动标注数据,尽管准确性可能因任务的复杂性而异。

3.2.2 数据增强

数据增强(DA)技术通过人工扩展训练数据集以解决数据稀缺问题并提高模型性能。NLP中常用的高级技术包括:

词嵌入:使用Word2Vec和GloVe等词嵌入将词替换为其语义等价物,从而生成新的数据实例。回译:将文本翻译成另一种语言,然后再返回原语言以创建意译数据。此技术有助于生成多样的训练样本。Google Translate API等工具常用于此目的。对抗攻击:通过稍微修改原始文本生成对抗示例来生成增强数据,从而创建新的训练样本,同时保持原始含义。像TextAttack这样的库提供了此类增强的框架。NLP-AUG?该库提供多种针对字符、单词、句子、音频和声谱图增强的方法,增强数据集的多样性。

3.2.3 使用LLM进行合成数据生成

大型语言模型(LLMs)可以通过创新技术生成合成数据,例如:

提示工程:设计特定提示来指导像GPT-3这样的LLMs生成相关和高质量的合成数据。多步生成:采用迭代生成过程,LLMs生成初始数据,并通过后续步骤进行细化。该方法可以为各种任务生成高质量的合成数据,包括总结和偏见检测。
在使用LLMs生成的合成数据进行微调过程之前,验证其准确性和相关性至关重要。

3.3 微调LLMs的数据准备中的挑战

数据准备中的关键挑战包括:

领域相关性:确保数据与特定领域相关,以实现准确的模型性能。不匹配的领域数据可能导致模型泛化不良和输出不准确。数据多样性:包括多样化和平衡良好的数据,以防止模型偏见并提高泛化能力。缺乏多样性可能导致模型在代表性不足场景中的表现不佳。数据规模:管理和处理大型数据集,推荐至少1000个样本以有效进行微调。然而,大型数据集在存储、计算要求和处理时间方面会带来挑战。数据清理和预处理:删除噪声、错误和不一致性至关重要,以向模型提供干净的输入。处理不当的数据可能会显著降低模型性能。数据标注:确保精确和一致的标注对于需要标注数据的任务至关重要。不一致的标注可能导致模型预测不可靠。处理稀有案例:在数据集中适当地表示稀有但重要的实例,以确保模型能够泛化到不常见但关键的场景。伦理考虑:审查数据以防有害或偏见内容,以防止意外后果。伦理数据处理包括去除偏见和确保隐私。

3.4 可用的LLM微调数据集

有关适合微调LLMs的数据集的全面列表,请参考像LLMXplorer这样的资源,这些资源提供特定领域和任务的数据集。

3.5 最佳实践

3.5.1 高质量数据收集

确保高质量、多样化和具有代表性的数据至关重要。利用策划的来源并确保在不同场景中的全面覆盖可以增强模型的鲁棒性。DataRobot Paxata和KNIME分析平台等工具提供强大的数据分析和转换能力。

3.5.2 有效的数据预处理

适当的数据预处理对于模型性能至关重要。利用像spaCy、NLTK和HuggingFace Transformers等库可以简化预处理任务。Trifacta Wrangler和RapidMiner等平台自动化数据清理任务,提高效率并确保一致性。

3.5.3 管理数据不平衡

解决数据不平衡问题至关重要。通过过采样、欠采样和SMOTE等技术可以帮助平衡数据集。像imbalanced-learn这样的库以及scikit-learn中的集成方法提供了管理不平衡数据集的强大工具 31 。

3.5.4 数据增强和注释

数据增强和注释可以提高模型的鲁棒性。像NLP-AUG、TextAttack和Snorkel这样的工具提供了创建多样且良好标记数据集的复杂能力 32, 33。

3.5.5 伦理数据处理

确保伦理数据处理涉及对偏见和隐私问题的彻底审查。实施隐私保护技术和过滤有害内容至关重要。像Amazon SageMaker Ground Truth这样的服务确保可扩展和安全的数据注释 34。

3.5.6 定期评估和迭代

对数据准备管道的持续评估和迭代有助于保持数据质量和相关性。利用反馈循环和性能指标可确保持续改进并适应新的数据需求。通过整合这些最佳实践,研究人员和从业者能够增强LLM微调的有效性,确保模型性能的鲁棒性和可靠性。

第4章 阶段2:模型初始化

4.1 模型初始化涉及的步骤

【大模型微调】LLMs微调从基础到突破的最终指南:全面评审技术、研究、最佳实践、应用研究挑战与机遇

图4.1:初始化大型语言模型(LLM)的顺序步骤,说明了从设置环境到执行任务的流程。每个步骤对于确保LLM的正确配置和准备操作至关重要。这包括安装必要的依赖项、导入库、根据任务要求选择并从存储库下载适当的语言模型,最后加载模型以执行特定任务。

设置环境:配置您的环境,例如在可用时设置GPU/TPU使用,这可以显著加快模型加载和推理的速度。安装依赖项:确保安装所有必要的软件和库。这通常包括包管理器如pip和框架如PyTorch或TensorFlow。导入库:在您的脚本或笔记本中导入所需的库。常见的库包括Hugging Face的transformers、PyTorch的torch和其他实用库。选择语言模型:根据您的任务要求选择适当的预训练语言模型。这可以是BERT、GPT-3等模型,也可以是在Hugging Face的模型库中提供的其他模型。从存储库下载模型:使用所选框架的函数从在线存储库下载预训练模型。例如,使用transformers,您可能会使用AutoModel.from_pretrained(‘model_name’)。在内存中加载模型:将模型加载到内存中,准备进行推理或进一步微调。此步骤确保模型权重被初始化并准备使用。执行任务:使用加载的模型执行所需的任务。这可能涉及进行预测、生成文本或在新数据集上微调模型。

4.2 模型初始化的工具和库

Python提供了广泛的库来初始化大型语言模型,提供对开源和闭源模型的访问。以下是一些值得注意的库:

Python库:HuggingFace

描述:HuggingFace以支持众多预训练大型语言模型而著称,从Phi-3 mini到Llama-3 70B都有。HuggingFace的一部分transformers库使用户能够通过AutoModelForCausalLM等类访问这些模型。该库支持加载微调模型以及4位量化模型。此外,transformers库还包括“pipeline”功能,便于将预训练模型用于各种任务 35。
2. Python框架:PyTorch

描述:PyTorch提供了全面的工具和库,用于初始化和微调大型语言模型。它提供了一个灵活高效的平台,用于构建和部署深度学习模型。HuggingFace的transformers库弥补了PyTorch与其他框架之间的差距,增强了其在最先进语言模型中的可用性 36。
3. Python框架:TensorFlow

描述:TensorFlow同样提供了广泛的工具和库,用于初始化和微调大型语言模型。与PyTorch类似,它受益于HuggingFace的transformers库,该库为使用最新的大型语言模型提供了多功能和用户友好的API和接口 37。

4.3 模型初始化的挑战

挑战 描述
与目标任务的一致性 预训练模型与您的具体任务或领域的紧密对齐至关重要。这一初始对齐为进一步微调工作提供了坚实基础,提升了效率和结果 38。
理解预训练模型 在做选择之前,彻底理解模型的架构、能力、局限性以及模型最初训练的任务至关重要。如果没有这种理解,微调工作可能无法获得预期的结果 23。
可用性和兼容性 在选择模型时,仔细考虑模型的文档、许可证、维护和更新频率是必要的,以避免潜在问题并确保顺利集成到您的应用程序中。
模型架构 并非所有模型都在每个任务中表现优异。每种模型架构都有其强项和弱项,因此选择与您特定任务一致的模型对于获得理想结果至关重要 39。
资源限制 加载预训练的LLM资源消耗大,需要更多计算能力。这些模型需要高性能的CPU和GPU以及大量的磁盘空间。例如,Llama 38 B模型需要至少16 GB的内存才能加载和运行推理。
隐私 隐私和机密性是选择大型语言模型(LLM)时必须考虑的关键因素。许多企业不希望将其数据与外部LLM提供商共享。在这种情况下,在本地服务器上托管LLM或使用通过私有云提供商可用的预训练LLM可能是可行的解决方案。这些方法确保数据保持在公司的 premises 内,从而保护隐私和机密性。
成本和维护 在本地服务器上托管LLM需要 significant 的时间和费用进行设置和持续维护。相反,利用云供应商缓解了资源维护的担忧,但会产生每月计费的费用。这些费用通常基于模型大小和每分钟请求的数量。
模型大小和量化 使用具有高内存消耗的预训练模型仍然是可行的,通过采用其量化版本。通过量化,预训练权重可以用减少的精度加载,通常为4位或8位浮点,显著减少参数体积,同时保持相当的准确性 40 。
预训练数据集 检查用于预训练的数据集,以评估模型对语言的理解。这一点很重要,因为有些模型专门用于执行代码生成,我们不希望使用这些模型进行财务文本分类 41。
偏见意识 对于预训练模型中的潜在偏见要保持警惕,尤其是在需要无偏预测的情况下。可以通过测试不同模型和追溯用于预训练的数据集来评估偏见意识 42 。

表4.1:初始化大型语言模型(LLM)面临挑战的全面概述。该表强调了关键考虑因素,例如预训练模型与特定任务对齐的重要性、理解模型架构和兼容性、管理资源限制及确保数据隐私。此外,还讨论了与成本、维护及模型大小、量化和偏见意识相关的挑战。每个挑战都与特定引用相关联,以确保对模型部署的充分理解。

4.4 教程

使用Llama 3进行总结HuggingFace的LLM入门教程PyTorch的模型微调教程TensorFlow的变换模型教程

第5章 阶段3:训练设置

5.1 训练设置涉及的步骤

设置训练环境:在为训练LLM设置环境时,配置高性能硬件(如GPU或TPU)至关重要,并确保必要的软件组件的正确安装,如CUDA、cuDNN和深度学习框架,如PyTorch或TensorFlow。验证硬件与软件的识别和兼容性,以有效利用计算能力,减少训练时间并提高模型性能。定义超参数:在为微调LLM定义超参数时,仔细调优关键参数例如学习率、批量大小和周期数,以优化模型性能。初始化优化器和损失函数:在为微调LLM初始化优化器和损失函数时,选择合适的优化器以有效更新模型的权重,以及选择正确的损失函数以衡量模型性能 43。

5.2 设置训练环境

在微调大型语言模型(LLM)时,计算环境在确保高效训练方面发挥着至关重要的作用。为了实现最佳性能,必须配置高性能硬件环境,例如 GPU(图形处理单元)或 TPU(张量处理单元)。GPU,如 NVIDIA A100 或 V100,由于其并行处理能力,广泛用于深度学习模型的训练。对于更大规模的操作,谷歌云提供的 TPU 可以提供更大的加速 44。

首先,确保您的系统或云环境安装了必要的硬件。对于 GPU,这涉及从 NVIDIA 安装 CUDA

1

{ }^{1}

1(计算统一设备架构)和 cuDNN

2

{ }^{2}

2(CUDA 深度神经网络库),这些对于启用 GPU 加速至关重要。使用 TPU 时,您通常会设置带有 TPU 实例的谷歌云环境,这包括在训练脚本中配置 TPU 运行时。

验证您的硬件是否被深度学习框架正确识别和利用。例如,在 PyTorch 中,您可以使用 torch.cuda.is_available() 检查 GPU 可用性。正确设置和测试硬件可以有效利用计算能力,减少训练时间并改善模型性能 36。

在微调 LLM 时,软件和硬件的考虑至关重要,以确保平稳和高效的训练过程。在软件方面,您需要一个兼容的深度学习框架,例如 PyTorch 或 TensorFlow。这些框架对 LLM 提供了广泛的支持,并提供高效模型训练和评估的工具。安装这些框架的最新版本及其所需的依赖项,对于利用最新的功能和性能改进至关重要 [^3]45。此外,使用像 Hugging Face 的 transformers 这样的库来简化加载预训练模型和分词器的过程。该库特别适合处理各种 LLM,并为模型微调提供了用户友好的接口。确保所有软件组件,包括库和依赖项,与您选择的框架和硬件设置兼容 35。

在硬件方面,请考虑模型和数据集的内存要求。LLM 通常需要大量的 GPU 内存,因此选择具有更高 VRAM(例如,16GB 或更多)的 GPU 可能会有所帮助。如果您的模型特别大,或者如果您正在使用非常大的数据集进行训练,可能需要在多个 GPU 或 TPU 之间进行分布式训练。这需要仔细设置数据并行或模型并行技术,以有效利用可用硬件 46。

最后,确保硬件的冷却和电源供应充足,因为训练 LLM 可能是资源密集型的,生成显著的热量,并需要持续的电源。合理的硬件设置不仅提高训练性能,还延长设备的使用寿命 47。

5.3 定义超参数

学习率、批量大小、训练轮数等关键超参数对于提高模型性能和获得更好结果至关重要。这个过程涉及调整超参数和训练设置,以与您的特定用例相一致。以下是关键超参数:

学习率:微调 LLM 涉及使用优化算法,如随机梯度下降(SGD)。该技术使用来自训练数据集的样本估计模型当前状态的误差梯度,并随后通过误差反向传播算法更新模型权重。学习率决定了模型适应问题的速度。较小的学习率需要更多的训练,因为每次更新的权重调整很小,而较大的学习率则导致权重变化更快 48。批量大小:批量是指在训练过程中用于更新模型权重的训练数据子集。批量训练涉及将整个训练集分成更小的组,在处理每个批量后更新模型。批量大小是一个超参数,决定了在更新模型参数之前处理的样本数量。训练轮数:训练轮数是指对整个训练数据集进行完整的遍历。这涉及对数据集的完整正向和反向传播。数据集可以作为单个批量处理,也可以分为多个较小的批量。当模型处理完所有批量并根据计算的损失更新其参数时,认为训练轮数完成。

5.3.1 超参数调优的方法

LLM 超参数调优涉及在训练过程中调整各种超参数,以识别出最佳组合,从而获得最佳输出。此过程通常需要大量的尝试和错误,仔细跟踪每个超参数的调整,并记录结果性能。手动进行这一过程可能非常耗时。为此,开发了自动超参数调优方法,以简化这一过程。最常见的三种自动超参数调优方法是随机搜索、网格搜索和贝叶斯优化:

随机搜索:此方法随机选择并评估来自指定范围的超参数组合。它是一种简单且有效的方法,能够探索大量的参数空间。然而,它可能并不总是找到最佳的超参数组合,并且计算开销可能较大 49。网格搜索:与随机搜索不同,网格搜索逐个评估给定范围内的每一个超参数组合。尽管资源消耗较大,但这种系统化的方法确保找到最佳的超参数集 50。贝叶斯优化:此方法使用概率模型来预测不同超参数的性能,并相应地选择最佳的超参数。它是一种高效的方法,更好地处理大参数空间,并且相较于网格搜索资源消耗较少。然而,它的设置更为复杂,可能在识别最佳的超参数集方面不如网格搜索可靠。自动超参数调优:这促进了多个语言模型的开发,每个模型具有独特的超参数组合。通过在相同数据集上训练这些模型,可以比较它们的输出,并确定哪种配置最适合期望的用例。此外,使用不同超参数集调优的模型可以针对不同的特定应用进行定制。

5.4 初始化优化器和损失函数

选择正确的优化器和损失函数对于训练和微调 LLM 至关重要。以下是一些常用优化算法的描述,包括它们的优缺点和适用的使用场景:

5.4.1 梯度下降

梯度下降是一种用于最小化机器学习模型成本函数的基本优化算法。它旨在寻找神经网络的最佳参数。

工作原理:梯度下降迭代地更新模型参数,朝着成本函数的负梯度方向进行。它计算每个参数的梯度,并在所有数据点上应用更新,直到收敛。此方法利用整个数据集来计算梯度,通常需要固定的学习率,并对数据的规模和学习率选择非常敏感。

优点:

简单易于实现。直观且易于理解。对于凸函数收敛到全局最小值。适合小规模问题。

缺点:

在大数据集上计算成本较高。可能会陷入局部最小值。需要大量迭代。对学习率的选择敏感。

何时使用:当数据集较小时,梯度下降最为适用,此时梯度计算成本较低,并且更倾向于简洁明了。

5.4.2 随机梯度下降(SGD)

随机梯度下降(SGD)是梯度下降的一种变体,旨在减少每次迭代的计算量。

工作原理:SGD 使用单个或少量数据点来更新参数,从而在更新中引入随机性。它减少了每次迭代的计算负担,并且通常比批量梯度下降收敛更快。然而,由于更高的方差,它需要较小的学习率,并且通过动量来稳定更新。

优点:

快速地处理大数据集。内存使用效率高。简单易于实现。由于噪声,可以逃离局部最小值。

缺点:

更新的高方差可能导致不稳定。可能会超出最小值。对学习率的选择敏感。收敛速度可能比批量方法慢。

何时使用:SGD 适用于大数据集、增量学习场景和计算资源有限的实时学习环境。

5.4.3 小批量梯度下降

小批量梯度下降结合了 SGD 的效率和批量梯度下降的稳定性,在批量和随机方法之间提供了折衷。

工作原理:它将数据分成小批量,并使用每个小批量的平均梯度来更新参数。这减少了与 SGD 相比的方差,并且比批量梯度下降更高效,有助于更新的泛化。

优点:

在效率和稳定性之间取得平衡。更新更具通用性。减少参数更新的方差。- 提供SGD和批处理之间的折衷。

缺点:

需要调整批处理大小。对于非常大的数据集,仍然可能计算开销较大。实现更复杂。可能需要比全批量梯度下降更多的迭代。

何时使用:小批量梯度下降适用于大多数深度学习任务,特别是在处理适中到大型数据集时。

5.4.4 AdaGrad

自适应梯度算法(AdaGrad)旨在处理稀疏数据和高维模型,通过调整学习率来提高在稀疏数据上的表现。

工作原理:AdaGrad根据历史梯度信息为每个参数调整学习率,累积平方梯度。这种方法防止对频繁参数的大更新,并有助于处理稀疏特征。

优点:

为每个参数调整学习率。适合稀疏数据。无需手动调整学习率。在高维数据上表现良好。

缺点:

学习率可能会减小到零,从而停止学习。可能需要更多的调整以实现收敛。平方梯度的累积可能导致过小的学习率。可能会显著减慢速度。

何时使用:AdaGrad适用于像文本和图像这样的稀疏数据集,其中学习率需要适应特征频率。

5.4.5 RMSprop

均方根传播(RMSprop)是一种自适应学习率方法,旨在在非平稳和在线问题中表现更佳。

工作原理:RMSprop通过使用平方梯度的移动平均来修改AdaGrad,以便根据最近的梯度幅度调整学习率。它保持平方梯度的运行平均值,以帮助维持稳定的学习率。

优点:

解决了AdaGrad的衰减学习率问题。根据最近的梯度调整学习率。对递归神经网络有效。对非平稳目标更具鲁棒性。

缺点:

在非凸问题上仍可能陷入局部最小值。需要超参数调整。需要仔细调整衰减率。对初始学习率可能敏感。

何时使用:RMSprop最适合非凸优化问题、训练RNN和LSTM以及处理嘈杂或非平稳目标。

5.4.6 AdaDelta

自适应Delta(AdaDelta)在AdaGrad和RMSprop的基础上改进,专注于自适应学习率而不迅速衰减。

工作原理:AdaDelta通过使用梯度更新的移动窗口,消除了对默认学习率的需求。它根据最近的梯度幅度调整学习率,以确保即使在稀疏梯度情况下也能保持一致的更新。

优点:

消除了设置默认学习率的需求。解决了衰减学习率的问题。不需要手动调整学习率。处理梯度稀疏性良好。

缺点:

比RMSprop和AdaGrad更复杂。初始收敛可能较慢。可能需要更多迭代才能收敛。实现可能更复杂。

何时使用:AdaDelta适合于与RMSprop相似的场景,但在避免手动设置学习率时更为优选。

5.4.7 Adam

自适应矩估计(Adam)结合了AdaGrad和RMSprop的优点,适用于大数据集和高维空间的问题。

工作原理:Adam使用梯度及其平方值的运行平均来为每个参数计算自适应学习率。它包括偏差修正,通常比其他方法实现更快的收敛。

优点:

结合了AdaGrad和RMSprop的优点。

自适应学习率。

包括偏差修正。

快速收敛。

在大数据集和高维空间上表现良好。缺点:

需要调整超参数(尽管通常默认设置效果良好)。

计算密集型。

如果没有适当的正则化,可能导致过拟合。

需要更多内存。

使用时机:由于其高效性和有效性,Adam 在大多数深度学习应用中得到广泛使用,尤其是在复杂的神经网络架构中。

5.4.8 AdamW

AdamW 是 Adam 的扩展,包含权重衰减正则化以解决 Adam 中存在的过拟合问题。

工作原理:AdamW 将 L2 正则化直接集成到参数更新中,将权重衰减与学习率解耦。这改善了泛化能力,适合用于大模型的微调。

优点:

包含权重衰减以改善正则化。结合了 Adam 的自适应学习率与 L2 正则化。改善了泛化能力。相较于 Adam 减少了过拟合。

缺点:

比 Adam 稍微复杂。需要仔细调整权重衰减参数。由于额外的计算,速度比 Adam 略慢。需要更多内存。

使用时机:AdamW 是适合需要正则化的场景,例如防止大模型的过拟合和微调预训练模型。

在 PyTorch 库中可以找到全面的优化算法集合。Hugging Face Transformers 包也提供多种优化器,用于初始化和微调语言模型。

5.5 训练设置中的挑战

确保高性能硬件(如 GPU 或 TPU)的兼容性和适当配置可能是复杂且耗时的。管理深度学习框架和库的依赖关系和版本,以避免冲突并利用最新功能。选择适当的学习率至关重要,因为过高的学习率可能导致次优收敛,而过低的学习率则可能使训练过程过于缓慢。确定平衡内存限制和训练效率的最佳批量大小,尤其考虑到 LLM 大量内存需求。选择合适的训练轮数,以避免模型的欠拟合或过拟合,需要仔细监控和验证。针对特定训练任务选择最合适的优化器,以有效更新模型的权重。选择正确的损失函数,以准确衡量模型性能并指导优化过程。

5.6 最佳实践

优化学习率:使用较低的学习率,通常在

1

e

4

1 mathrm{e}-4

1e−4 到

2

e

4

2 mathrm{e}-4

2e−4 之间,以确保稳定收敛。学习率调度,如学习率热身随后线性衰减,也可能有益。这有助于初始稳定训练,然后让模型更准确地收敛。批量大小考虑:选择平衡内存限制和训练效率的批量大小。较小的批量大小有助于实现更快的收敛,但可能需要更频繁的更新。相对而言,较大的批量大小可能更占用内存,但可能导致更新更稳定。尝试不同的批量大小,以找到特定用例的最佳平衡。定期保存检查点:定期在 5-8 个训练轮中保存模型权重,以捕获最佳性能而不发生过拟合。实施提前停止机制,一旦模型在验证集上的性能开始下降,即停止训练,从而防止过拟合。超参数调整:利用超参数调整方法,如网格搜索、随机搜索和贝叶斯优化,找到最佳的超参数集。Optuna、Hyperopt 和 Ray Tune 等工具可以自动化此过程,有助于有效探索超参数空间。数据并行和模型并行:对于大规模训练,考虑使用数据并行或模型并行技术,将训练工作负载分配到多个 GPU 或 TPU 上。Horovod 和 DeepSpeed 等库可以促进有效的分布式训练,帮助减少训练时间并有效管理内存使用。定期监控和记录:实施稳健的监控和记录,以跟踪训练指标、资源使用和潜在瓶颈。TensorBoard、Weights & Biases 和 MLflow 等工具可以提供训练过程的实时洞察,允许及时干预和调整。处理过拟合和欠拟合:通过实现处理过拟合和欠拟合的技术,确保模型能够良好地泛化。L2 正则化、丢弃法和数据增强等正则化技术可以帮助防止过拟合。相反,如果模型出现欠拟合,考虑增加模型复杂性或训练更多轮。使用混合精度训练:混合精度训练涉及使用 16 位和 32 位浮点类型,以减少内存使用和提高计算效率。这项技术可以显著加快训练速度并减少所需内存占用,特别是在使用大模型时。NVIDIA 的 Apex 和 TensorFlow 的混合精度 API 提供了对混合精度训练的支持。评估和迭代:使用单独的验证集持续评估模型性能,并根据结果迭代训练过程。定期更新训练数据,并重新训练模型,以使其与新的数据趋势和模式保持一致。文档和可重现性:保持对训练设置的详细文档,包括硬件配置、软件环境和使用的超参数。通过设置随机种子和提供详细的训练过程记录确保可重现性。这种做法不仅有助于调试和进一步开发,还促进与更广泛研究社区的合作与成果共享。

第6章 第4阶段:选择微调技术和合适的模型配置

本章重点在于选择适合各种任务特定要求的微调技术和模型配置。微调是一个关键阶段,在此阶段预训练模型被适应于特定任务或领域。

6.1 微调涉及的步骤

以下步骤概述了微调过程,整合了先进的技术和最佳实践。

初始化预训练的标记器和模型:首先加载预训练的标记器和模型。标记器确保输入文本以模型可以处理的格式转换,而预训练模型则作为进一步适应的基础。根据任务,选择在相关数据上进行预训练的模型,以提供坚实的起点。修改模型的输出层:调整模型的输出层以符合目标任务的特定要求。这可能涉及修改现有层或添加新层。例如,分类等任务可能需要具有适当类别数量的 softmax 层,而文本生成任务可能需要改变解码机制。选择合适的微调策略:选择最适合任务和模型架构的微调策略。一些选项包括:
任务特定微调:对于文本摘要、代码生成、分类和问答等任务,使用相关数据集对模型进行调整。领域特定微调:使模型能够理解和生成与特定领域(如医学、金融或法律)相关的文本。高效参数微调(PEFT):LoRA、QLoRA 和适配器等技术允许通过更新少量的模型参数来以较低的计算成本进行微调。半微调(HFT):在每个微调轮次中只更新一半的模型参数,以保持预训练知识和学习新任务之间的平衡。
设置训练循环:建立训练循环,纳入所选微调策略。循环应包括数据加载、损失计算、反向传播和参数更新。在使用 PEFT 方法时,确保只更新相关参数以最大化效率。实施动态学习率和提前停止等技术,以增强训练过程。纳入处理多个任务的技术:如果需要进行多任务微调,那么可以考虑使用多适配器微调或利用专家混合(MoE)架构等策略。这些方法允许单个模型通过利用每个任务的特定子网络或适配器来处理各种任务。监控验证集上的表现:定期评估模型在验证集上的性能,以确保其能良好地泛化到未见数据。根据验证性能调整超参数,如学习率、批量大小和丢弃率。使用先进的监控工具跟踪准确度、损失和过拟合等指标。使用先进技术优化模型:在强化学习场景中使用如近端策略优化(PPO)等技术,或使用直接偏好优化(DPO)将模型输出与人类偏好对齐。这些技术在微调需要细致决策或人类类似响应的任务中特别有用。修剪和优化模型(如有必要):为了在资源受限的环境中部署模型,可以考虑使用修剪技术以减少其大小和复杂性。这涉及在不显著影响性能的情况下删除不必要的参数或组件。在推理过程中使用动态修剪方法,以在不同场景下即时优化模型。持续评估和迭代:使用适当的基准持续评估模型在各种任务上的性能。针对性能指标和实际测试对微调过程进行迭代调整。这种迭代方法有助于优化模型以满足特定性能标准。### 6.2 大语言模型的微调策略

6.2.1 任务特定微调

任务特定微调通过使用适当格式化和清理的数据,使大语言模型(LLMs)适应特定的下游任务。以下是适合微调LLMs的关键任务的总结,包括针对这些任务的LLMs示例。

任务 描述 关键模型
文本摘要 将长文本浓缩为连贯的摘要,同时保留关键信息。方法包括提取式(选择关键句子)和抽象式摘要(生成新句子)。 BERTSUM, GPT-3, T5
代码生成 基于自然语言描述、部分代码片段或结构化数据输入自动生成编程代码。 Codex, GPT-3, CodeBERT
分类 将文本分类为预定义标签,如情感分析、主题分类和实体分类。 BERT, RoBERTa, GPT-4
问答 理解并生成与自然语言问题相关的准确且相关的答案。 BERT, GPT-3, T5

表6.1:文本摘要、代码生成、分类和问答等任务的概述,以及它们的关键LLMs和描述。

6.2.2 领域特定微调

领域特定微调专注于定制模型,以理解和生成与特定领域或行业相关的文本。通过在来自目标领域的数据集上进行微调,它增强了模型对上下文的理解和在领域特定任务中的专业知识。以下是领域特定LLMs的示例。

医疗领域

模型描述:Med-PaLM 2在经过精心策划的医疗数据集上进行训练,能够准确回答医疗问题,其性能与医疗专业人员相当 55 。
基础模型:PaLM 2
微调模型参数:未知
使用的微调技术:指令微调
使用的数据集:

MedQAMedMCQALiveQAMedicationQAHealthSearchQA

结果:Med-PaLM 2在多个关键医疗基准测试中优于GPT-4,展示了在处理复杂医疗知识和推理任务方面的卓越性能。

金融领域

模型描述:FinGPT是为金融领域量身定制的开源LLM,通过促进数据可及性以及处理财务特定问题(如数据获取和质量)来增强金融研究和合作 [56] 。
基础模型:LlaMA, ChatGLM及其他变换器模型
微调模型参数:未知
使用的微调技术:LoRA,股票价格强化学习(RLSP)
使用的数据集:

财经新闻(路透社、CNBC、雅虎财经)社交媒体(推特、脸书、红迪网、微博)监管文件(如SEC文件)趋势(Seeking Alpha, Google Trends)学术数据集

结果:不适用

法律领域

模型描述:LAWGPT是首个专为中国法律应用设计的开源模型,在处理中国法律任务方面展现出卓越能力 57 。
基础模型:中文Alpaca Plus 7B基础模型
微调模型参数:未知
使用的微调技术:带有Alpaca模板的LoRA
使用的数据集:

开源数据集:200,000个示例,包含犯罪类型预测和犯罪咨询任务。JEC-QA数据集:20,000个示例,包含法律问答任务。构建的法律数据集:80,000个示例,从开源和JEC-QA数据集中经过ChatGPT精炼得到。

结果:LAWGPT在各种法律任务中相较于LLaMA 7B模型表现出显著的性能提升,但仍落后于GPT-3.5 Turbo和GPT-4等专有模型。

制药领域

模型描述:PharmaGPT是一套针对生物制药和化工行业量身定制的领域特定大语言模型,树立了这些领域精度的新标杆 58 。
基础模型:LlaMA系列
微调模型参数:13B和70B
使用的微调技术:指令微调和RLHF
使用的数据集:

来自学术论文和临床报告的特定领域数据来自NLP数据集格式的文本数据(例如,问答、摘要、对话)用于多任务学习的指令微调数据集带有人类偏好专家标注指令的RLHF数据集

结果:PharmaGPT模型在各类制药基准测试中表现出色,持续优于GPT-3.5 Turbo。

金融领域

模型描述:Palmyra-Fin-70B-32K,由Writer开发,是专门为金融行业设计的领先大规模语言模型。

基础模型:LlaMA
微调模型参数:70B
使用的微调技术:未知
使用的数据集:未知
结果:Palmyra-Fin-70B-32K展现了最先进的性能,在多种金融数据集上取得领先结果,在金融文档分析、市场趋势预测和风险评估方面表现出色。

6.3 参数高效微调 (PEFT) 技术

参数高效微调 (PEFT) 是一种影响深远的自然语言处理技术,能够高效地将预训练语言模型适应于各种应用。PEFT 方法仅微调少量(额外)模型参数,同时保持大部分预训练语言模型参数不变,从而显著降低计算和存储成本。这种方法缓解了灾难性遗忘问题,指的是神经网络在新数据集上训练时,丧失先前获得的知识,并在以前学习的任务上表现显著下降。PEFT 方法相比完全微调表现出更优越的性能,特别是在低数据场景下,并且在跨领域上下文中表现出更好的泛化能力。这项技术适用于多种模态,如金融情感分类和医疗术语的机器翻译。在图6.1中提供了基于 PEFT 的微调方法分类。接下来的章节将进一步讨论几种关键的基于 PEFT 的方法。

6.3.1 适配器

基于适配器的方法在冻结预训练模型的注意力和全连接层后引入额外的可训练参数,旨在减少内存使用和加速训练。具体方法因适配器而异,可能涉及添加额外层或将权重更新的增量 ( W ) 表示为权重矩阵的低秩分解。无论方法如何,适配器一般较小,但能够达到与完全微调模型相媲美的性能,使得在更少资源下训练更大模型成为可能。

HuggingFace通过PEFT库支持适配器配置。在微调过程中,通过LoraConfig

1

{ }^{1}

1将新适配器集成到模型中。HuggingFace使用PeftConfig加载现有的预训练模型并应用PEFT技术。此外,HuggingFace还提供内置支持。

【大模型微调】LLMs微调从基础到突破的最终指南:全面评审技术、研究、最佳实践、应用研究挑战与机遇

图6.1:大规模语言模型(LLMs)的参数高效微调(PEFT)方法的综合分类。此图对各种PEFT技术进行分类,突出了它们不同的处理方式,从加法和选择性微调到重新参数化和混合方法,详细说明了每个类别内的具体策略,如基于适配器的微调、基于软提示的微调及其各自的子技术,如LoRA及其衍生物,展示了LLM微调的多样性和演变。

6.3.2 低秩适配 (LoRA)

低秩适配 (LoRA) 是一种用于微调大规模语言模型的技术,它通过冻结原始模型权重,并将更改应用于添加到原始参数的单独权重集合,从而修改微调过程。LoRA将模型参数转换为较低秩的维度,减少可训练参数的数量,加速过程并降低成本。这种方法在多个客户端需要针对不同应用的微调模型时尤其有用,可以为每个用例创建特定的权重,而无需单独的模型。通过采用低秩近似方法,LoRA有效减少了计算和资源需求,同时保持预训练模型对特定任务或领域的适应能力。

使用LoRA的好处

参数效率:LoRA通过仅关注低秩矩阵,显著减少需要训练的参数数量,相比完全微调,内存和存储需求更低。存储效率:训练模型的存储效率更高,因为只需存储低秩矩阵,而不是完整的模型权重。
【大模型微调】LLMs微调从基础到突破的最终指南:全面评审技术、研究、最佳实践、应用研究挑战与机遇

图6.2:LLMs中使用的适配器架构的示意图。该图展示了适配器在变换器架构中的集成,包括前馈上层和下层,以及它们通过插入额外参数在保持模型核心结构的同时实现高效模型适应的作用(改编自61)。
3. 降低计算负担:使用低秩矩阵进行训练需要较少的计算资源,从而使过程更快且更具可扩展性。
4. 更低的内存占用:由于更新的参数较少,训练过程中的内存占用降低,使得在相同的硬件约束下能够使用更大的批量大小或更复杂的模型。
5. 灵活性:LoRA可以轻松与现有的预训练模型集成,无需大幅修改模型架构。
6. 兼容性:可以与其他微调技术(如适配器层或提示微调)结合使用,以进一步增强性能。
7. 可比结果:尽管可训练参数数量减少,LoRA在许多任务上显示出与完全微调相当的性能。
8. 任务特定适应:它有效地将预训练模型适应于特定任务,利用原始模型中已经嵌入的知识。
9. 避免过拟合:通过专注于低秩更新,LoRA可以帮助缓解过拟合问题,特别是在处理较小的任务特定数据集时。

局限性

尽管LoRA展现了相当强大的能力,但它也面临挑战:

微调范围:当任务需要对预训练模型的内部表示进行重大修改时,LoRA可能会遇到困难。超参数优化:调整秩参数 ‘

r

r

r ‘需要仔细调整以实现最佳性能。持续研究:尽管前景广阔,LoRA仍处于活跃研究阶段,其长期影响尚待充分探索。

常规微调中的权重更新

【大模型微调】LLMs微调从基础到突破的最终指南:全面评审技术、研究、最佳实践、应用研究挑战与机遇

LoRA中的权重更新

【大模型微调】LLMs微调从基础到突破的最终指南:全面评审技术、研究、最佳实践、应用研究挑战与机遇

图6.3:常规微调与LoRA微调中的权重更新比较。在常规微调中,整个权重更新矩阵

(

Δ

W

)

(Delta W)

(ΔW) 应用于预训练权重。相反,LoRA微调引入了两个低秩矩阵(A和B),它们近似权重更新矩阵

(

Δ

W

)

(Delta W)

(ΔW),通过利用内部维度 ( r ) 来显著减少可训练参数的数量,这是一个超参数。这种方法在内存和计算方面更高效,使其非常适合大模型的微调。(改编自63)

尽管面临这些挑战,LoRA作为一种开创性技术,具有广泛的潜力,可以使更广泛的用户群体获得LLMs的能力。持续的研究和开发为克服当前局限性以及实现更大的效率和适应性提供了前景。

使用LoRA微调LLM的教程

使用LoRA方法和Hugging Face库微调LLM的开源模板可以在这里找到。该模板专门设计用于将LLM适应于指令微调过程。

6.3.3 QLoRA

QLoRA 是LoRA的扩展版本,旨在通过将权重参数量化为4位精度以提高大规模语言模型 (LLMs) 的内存效率。通常,LLM参数以32位格式存储,但QLoRA将其压缩为4位,显著降低了内存占用。这使得可以在较不强大的硬件上进行微调,包括消费级GPU。QLoRA还将LoRA适配器的权重从8位量化为4位,进一步减少内存和存储需求(见图6.4)。尽管位精度降低,QLoRA在性能上仍能与传统16位微调相媲美。

它通过在冻结的4位量化预训练语言模型中通过低秩适配器反向传播梯度,使微调过程高效,同时保持模型的有效性。QLoRA配置通过PEFT库在HuggingFace中得到支持,利用LoraConfig和BitsAndBytesConfig进行量化。诸如优化的4位数据类型、常量的双重量化和内存峰值管理等创新,使QLoRA能够将传统微调中的每个参数的内存使用量从96位减少到5.2位,相当于减少18倍。在性能方面,QLoRA 超过了简单的 4 位量化,并在基准测试中与 16 位量化模型相匹配。此外,QLoRA 使得在 24 小时内使用单个 GPU 对高质量 4 位聊天机器人进行微调成为可能,其质量可与 ChatGPT 媲美。

本教程解释了在 Phi-2 模型上对自定义数据集进行 QLoRA 微调的端到端步骤。

【大模型微调】LLMs微调从基础到突破的最终指南:全面评审技术、研究、最佳实践、应用研究挑战与机遇

图 6.4:量化低秩适应 (QLoRA) 优化工作流程。该图说明了 QLoRA 的优化过程,展示了在微调过程中优化状态、适配器和模型之间的相互作用。它演示了使用不同位宽(32 位、16 位和 4 位)来优化大规模语言模型微调过程中的内存和计算效率(改编自 65)。

6.3.4 权重分解低秩适应 (DoRA)

在优化模型微调的背景下,LoRA 和完整微调 (FT) 的模式分析揭示了学习行为和更新方面的显著差异。LoRA 使用增量更新预训练权重的策略,采用两个低秩矩阵的乘积,在微调过程中保持原始权重基本静态,从而实现高效推理。尽管其计算效率较高,但以往研究表明,LoRA 限制的可训练参数数量可能导致与 FT 相比的性能差异。
权重分解低秩适应 (DoRA) [66] 是一种新颖的微调方法,通过将预训练模型的权重分解为幅度和方向分量来优化这些模型。这种方法利用低秩适应 (LoRA) 在方向更新方面的效率,便于在不改变整个模型结构的情况下进行大量参数更新。DoRA 通过保持模型简单性和推理效率,同时弥补 LoRA 和 FT 之间通常观察到的性能差距,解决了传统完整微调 (FT) 相关的计算挑战。经验和理论评估表明,DoRA 不仅在各类任务中实现了与 FT 可比的学习结果——包括自然语言处理和视觉语言应用——而且在性能上始终优于 LoRA,提供了一种增强大规模模型适应性和效率的稳健解决方案。

Python 库 – 通过 HuggingFace LoraConfig 包来实现 DoRA。为了将 DoRA 纳入微调过程,在 Lora 配置中指定 ‘use_dora

=

=

= True’ 参数是至关重要的。有关初始化的更多信息,请参见此处。

DoRA 的好处

提高学习能力:DoRA 通过将预训练权重分解为幅度和方向分量,实现了一种接近完整微调 (FT) 的学习能力,允许更细致的更新。高效微调:通过利用低秩适应 (LoRA) 在方向更新方面的结构优势,DoRA 实现了高效微调,而无需改变整个模型结构。无额外推理延迟:尽管学习能力得到了改善,DoRA 仍然没有给 LoRA 引入任何额外的推理延迟,保持了模型的简单性和效率。优越的性能:实验结果表明,DoRA 在广泛的任务中始终优于 LoRA,包括自然语言处理 (NLP)、视觉指令微调和图像/视频文本理解。例如,它在常识推理和视觉指令微调基准测试中表现出显著的改进。在各种基础模型上的多功能性:DoRA 已在多种模型基础上得到验证,包括大规模语言模型 (LLM) 和视觉语言模型 (LVLM),表明其广泛的适用性和在不同领域的稳健性。创新分析:引入一种新颖的权重分解分析有助于揭示 FT 和各种参数高效微调 (PEFT) 方法学习模式的根本差异,帮助深入理解模型微调动态。

LoRA 与 DoRA 的比较

低秩适应 (LoRA) 和权重分解低秩适应 (DoRA) 是两种旨在提高微调大规模预训练模型的效率和有效性的高级技术。虽然它们都共享降低计算开销的共同目标,但它们采用了不同的策略来实现这一目标(见表 6.2)。

标准 LoRA (低秩适应) DoRA (权重分解低秩适应)
目标 提供一种高效的方法来微调预训练模型,通过使用低秩矩阵乘积增量更新权重而不增加推理延迟。 通过紧密模拟完整微调的学习模式来提高学习能力,分别优化幅度和方向。
方法 实现低秩分解,将权重更新建模为两个低秩矩阵(B 和 A)的乘积,保持原始权重静态。 使用权重分解分析将权重矩阵重新参数化为分别的幅度和方向分量,以供不同更新。
模型架构 保持预训练权重矩阵 (W0) 不变,并使用低秩矩阵 (B 和 A) 进行更新。矩阵 A 使用均匀的 Kaiming 分布初始化,而 B 最初设为零。 将权重矩阵重构为幅度和方向分量,确保方向向量为单位向量,以便进行更细致的调整。

表 6.2:LoRA(低秩适应)与 DoRA(权重分解低秩适应)之间的详细比较,突出了它们的目标、方法以及为微调大规模语言模型所采用的具体架构策略。

使用 DoRA 微调 LLM 的教程

本教程提供了有关从头开始实现 DoRA 的详细指南和步骤的详细解释,以及优化性能所必需的微调过程的见解。

6.3.5 使用多个适配器的微调

在微调过程中,我们探讨了冻结 LLM 的参数方法,并仅专注于使用 LoRA 微调几百万个可训练参数。例如,为翻译微调 LLM 涉及使用相关数据训练翻译适配器。这种方法使我们能够为希望 LLM 执行的每个特定任务进行单独的适配器微调。然而,一个关键问题随之而来:我们能否将多个适配器合并为一个统一的多任务适配器?例如,如果我们有翻译和摘要任务的单独适配器,我们能否将它们合并,以使 LLM 能够有效处理这两项任务?(通过图 6.6 说明。

PEFT 库通过其 add_weighted_adapter 函数简化了适配器合并的过程,该函数提供三种不同的方法:

连接:这种简单的方法连接适配器的参数。例如,如果两个适配器的秩各为 16,则合并后的适配器的秩将为 32。此方法效率很高。线性组合:尽管文献记录较少,但该方法似乎对适配器参数进行加权求和。SVD:默认方法通过 torch.linalg.svd 实现奇异值分解。尽管用途广泛,但与其他方法相比,它明显较慢,尤其对于高秩适配器(大于 100),可能需要几个小时。

每种方法都允许通过调整权重来自定义组合。例如,在合并两个适配器时,给 X 分配更多权重可确保合并后的适配器优先考虑与 X 类似的行为。
这种方法特别适合将单个 LLM 整合到多个任务中,而不是为每个任务领域创建单独的模型。通过采用这种方法,不再需要

[^6]为每个任务单独微调一个模型。相反,可以为每个任务微调一个适配器层,从而高效地实现查询返回所需的响应。

【大模型微调】LLMs微调从基础到突破的最终指南:全面评审技术、研究、最佳实践、应用研究挑战与机遇

使用LoRA微调LLM以实现多个任务和适配器的步骤

适配器创建:创建多个适配器,每个适配器针对特定任务进行微调,使用不同的提示格式或任务识别标签(例如,[translate_fren],[chat])。LoRA集成:实施LoRA以高效地将这些适配器集成到预训练的LLM中。利用LoRA的方法,如连接、线性组合或奇异值分解(SVD),在最小化计算开销并保持性能的同时合并适配器。任务特定适应:使用任务特定数据微调每个适配器,以增强其在单个任务上的性能。确保适配器使用与其各自任务相关的数据进行训练,以优化其生成准确响应的能力。行为调整:监控组合适配器的行为,以识别个别适配器(例如,翻译适配器产生短响应)遗留的任何不良继承行为。根据需要调整组合权重或类型,以修改适配器行为,确保每个适配器在其预期任务中表现最佳。评估和迭代:使用验证数据集评估组合模型在多个任务上的性能。迭代微调过程,根据性能指标和用户反馈对适配器组合和训练参数进行调整。

因此,为了获得最佳表现,建议结合经过明显不同提示格式微调的适配器。然而,即使使用不同提示格式的适配器,生成的适配器可能也不会表现出期望的行为。例如,旨在聊天的新组合适配器可能仅生成短响应,继承了原本训练到只生成一个句子后停止的适配器的这种倾向。要调整组合适配器的行为,可以在组合过程中优先考虑特定适配器的影响和/或修改所使用的组合方法。
演示使用多个适配器层进行大语言模型(LLM)微调的示例教程可以在这里找到。

6.4 半微调

半微调(HFT)68是一种旨在平衡大型语言模型(LLM)基础知识的保留与新技能获取的技术。HFT在每个微调轮次中冻结模型的一半参数,同时更新另一半,允许模型保留预训练知识,并在不改变模型架构的情况下提升新任务的性能。每个重复的变换器层分为三个块:自注意力、前馈和层归一化,其中每个块的一半参数被更新,另一半被冻结,且每轮不同。这种战略性的参数更新有助于在训练轮次之间维护知识平衡,并增强后续训练会话的可扩展性。
对LLAMA 2-7B等模型的研究表明,HFT能够显著恢复被遗忘的基本知识,同时保持较高的通用能力表现。这种方法的稳健性和效率使其适用于各种微调场景,包括监督微调、直接偏好优化和持续学习。此外,HFT保持模型架构稳定,简化了其实施并确保与现有系统的兼容性,进一步推动其实际应用。

6.4.1 使用半微调的好处

恢复预训练知识:通过将一半微调参数回滚至其预训练状态,HFT有效恢复了部分原始知识,从而减轻了以前获得能力的灾难性遗忘。增强性能:研究实验表明,HFT在下游任务中保持或甚至超过全微调(FFT)的表现,展示了其在保持知识保留和任务特定学习之间的有效性。稳健性:该方法对不同的选择策略和选择的参数数量具有稳健性,确保在各种配置中保持一致的性能。简单性和可扩展性:HFT不改变模型架构,简化了实施,允许可扩展应用,特别是在连续微调场景中非常有利。多样性:该技术在各种微调场景中被证明是有效的,包括监督微调、直接偏好优化和持续学习。

【大模型微调】LLMs微调从基础到突破的最终指南:全面评审技术、研究、最佳实践、应用研究挑战与机遇

图6.7:半微调(HFT)方法在LLAMA 2架构中的示意图。该图显示了多个微调阶段,其中特定模型参数被选择性激活(橙色),而其他参数保持冻结(蓝色)。这种方法通过减少计算需求优化训练,同时仍能有效地使模型适应新的任务或数据。(改编自68)

6.4.2 HFT与LoRA的比较
标准 HFT LoRA
目标 目标是在学习新任务特定技能的同时保留预训练期间获得的基础知识,从而在维护现有能力与获取新能力之间达到平衡。 LoRA旨在减少在微调期间的计算和内存需求,使在有限硬件资源上训练大型模型更加高效和可行。
方法 HFT在每个微调轮次中冻结模型的一半参数,仅更新另一半。 LoRA通过在神经网络的权重矩阵中引入低秩分解来减少可训练参数的数量。这涉及在微调期间将低秩矩阵注入模型的层中。
模型架构 HFT不改变模型的架构或引入新参数,使其易于在不需要额外结构更改的情况下应用。 LoRA通过添加低秩矩阵来修改模型,这改变了训练动态,并需要对低秩更新进行额外计算。
性能 研究表明,HFT能够恢复被遗忘的基本知识,同时保持高水平的通用能力表现。 LoRA旨在实现与全微调具有竞争力的性能,但可训练参数数量显著减少,计算成本更低。

表6.3:半微调(HFT)与低秩适应(LoRA)的比较分析。

6.5 Lamini内存调优

Lamini 69作为一种专门的微调大型语言模型(LLMs)方法被提出,旨在减少幻觉的产生。此发展源于提高LLM在需要准确信息检索的领域的可靠性和精确性的需求。传统的训练方法通常包括在庞大的数据集上运行随机梯度下降,尽管在训练数据上拟合效果良好,但往往产生无法有效泛化且容易出现这种错误的模型。

基础模型通常遵循类似Chinchilla配方的训练方案,该配方规定在大规模语料库上进行单个周期的训练,例如在大约一万亿个标记上训练Llama 27 B。这种方法导致了大量的损失,并且更侧重于提高泛化和创造力,允许标记选择中存在一定随机性。然而,对于需要高度事实精确性的任务来说,这种方法则表现不佳。相比之下,Lamini内存调优更深入地分析了个别事实的损失,显著提高了事实回忆的准确性。通过为模型增加专门用于记忆的额外参数(例如,一个8B参数模型增加2B参数用于权重),Lamini使模型能够记忆并准确回忆大量事实,使其表现与LLM扩展法则紧密对齐,同时不妨碍泛化能力。

6.5.1 Lamini-1 – 基于Lamini的模型架构

Lamini-1模型架构(图6.8)不同于传统的基于变换器的设计,采用了大规模的记忆专家混合系统(MoME)。该系统具有一个预训练的变换器主干,通过利用交叉注意力机制动态选择适配器进行增强。这些适配器在MoE架构中function类似于专家,网络在冻结主干的情况下端到端训练。该设置允许特定事实精确存储在被选定的专家中。

【大模型微调】LLMs微调从基础到突破的最终指南:全面评审技术、研究、最佳实践、应用研究挑战与机遇

图6.8:Lamini-1模型架构的示意图,具有大规模的记忆专家阵列(MoME)。该架构集成了一个预训练变换器主干,通过交叉注意力机制与动态选择的适配器相结合。每个适配器作为记忆专家,能够存储特定的事实数据。(改编自69)

在推理时,仅从索引中检索相关专家,使得LLM能够存储大量事实,同时保持低推理延迟。使用在Triton中编写的专业GPU内核加速专家的查找,优化系统以快速访问存储的知识。

消除幻觉的系统优化MoME架构旨在最小化记忆事实所需的计算需求。在训练期间,为每个事实选择一个专家的子集,例如从一百万中选择32个。主干网络和用于选择专家的交叉注意力的权重被冻结,然后进行梯度下降步骤,直到损失降至足够低以记住该事实。这种方法通过首先在泛化训练阶段训练交叉注意力选择机制,然后冻结其权重,从而防止同一专家被多次选择用于不同事实。这种方法确保计算量与训练样本的数量成比例,而不是与参数的总数量成比例,从而显著减少内存调优所需的计算量。这种优化方法使Lamini-1能够在对真实和随机答案的内存调优中实现近乎零损失,展示了其在消除幻觉和改善事实回忆方面的有效性。

6.6 专家混合

专家混合(MoE)是一种神经网络的架构设计,它将层或操作(例如线性层、MLP或注意力投影)的计算分成几个专业的子网络,称为“专家”。每个专家独立地进行计算,最终结果会被汇总以生成MoE层的最终输出。MoE架构可以分为密集型,所有专家都参与每个输入,或稀疏型,仅对每个输入使用部分专家。

6.6.1 Mixtral 8x7B架构和性能

Mixtral 8x7B采用稀疏专家混合(SMoE)架构(图6.9),其结构与Mistral 7B相似,但每层包含八个前馈块(专家)。对于每个层的每个标记,一个路由网络选择两个专家来处理当前状态并合并它们的输出。尽管每个标记在任何时候只与两个专家交互,但在每个时间步选择的专家可以有所不同。因此,每个标记可以访问470亿个参数,但在推理时仅使用130亿个活跃参数。Mixtral 8x7B不仅与Llama 2 70B和GPT-3.5在所有评估基准上相匹配,且往往超越它们。其在数学、代码生成和多语言任务中的性能明显优于Llama 2 70B。

【大模型微调】LLMs微调从基础到突破的最终指南:全面评审技术、研究、最佳实践、应用研究挑战与机遇

图6.9:Mixtral 8x7B专家混合(MoE)模型架构的示意图。该模型由一个路由网络组成,该网络动态选择来自八个基于变换器的专家池中最相关的专家,每个专家具有70亿个参数。专家被组织成变换器块,路由器根据输入将数据定向到适当的专家,优化了计算效率和模型性能。这种架构允许在大型语言模型中实现可扩展性和专业化处理。(改编自[71])

6.7 代理混合

尽管有众多的LLM及其显著成就,但它们仍然遇到关于模型大小和训练数据的基本限制。进一步扩展这些模型的成本 prohibitively昂贵,往往需要在数万亿个标记上进行广泛的重新训练。同时,不同的LLM表现出不同的优势,并在任务的各个方面有所专长。最近的研究探讨了利用多个LLM的集体专业知识来开发更强大且可靠的模型,这种方法被称为代理混合(MoA)[72]。MoA通过分层架构运作,每层由多个LLM代理组成(图6.10)。这一结构揭示了一个称为“LLM的合作性”的现象。创新的MoA框架利用多个LLM的综合能力来增强推理和语言生成的能力。研究表明,LLM自然合作,当结合其他模型的输出时,响应质量得到了改善,即使这些输出并不理想。

【大模型微调】LLMs微调从基础到突破的最终指南:全面评审技术、研究、最佳实践、应用研究挑战与机遇

图6.10:代理混合(MoA)LLM配置的插图。该模型由多个层组成,每层包含几个代理,它们独立处理输入,然后将输出拼接生成中间结果。该过程在各层之间继续,在每个阶段精炼输出,以根据给定提示生成最终输出(改编自[72])。

6.7.1 方法论

为了增强多个LLM之间的协作,了解它们各自的优势并进行分类至关重要。分类包括:

提议者:这些模型在为其他模型生成有价值的参考响应方面表现出色。虽然它们可能单独表现不佳,但提供有用的背景和多样的视角,在被汇聚器利用时,提高最终输出的质量。汇聚者:这些模型擅长将来自各种模型的响应合并为单个高质量结果。有效的汇聚者应保持或甚至增强最终响应的质量,而不论单个输入的质量如何。

仔细选择每个MoA层的LLM至关重要。性能指标,例如给定层的平均胜率,有助于评估模型在后续层的适用性,确保生成更高质量的输出。模型输出的多样性至关重要,因为来自不同模型的多样响应比来自单个模型的同质输出贡献更大。在MoA中,给定输入提示,第

i

th 

i^{ ext {th }}

ith  MoA层的输出

y

i

y_{i}

yi​计算如下:

y

i

=

j

=

1

n

[

A

i

,

j

(

x

i

)

]

+

x

1

,

x

i

+

1

=

y

i

(6.1)yi=⨁j=1n[Ai,j(xi)]+x1,xi+1=yi” role=”presentation”>yi=⨁j=1n[Ai,j(xi)]+x1,xi+1=yi(6.1)(6.1)yi=⨁j=1n[Ai,j(xi)]+x1,xi+1=yiegin{equation*} y_{i}=igoplus_{j=1}^{n}left[A_{i, j}left(x_{i}
ight)
ight]+x_{1}, x_{i+1}=y_{i} ag{6.1} end{equation*}

yi​=j=1⨁n​[Ai,j​(xi​)]+x1​,xi+1​=yi​​(6.1)​

6.7.2 与MoE的类比

专家混合(MoE)是一种成熟的机器学习技术,多个专家网络,各自具有专业技能,相互合作以解决复杂问题。这种方法在各个应用中显示了显著的成功,并为代理混合(MoA)方法提供了灵感。在典型的MoE设计中,一系列层,称为MoE层,包含多个专家网络,一个门控网络和残差连接,以改善梯度流。层输出

y

i

y_{i}

yi​的计算如下:

y

i

=

j

=

1

n

G

i

,

j

(

x

i

)

E

i

,

j

(

x

i

)

+

x

i

(6.2)yi=∑j=1nGi,j(xi)Ei,j(xi)+xi” role=”presentation”>yi=∑j=1nGi,j(xi)Ei,j(xi)+xi(6.2)(6.2)yi=∑j=1nGi,j(xi)Ei,j(xi)+xiegin{equation*} y_{i}=sum_{j=1}^{n} G_{i, j}left(x_{i}
ight) E_{i, j}left(x_{i}
ight)+x_{i} ag{6.2} end{equation*}

yi​=j=1∑n​Gi,j​(xi​)Ei,j​(xi​)+xi​​(6.2)​

MoA框架通过基于提示的交互在模型级别上推进了MoE概念,而不是改变内部激活或权重。MoA利用多个全面的LLM跨越不同层,而不是依赖于单个模型中的专用子网络。在这种方法中,门控和专家网络的功能在一个LLM内融合,利用其解释提示并生成连贯输出的能力,而无需额外的协调机制。

6.7.3 MoA为何表现良好?

MoA的卓越性能:MoA显著优于基于LLM的排名器,后者从提议中选择一个答案,而不是生成新的响应。这表明MoA聚合所有生成的响应的方式比仅从现有选项中选择更有效。有效整合提议:MoA中的汇聚者表现出倾向于整合最佳提议答案。汇聚者响应与各种相似性度量(如BLEU分数)之间存在正相关,这些分数衡量n-gram重叠。其他相似性度量的使用也与偏好分数一致地显示正相关,表明汇聚者有效利用提议响应。模型多样性和提议者数量的影响:增加提议者的数量改善了输出质量,突显出额外辅助信息的好处。此外,使用多样化的LLM作为提议者通常比使用单个LLM产生更好的结果。这表明每个MoA层中的提议者数量和多样性对提高性能有重要贡献,并且可以通过扩展进一步改善。模型专门化:分析MoA生态系统内模型角色发现,GPT-4o、Qwen和LLaMA-3在协助和汇聚任务中有效。相比之下,WizardLM作为提议者表现出色,但在汇聚来自其他模型的响应时表现不佳。

6.8 近端策略优化(PPO)

PPO是一种广泛认可的强化学习算法,用于训练代理在多样的环境中执行任务。该算法利用策略梯度方法,其中策略——由神经网络表示——根据当前状态确定代理采取的行动。PPO有效处理通过持续的代理-环境交互生成的动态训练数据,这是其与在监督学习中使用的静态数据集的一个区别。PPO的创新在于其“代理”目标函数,通过随机梯度上升进行优化。这种方法允许从同一批数据中进行多次更新,从而增强训练效率和稳定性,相对于传统的策略梯度方法。PPO由OpenAI开发,旨在平衡易于实现与复杂算法(如信任区域策略优化(TRPO))的强大性能特征,但不涉及相关的计算复杂性。PPO通过最大化期望累积奖励来运作,通过迭代策略调整来提高导致更高奖励的动作的可能性。PPO的一个关键特征是在目标函数中使用的截断机制,它限制了策略更新的幅度,从而防止剧烈变化并在训练期间保持稳定。
【大模型微调】LLMs微调从基础到突破的最终指南:全面评审技术、研究、最佳实践、应用研究挑战与机遇

图6.11:在来自人类反馈的强化学习(RLHF)背景下应用的近端策略优化(PPO)示意图,用于微调大语言模型(LLM)。该过程涉及使用提示数据集训练LLM。PPO算法根据奖励模型提供的奖励调整LLM的策略,该模型通过人类反馈进行微调。(改编自(73))

Python库 – HuggingFace变换器强化学习(TRL)

4

{ }^{4}

4包支持用于从偏好数据训练语言模型的PPO训练器

5

{ }^{5}

5。

PPOTrainer期望将生成的响应与基于奖励模型获得的奖励对齐。在PPO算法的每一步中,我们从数据集中采样一批提示,然后使用这些提示从SFT模型生成响应。接下来,奖励模型用于计算生成响应的奖励。最后,这些奖励用于使用PPO算法优化SFT模型。因此,数据集应包含一个文本列,我们可以将其重命名为查询。优化SFT模型所需的其他数据点在训练循环中获得。

6.8.1 PPO的优点

稳定性:近端策略优化(PPO)旨在确保稳定和可靠的策略更新。截断的代理目标函数是这种稳定性的核心,因为它限制了策略更新,以防止大幅度且可能导致不稳定的变化。这使得学习更加平滑和一致。易于实现:与高级算法TRPO相比,PPO相对容易实现。它避免了对二阶优化技术的需求,使得其更具可操作性。样本效率:PPO通过使用截断的代理目标实现数据效率。这种机制调节策略更新,确保稳定性,同时有效地重用训练数据。因此,PPO通常比其他强化学习算法更具样本效率,能够在样本更少的情况下表现良好,这在数据收集成本高昂或耗时的场景中尤为有利。

6.8.2 PPO的局限性

复杂性和计算成本:近端策略优化(PPO)涉及复杂的策略和价值网络,训练需要大量计算资源。这种复杂性通常导致较长的训练时间和增加的操作成本。超参数敏感性:PPO的性能高度依赖于多个超参数,如截断范围、学习率和折现因子。实现最佳性能需要仔细调校这些参数。错误的设置可能导致次优的策略结果或学习过程中不稳定。稳定性和收敛问题:尽管PPO旨在增强相较于早期方法的稳定性,但它仍可能遇到收敛问题,特别是在高度动态或复杂的环境中。保持稳定的策略更新仍然是一个重大挑战。奖励信号依赖性:PPO的有效性高度依赖于一个明确的奖励信号来指导学习过程。在设计合适的奖励函数具有挑战性或不切实际的场景中,PPO可能难以达到预期结果。

6.8.3 使用PPO技术训练模型的教程

根据IMDB数据集使用PPO技术微调GPT2以生成积极的电影评论的教程可以在这里找到。

6.9 直接偏好优化(DPO)

直接偏好优化(DPO)[74]提供了一种简化的方法,以使语言模型(LM)与人类偏好对齐,跳过了来自人类反馈的强化学习(RLHF)的复杂性。大型无监督LM通常缺乏精确的行为控制,需要像RLHF这样的方式,通过人类反馈微调模型。然而,RLHF复杂,涉及创建奖励模型和微调LM以最大化估计的奖励,这可能不稳定且计算需求高。DPO通过直接用简单的分类目标优化LM来应对这些挑战,将响应与人类偏好对齐。这种方法消除了明确奖励建模和广泛超参数调优的需要,增强了稳定性和效率。DPO通过增加期望响应的相对可能性来优化所需的行为,同时结合动态重要性权重以防止模型退化。因此,DPO简化了偏好学习流程,使其成为训练LM以遵循人类偏好的有效方法。

Python库 – HuggingFace TRL包支持用于从偏好数据训练语言模型的DPO训练器

6

{ }^{6}

6。DPO训练过程需要特定格式的数据集。如果您使用默认的DPODataCollatorWithPadding数据整理器,则最终数据集对象必须包含三个特定条目,标签应如下所示:

提示选择拒绝

HuggingFace提供与DPO兼容的数据集,可以在此处访问。

【大模型微调】LLMs微调从基础到突破的最终指南:全面评审技术、研究、最佳实践、应用研究挑战与机遇

最大似然

图6.12:直接偏好优化(DPO)流程图。该图说明了用于微调大型语言模型的直接偏好优化(DPO)技术。该过程始于偏好数据

(

Y

w

>

Y

l

)

left(Y_{w}>Y_{l}
ight)

(Yw​>Yl​),其中

Y

w

Y_{w}

Yw​表示优选输出,

Y

l

Y_{l}

Yl​表示较少优选输出。通过最大似然估计过程,这些偏好数据用于优化模型的参数,生成最终的大型语言模型(LLM)。该方法旨在改善模型输出与用户期望之间的对齐,提高模型在特定任务中的有效性。(改编自74)

6.9.1 DPO的优点

与人类偏好的直接对齐:DPO直接优化模型以生成与人类偏好一致的响应,从而产生更为理想的输出。最小化对代理目标的依赖:与依赖下一个词预测的方法相比,DPO利用明确的人类偏好,导致的响应更能反映人类行为。在主观任务上的增强性能:对于需要主观判断的任务,如对话生成或创意写作,DPO在将模型与人类偏好对齐方面表现出色。

6.9.2 DPO的最佳实践

高质量偏好数据:模型的性能受到偏好数据质量的严重影响。确保数据集包含明确且一致的人类偏好。最优Beta值:尝试各种beta值以管理参考模型的影响。较高的beta值更强烈地优先考虑参考模型的偏好。超参数调优:优化学习率、批量大小和LoRA配置等超参数,以确定您数据集和任务的最佳设置。针对目标任务的评估:使用适当的指标持续评估模型在目标任务上的表现,以监控进展并确保实现预期结果。伦理考虑:注意偏好数据中的潜在偏见,采取措施减轻这些偏见,防止模型采纳和放大这些偏见。

6.9.3 使用DPO技术训练模型的教程

DPO训练的教程,包括SFT和DPO训练脚本的完整源代码,可以在这里找到。

6.9.4 DPO是否优于PPO以实现LLM对齐?

关于DPO优于PPO在LLM对齐方面的最近研究75探索了奖励基于和无奖励方法在RLHF中的有效性。基于奖励的方法,如OpenAI开发的那些,利用,从偏好数据构建的奖励模型并应用类似于近端策略优化(PPO)的演员-评论家算法来优化奖励信号。相反,无奖励方法,包括直接偏好优化(DPO)、RRHF和PRO,放弃明确的奖励函数,DPO专注于通过奖励函数的对数表示进行策略优化。

该研究的目标之一是确定DPO是否真正优于PPO在RLHF领域的表现。该研究结合了理论和实证分析,揭示了DPO的固有限制,并识别了增强PPO在RLHF中的实际性能的关键因素。理论研究发现,DPO可能由于利用分布外响应而导致偏倚的解决方案。实证结果表明,DPO的表现显著受到模型输出与偏好数据集之间分布变化的影响。此外,本研究强调,尽管迭代DPO可能提供比静态数据训练更好的效果,但在诸如代码生成等具有挑战性的任务上仍未能提升性能。对PPO的消融研究揭示了优化性能的基本要素,包括优势规范化、大批量大小和参考模型参数的指数移动平均更新。这些发现形成了实用调优指南的基础,证明了PPO在多种任务中的强大有效性及其在具有挑战性的代码竞赛任务中实现先进成果的能力。具体来说,在CodeContest数据集上,具有340亿参数的PPO模型超越了AlphaCode-41B,显示出在性能指标上有显著的提升。

6.10 优化路由和剪枝操作 (ORPO)

剪枝LLM涉及从神经网络中删除不必要或冗余的组件,以减少其大小和复杂性,从而增强其效率和性能。此过程帮助AI开发人员和工程师解决在资源有限的环境中部署AI模型所面临的挑战,例如移动设备、边缘计算或嵌入式系统。剪枝AI模型可以通过各种技术实现,每种技术适用于神经网络的类型和结构、剪枝目标和剪枝标准。以下是常见的方法:

权重剪枝:涉及去除对输出影响最小的权重或连接。此方法减少了模型中的参数和操作数量,但不一定降低内存占用或延迟。单元剪枝:删除激活或对输出贡献最低的整个单元或神经元。此技术可以减少模型的内存占用和延迟,但可能需要重新训练或微调以维持性能。过滤器剪枝:涉及去除在卷积神经网络中对输出重要性或相关性最小的整个过滤器或通道。此策略也降低内存占用和延迟,尽管可能需要重新训练或微调以保持性能76。

6.10.1 何时剪枝AI模型?

剪枝AI模型可以在模型开发和部署周期的不同阶段进行,具体取决于选择的技术和目标。

预训练剪枝:利用先前的知识或启发式方法在训练开始之前确定最佳网络结构。这种方法可以节省训练过程中的时间和资源,但可能需要仔细设计和实验以识别最佳配置。训练后剪枝:使用指标或标准评估每个网络组件在训练后的重要性或影响。此方法有助于保持模型性能,但可能需要额外的验证和测试以确保质量和稳健性。动态剪枝:根据反馈或信号在推理或运行时调整网络结构。此方法可以针对不同场景或任务优化模型,但在实施和执行时可能涉及更高的计算开销和复杂性。

6.10.2 剪枝的好处

减小大小和复杂性:剪枝减少了AI模型的大小和复杂性,使其更易于存储、传输和更新。提高效率和性能:剪枝后的模型更快速、更节能且更可靠。增强泛化和准确性:剪枝可以使模型更稳健,减少过拟合,且更能适应新数据或任务。

6.10.3 剪枝的挑战

大小减少与性能之间的平衡:在减少大小和复杂性与保持性能之间实现最佳平衡具有挑战性;过度或不足的剪枝可能降低模型质量和功能。选择适当的技术:为特定神经网络类型和结构选择合适的剪枝技术、标准和目标至关重要,因为不同的方法可能产生不同的效果和结果。评估与验证:剪枝模型需要进行彻底的评估和验证,以确保剪枝没有引入可能影响性能和稳健性的错误、偏见或漏洞。

第7章 第5阶段:评估与验证

7.1 评估和验证微调模型的步骤

设置评估指标:选择适当的评估指标,例如交叉熵,以测量预测与实际数据分布之间的差异。解读训练损失曲线:监控和分析训练损失曲线,以确保模型有效学习,避免欠拟合或过拟合的模式。进行验证循环:在每个训练周期后,在验证集上评估模型,以计算相关性能指标并跟踪模型的泛化能力。监控和解读结果:持续观察训练与验证指标之间的关系,以确保模型性能的稳定性和有效性。超参数调优和调整:调整关键超参数,如学习率、批量大小和训练周期数,以优化模型性能并防止过拟合。

7.2 设置评估指标

交叉熵是评估LLM在训练或微调过程中的关键指标。交叉熵源自信息论,量化了两个概率分布之间的差异。

7.2.1 交叉熵对LLM训练和评估的重要性

交叉熵对于训练和微调LLM至关重要。它作为损失函数,引导模型通过最小化预测数据与实际数据之间的差异来产生高质量的预测。在LLM中,每个潜在单词充当一个单独的类,模型的任务是在上下文中预测下一个单词。这个任务固有地复杂,需要模型深刻理解句法、语义和上下文。

7.2.2 超越交叉熵:高级LLM评估指标

尽管交叉熵仍然是基础,但有效评估LLM需要其他指标,以针对模型性能的不同方面进行定制。以下是一些用于LLM评估的高级指标:

困惑度

困惑度衡量概率分布或模型预测样本的能力。在LLM的上下文中,它评估模型对序列中下一个单词的不确定性。较低的困惑度表明性能更好,因为模型对其预测更有信心。

真实性

真实性评估LLM生成的信息的准确性。对于可能产生严重后果的应用,真实性特别重要。更高的真实性评分与更高的输出质量相关。

LLM不确定性

LLM的不确定性通过对数概率进行测量,有助于识别低质量的生成结果。较低的不确定性表明更高的输出质量。该指标利用每个生成的标记的

log

log

log概率,提供了模型对其响应的信心的洞察。

提示困惑度

该指标评估模型对输入提示的理解能力。较低的提示困惑度表明提示清晰且易于理解,可能会产生更好的模型性能。

上下文相关性

在检索增强生成(RAG)系统中,上下文相关性衡量检索到的上下文对用户查询的相关性。更高的上下文相关性通过确保模型利用最相关的信息来提高生成响应的质量。

完整性

完整性评估模型的响应是否完全针对基于提供的上下文的查询。高完整性确保响应中包含所有相关信息,增强了其实用性和准确性。

信息块归因和利用

这些指标评估检索的信息块对最终响应的贡献有效性。更高的信息块归因和利用评分表明模型有效地利用可用的上下文生成准确且相关的答案。

数据错误潜力

该指标量化模型从训练数据中学习所面临的困难。更高的数据质量导致较低的错误潜力,从而提高模型性能。## 安全指标

安全指标确保LLM的输出是适当且无害的。这些内容包含在本章的最后部分。集成这些高级指标提供了对LLM性能的整体视图,使开发人员能够更有效地微调和优化模型。通过采用以指标为首的方式,可以确保LLM不仅生成准确且高质量的输出,而且在各类应用中持续可靠地做到这一点$$^{1}$

7.3 理解训练损失曲线

训练损失曲线绘制了损失值与训练轮次的关系,对于监控模型性能至关重要。

[^9]

7.3.1 解读损失曲线

理想的训练损失曲线在初始阶段表现出损失的快速下降,随后逐渐减少并最终达到平稳。需要关注的特定模式包括:

欠拟合:高损失值在一段时间内没有显著降低,表明模型无法学习数据。过拟合:训练损失下降而验证损失上升,指示模型记住了训练数据。波动:显著的变化可能表明学习率过高或梯度噪声大。

【大模型微调】LLMs微调从基础到突破的最终指南:全面评审技术、研究、最佳实践、应用研究挑战与机遇

图 7.1:示例训练损失曲线显示了在金融问答数据集上微调Llama2 13B时损失随着迭代的降低。该曲线说明了微调过程在降低损失和提高模型性能方面的有效性。

7.3.2 避免过拟合

防止过拟合的技术包括:

正则化:在损失函数中添加惩罚项以鼓励较小的权重。早期停止:当验证性能不再改善时停止训练。Dropout:在训练过程中随机停用神经元,以降低对噪声的敏感性。交叉验证:将数据分为多个子集用于训练和验证,以评估模型的泛化能力。批量归一化:在训练过程中对每一层的输入进行归一化,以稳定学习过程。更大的数据集和批量大小:通过增加多样化数据的数量和批量大小来减少过拟合。

7.3.3 噪声梯度的来源

在机器学习模型(包括LLM)的训练过程中,噪声梯度是常见的。它们是由于随机梯度下降及其变体所导致的梯度估计的变异性。管理噪声梯度的策略包括:

学习率调度:在训练过程中逐渐降低学习率可以减少噪声梯度的影响。梯度裁剪:设置梯度值的阈值以防止大幅更新,避免训练不稳定。

7.4 执行验证循环

验证循环提供了对模型性能的无偏评估。典型步骤包括:

拆分数据:将数据集分为训练集和验证集。初始化验证:在每个轮次结束时评估模型在验证集上的表现。计算指标:计算相关性能指标,例如交叉熵损失。记录结果:记录每个轮次的验证指标。早期停止:如果验证损失在预定义的轮次内没有改善,则选择停止训练。

7.5 监控和解释结果

监控验证结果涉及分析验证指标随轮次变化的趋势。关键方面包括:

持续改进:如果训练和验证指标都在改善并达到平稳状态,则表明模型泛化良好。发散:如果训练指标改善而验证指标恶化,表明过拟合。稳定性:确保验证指标没有显著波动,指示稳定的训练过程。

7.6 超参数调整和其他调整

微调涉及调整关键超参数以实现最佳性能。重要的超参数包括:

学习率:决定更新模型权重的步长。一个好的起始点是

2

e

4

2 mathrm{e}-4

2e−4,但这可能会有所不同。批量大小:较大的批量大小会导致更稳定的更新,但需要更多的内存。训练轮次:平衡轮次的数量确保模型充分学习而不出现过拟合或欠拟合。优化器:像Paged ADAM这样的优化器优化内存使用,对大型模型有利。

其他可调参数包括dropout率、权重衰减和预热步骤。

7.6.1 数据的大小和质量

LLM的有效性直接受到其训练数据质量的影响。确保数据集干净、相关和充足是至关重要的。数据的清洁性是指标记数据中不存在噪声、错误和不一致。例如,训练数据中多次出现诸如“这篇文章建议…”的短语可能会损坏LLM的响应,并使其倾向于在不恰当的情况下更频繁地使用该特定短语。

7.7 基准测试微调后的LLM

现代LLM通过标准化基准进行评估,例如GLUE、SuperGLUE、HellaSwag、TruthfulQA和MMLU(见表7.1)。这些基准评估各种能力,并提供LLM性能的整体视图。

基准 描述 参考链接
GLUE 提供一组标准化的多样化NLP任务以评估不同语言模型的有效性 来源
SuperGLUE 与GLUE相比,更具挑战性和多样性的任务,并提供全面的人类基线 来源
HellaSwag 评估LLM完成句子的能力 来源
MMLU 评估大语言模型(LLM)执行多任务的能力 Source
IFEval 测试模型遵循明确指令的能力,重点关注格式遵循 Source
BBH (Big Bench Hard) 来自BigBench数据集的23个具有挑战性的任务,用于使用客观指标评估LLM Source
MATH 高中水平竞赛问题的汇编,使用LaTeX和Asymptote格式化 Source
GPQA 由博士级领域专家设计的问题知识数据集 Source
MuSR 一个包含复杂问题的数据集,要求模型将推理与长距离上下文解析相结合 Source
MMLU-PRO 更高质量并具有更具挑战性的多项选择题的MMLU精炼版本 Source
ARC 使用学龄前科学问题的数据集来测量机器推理能力 Source
COQA 用于构建对话式问答系统的数据集 Source
DROP 评估对段落文本进行离散推理的能力 Source
SQuAD 用于评估模型根据文本段落回答问题能力的阅读理解数据集 Source
TREC 评估文本检索方法的基准 Source
WMT 用于评估机器翻译模型的数据集和基准 Source
XNLI 用于评估跨语言理解的数据集 Source
PiQA 用于评估模型对物理交互理解的数据集 Source
Winogrande 一个用于评估常识推理的大规模数据集 Source

表7.1:用于评估语言模型性能的基准数据集的详细概述。

随着LLM的发展,基准也在不断演变,诸如BigCodeBench的新标准正在挑战当前基准并在该领域设定新标准。考虑到LLM的多样性及其能够执行的任务,基准的选择取决于LLM预期处理的特定任务。为了通用适用性,应使用各种用于不同下游应用和推理的基准。对于特定领域/任务的LLM,基准测试可以限制在与编码相关的相关基准如BigCodeBench之内。

7.8 在安全基准上评估微调的LLM

由于大型语言模型(LLMs)在受到破解提示影响时能够生成有害内容,其安全性受到越来越多的审查。这些提示可以绕过模型内部嵌入的安全和道德指导原则,类似于在传统计算机安全中使用的代码注入技术,以规避安全协议。值得注意的是,像ChatGPT、GPT-3和InstructGPT这样的模型容易受到此类操控,这可能会删除内容生成限制,从而潜在地违反OpenAI的指南。这突显了建立强大保障的必要性,以确保LLM的输出符合道德和安全标准。
DecodingTrust [77] 提供了对LLMs信任度的全面评估,特别是将GPT-4与GPT-3.5(ChatGPT)进行比较。此评估涵盖几个关键领域:

毒性:采用优化算法和生成模型创建具有挑战性的提示,以测试模型避免生成有害内容的能力。刻板印象偏见:使用一系列人口群体和刻板印象主题来评估模型偏见,帮助理解并减轻偏见响应。对抗性鲁棒性:通过挑战模型以复杂算法测试它们对抗对抗攻击的弹性,这些算法旨在欺骗或误导模型。分布外(OOD)鲁棒性:评估模型处理与训练数据显著不同的输入的能力,例如诗歌或莎士比亚风格的文本。对抗演示鲁棒性:使用包含误导性信息的演示测试模型在各种任务上的鲁棒性。隐私:评估不同级别的隐私,评估模型在互动中保护敏感信息的能力以及理解与隐私相关的背景。幻觉检测:识别模型生成的信息未建立在提供的上下文或事实数据上的情况。降低幻觉率提高了LLM输出的可靠性和可信度。语气适当性:评估模型输出是否保持了与给定上下文相称的语气。对于客户服务、医疗保健和其他敏感领域的应用特别重要。机器伦理:伦理评估涉及用需要道德判断的场景测试模型,利用如ETHICS和Jiminy Cricket等数据集。公平性:通过生成可变受保护属性的任务来评估模型的公平性,确保不同人口群体的响应是公平的。

用于评估上述八个安全维度的数据集可在此处找到
与HuggingFace合作,LLM安全排行榜利用DecodingTrust的框架提供统一的LLM安全评估平台。这使研究人员和从业者能够更好地理解与LLM相关的能力、局限性和风险。鼓励用户将他们的模型提交给HuggingFace进行评估,以确保它们符合该领域不断发展的安全性和可靠性标准。

7.9 使用AI模型评估微调后的LLM安全性

7.9.1 Llama Guard

Llama Guard

2

[

78

2[78

2[78 是一个基于LLM的安全模型,用于管理对话AI应用中的风险。它有效地对输入提示和来自AI代理的响应进行分类,使用详细的安全风险分类法以识别潜在的法律和政策风险。它利用详细的安全风险分类法,旨在识别和管理与对话AI互动相关的潜在法律和政策风险。该分类法在以下领域实现了有效分类:

暴力与仇恨,处理可能煽动暴力行为或歧视的内容。性内容,针对涉及未成年人的性露骨材料或行为。枪支与非法武器,涉及对非法武器的宣传或指导。受监管或控制的物质,涵盖非法毒品和其他受控物质。自杀与自残,旨在处理可能鼓励自我毁灭行为的内容。犯罪策划,处理可能协助策划或实施犯罪活动的内容。

Llama Guard 2的核心是其强大的框架,允许对提示和响应进行分类,得到了高质量数据集的支持,从而增强了其监测对话交流的能力。Llama Guard 2基于Llama2-7b模型进行操作,经过指令微调,能够在OpenAI审核评估数据集和ToxicChat等基准上达到或超过现有内容审核工具的能力。
该模型支持多类分类并生成二元决策分数。其指令微调允许广泛的任务定制和输出格式适应。此功能使用户可以根据特定用例修改分类法类别,并支持灵活的提示能力,包括零-shot和few-shot应用。Llama Guard的适应性和有效性使其成为开发人员和研究人员的重要资源。通过公开其模型权重,Llama Guard 2鼓励持续的发展和定制,以满足社区内AI安全的不断变化的需求。
Llama Guard 3代表了相对于Llama Guard 2的最新进展,经过Llama 38 b模型的微调。两个版本之间的关键区别在于,Llama Guard 3通过引入三个新类别:诽谤、选举和代码解释器滥用,扩展了Llama Guard 2的能力。
Python库:Llama Guard 3可以通过HuggingFace的AutoModelForCausalLM

2

{ }^{2}

2访问。详细教程可以在此链接找到。请注意,访问该模型需要向Hugging Face提交用户详细信息的请求。此外,通过提供用户详细信息,可以从Meta平台下载模型权重,链接可以在此处找到。
这两个模型的提示格式也不同,Llama Guard 2的特定格式可在此处找到,Llama Guard 3的格式可在此处找到。

7.9.2 Shield Gemma

ShieldGemma 79是一个基于Gemma2平台的先进内容审核模型,旨在提高LLMs与用户之间交互的安全性和可靠性。它有效地过滤用户输入和模型输出,以减轻包括攻击性语言、仇恨言论、虚假信息和露骨内容在内的关键伤害类型。该模型的可伸缩性从2B到27B参数不等,可以满足特定需求,如减少在线安全应用中的延迟或增强复杂决策任务的性能。
ShieldGemma的一个显著特点是其对数据审核的新方法。它利用合成数据生成技术创建高质量数据集,这些数据集能够有效抵御对抗提示,并在不同身份群体中保持公平。这减少了大量人工标注的需求,简化了数据准备过程,同时确保模型的有效性。与常规提供固定大小模型和有限自定义的现有内容审核工具(如LlamaGuard和WildGuard)相比,ShieldGemma灵活的架构和先进的数据处理能力提供了更具适应性和高效的解决方案。这些创新使ShieldGemma成为基于LLM的内容审核的重要进步,为开发人员和研究人员提供了一种多功能工具,促进了各种平台上的更安全、更可靠的AI交互。Python库:ShieldGemma系列可通过AutoModelForCausalLM在HuggingFace上获取。模型可以在这里访问。有关在Google Colab上运行ShieldGemma 2B的教程可以在这里找到。与Llama Guard系列类似,ShieldGemma系列也有提示的指南,可以在这里找到。

7.9.3 WILDGUARD

WILDGUARD 80是一款创新的开源工具,旨在增强与大型语言模型(LLMs)互动的安全性。该工具解决了三个关键的审查任务:检测用户提示中的有害意图、识别模型响应中的安全风险,以及确定何时模型适当地拒绝不安全的请求。WILDGUARD MIX

3

{ }^{3}

3是其开发的核心,这是一份经过精心策划的数据集,由92,000个标记示例组成,其中包含良性提示和绕过安全措施的对抗性尝试。该数据集分为WILDGUARD TRAIN,用于训练模型,以及WILDGUARD TEST,由高质量的人为标注示例组成,用于评估。

WILDGUARD模型本身是在Mistral-7B语言模型上使用WILDGUARD TRAIN数据集进行微调,使其能够以统一的多任务方式执行所有三个审查任务。结果显示,WILDGUARD在有效性上超越了现有的开源审查工具,特别是在处理对抗性提示和准确检测模型拒绝方面表现出色。在许多基准测试中,WILDGUARD的表现与GPT-4(一个更大、封闭源代码的模型)不分上下或超过。

有关WILDGUARD的快速入门指南和额外信息可在GitHub上找到,可以在这里访问。

第8章 第6阶段:部署

8.1 部署微调模型的步骤

模型导出:将微调后的模型以适当的格式(例如ONNX、TensorFlow SavedModel、PyTorch)保存以进行部署。基础设施设置:准备部署环境,包括必要的硬件、云服务和容器化工具。API开发:创建API以允许应用程序与模型进行交互,促进预测请求和响应。部署:将模型部署到生产环境,使最终用户或应用程序可访问。

8.2 LLM部署的云服务提供商

基于云的大型语言模型(LLM)推理通常采用基于处理的令牌数量的定价模型。用户根据模型分析或生成的文本量付费。虽然这种定价结构对于偶尔或小规模使用可能具有成本效益,但对于较大或持续的工作负载可能并不总是经济。

在某些情况下,内部托管LLM解决方案可能在长期成本节省方面提供更好的选择,尤其是在持续或高容量使用时。管理自己的基础设施提供了对资源分配的更大控制,并允许根据具体需求进行成本优化。此外,自托管在数据隐私和安全性方面提供了优势,因为敏感信息保持在您自己的环境中。

然而,在将云解决方案与自托管替代方案进行比较时,仔细评估总拥有成本至关重要。此评估应考虑硬件费用、维护和运营开销等因素。最终,决策应通过全面的成本效益分析来引导,考虑短期负担能力和长期可持续性。

几家公司提供大型语言模型(LLMs)的部署服务,提供一系列工具和平台,以高效实施和管理这些模型。下面是一些著名提供商及其服务的详细列表:

– 亚马逊网络服务(AWS)

亚马逊Bedrock:该服务提供了一套基础模型,包括Amazon Titan,支持各种NLP任务,如摘要和文本生成。Bedrock可与其他AWS服务无缝集成,实现可扩展和安全的部署。亚马逊SageMaker:提供端到端机器学习服务,包括构建、训练和部署LLM的工具。SageMaker JumpStart提供了预训练模型和逐步指导,以简化部署过程。教程:该教程说明了在亚马逊Bedrock上部署LLM代理。另一个教程解释了如何使用Sagemaker Canvas和亚马逊Bedrock进行端到端微调和部署LLM。亚马逊Bedrock的LLM用户一般指南可以在这里找到。微软AzureAzure OpenAI服务:该服务提供对OpenAI强大模型的访问,如GPT3.5和Codex。它提供嵌入、使用DALL-E生成图像以及使用Whisper进行语音转文本的功能。Azure与OpenAI模型的集成确保了各种应用的强大部署选项。Azure机器学习:支持自定义和预训练模型的部署,提供模型管理、部署和监控的工具。它与Azure更广泛的生态系统集成,以实现可扩展和安全的机器学习操作。教程:这是一个关于在Microsoft Azure平台上创建和部署Azure OpenAI服务的教程。

– 谷歌云平台(GCP)

Vertex AI:该平台允许部署大型语言模型,提供训练、调优和服务模型的工具。Vertex AI支持BERT和GPT-3等模型,提供广泛的MLOps能力以实现端到端管理。Cloud AI API:提供用于NLP任务的API,如翻译、情感分析和实体识别。这些API由谷歌强大的基础设施支持,确保高性能和可靠性。教程:该文档包含了在GCP中训练和部署LLM的教程。

– Hugging Face

推理API:该服务允许用户部署和管理托管在Hugging Face基础设施上的LLM。它支持来自Transformers库的各种模型,并提供易于使用的API,将这些模型集成到应用程序中。Spaces:一个协作环境,用户可以使用Hugging Face的托管平台部署和共享模型。它支持部署自定义模型和互动演示。教程:该文档包含了使用HuggingFace推理API训练和部署LLM的教程。

– 其他平台

OpenLLM:在这里提供部署解决方案。Deepseed:在这里提供部署解决方案。

8.3 在推理过程中优化模型性能的技术

在推理过程中优化模型性能对于高效部署大型语言模型(LLMs)至关重要。以下先进技术提供了多种策略,以提高性能、降低延迟并有效管理计算资源。

8.3.1 传统本地GPU部署

这种传统的部署大型语言模型(LLMs)的方法涉及使用图形处理单元(GPU),由于其并行处理能力,使快速有效的推理成为可能。然而,这种方法需要前期的硬件投资,可能不适合需求波动或预算有限的应用。基于GPU的部署面临几个挑战:

在需求低时,资源利用率可能会受到影响,导致服务器闲置。向上或向下扩展通常需要物理硬件修改,这可能耗时。集中式服务器可能会引入单故障点和可扩展性限制。

为缓解这些问题,可以采用多种策略,如在多个GPU之间进行负载平衡、后备路由、模型并行和数据并行,以获得更好的结果。使用PartialState进行分布式推理等优化技术可以进一步提高效率。

示例用例:大规模NLP应用

例如,一个大型电子商务平台实施了传统的本地GPU部署,以处理每天数百万的客户查询。通过利用负载平衡和模型并行,他们显著降低了延迟并提高了客户满意度。

8.3.2 分布式LLM:

类似种子的部署和并行前向传递一种针对大型语言模型(LLMs)的创新部署策略涉及以去中心化、类似迅雷的方式将它们分布在多个GPU上。像Petals

1

{ }^{1}

1这样的库可以执行此任务。Petals作为一个去中心化的管道,旨在通过将模型分区为不同的块或层,快速进行神经网络推理,这些块或层分布在多个地理位置分散的服务器上。用户可以将自己的GPU连接到此网络,既作为贡献者,也作为可访问和将模型应用于其数据的客户端。

当收到客户端请求时,网络将其路由经过一系列优化以最小化总前向传递时间的服务器。每个服务器动态选择最优的块集,以适应当前的管道瓶颈。此框架利用去中心化原则,在各个区域之间分配计算负载,共享计算资源和GPU,从而降低个别组织的财务负担。这种协作方式不仅优化资源利用,还促进了致力于共享AI目标的全球社区。

【大模型微调】LLMs微调从基础到突破的最终指南:全面评审技术、研究、最佳实践、应用研究挑战与机遇

图8.1: 使用类似迅雷的方法进行分布式LLM部署的概念表示。这张图展示了大型语言模型(LLM)在类似迅雷的方法下的分布式部署,其中多个GPT模型层(堆叠)分布在不同的节点(由厨师表示)上,并执行并行前向传递。该过程模拟了客户(输入数据)通过餐厅(中间处理层)到厨师(模型层)的订单流,突显了并行处理和分布式计算在处理大规模语言模型时的效率。这种方法对降低推理延迟和提高LLM在不同计算环境中可扩展性至关重要。(改编自[81])

示例用例:全球研究合作

一组研究机构利用Petals框架实施了一种分布式LLM,以分析不同大陆的大型数据集。通过利用Petals的去中心化特性,他们在处理和协作模型开发方面实现了高效率。

8.3.3 基于WebGPU的LLM部署

这种针对大型语言模型(LLMs)的部署选项涉及利用WebGPU,这是一种为网络平台上的图形和计算应用提供低级接口的Web标准。通过WebGPU,组织可以直接在Web浏览器中利用GPU的强大功能,从而在基于Web的应用程序中实现高效推理。WebGPU使高性能计算和图形渲染直接在客户端的Web浏览器中成为可能。它允许开发人员利用客户端的GPU进行图形渲染、加速计算工作负载和执行并行处理,所有这一切都无需插件或额外的软件安装。此功能允许在客户端设备上高效地执行复杂计算,从而实现更快和更灵活的Web应用程序。

8.3.4 使用WebLLM在WebGPU上部署LLM

客户端可以直接在其浏览器中访问强大的大型语言模型和聊天机器人,利用WebGPU加速。这种方法消除了对服务器的依赖,为用户提供了卓越的性能和增强的隐私。WebLLM使大型语言模型能够直接在客户端的浏览器中执行过滤个人身份信息(PII)或命名实体识别(NER)等任务,而无需通过网络传输数据。这确保了通过在客户端保留敏感信息来增强隐私和安全。

【大模型微调】LLMs微调从基础到突破的最终指南:全面评审技术、研究、最佳实践、应用研究挑战与机遇

图8.2: 基于WebGPU的LLM部署:该图展示了使用WebGPU技术部署大型语言模型(LLM)的架构。CPU管理将提示推理任务分配到多个GPU,后者并行处理这些提示,提高了基于Web的平台上LLM部署的效率和可扩展性。(改编自[81])

WebLLM的其他应用案例

语言翻译:支持在浏览器中实时翻译文本,使用户可以跨语言障碍进行交流,而无需通过网络传输消息。代码自动补全:开发代码编辑器,根据上下文提供智能补全建议,利用WebLLM理解和预测代码片段。客户支持聊天机器人:在网站上实施聊天机器人,提供即时客户支持,并回答常见问题,而无需依赖外部服务器。数据分析和可视化:创建基于浏览器的数据分析和可视化工具,WebLLM协助数据处理、解释和生成洞察。个性化推荐:开发推荐引擎,提供根据用户偏好和行为的个性化产品推荐、内容建议或电影/音乐推荐。隐私保护分析:开发分析平台,在浏览器中直接进行数据分析,确保敏感信息保持在客户端,降低数据泄露的风险。

示例用例:隐私关注的Web应用

一家医疗初创企业利用WebLLM在浏览器中直接处理患者信息,确保数据隐私和符合医疗法规。这种方法显著降低了数据泄露的风险,提高了用户信任。

8.3.5 量化LLM

模型量化是一种用于通过用更少的位表示参数来减少AI模型大小的技术。在传统的机器学习模型中,每个参数(例如,神经网络中的权重和偏置)通常以32位浮点数存储,需要大量内存和计算资源,特别是对于大型模型。量化旨在通过降低这些参数的精度来缓解这一问题。例如,而不是将每个参数存储为32位浮点数,它们可以使用更少的位表示,如8位整数。这种压缩减少了模型的内存占用,使其在资源受限的环境(如移动设备或边缘设备)中更高效地部署和执行。QLoRA是这种LLM量化的一个流行示例,可用于在本地部署LLM或将其托管在外部服务器上。

示例用例:边缘设备部署

一家科技公司使用量化LLM在移动设备上部署了先进的NLP模型,实现了诸如语音识别和翻译等应用的离线功能。这种部署显著提高了应用的性能和用户体验,减少了延迟并降低了对互联网连接的依赖。

8.3.6 vLLMs

v

L

L

M

2

v L L M^{2}

vLLM2系统通过采用块级内存管理方法和抢占式请求调度高效处理请求。它利用PagedAttention 82算法管理键值(KV)缓存,从而减少内存浪费和碎片化。通过批处理请求并在多个样本之间共享物理块,vLLM优化了内存使用并提高了吞吐量。性能测试表明,vLLM在各种解码场景中超过其他系统。考虑一个基于变换器的模型,其任务是概括一本冗长的书。传统的变换器同时处理整本书,这在计算和内存上都可能很密集,尤其是对于较长的文本。使用PagedAttention,该书被划分为更小的段或页面。模型随后专注于一次总结一页,而不是同时总结整本书。这种方法降低了计算复杂性和内存要求,使得高效处理和总结冗长文本变得更加可行。

示例用例:高容量内容生成

一家内容营销机构实施了vLLM以生成大量SEO优化的内容。通过利用vLLM的高效内存管理,他们能够同时处理多个请求,显著提高了内容生产率,同时保持高质量。

8.4 部署LLM的关键考虑因素

有效部署大型语言模型(LLMs)需要仔细规划和考虑各种因素,以确保最佳性能、成本效益和安全性。关键考虑因素包括:

– 基础设施要求:

计算资源:确保有足够的CPU/GPU资源以应对模型的计算需求。高性能GPU通常是高效推理和训练所必需的。内存:LLMs,特别是那些具有数十亿参数的模型,需要大量内存。可以采用诸如量化和模型并行等内存管理技术来优化使用。

– 可扩展性:

水平扩展:计划水平扩展以将负载分散到多个服务器,从而改善性能并应对需求增加。负载均衡:实施负载均衡策略,以确保请求的均匀分布,防止任何单点故障。

– 成本管理:

基于令牌的定价:了解云服务提供商提供的基于令牌的定价模型的成本影响。该模型是根据处理的令牌数量收费,在高使用情况下可能变得昂贵。自我托管:评估自我托管与云托管的成本和收益。对于一致的高容量使用,自我托管可能提供长期的节省,但需要在硬件和持续维护上进行大量的前期投资。

– 性能优化:

延迟:最小化延迟以确保实时性能,特别是对于需要即时响应的应用程序,如聊天机器人和虚拟助手。

吞吐量:最大化吞吐量,以有效处理大量请求。批处理和高效的内存管理(例如,PagedAttention)等技术可以提供帮助。

– 安全与隐私:

数据安全:实施强有力的安全措施以保护敏感数据,包括加密和安全访问控制。隐私:确保遵守数据隐私法规,如果进行自托管,则将敏感数据保留在您的环境中,或者确保云服务提供商遵守相关隐私标准。维护与更新:模型更新:定期更新模型,以纳入新数据并提升性能。如果可能,自动化此过程以减少手动工作。系统维护:计划定期维护基础设施,以防止停机并确保平稳运行。

– 灵活性与自定义:

微调:允许对模型进行微调,使LLM适应特定用例和数据集。微调可以提高响应的准确性和相关性。API集成:确保部署平台支持通过API和SDK与现有系统和工作流程的轻松集成。

– 用户管理:

访问控制:实施基于角色的访问控制,以管理谁可以部署、使用和维护LLM。监控与日志记录:建立全面的监控和日志记录系统,以跟踪使用情况、性能和潜在问题。这有助于主动故障排除和优化。合规性:监管合规:确保部署符合所有相关的监管和法律要求,包括数据保护法律,如GDPR、HIPAA等。伦理考虑:实施伦理准则,以避免偏见并确保负责任地使用LLM。

– 支持与文档:

技术支持:选择提供强大技术支持和资源的部署平台。文档:为开发人员和用户提供全面的文档,以促进平稳的部署和使用。

第9章 第7阶段:监控与维护

9.1 部署微调LLM的监控和维护步骤

持续监控和维护微调的LLM对于确保它们的最佳性能、准确性和安全性至关重要。以下是该过程中的关键步骤:

设置初始基准:通过在全面的测试数据集上评估模型来建立初始性能基准。记录准确性、延迟、吞吐量和错误率等指标,作为未来监控的参考点。性能监控:实施系统以持续跟踪关键性能指标,如响应时间、服务器负载和令牌使用量。定期将这些指标与已建立的基准进行比较,以检测任何偏差。准确性监控:持续评估模型预测与真实数据集的对比。使用精确度、召回率、F1分数和交叉熵损失等指标,以确保模型保持高准确性水平。错误监控:跟踪和分析错误,包括运行时错误和预测错误。实施日志记录机制,以捕获有关每个错误的详细信息,以便进行故障排除和改进。日志分析:保持每个预测请求和响应的全面日志,包括输入数据、输出预测、响应时间和遇到的错误。定期审查日志以识别模式和改进领域。警报机制:建立自动警报系统,以通知利益相关者任何异常或与预期性能指标的偏差。将警报与Slack、PagerDuty或电子邮件等通信工具集成,以便及时响应。反馈机制:与最终用户建立反馈机制,以收集模型性能和用户满意度的见解。利用这些反馈不断精炼和改进模型。安全监控:实施强有力的安全措施,以监测威胁,包括未经授权的访问、数据泄露和对抗性攻击。使用加密、访问控制和定期安全审计来保护模型和数据。漂移检测:使用统计测试和漂移检测器持续监控数据和概念漂移。定期在保留数据集上评估模型,以检测输入数据分布或模型性能的变化。模型版本控制:对模型的不同迭代保持版本控制。跟踪每个版本的性能指标,以确保最优模型在生产中运行。文档和报告:详细记录监控程序、指标和发现。定期生成报告,以向利益相关者提供有关模型性能和维护活动的见解。定期评估和更新:定期评估和更新监控流程,以纳入新技术、工具和最佳实践,确保监控系统保持有效并与时俱进。

9.2 模型性能的持续监控

尽管大型语言模型(LLM)应用程序经历某种形式的评估,但在大多数情况下,持续监控仍然实施不足。本节概述了建立有效监控程序所需的组成部分,旨在保护用户和维护品牌完整性。

9.2.1 功能监控

最初,持续监控基本指标至关重要。这包括跟踪请求量、响应时间、令牌利用率、产生的成本和错误率等指标。

9.2.2 提示监控

在功能指标之后,应关注监控用户生成的提示或输入。可读性等指标可以提供有价值的见解。应聘请LLM评估者以检测响应中的潜在毒性。此外,嵌入距离等指标对于确保随时间变化的用户交互的适应性也非常重要。
引入新的评估类别涉及识别对抗性尝试或恶意提示注入,这在初步评估中通常被忽视。与已知对抗性提示的参考集进行比较有助于识别和标记恶意活动。评估LLM在将提示分类为良性或恶性方面发挥着重要作用。

9.2.3 响应监控

监控响应涉及几个关键检查,以确保与预期结果的一致性。相关性、一致性(幻觉)、主题一致性、情感及其随时间演变等参数至关重要。由于其关键影响,毒性和有害输出相关的指标需要频繁监控。提示泄露代表一种对抗性策略,其中敏感的提示信息被非法提取自应用存储的数据。监控响应并将其与提示指令数据库进行比较可以帮助检测此类泄露。嵌入距离指标对此非常有效。定期在评估数据集上进行测试提供准确性基准,并突出任何随时间变化的性能漂移。能够管理嵌入的工具允许导出表现不佳的输出数据集以进行有针对性的改进。

9.2.4 警报机制和阈值

有效的监控需要对警报阈值进行良好的校准,以避免过多的误报。实施多变量漂移检测和警报机制可以提高准确性。考虑误报率和设置阈值的最佳实践对于有效的监控系统设计至关重要。警报功能应包括与Slack和PagerDuty等通信工具的集成。一些系统在问题提示触发警报的情况下提供自动响应阻止功能。类似机制可以在响应传递给用户之前,检查个人识别信息(PII)、毒性和其他质量指标。根据特定应用的细微差异或数据科学家的创新见解定制的指标可以显著增强监控效率。灵活地纳入此类指标对于适应不断变化的监控需求和该领域的进展至关重要。### 9.2.5 监控用户界面 (UI)

监控系统的用户界面至关重要,通常以监控指标的时间序列图表为特色。差异化的用户界面有助于深入分析警报趋势,支持根本原因分析。高级用户界面功能可能包括通过聚类和投影对嵌入空间的可视化,以提供对数据模式和关系的洞察。成熟的监控系统根据用户、项目和团队对数据进行分类,确保基于角色的访问控制 (RBAC) 以保护敏感信息。优化用户界面中的警报分析仍然是一个可以显著降低误报率和提高操作效率的改进领域。

9.3 更新 LLM 知识

为了提高 LLM 的知识库,持续的预训练被用来帮助 LLM 随着最新知识和信息的发展而进化。世界和语言不断变化。新信息不断出现,趋势发生变化,文化参考也在改变。基于静态数据训练的 LLM 可能会变得过时,从而导致:

事实错误:过时的信息可能导致 LLM 提供不准确的回答。不相关性:模型可能会错过当前事件的上下文或使用过时的参考。偏见延续:如果没有通过更新进行处理,训练数据中存在的偏见可能会根深蒂固。

9.3.1 重新训练方法

定期重新训练:这涉及定期(每周、每月、每年)使用新数据刷新模型的知识库。这是一种简单的方法,但需要持续提供高质量、无偏见的数据。触发式重新训练:这种方法监控 LLM 的性能。当准确率或相关性等指标低于某一阈值时,触发重新训练过程。这种方法更具动态性,但需要健全的监控系统和明确的性能基准。

9.3.2 其他方法

微调:可以通过在较小的特定领域数据集上对 LLM 进行微调,使其适应特定任务。这允许专业化,而无需完全重新训练。主动学习:这种方法涉及选择性地查询 LLM,以识别其知识不足的领域。检索到的信息用于更新模型。

9.3.3 关键考虑因素

数据质量和偏见:新的训练数据必须经过仔细筛选,以确保质量和减少偏见。人工注释和公平性检查等技术至关重要。计算成本:重新训练 LLM 可能计算代价高昂,需要大量资源。优化方法,如迁移学习(使用预训练模型作为起点),可以帮助降低成本。停机时间:重新训练通常需要时间,导致 LLM 停机。像滚动更新或部署多个模型这样的策略可以最大限度地减少服务中断。版本控制:跟踪 LLM 和其训练数据的不同版本对于在性能问题发生时进行回滚至关重要。

9.4 LLM 更新的未来

研究正在进行中,以开发更高效和有效的 LLM 更新策略。一个有前景的领域是持续学习,LLM 能够从新数据流中不断学习和适应,而无需从头开始重新训练。持续学习旨在通过使模型能够通过新信息增量更新,从而减少频繁全面重新训练的需求。这种方法可以显著增强模型保持与不断变化的知识和语言使用相关性的能力,改善其长期性能和相关性。

迁移学习和元学习方面的创新也有助于 LLM 更新的进展。这些技术允许模型利用现有知识,并迅速适应新任务或领域,所需额外训练极少。通过集成这些先进的学习方法,未来的 LLM 将在处理和理解新信息方面变得更加灵活和高效。此外,硬件和计算资源的持续改进将支持更频繁和高效的更新。随着处理能力的提升和变得更加可及,更新大型模型的计算负担将降低,从而实现更规律和全面的更新。

学术界与产业界的协作在推动这些进展中至关重要。通过分享研究成果和最佳实践,该领域可以共同朝着更加稳健和高效的 LLM 更新方法论迈进,以确保模型随着时间的推移保持准确、相关和值得使用。

第10章 针对 LLM 的工业微调平台和框架

微调技术的演变得益于领先的科技公司和平台,它们引入了创新的框架和服务。像 HuggingFace、亚马逊云服务 (AWS)、微软 Azure 和 OpenAI 等公司开发了简化和民主化微调过程的工具和平台。这些进展不仅降低了利用最先进的 AI 模型的准入门槛,还使得各行各业能够广泛应用,从医疗、金融到客户服务和内容创作等。每个平台都提供独特的功能,以满足不同的需求,无论是通过自动化的微调工作流程、可扩展的云训练环境,还是可访问的 API 接口来部署自定义模型。

例如,HuggingFace 通过其 Transformers 库

1

{ }^{1}

1 和 Autotrain

2

{ }^{2}

2、SetFit 等工具取得了显著进展,使用户能够以最少的编码和数据进行模型的微调。他们的平台提供了强大的基础设施,支持研究社区和行业从业人员,促进了定制 AI 解决方案的快速开发和部署。同样,AWS 的 SageMaker

3

{ }^{3}

3 和 SetFit

4

{ }^{4}

4 提供了一整套涵盖整个机器学习生命周期的服务,从数据准备和训练到模型部署和优化,使其成为企业级应用的全面解决方案。

另一方面,微软 Azure 将其微调能力与企业级工具和服务集成,提供像 Azure 机器学习和 Azure OpenAI 服务等解决方案,这些服务满足希望将先进 AI 融入业务运营的大型组织的需求。Azure 在 MLOps 和与其他 Azure 服务的无缝集成方面的专注确保了微调的模型能够高效地部署和维护于生产环境中。与此同时,OpenAI 开创了“微调即服务”的概念,允许企业通过用户友好的 API

5

5

5^{5}

55 利用其强大的模型如 GPT-4,实现自定义模型适应,而无需内部的 AI 专业知识或基础设施。

这些科技公司的共同努力不仅提高了微调的效率和可扩展性,还使得对复杂 AI 工具的获取变得更加民主化。通过降低技术门槛并提供全面、用户友好的平台,这些创新使得更多行业能够部署针对特定需求的先进 AI 模型。表10.1和表10.2提供了不同供应商的LLM微调工具和框架的快速比较。

参数 NVIDIA NeMo Hugging Face AutoTrain API Amazon Bedrock AWS SageMaker JumpStart Hugging Face Trainer API
主要用例 使用先进的 NVIDIA GPU 进行 LLM 的自定义微调。 用最少的代码进行 LLM 的微调和部署。 在 AWS 基础设施上微调和部署 LLM。 在 AWS 生态系统内简化微调和部署。 对 LLM 进行手动微调,详细控制训练过程。
模型支持 支持多种大规模预训练模型,包括 Megatron 系列。 支持 Hugging Face 模型库中的广泛预训练模型。 支持各种 LLM,如 Amazon Titan 和第三方模型。 来自 AWS 和合作伙伴的预训练模型;与自定义模型的集成。 支持 Hugging Face 模型库中的大量模型。
数据处理 用户提供特定任务的数据进行微调,使用 NVIDIA 的基础设施处理。 通过简单接口上传数据集;AutoTrain 处理预处理和模型训练。 数据在 AWS 环境中上传和管理;与 AWS 数据服务集成。 在 AWS 内上传和处理数据;支持各种数据格式。 用户手动预处理数据并管理训练步骤。
定制程度 高;对微调过程和模型参数有广泛控制。 中等;自动化过程有一些定制选项。 高;详细配置和与 AWS 服务的集成。 中等;预配置设置,并提供一些定制选项。 非常高;对微调的每个方面有详细控制。
可扩展性 高;利用 NVIDIA 的 GPU 能力进行高效扩展。 高;通过 Hugging Face 的云基础设施具有可扩展性。 非常高;可在 AWS 的广泛云基础设施上扩展。 高;在 AWS 云生态系统内可扩展。 高;可扩展性取决于所用基础设施(如本地 vs. 云)。
生态系统集成 与 NVIDIA 工具(例如 TensorRT)和基于 GPU 的工作流深度集成。 与 Hugging Face 生态系统及其他 ML 工具良好集成。 与 AWS 服务无缝集成(例如 S3、Lambda、SageMaker)。 与 AWS 服务强集成;易于连接数据流水线和分析。 与 Hugging Face 生态系统及其他基于 Python 的 ML 工具集成。
数据隐私 用户必须确保数据隐私合规;NVIDIA 处理过程中的数据。 数据在 Hugging Face 的环境中处理;隐私取决于数据处理实践。 在 AWS 环境中对数据隐私有很强的关注;符合各种标准。 强大的 AWS 隐私和安全措施;遵循行业标准。 用户管理;取决于模型和数据的托管位置。
目标用户 需要高级定制和 LLM 微调性能的企业和开发者。 寻求简单、自动化 LLM 微调解决方案的开发者和企业。 集成或寻求利用 AWS 云服务的企业和开发者。 寻求在 AWS 内部精简 AI/ML 解决方案的企业和开发者。 需要对训练有详细控制的研究人员、开发者和 ML 工程师。
限制 资源需求高且潜在成本;依赖 NVIDIA 生态系统。 对微调细节的控制较少;基于云,可能不适合所有本地需求。 依赖于 AWS;潜在的供应商锁定,成本管理复杂。 限制于 AWS 服务;预配置选项可能限制深度定制。 需要技术专长;设置和管理更加复杂。

表 10.1:LLM 微调平台的详细比较(第一部分)。该表提供了关于多种大型语言模型(LLM)微调工具的全面比较,包括 NVIDIA NeMo、Hugging Face AutoTrain API、Amazon Bedrock、AWS SageMaker JumpStart 和 Hugging Face Trainer API。它涵盖了多个方面,如主要用例、模型支持、数据处理、定制化水平、可扩展性、部署选项、与生态系统的集成、数据隐私、目标用户和每个工具的限制。

参数 OpenAI 微调 API Google Vertex AI Studio Microsoft Azure AI Studio LangChain
主要用例 基于 API 的微调,使用自定义数据集的 OpenAI 模型。 在 Google Cloud 内进行端到端 ML 模型的开发和部署。 在 Azure 上进行端到端 AI 开发、微调和部署。 使用 LLM 构建应用程序,具有模块化和可定制的工作流。
模型支持 限于 OpenAI 模型,如 GPT-3 和 GPT-4。 支持 Google 的预训练模型和用户自定义模型。 支持 Microsoft 的模型和在 Azure 内微调的自定义模型。 支持与各种 LLM 和 AI 工具(例如 OpenAI、GPT-4、Cohere)的集成。
数据处理 用户通过 API 上传数据集;OpenAI 处理预处理和微调。 数据在 Google Cloud 中管理;支持多种数据格式。 数据集成在 Azure 生态系统内;支持多种格式和来源。 数据处理灵活,取决于具体的 LLM 和使用的集成。
定制化水平 中等;侧重于易用性,深度定制有限。 高;提供自定义模型训练和详细配置的部署。 高;通过 Azure 的 AI 工具提供大量定制选项。 非常高;允许详细定制工作流、模型和数据处理。
可扩展性 高;可通过 OpenAI 的云基础设施进行扩展。 非常高;利用 Google Cloud 的基础设施进行扩展。 非常高;可以在 Azure 的全球基础设施上扩展。 高;可扩展性取决于具体的基础设施和使用的模型。
部署选项 通过 API 部署,集成到使用 OpenAI 云的应用程序中。 在 Google Cloud 内进行部署;与其他 GCP 服务集成。 在 Azure 内进行部署;与 Azure 的服务套件集成。 在自定义基础设施中部署;与各种云和本地服务集成。
生态系统集成 限于 OpenAI 生态系统;通过 API 与应用良好集成。 与 Google Cloud 服务(例如 BigQuery、AutoML)无缝集成。 与 Azure 的服务(例如 Data Factory、Power BI)深度集成。 与多种工具、API 和数据源灵活集成。
数据隐私 由 OpenAI 管理;用户必须考虑数据传输和隐私影响。 在 Google Cloud 环境中有强大的隐私和安全措施。 在 Azure 环境中有强大的隐私和安全措施。 取决于使用的集成和基础设施;用户管理隐私。
目标用户 寻求简单的基于 API 的 LLM 微调的开发者和企业。 集成到 Google Cloud 的开发者和企业或寻求利用 GCP。 集成到 Azure 或寻求利用 Azure AI 工具的企业和开发者。 需要构建复杂的模块化 LLM 应用且具有自定义工作流的开发者。
限制 定制有限;依赖于 OpenAI 的基础设施;潜在成本。 限制于 Google Cloud 生态系统;潜在成本和供应商锁定。 限制于 Azure 生态系统;潜在成本和供应商锁定。 在链式多模型和数据源中复杂;需要更多设置。

表 10.2:LLM 微调平台的详细比较(第二部分)。该表继续比较 LLM 微调工具,重点关注 OpenAI 微调 API、Google Vertex AI Studio、Microsoft Azure AI Studio 和 LangChain。根据主要用例、模型支持、数据处理、定制化水平、可扩展性、部署选项、与生态系统的集成、数据隐私、目标用户和限制对工具进行评估,提供对其能力和限制的全面了解。

10.1 自动训练

自动训练是 HuggingFace 的创新平台,自动化大型语言模型的微调,使其即使对于有限的机器学习专业知识的人也能获取。这种微调的复杂性和资源需求可能令人望而却步,但自动训练通过处理最具挑战性的方面(如数据准备、模型配置和超参数优化)简化了这一过程。这种自动化对于需要快速高效部署自定义 LLM 的小团队或个人开发者尤其有价值。

10.1.1 使用自动训练进行微调的步骤

以下是使用自动训练微调 LLM 的步骤。图 10.1 展示了可视化工作流。

– 数据集上传和模型选择:

【大模型微调】LLMs微调从基础到突破的最终指南:全面评审技术、研究、最佳实践、应用研究挑战与机遇

图 10.1:自动训练工作流概述。该图示说明了自动训练系统内的逐步过程,从用户上传数据集和选择模型开始。工作流程随后转向数据准备和模型配置,接着进行自动超参数调整以优化模型性能。微调阶段根据提供的数据集调整模型,最终将完全微调的模型部署以供实际使用。

用户首先将其数据集上传至自动训练平台。- 然后他们从广泛的 HuggingFace 模型库中选择一个预训练模型。

– 数据准备:

Autotrain 自动处理上传的数据,包括令牌化等任务,将文本转换为 LLM 可以理解的格式。

– 模型配置:

平台为微调配置模型,设置训练环境和必要的参数。

– 自动超参数调优:

Autotrain 探索各种超参数配置(例如学习率、批量大小和序列长度),并选择表现最佳的配置。

– 微调:

模型在准备好的数据上进行微调,使用优化的超参数。

– 部署:

一旦微调完成,模型准备就绪,可在各种 NLP 应用中部署,如文本生成、补全和语言翻译。

10.1.2 使用 Autotrain 的最佳实践

数据质量:确保高质量、标注良好的数据,以提高模型性能。模型选择:选择适合您特定任务的预训练模型,以最小化微调工作量。超参数优化:利用 Autotrain 的自动超参数调优,在不需要人工干预的情况下实现最佳性能。

10.1.3 使用 Autotrain 的挑战

数据隐私:确保在微调过程中敏感数据的隐私和安全。资源限制:有效管理计算资源,特别是在对强大硬件访问有限的环境中。模型过拟合:通过确保多样和具有代表性的训练数据以及使用适当的正则化技术,避免过拟合。

10.1.4 何时使用 Autotrain

缺乏深厚的技术专长:适合没有广泛机器学习或 LLM 背景的个人或小团队,能够快速且有效地微调模型。快速原型开发和部署:适合时间紧迫的快速开发周期,如概念验证项目或 MVP。资源受限的环境:在计算资源有限或需要快速周转的场景中非常有用。

总之,Autotrain 是一个优秀的工具,适用于快速、用户友好的 LLM 微调,以应对标准 NLP 任务,尤其是在资源或专业知识有限的环境中。然而,对于高度专业化的应用或需要显著定制和可扩展性的任务,可能不太适合。

10.1.5 教程

如何使用 AutoTrain 创建 HuggingFace 自定义 AI 模型使用 HuggingFace AutoTrain 微调模型

10.2 Transformers 库和 Trainer API

HuggingFace 的 Transformers 库作为微调大型语言模型(LLMs)如 BERT、GPT-3 和 GPT-4 的关键工具而脱颖而出。这个综合库提供了多种针对各种 LLM 任务的预训练模型,使用户能够轻松地根据特定需求适应这些模型,而无需过多努力。无论您是微调情感分析、文本分类还是生成客户支持响应,库都简化了该过程,允许从 HuggingFace 模型库中无缝选择模型,并通过其高级 API 进行简单定制。

在 Transformers 库的微调过程中,Trainer API 是核心。该 API 包括 Trainer 类,自动化并管理微调 LLM 的复杂性。在完成数据预处理后,Trainer 类简化了模型训练的设置,包括数据处理、优化和评估。用户只需配置一些参数,如学习率和批量大小,其他的 API 会处理。然而,重要的是要注意,在 CPU 上运行 Trainer.train() 可能会消耗大量资源且速度较慢。为了实现高效训练,建议使用 GPU 或 TPU。像 Google Colab 这样的 플랫폼提供免费访问这些资源,使没有高端硬件的用户能够有效微调模型。

Trainer API 还支持高级功能,如分布式训练和混合精度,这对于处理现代 LLM 所需的大规模计算至关重要。分布式训练允许微调过程在多个 GPU 或节点之间扩展,显著减少训练时间。混合精度训练则通过使用较低精度的算术来优化内存使用和计算速度,而不会影响模型性能。HuggingFace 在可访问性方面的努力在其广泛的文档和社区支持中得以体现,使各个专业领域的用户都能微调 LLM。这种先进 NLP 技术的民主化赋予开发人员和研究者的能力,让他们为各种应用部署复杂的微调模型,从专业的语言理解到大规模数据处理。

10.2.1 Transformers 库和 Trainer API 的限制

对于高级用户的定制有限:虽然 Trainer API 简化了许多训练方面,但可能不提供高级用户或研究人员在新颖或高度专业化应用中所需的深度定制。学习曲线:尽管 API 简化,但仍然存在理解和有效使用 Transformers 库及 Trainer API 的学习曲线,尤其是对于 NLP 和 LLM 新手。集成限制:无缝集成和易用性往往与 HuggingFace 生态系统相关,可能与其环境之外的所有工作流程或平台不兼容。

总之,Transformers 库和 Trainer API 为微调 LLM 提供了强大、可扩展的解决方案,适用于多个应用,并提供易用性和高效的训练能力。但是,用户必须注意资源需求和定制性及复杂性管理的潜在限制。

10.3 Optimum:提升 LLM 部署效率

Optimum

6

{ }^{6}

6 是 HuggingFace 的一个工具,旨在通过优化其在各种硬件平台上的效率来提升大型语言模型(LLMs)的部署效率。随着 LLM 尺寸和复杂性的增加,以具成本效益和高性能的方式部署它们变得越来越具挑战性。Optimum 通过应用一系列特定于硬件的优化(如量化、剪枝和模型蒸馏)解决这些挑战,从而减少模型的大小并提高推理速度,而不会显著影响准确性。以下是 Optimum 支持的关键技术:

量化:量化是 Optimum 支持的关键技术之一。此过程涉及将模型的权重从高精度浮点数转换为较低精度的格式,如 int 8 或 float16。这种精度的降低减小了模型的内存占用和计算需求,实现更快的执行和更低的功耗,特别是在边缘设备和移动平台上。Optimum 自动化了量化过程,使那些可能没有低级硬件优化专业知识的用户也能轻松使用。剪枝:剪枝是 Optimum 提供的另一个关键优化策略。它包括识别并去除 LLM 中较不重要的权重,减少其整体复杂性和大小。这将导致更快的推理时间和较低的存储需求,这对于在计算资源有限的环境中部署模型尤为有益。Optimum 的剪枝算法仔细消除这些冗余权重,同时保持模型的性能,确保即使在优化之后仍能提供高质量的结果。模型蒸馏:除了这些技术外,Optimum 还支持模型蒸馏,即训练一个较小、更加高效的模型以复制一个更大、更复杂模型的行为。这个蒸馏模型保留了原始模型的大部分知识和能力,同时体积更小、速度更快。Optimum 提供工具以便利蒸馏过程,使用户能够创建适合实时应用的紧凑 LLM。通过提供全面的优化工具包,Optimum 确保 HuggingFace 的 LLM 能够在从强大的云服务器到资源受限的边缘设备的广泛环境中有效部署。

10.3.1 使用 Optimum 的最佳实践

了解硬件要求:评估目标部署环境(例如,边缘设备、云服务器),相应地优化模型配置。

迭代优化:尝试不同的优化技术(量化级别、剪枝阈值),找到模型大小、速度和准确性之间的最佳平衡。

验证与测试:彻底验证优化后的模型,以确保它们在不同用例下满足性能和准确性要求。

文档与支持:参考 HuggingFace 的资源,以获取关于有效使用 Optimum 工具的详细指导,并利用社区支持进行故障排除和最佳实践分享。

持续监控:在优化后的模型部署后进行监控,以检测任何性能下降,并根据需要调整优化策略,以保持长期的最佳性能。

10.3.2 教程

使用 Transformers 和 Hugging Face 简介

10.4 Amazon SageMaker JumpStart

Amazon SageMaker JumpStart 是 SageMaker 生态系统中的一个功能,旨在简化和加快大语言模型(LLM)的微调。它为用户提供了丰富的预构建模型和解决方案库,可以迅速定制以满足各种用例。对于希望在没有深厚机器学习专业知识或通常为从头训练 LLM 所需的广泛计算资源的组织,这个工具特别有价值。图 10.2 描述了一个全面的管道,用于利用 AWS 服务微调和部署大语言模型(LLMs)。

10.4.1 使用 JumpStart 的步骤

– 数据准备和预处理:

数据存储:首先在 Amazon S3 中安全存储原始数据集,S3 是 AWS 的可扩展对象存储服务。预处理:利用 EMR Serverless 框架与 Apache Spark 进行高效的数据预处理。此步骤将原始数据精炼并准备好进行后续模型训练和评估。数据精炼:在预处理后,将处理过的数据集存储回 Amazon S3,确保可访问性和为下一阶段做好准备。使用 SageMaker JumpStart 进行模型微调:模型选择:从通过 SageMaker JumpStart 广泛库中可用的各种预构建模型和解决方案中进行选择,专门用于情感分析、文本生成或客户支持自动化等任务。微调执行:利用 Amazon SageMaker 的能力,与 SageMaker JumpStart 集成,微调所选模型。这涉及调整参数和配置,以优化模型在特定用例中的性能。工作流程简化:利用 SageMaker JumpStart 提供的预构建算法和模型模板,简化微调工作流程,减少部署所需的时间和精力。模型部署和托管:

【大模型微调】LLMs微调从基础到突破的最终指南:全面评审技术、研究、最佳实践、应用研究挑战与机遇

图 10.2:一个逐步工作流程,说明了 Amazon SageMaker JumpStart 的过程,从使用 EMR Serverless Spark 进行数据预处理到 LLM 的微调,再到在 Amazon SageMaker 端点上部署模型。(改编自 83]

部署设置:使用 Amazon SageMaker 的端点部署功能部署微调后的模型。此设置确保模型托管在一个可扩展的环境中,能够高效处理实时预测。扩展性:受益于 AWS 的基础设施扩展性,允许无缝扩展资源,以应对不同的工作负载和运营需求。效率和可访问性:确保部署的模型可以通过 SageMaker 端点访问,从而高效集成到生产应用中进行实时推理任务。

10.4.2 使用 JumpStart 的最佳实践

强大的数据管理:在 Amazon S3 中保持安全和有序的数据存储实践,促进整个管道的数据高效访问和管理。成本有效的处理:利用像 EMR Serverless 这样的无服务器计算框架与 Apache Spark 结合进行成本有效且可扩展的数据预处理。优化微调:利用 SageMaker JumpStart 的预构建模型和算法,加速和优化微调过程,确保模型在无需大量手动配置的情况下达到最佳性能。持续监控和优化:实施强大的监控机制,在部署后跟踪模型性能指标。这允许及时优化和调整,以保持准确性和效率。与 AWS 服务集成:利用 AWS 的综合服务和集成功能,创建端到端管道,确保大规模语言模型在不同运营环境中的可靠和可扩展部署。

10.4.3 使用 JumpStart 的限制

定制化有限:虽然 JumpStart 简化了常见用例的过程,但对于需要超出提供模板和工作流程的重大定制的高度专业化或复杂应用,可能提供有限的灵活性。依赖 AWS 生态系统:JumpStart 与 AWS 服务紧密集成,这可能给那些希望或需要在多云环境中操作的用户带来挑战,或对已有的 AWS 之外的基础设施需求。资源成本:利用 SageMaker 的可扩展资源微调 LLM,特别是大型模型,可能会产生可观的费用,这可能对较小的组织或预算有限的企业构成障碍。

10.4.4 教程

使用 Amazon SageMaker JumpStart 微调 LLaMA 2使用 AWS SageMaker JumpStart 基础模型的 LLM 代理

10.5 Amazon Bedrock

Amazon Bedrock

7

{ }^{7}

7 是一项完全托管的服务,旨在简化访问来自顶尖 AI 创新者(如 AI21 Labs、Anthropic、Cohere、Meta、Mistral AI、Stability AI 和 Amazon)的高性能基础模型(FMs)。它提供一个统一的 API,整合这些模型,并提供广泛的能力,以开发安全、私密和负责任的生成 AI 应用程序。借助 Amazon Bedrock,用户可以轻松实验和评估适合自己特定需求的领先 FMs。该服务支持通过微调和检索增强生成(RAG)对模型进行私有定制,能够创建利用企业数据和系统的智能代理。Amazon Bedrock 的无服务器架构可以快速部署、无缝集成,并安全地定制 FMs,而无需承担基础设施管理的负担,利用 AWS 工具高效而安全地将这些模型部署到应用中。

10.5.1 使用 Amazon Bedrock 的步骤

Amazon Bedrock 提供了一个流畅的工作流程,适合部署和微调 LLM,使其成为希望快速将先进 AI 能力融入运营的企业的理想选择。以下是 Bedrock 操作的高级概述:

模型选择:用户首先从通过 Bedrock 提供的一系列精选基础模型中进行选择。这些模型包括来自 AWS(如 Amazon Titan)和第三方提供商(如 Anthropic Claude 和 Stability AI)。

– 微调:

一旦选择了模型,用户可以对其进行微调,以更好地适应其特定需求。这涉及使用特定于领域的数据或任务特定说明来调整模型的输出。

– 部署:

在微调后,Bedrock 负责以可扩展和高效的方式部署模型。这意味着用户可以快速将微调后的模型集成到他们的应用程序或服务中。

Bedrock 确保模型根据需求进行扩展并处理性能优化,从而提供无缝的用户体验。

– 集成与监控:

Bedrock 与其他 AWS 服务无缝集成,允许用户直接将 AI 能力嵌入到现有的 AWS 生态系统中。用户可以通过 AWS 的全面监控工具监控和管理已部署模型的性能,确保模型继续以最佳状态运行。

10.5.2 使用 Amazon Bedrock 的局限性

虽然 Amazon Bedrock 提供了一套强大的工具和服务来解决某些 AI 挑战,但它并不是解决所有 AI 需求的全面解决方案。一个关键的局限性是它不消除对人类专业知识的需求。组织仍然需要了解 AI 技术复杂性的熟练专业人士,以有效地开发、微调和优化 Bedrock 提供的模型。

此外,Amazon Bedrock 并不旨在作为独立服务。它依赖于与其他 AWS 服务的集成,例如 Amazon S3 用于数据存储,AWS Lambda 用于无服务器计算,以及 AWS SageMaker 用于机器学习模型开发。因此,利用 Amazon Bedrock 的企业也需要使用这些互补的 AWS 服务,以充分发挥其潜力。这种相互关联意味着,虽然 Amazon Bedrock 增强了 AWS 生态系统中的 AI 能力,但对那些不熟悉 AWS 的人来说,可能会呈现出陡峭的学习曲线,并需要显著的基础设施管理。

10.5.3 教程

在 Amazon Bedrock 上微调 LLM用于生成性 AI 的 Amazon Bedrock

10.6 OpenAI 的微调 API

OpenAI 的微调 API 是一个全面的平台,便于定制 OpenAI 的预训练 LLM,以满足特定的任务和领域。该服务旨在用户友好,使从企业到个别开发者的广泛用户能够利用先进 AI 的力量,而无需处理通常与模型训练和部署相关的复杂性。

10.6.1 使用 OpenAI 微调 API 的步骤

– 模型选择:

选择预训练模型:用户首先从 OpenAI 的广泛模型阵容中选择一个基础模型。这包括强大的模型,如 GPT-4,为各种语言处理任务提供了一个强有力的起点。可定制的基础:这些模型预先使用大量数据进行训练,提供了一个坚实的基础,可以进一步进行微调以适应特定要求。

– 数据准备与上传:

策划相关数据:用户需要收集和准备一个数据集,以反映他们希望微调模型的特定任务或领域。这些数据对于教导模型更有效地执行所需功能至关重要。将数据上传到 API:微调 API 使得数据上传变得简单。用户可以通过简单的命令将其策划的数据集输入 API,使这一过程即使对技术背景有限的人也变得易于接受。

– 启动微调:

自动化过程:一旦数据上传,OpenAI 的基础设施会处理微调过程。API 根据新数据调整模型的参数,以提高在指定任务上的性能。

– 部署微调后的模型:

API 集成:微调后的模型可以通过 OpenAI 的 API 访问和部署。这允许它无缝集成到各种应用程序中,如聊天机器人、自动内容创建工具或专门的客户服务系统。

10.6.2 OpenAI 微调 API 的局限性

定价模型:通过 API 微调和使用 OpenAI 的模型可能成本高昂,尤其是对于大规模部署或持续使用的情况。这对较小的组织或预算紧张的项目来说可能是一个重要考虑。数据隐私和安全:用户必须将其数据上传到 OpenAI 的服务器以进行微调过程。这引发了关于数据隐私和敏感或专有信息安全的潜在担忧。对 OpenAI 基础设施的依赖:对 OpenAI 基础设施在模型托管和 API 访问中的依赖可能导致供应商锁定,从而限制灵活性和对部署环境的控制。对训练过程的有限控制:微调过程主要是自动化的,由 OpenAI 管理,用户对模型进行的具体调整的可见性和控制有限。

10.6.3 教程

1. 使用 OpenAI API 微调 GPT-3

10.7 NVIDIA NeMo Customizer

NVIDIA NeMo Customizer 是 NeMo 框架的一部分,该框架是 NVIDIA 设计的一套工具和模型,旨在促进 LLM 模型的开发和微调。Customizer 专注于更容易地微调大型语言模型(LLM),以满足特定任务和领域。与其他微调工具一样,NeMo Customizer 旨在为希望为特定应用(如对话 AI、翻译或特定领域文本生成)定制预训练模型的用户提供支持。通过提供准确的数据策划、广泛的定制选项、检索增强生成(RAG)和改进的性能特性,它交付企业级模型。该平台支持在多种环境中训练和部署生成性 AI 模型,包括云、数据中心和边缘位置。它提供综合的软件包,作为 NVIDIA AI 企业的一部分,具备支持、安全性和可靠的 API。

10.7.1 NVIDIA NeMo 的主要特点

NVIDIA NeMo 旨在通过多个突出的功能来增强 AI 项目。

最先进的训练技术 NeMo 使用如 NeMo Curator 这样的 GPU 加速工具来准备大规模、高质量的数据集。这些工具利用数千个计算核心,极大地缩短了训练时间并提高了大型语言模型(LLM)的准确性。

LLM 的先进定制 NeMo Customizer 微服务允许对 LLM 进行精确微调和对齐。它使用模型并行性加快训练,并支持跨多个 GPU 和节点扩展,能够对更大的模型进行微调。

优化的 AI 推理与 NVIDIA Triton NeMo 包含 NVIDIA Triton 推理服务器,以简化大规模 AI 推理。此集成加速了生成性 AI 推理,确保 AI 应用程序在本地和云中的自信部署。

适用于生成性 AI 的用户友好工具 NeMo 具有模块化、可重用的架构,简化了对话 AI 模型的开发。它支持从数据处理到部署的全面工作流程,并包括可进行微调或直接使用的自动语音识别(ASR)、自然语言处理(NLP)和文本转语音(TTS)的预训练模型。

一流的预训练模型 NeMo Collections 提供多种预训练模型和训练脚本,便于快速应用开发或为特定任务进行微调。目前,NeMo 支持如 Llama 2、Stable Diffusion 和 NVIDIA 的 Nemotron-3 8B 家族等模型。

优化的检索增强生成 NeMo Retriever 提供高性能、低延迟的信息检索,增强生成性 AI 应用程序的企业级检索增强生成(RAG)能力。此功能支持实时商业洞察和数据利用。### 10.7.2 NVIDIA NeMo 的组成部分

NeMo Core 提供基础元素,如神经模块工厂,用于训练和推理,简化对话式 AI 模型的开发。

NeMo Collections 提供专门的模块和模型,用于 ASR、NLP 和 TTS,包括预训练模型和训练脚本,使平台具有多功能性。

Neural Modules 作为 NeMo 的构建块,定义可训练组件,如编码器和解码器,这些组件可以相互连接以创建全面的模型。

Application Scripts 通过现成的脚本简化对话式 AI 模型的部署,使其能够快速在特定数据集上进行训练或微调,适用于各种 AI 应用。

10.7.3 定制大型语言模型 (LLMs)

虽然通用 LLMs 结合了提示工程或轻微微调,使组织能够成功完成概念验证项目,但过渡到生产环境则面临额外挑战。图 10.3 说明了 NVIDIA 详细的 LLM 定制生命周期,为准备在生产环境中部署定制模型的组织提供了宝贵的指导。

1. 模型选择或开发

NVIDIA 提供范围广泛的预训练模型,从 8B 到 43B 参数,并支持其他任何大小的开源模型的集成。或者,用户可以开发自己的模型,从数据策划开始,包括选择、标注、清理、验证和整合数据。这个过程,更准确地说是数据工程,涉及额外的分析、设计存储、评估模型训练结果,并整合人类反馈的强化学习(RLHF)。虽然构建自定义基础模型通常成本高、复杂且耗时,但大多数企业选择从预训练模型开始,并专注于定制。

【大模型微调】LLMs微调从基础到突破的最终指南:全面评审技术、研究、最佳实践、应用研究挑战与机遇

图 10.3: Nvidia NeMo 框架用于定制和部署 LLMs。Nvidia NeMo 框架旨在实现对大型语言模型 (LLMs) 的端到端定制和部署。该图展示了从数据策划和基础模型的分布式训练,到模型定制,再到加速推理的过程。该平台使 AI 开发人员能够将行业内的、安全的、引用的响应整合到企业应用中,确保 LLMs 有效地针对特定任务和行业进行定制。Nemo 框架在 NVIDIA AI Enterprise 的支持下,还为各种预训练基础模型(如 OpenAI 的 GPT 系列)提供强有力的支持,确保 AI 部署的可扩展性和可靠性。

2. 模型定制

模型定制涉及使用特定任务的数据集来优化性能和调整模型权重。NeMo 提供定制的食谱,企业可以选择已有的专门针对特定任务调整的模型,然后使用专有数据进行微调。

3. 推理

推理是指基于用户查询运行模型。此阶段涉及考虑硬件、架构和性能因素,这些因素对生产环境中的可用性和成本产生显著影响。

4. 监控机制

NVIDIA 采用监控机制作为模型与应用之间的中介服务。这些服务检查传入提示以确保政策合规性,执行仲裁或协调步骤,并确保模型响应遵循政策。监控机制有助于维护相关性、准确性、安全性、隐私和安全。

5. 应用

NVIDIA 的框架将企业应用呈现为适合 LLM 的应用,尽管情况并非总是如此。现有应用程序可以连接到 LLM,以启用新功能。然而,为知识访问或任务执行创建助手往往涉及专门为自然语言接口设计的新应用程序。

10.7.4 教程

NVIDIA NeMo 简介 – 教程和示例如何使用 NVIDIA NeMo 对 Riva NMT 双语模型进行微调

第 11 章 多模态 LLMs 及其微调

多模态模型是一种可以处理来自不同模态的信息的机器学习模型,例如图像、视频和文本。例如,谷歌的多模态模型 Gemini 86 可以分析一盘饼干的照片,并生成书面食谱作为回应,同时也可以执行相反的操作。

生成式人工智能与多模态人工智能之间的区别在于,生成式人工智能指的是使用机器学习模型创作新内容,如文本、图像、音乐、音频和视频,通常源于单一类型的输入。多模态人工智能通过处理来自多种模态的信息,扩展了这些生成能力,包括图像、视频和文本。这使得 AI 能够理解和解释不同的感官模式,允许用户输入各种类型的数据,并接收多样的内容类型作为回应。

【大模型微调】LLMs微调从基础到突破的最终指南:全面评审技术、研究、最佳实践、应用研究挑战与机遇

图 11.1: 多模态模型发展的时间线 – 该图说明了显著多模态模型的进展,重点展示了从 2023 年 12 月到 2024 年 3 月期间主要科技公司和研究机构的重要发布。时间线展示了如谷歌的 TinyGPTV 和 Gemini Nano 等模型,以及 MoE-LLAVA、DeepSeek-VL 和 LLAVAGemma 等其他创新,表明多模态 AI 技术的快速进步。

11.1 视觉语言模型 (VLMs)

视觉语言模型包括能够同时从图像和文本输入中学习的多模态模型。它们属于一种生成模型,利用图像和文本数据生成文本输出。这些模型,尤其是在更大规模下,展示出强大的零样本能力,在各种任务中展现出强大的泛化能力,并有效处理多种类型的视觉数据,如文档和网页。典型应用包括涉及图像的对话交互、根据文本指令进行图像解释、回答与视觉内容相关的问题、理解文档、为图像生成标题等。某些高级视觉语言模型还能够理解图像中的空间属性。在请求时,它们能够生成边界框或分割掩码,以识别或隔离特定对象、定位图像中的实体或回答有关其相对或绝对位置的问题。大型视觉语言模型的生态系统的特点是训练数据、图像编码技术以及因此而来的功能能力存在显著差异。

11.1.1 架构

视觉语言模型巧妙地整合视觉和文本信息,利用三个基本组件:

图像编码器:该组件将视觉数据(图像)转换为模型可以处理的格式。文本编码器:与图像编码器类似,该组件将文本数据(单词和句子)转换为模型能够理解的格式。融合策略:该组件结合图像和文本编码器的信息,将两种数据类型合并为统一表示。

这些元素协同工作,模型的学习过程(损失函数)特别针对所采用的架构和学习策略进行调整。尽管视觉语言模型的概念并不新颖,但它们的构建已经发生了显著变化。早期模型使用手动制作的图像描述和预训练的词向量。现代模型则利用变换器——一种先进的神经网络架构——用于图像和文本编码。这些编码器可以独立或联合学习特征。
这些模型的一个关键方面是预训练。在被应用于特定任务之前,模型在广泛的数据集上使用精心选择的目标进行训练。这种预训练使它们具备在各种下游应用中出色表现的基础知识。以下是 VLMs 的一种示例架构。

11.1.2 对比学习

对比学习是一种专注于理解数据点之间差异的技术。它计算实例之间的相似性评分,并旨在最小化对比损失,使其在半监督学习中特别有用,在这种情况下,有限数量的标记样本指导优化过程以对未见数据点进行分类。

其工作原理

例如,要识别一只猫,对比学习将一张猫的图像与另一张类似的猫的图像和一张狗的图像进行比较。模型通过识别面部结构、身体大小和毛发等特征,学习区分猫和狗。通过确定哪一张图像离“锚”图像更近,模型预测其类别。CLIP 是一种利用对比学习来计算文本和图像嵌入之间相似性的模型,通过文本和视觉编码器实现。它遵循以下三个步骤进行零-shot 预测:

预训练:训练文本和图像编码器以学习图像-文本对。标题转换:将训练数据集中的类转换为标题。零-shot 预测:根据学习的相似性为给定输入图像估计最佳标题。
(1) 对比预训练

【大模型微调】LLMs微调从基础到突破的最终指南:全面评审技术、研究、最佳实践、应用研究挑战与机遇
(2) 从标签文本创建数据集分类器

【大模型微调】LLMs微调从基础到突破的最终指南:全面评审技术、研究、最佳实践、应用研究挑战与机遇

图 11.2:多模态模型的对比预训练工作流。该图说明了对比预训练的过程,在该过程中,文本和图像编码器被训练以对齐两种模态的表示。步骤1涉及通过配对文本和图像数据进行对比预训练,而步骤2展示了使用文本编码器编码的标签文本创建数据集分类器。步骤3演示了该模型通过利用预训练的文本和图像编码器进行零-shot 预测的应用。该方法使模型能够在各种任务中进行概括,而无需特定于任务的微调(采用自 [88])。

11.2 多模态模型的微调

对于多模态大型语言模型(MLLM)的微调,可以利用 PEFT 技术,如 LoRA 和 QLoRA。多模态应用的微调过程类似于大型语言模型,主要区别在于输入数据的性质。除了 LoRA 外,还可以有效使用其他工具,如 LLM-Adapters 和 (IA) 89。LLM-Adapters 将各种适配器模块集成到预训练模型的架构中,通过仅更新适配器参数而保持基础模型参数不变,从而实现参数高效的微调 (IA)

3

{ }^{3}

3,或通过抑制和增强内部激活的注入适配器,通过激活乘法来学习向量以加权模型参数,从而提升性能,支持强大的少量学习性能和任务混合,而无需手动调整。此外,像 DyLoRA 90 这样的动态适应技术允许在不同秩之间训练低秩适应块,通过在训练期间对表示进行排序来优化学习过程。LoRA-FA 91 是 LoRA 的一种变体,通过在初始化后冻结第一个低秩矩阵并将其用作随机投影,同时训练其他矩阵,从而优化微调过程,减少参数数量一半而不影响性能。高效注意力跳过 (EAS) 92 模块引入了一种新颖的参数和计算高效的 MLLM 调整方法,旨在在降低下游任务的参数和计算成本的同时保持高性能。然而,MemVP 93] 批评了这种方法,指出它仍然增加了语言模型的输入长度。为了解决这个问题,MemVP 将视觉提示与前馈网络的权重集成,从而注入视觉知识,减少训练时间和推理延迟,最终超过了以前的 PEFT 方法。

11.2.1 全参数微调

LOMO 94 和 MeZO 95] 等方法提供了通过关注内存效率的替代解决方案。LOMO 利用源自随机梯度下降 (SGD) 的低内存优化技术,减少通常与 ADAM 优化器关联的内存消耗。另一方面,MeZO 提供了一种内存高效的优化器,仅需两次前向传递计算梯度,使得大型模型的全面微调具有与推理相当的内存占用 [87。

11.2.2 医疗领域 MLLM 微调的案例研究

以下部分提供了一个关于为视觉问答 (VQA) 任务微调 MLLMs 的案例研究。在这个例子中,我们展示了一个专门为 MedVQA 应用设计的 PEFT。为了确保性能测量的准确性,进行了人工评估,证明该模型的整体准确率为

81.9

%

81.9 \%

81.9%,并在封闭式问题上以

26

%

26 \%

26%的绝对准确性大幅超越 GPT-4v 模型。
该模型由三个部分组成:视觉编码器、一个用于处理多模态输入和生成响应的预训练大型语言模型(LLM),以及一个将嵌入从视觉编码空间投影到 LLM 空间的单线性层,如图 11.3 所示。
视觉变换器 (ViT) 类型的主干 EVA,将图像令牌编码为视觉嵌入,模型权重在微调过程中保持不变。采用 MiniGPT-v2 的技术,将四个连续的令牌组合成一个视觉嵌入,以高效减少通过在嵌入维度上进行连接所消耗的资源。
这些组合的视觉令牌随后通过投影层处理,产生 LLM 空间中的嵌入(长度 4096)。多模态提示模板集成了视觉和问题信息,然后输入到预训练的 LLM LLaMA2-chat(7B) 中以生成答案。为了高效微调,应用低秩适应 (LoRA) 技术,保持其余的 LLM 在下游微调过程中不变。使用宽度为 1 的束搜索。

【大模型微调】LLMs微调从基础到突破的最终指南:全面评审技术、研究、最佳实践、应用研究挑战与机遇

图 11.3:集成 LoRA 和预训练 LLM 的 Med VQA 架构概述,用于医疗视觉问答任务。该架构包括处理图像和生成上下文相关响应的阶段,展示了视觉和语言模型在医疗环境中的集成(采用自 [96])。

多模态提示包括输入图像、问题和一个特定的 VQA 任务标记,遵循 MiniGPT-v2 模板。在图 11.3 中,来自线性投影的图像特征标记为 ImageFeature,相应的问题作为文本指令。特殊标记 [VQA] 用作任务标识符,形成完整的多模态指令模板:

模型训练

从在通用领域数据集上预训练的 MiniGPT-v2 的权重,在两个阶段上进一步微调使用多模态医疗数据集。采用 LoRA 技术进行高效微调,仅更新整个模型的一小部分,具体如下:

使用图像字幕进行微调:在此阶段,模型利用 ROCO 医疗图像字幕数据集进行微调,数据集中包含各种长度的医学图像-字幕对。使用的提示模板是 ,其中指令提示在四个候选中随机选择,例如“简要描述此图像。”在训练过程中,仅微调 LLM 中的线性投影层和 LoRA 层,而模型的其他部分保持不变。在 VQA 上进行微调:在第二阶段,模型在 Med-VQA 数据集 VQA-RAD 上进行微调,该数据集包含图像、问题和答案的三元组。根据 MiniGPT-v2 提出的指令模板,使用的模板是:“[INST] [VQA] Instruction [/INST]”,其中指令提示为:“基于图像,用简短的答案回答这个问题:问题”,其中问题代表与给定医学图像相对应的问题。生成短答案的动机是验证与 VQA-RAD 中现有标签数据的一致性,在这里,答案通常在开放式和封闭式问答对中都比较简短。与第一阶段类似,视觉编码器和 LLM 保持不变,仅更新 LLM 中的线性投影和 LoRA 层。

11.3 多模态模型的应用

手势识别 – 这些模型解释和识别人的手势,这对于手语翻译至关重要。多模态模型通过处理手势并将其转换为文本或语音来促进包容性沟通。视频摘要 – 多模态模型可以通过提取关键视觉和音频元素来总结冗长的视频。该功能简化了内容消费,允许高效内容浏览,并增强视频内容管理平台。DALL-E 是一个显著的多模态 AI 示例,能够从文本描述中生成图像。这项技术在内容创作和视觉叙事方面扩展了创作的可能性,应用于艺术、设计、广告等领域。教育工具 – 多模态模型通过提供响应视觉和语言提示的互动教育内容来增强学习体验。它们对于根据学生表现和反馈调整内容和难度的自适应学习平台至关重要。虚拟助手 – 多模态模型为虚拟助手提供动力,通过理解和响应语音命令,同时处理视觉数据以实现全面的用户交互。它们对于智能家居自动化、语音控制设备和数字个人助手至关重要。

11.4 音频或语音 LLM 或大型音频模型

音频或语音大语言模型(LLMs)是旨在理解和生成基于音频输入的人类语言的模型。它们在语音识别、文本到语音转换和自然语言理解任务中有应用。这些模型通常在大型数据集上进行预训练,以学习通用的语言模式,然后在特定任务或领域上进行微调以提高性能。

音频和语音大语言模型(LLMs)代表了语言处理与音频信号融合的重大进展。这些模型利用强大的大语言模型作为基础骨架,并通过加入自定义音频令牌来增强处理多模态数据的能力。这一转变使得模型能够在共享的多模态空间内学习和操作,在该空间内,文本和音频信号都可以有效地处理。

与本质上是离散的文本不同,音频信号是连续的,需要被离散化为可管理的音频令牌。为了这个目的,采用了 HuBERT 97 和 wav2vec 98 等技术,将音频转换为 LLM 可以与文本一起处理的令牌化格式。该模型通常是自回归的、基于解码器的,使用自监督任务(例如在交替的文本和音频中预测被遮蔽的令牌)和针对特定任务(如转录或情感分析)的监督微调组合进行预训练。该模型同时处理和生成音频与文本的能力使其具备广泛的应用,从音频问答到基于语音的情感检测,使音频和语音 LLMs 成为多模态 AI 中的多功能工具。图 11.4 说明了一个多模态音频 LM 架构的例子。在这个设置中,提示以文本和音频格式提供指令。音频通过音频令牌化器进行令牌化。多模态模型随后将这些文本和音频令牌结合起来,并通过解码器生成口语。

这句话的情感是什么,请以语音回复并将情感写为文本 …

【大模型微调】LLMs微调从基础到突破的最终指南:全面评审技术、研究、最佳实践、应用研究挑战与机遇

图 11.4:将文本和音频输入集成以进行高级多模态处理的多模态音频-文本语言模型架构。该架构利用文本令牌化器和音频编码器/令牌化器将输入转换为令牌,然后由音频-文本 LM 处理。该模型支持离散和连续语音处理,并支持情感分析和自然语言响应生成等任务。音频令牌进一步通过解码器进行精炼,而文本令牌则被去令牌化以生成连贯的文本输出(改编自 [99])。

音频和语音 LLMs,如 AudioPaLM 100、AudioLM[101]以及 Whisper 和 LLaMA 等模型的各种改编,整合了理解和生成音频数据的能力,包括语音转文本(STT)、文本转语音(TTS)和语音到语音(STS)翻译。这些模型显示出最初设计用于文本的 LLMs 可以通过复杂的令牌化和微调技术有效地适应音频任务。

11.4.1 令牌化和预处理

将 LLMs 适应于音频的一个关键方面是将音频数据令牌化为模型可以处理的离散表示。例如,AudioLM 和 AudioPaLM 采用了声学和语义令牌的组合。声学令牌捕捉高质量音频合成的特性,而语义令牌有助于维护生成音频的长期结构一致性。这种双令牌方法使模型能够处理音频波形的复杂性和语音的语义内容。

11.4.2 微调技术

音频和语音 LLMs 的微调通常涉及几个关键策略:

完全参数微调:在微调过程中更新模型的所有参数。例如,LauraGPT 和 SpeechGPT 微调所有参数,以适应预训练的文本 LLM 到各种音频任务,尽管这可能在计算上很昂贵。层特定微调:像 LoRA(低秩适应)这样的技术只更新模型的特定层或模块。这种方法显著降低了计算需求,同时仍然允许有效的适配。像 Qwen-Audio 这样的模型利用 LoRA 微调预训练的组件以提高在语音识别任务上的性能。基于组件的微调:最近的模型,例如集成 Whisper 编码器的模型,冻结模型的某些部分(如语音编码器),仅微调线性投影器或特定适配器,以对齐语音和文本模态。这种方法简化了训练过程并提高了效率 [102]。多阶段微调:像 AudioPaLM 这样的模型执行多阶段微调,从基于文本的预训练阶段开始,然后在包含文本和音频数据的任务混合上进行微调。这种分阶段的方法利用了预训练文本模型的优势,同时将其适应于多模态任务。

11.4.3 微调 Whisper 以实现自动语音识别(ASR)

Whisper

1

{ }^{1}

1 是由 OpenAI 开发的先进自动语音识别(ASR)模型,旨在将口语转换为文本。Whisper 基于强大的 Transformer 架构,擅长捕捉和转录各种语言和口音的多样语音模式。与传统的 ASR 模型需要大量标注数据不同,Whisper 利用一个巨大数据集和自监督学习,使其能够在嘈杂环境中表现出色,并处理各种语音变体。它的多功能性和高准确性使其成为语音助手、转录服务和多语言语音识别系统等应用的理想选择。

为什么要微调 Whisper?

为了特定的 ASR 任务微调 Whisper 可以显著提升其在专业领域的表现。尽管 Whisper 在大规模和多样化的数据集上进行了预训练,但它可能无法完全捕捉特定应用中存在的特定词汇或口音的细微差别。微调使 Whisper 能够适应特定的音频特征和术语,从而导致更准确、更可靠的转录。这一过程在具有特定领域术语的行业中特别有利,例如医疗、法律或技术领域,因为通用模型可能难以处理专业词汇。

微调 Whisper 的步骤

数据收集和准备:收集与目标领域或任务匹配的大型数据集。确保数据集中包含多样的示例和清晰的转录。清理和预处理音频文件和转录,确保它们具有一致的格式并正确对齐。像 FFmpeg

2

{ }^{2}

2 这样的工具可以帮助标准化音频格式和采样率。数据增强:为了提高稳健性,通过不同的噪声级别、口音或速度等变体对数据集进行增强。添加背景噪声、改变音调或改变节奏等技术可以帮助模型在现实条件下更好地泛化。预处理:将音频文件转换为适合 Whisper 的格式,通常是梅尔谱图或其他时频表示。这一变换至关重要,因为 Whisper 依赖这些表示来有效地学习和转录语音。模型配置:使用预训练的权重初始化 Whisper 模型。配置模型以适应目标语言或领域特定的调整。这包括设置合适的超参数,例如学习率和批量大小,以适应数据集的大小和复杂性。训练:在准备好的数据集上微调 Whisper 模型,使用像 PyTorch 或 TensorFlow 这样的框架。确保监控模型在验证集上的表现,以避免过拟合。像梯度裁剪、学习率调度和提前停止等技术可以帮助维持训练的稳定性和效率。评估和测试:训练后,在单独的测试集上评估模型的表现,以评估其准确性和泛化能力。字错误率(WER)或字符错误率(CER)等指标提供了模型与真实转录相比转录音频的效果的洞察。

11.4.4 案例研究和应用

医疗转录:在医疗数据上微调语音 LLMs 显著提升了医生与患者互动的转录效果。像 Whisper 这样的模型已经在医疗术语上进行了微调,结果得到了更准确和可靠的转录。法律文档处理:法律公司已采用经过微调的音频 LLMs 来转录法庭程序和法律讨论。特定领域的微调提高了模型识别和准确转录法律术语的能力。客户服务自动化:公司正在使用经过微调的语音模型来自动化客户服务互动。这些模型在客户支持数据上进行训练,以更有效地理解和响应查询,从而提供更加顺畅的用户体验。
[^19]

第12章 开放挑战与研究方向

12.1 可扩展性问题

对大语言模型(LLMs)如 GPT-4、PaLM

1

{ }^{1}

1 和

T

5

2

2

T 5^{2}{ }^{2}

T522 的微调已成为一个关键的研究领域,面临几个重要挑战,并开辟了新的探索方向,尤其是在高效扩展这些过程方面。这一讨论聚焦于两个主要方面:扩展微调过程中的挑战和可扩展解决方案的潜在研究方向。

12.1.1 扩展微调过程中的挑战

计算资源:诸如 GPT-3 和 PaLM 等大规模模型在微调时需要巨大的计算资源。例如,微调一个具有 1750 亿参数的模型如 GPT-3 需要高性能的 GPU 或 TPU,能够处理大量数据和复杂操作。参数的巨大数量转换为广泛的计算需求。即使是相对较小的模型,例如具有 3.4 亿参数的 BERT-large,微调时也可能计算密集。 2. 内存要求:微调大型语言模型(LLMs)的内存占用惊人。模型中的每个参数都需要存储空间,并且在训练过程中,还需要额外的内存来存储中间计算、梯度和优化器状态。例如,加载一个70亿参数的模型(如LLaMA 2)在FP32格式下(每个参数4字节)大约需要28 GB的GPU内存,而微调的内存需求约为112 GB的GPU内存 [103]。这种内存需求超出了大多数消费级硬件的能力,使微调主要只对资金充足的组织或研究机构可及。

数据量:LLMs通常需要大量的训练数据才能在微调过程中实现最先进的性能。这些数据需要快速加载、预处理并输入到模型中,以保持高效的训练。管理大型数据集可能成为瓶颈,特别是在数据分布在多个系统中存储或需要从远程存储中提取时。

吞吐量和瓶颈:高吞吐量对于保持GPU或TPU的完全利用至关重要。然而,如果数据管道没有得到适当优化,可能会成为瓶颈。例如,洗牌大型数据集或将其快速加载到内存以跟上训练过程可能会很具挑战性。数据打包等技术可以将多个小样本组合成较大的批次,帮助提高吞吐量,但也增加了数据处理例程的复杂性。

资源的高效利用:微调大模型的经济和环境成本是巨大的。大规模微调不仅涉及计算资源的直接成本,还涉及与能源消耗和基础设施维护相关的间接成本。[^20]混合精度训练和梯度检查点等技术可以通过优化内存和计算效率来降低这些成本。

微调LLMs过程中的挑战是多方面且复杂的,涉及显著的计算、内存和数据处理限制。PEFT、数据吞吐量优化和资源高效训练方法的创新对于克服这些挑战至关重要。随着LLMs的尺寸和能力不断增长,解决这些挑战对于使先进的人工智能可访问并适用于更广泛的应用至关重要。

12.1.2 可扩展解决方案的研究方向

高级PEFT技术和稀疏微调

近期PEFT技术的进展,如LoRA及其变体量化LoRA,正在彻底改变LLMs的可扩展性。LoRA通过仅更新参数的低秩近似来降低计算负担,显著降低内存和处理要求。量化LoRA进一步通过对这些低秩矩阵应用量化来优化资源使用,在最小化对大量硬件需求的同时保持高模型性能。这使得在Meta的LLaMA项目中能够高效微调大规模模型,通过适应一小部分有影响力的参数,使得模型能够在各种任务中强劲表现,同时降低计算负担。

稀疏微调技术,如SpIEL [105],通过选择性更新最有影响力的参数来补充这些努力。SpIEL通过仅改变一小部分参数来微调模型,并对其进行索引跟踪。该过程包括更新参数、移除最不重要的参数,以及根据其梯度或估计的动量使用高效优化器添加新参数。

数据高效微调(DEFT)

为了解决可扩展性挑战,最近出现了DEFT的概念。这种新颖的方法引入了数据修剪作为优化微调过程的方法,专注于最关键的数据样本。

DEFT旨在通过选择性修剪训练数据来识别最具影响力和代表性样本,从而提高微调LLMs的效率和有效性。这种方法利用少量样本学习原则,使得LLMs能够以极少的样本适应新数据,同时保持或甚至超越使用完整数据集时所达到的性能水平 [106]。

DEFT的关键组成部分

通过影响分数实现高准确性:DEFT引入了影响分数的概念,以评估和排名每个数据样本在LLM微调上下文中的重要性。影响分数估计移除特定样本将对模型整体性能产生的影响。这种方法允许选择一个小的、高度代表性和有影响力的数据子集,从而使模型能够在样本显著减少的情况下保持高准确性。

通过努力分数和替代模型实现高效率:为了应对评估大型数据集的成本和复杂性,DEFT采用了替代模型——一个更小、计算负担更低的模型——来近似影响分数。该替代模型帮助估计每个样本的影响,而无需直接使用LLM所带来的沉重计算负担。此外,DEFT引入了一种努力分数,以识别和优先考虑需要LLM特别关注的更具挑战性的样本。这种双分数系统确保微调过程的高效和有效。

实际影响和使用案例

为快速适应进行的少量微调:DEFT特别适用于模型需要迅速适应新数据且样本最少的应用。在个性化推荐或适应用户行为突然变化等场景中,DEFT允许快速微调,在所需数据大幅减少的情况下保持高性能。在大规模部署中减少计算成本:通过关注最具影响力的数据样本并使用替代模型,DEFT显著减少了微调所需的计算资源。这使得在数据量庞大的大规模部署中保持高性能的LLMs成为可能。

未来方向

DEFT为微调大型语言模型(LLMs)引入了一项数据修剪任务,为有效LLM推荐系统的研究奠定了基础,并为未来的探索提供了众多机会。进一步研究的关键领域包括:

将拟议的DEALRec方法 [107] 应用到更广泛的LLM推荐模型上,跨越多种跨域数据集,从而在资源限制内增强微调性能。通过选择性地关注用户交互序列中最具信息性的项目,解决LLMs有限的上下文窗口问题,以便进行微调。

12.1.3 硬件和算法协同设计

为LLMs量身定制的硬件和算法的协同设计可以显著提高微调过程的效率。针对特定任务或计算类型优化的定制硬件加速器可以大幅减少模型训练和微调所需的能源和时间。

定制加速器:开发专门用于LLM微调中常用的稀疏和低精度计算的硬件加速器,可以提升性能。这些加速器被设计为高效处理LLMs的独特要求,例如在变换器架构中涉及的高内存带宽和广泛的矩阵乘法。算法优化:将硬件创新与算法优化技术相结合,例如最小化数据移动或利用特定于硬件的特性(例如用于混合精度计算的张量核心),可以进一步提高微调过程的效率。示例:NVIDIA的TensorRT

3

{ }^{3}

3 就是硬件和算法协同设计的一个例子。它通过利用NVIDIA GPU的能力优化深度学习模型进行推理,显著加快了该过程,同时减少了资源需求。TensorRT的优化包括对混合精度和稀疏张量操作的支持,使其非常适合微调大型模型。

随着语言模型规模的不断扩大,有效解决微调它们的挑战变得愈加关键。PEFT、稀疏微调、数据处理以及先进硬件和算法解决方案的整合创新呈现出未来研究的有希望方向。这些可扩展解决方案对于使LLMs的部署可行于更广泛的应用范围以及推动这些模型所能达到的边界至关重要。

12.2 微调LLMs的伦理考量

12.2.1 偏见与公平性

在微调LLMs时,目标通常是为了特定任务或数据集优化它们的性能。然而,这些数据集可能本质上携带的偏见在微调过程中转移到模型中。偏见可以来自各种来源,包括历史数据、样本不平衡的训练样本以及语言中固有的文化偏见。例如,在主要来自讲英语国家的数据集上微调的LLM在处理来自其他语言或文化背景的文本时,可能会表现不佳或产生偏见的预测。谷歌AI的公平性指标 too

4

4

{ }_{4}^{4}

44​ 是一个实用解决方案,它允许开发人员通过分析不同人口群体的性能指标来评估模型的公平性。该工具可以集成到微调流程中,以实时监控和解决偏见问题。

解决偏见和公平性

多样化和具代表性的数据:确保微调数据集多样化并代表所有用户群体可以帮助缓解偏见。公平性约束:纳入公平性约束,如FairBERTa框架所建议的,确保微调模型在不同群体间保持公正的性能。示例应用:在医疗保健领域,一种用于协助诊断病症的LLM,最初可能是在主要白人患者的数据上训练的。这种模型可能会对其他种族背景的患者产生较不准确的诊断。通过使用关注公平性的微调技术,医疗服务提供者可以开发在多样化患者群体中表现得更为公平的模型。

12.2.2 隐私问题

微调通常涉及使用敏感或专有的数据集,这带来了重大的隐私风险。如果管理不善,微调模型可能会不小心泄露训练数据中的私人信息。这个问题在医疗保健或金融等领域尤为重要,数据保密性至关重要。

在微调过程中确保隐私- 差分隐私

6

{ }^{6}

6 : 在微调过程中实施差分隐私技术可以防止模型泄露敏感信息。

联邦学习

7

{ }^{7}

7 : 利用联邦学习框架可以在分散的数据源上对模型进行微调,这通过保持数据的本地化增强了隐私保护。示例应用:在客户服务应用中,公司可能使用客户互动数据对大型语言模型(LLMs)进行微调。采用差分隐私确保模型从这些互动中学习,而不记忆和潜在泄露个人信息,从而维护客户的机密性。

12.2.3 安全风险

微调模型中的安全漏洞:微调的LLMs容易受到安全漏洞的影响,尤其是来自对抗性攻击。这些攻击涉及旨在利用模型弱点的输入,导致其产生错误或有害的输出。由于微调模型的专用训练数据可能无法覆盖所有可能的输入场景,这类漏洞可能更为明显。最新研究和行业实践:微软的对抗性机器学习威胁矩阵提供了一个全面的框架,用于识别和缓解模型开发和微调过程中的对抗性威胁。该矩阵帮助开发者了解潜在的攻击向量,并相应实施防御策略。

– 增强微调中的安全性:

对抗性训练:在微调过程中将模型暴露于对抗性示例中,可以增强其抵御攻击的能力。安全审计:定期对微调模型进行安全审计,可以帮助识别和解决潜在的漏洞。

12.3 责任与透明度

12.3.1 责任与透明度的必要性

微调可以显著改变LLM的行为,因此记录和理解这些变化及其影响至关重要。这种透明度对利益相关者信任模型的输出以及对开发者对其性能和伦理影响的责任至关重要。

12.3.2 最新研究和行业实践

Meta的负责任人工智能框架

8

{ }^{8}

8 强调了记录微调过程及其对模型行为影响的重要性。这包括维护使用的数据的详细记录、微调过程中所做的更改以及应用的评估指标。

12.3.3 促进责任与透明度

综合文档:创建关于微调过程及其对模型性能和行为影响的详尽文档。透明报告:利用像模型卡片

9

{ }^{9}

9 这样的框架报告微调模型的伦理和操作特征。示例应用:在内容审核系统中,微调的LLMs用于识别和过滤有害内容,需要清晰的文档和报告。这确保平台用户和监管机构理解模型的运行方式,从而信任其审核决策。

12.3.4 伦理微调的提议框架/技术

缓解偏见的框架

关注偏见的微调框架旨在将公平性纳入模型训练过程中。Facebook推出的FairBERTa就是这样一个框架的例子,它在微调过程中将公平性约束直接整合到模型的目标函数中。这种方法确保模型在不同人口统计群体之间的表现平衡。

组织可以采用关注公平性的框架来开发更加公平的人工智能系统。例如,社交媒体平台可以利用这些框架微调模型,以检测和缓解仇恨言论,同时确保对不同用户群体的公平对待。

隐私保护的技术

差分隐私和联邦学习是微调过程中保护隐私的关键技术。由谷歌开发的TensorFlow Privacy

10

{ }^{10}

10 提供对差分隐私的内置支持,允许开发者在不妥协数据机密性的情况下安全地微调模型。
LLMs非常有效,但在数据隐私至关重要的敏感领域应用时面临挑战。为了应对这一问题,研究者们专注于增强针对特定领域的小型语言模型(SLMs)。现有方法通常使用LLMs生成额外的数据或将知识转移到SLMs,但由于LLM生成的数据与私人客户数据之间的差异,这些方法面临困难。对此,提出了一种新的联邦领域特定知识转移(FDKT)108框架。FDKT利用LLMs根据差分隐私创建模仿客户私人数据分布的合成样本。这种方法在保持数据隐私的最低隐私预算下,显著提升SLMs的性能,约提高了

5

%

5 \%

5%,并优于传统单依赖本地私人数据的方法。

在医疗保健领域,联邦微调允许医院在不传输敏感信息的情况下协同训练基于患者数据的模型。这种方法确保了数据隐私,同时促进了强大且具有泛化能力的人工智能系统的发展。

增强安全性的框架

对抗性训练和强大的安全措施 [109] 对于保护微调模型免受攻击至关重要。对抗性训练方法涉及使用对抗示例对模型进行训练,以提高其应对恶意输入的韧性。微软Azure的对抗性训练工具为将这些技术整合到微调过程中提供了实用解决方案,帮助开发者创建更加安全和可靠的模型。

在网络安全领域,用于威胁检测的微调LLMs可以通过对抗性训练来提高其识别和响应复杂攻击的能力,从而改善组织的安全性。

确保透明度的框架

透明度和责任框架,如模型卡片和人工智能数据表

11

{ }^{11}

11 提供了结构化的方式来记录和报告微调过程及其导致的模型行为。这些框架通过清晰列出模型的能力、局限性和伦理考量,促进利益相关者之间的理解和信任。

在政府应用中,当AI系统可能被用于决策或公共服务时,通过使用像人工智能数据表这样的框架保持透明的文档记录,确保这些系统是负责任的,其决策可以被公众审计和信任。

微调LLMs引入了多个伦理挑战,包括偏见、隐私风险、安全漏洞和责任问题。解决这些问题需要一个多方面的方法,将关注公平的框架、隐私保护技术、强大的安全措施和透明度与责任机制相结合。通过利用这些领域的最新进展,研究者和从业者可以开发和部署不仅强大而且在伦理上是合理和值得信赖的LLMs。

12.4 与新兴技术的融合

将LLMs与物联网(IoT)和边缘计算等新兴技术相结合,提供了许多机遇和挑战,反映了最近研究和行业发展的进展和见解。

12.4.1 机遇

增强决策和自动化:LLMs能够分析和从IoT设备生成的大量非结构化数据中提取洞察。这些数据可以从制造厂的传感器读数到智能城市的环境数据。通过实时处理这些数据,LLMs可以优化决策过程并自动化传统上需要人类干预的任务。例如:

工业应用:通过分析传感器数据进行预测性维护,LLMs可以在设备故障发生之前进行预测,从而减少停机时间和维护成本。

智慧城市:LLMs可以分析来自IoT传感器的交通模式和环境数据,以优化城市基础设施并改善城市规划决策。

个性化用户体验:与边缘计算的集成允许LLMs在设备上本地处理数据,而不是仅依赖于基于云的服务器。这使LLMs能够根据实时数据和用户偏好提供高度个性化的服务,从而增强各个领域的用户体验:

医疗保健:LLMs可以通过分析可穿戴设备的数据并与安全存储在边缘设备上的医疗记录集成,提供个性化的医疗建议。

改善自然语言理解:IoT数据的集成丰富了LLMs理解上下文的能力,并能够更智能地响应自然语言查询。这可以显著改善用户与智能环境的互动:

智能家居:与IoT设备集成的LLMs可以更准确地理解和响应语音指令,根据实时传感器数据调整智能家居设置(例如,根据居住情况和环境条件调整照明和温度)。

12.4.2 挑战

数据复杂性和集成:来自不同IoT设备的数据集成面临与数据质量、互操作性和可扩展性相关的挑战。LLMs需要有效处理和解释这些异构数据,以提取有意义的洞察:数据集成:确保来自不同IoT平台和设备的数据流的无缝集成,而不妥协数据完整性或性能。数据预处理:清理和预处理IoT数据,以确保在将其输入LLMs进行分析之前的一致性和可靠性。隐私和安全:边缘计算涉及在设备上本地处理敏感数据,增加了有关数据隐私和安全的担忧:数据隐私:实施强大的加密技术和访问控制机制,以保护LLMs在边缘设备上处理的敏感数据。安全通信:确保IoT设备与LLMs之间的安全通信通道,以防止数据泄露或未经授权的访问。实时处理和可靠性:在边缘计算环境中部署的LLMs必须以低延迟和高可靠性运行,以支持实时应用:延迟:优化LLMs的算法和处理能力,以高效处理实时数据流而不延迟。可靠性:确保LLMs在动态和不可预测的IoT环境中生成的洞察的准确性和一致性。

12.5 未来研究领域

联邦学习和边缘计算:探索联邦学习技术,在这种技术下,LLMs可以在边缘设备上进行协同训练,而无需集中数据汇聚。这种方法解决了隐私问题,并减少了通信开销。实时决策支持系统:开发基于LLM的系统,能够通过与边缘计算基础设施集成实现实时决策。这包括优化低延迟处理的算法,并确保在动态环境条件下的可靠性。伦理和监管影响:研究将LLMs与IoT和边缘计算集成的伦理影响,特别是在数据所有权、透明度和公平性方面。该领域需要用于伦理AI部署和治理的框架。

© 版权声明

相关文章

暂无评论

您必须登录才能参与评论!
立即登录
暂无评论...