目录
4.5 实践与应用
实践部分介绍流行HuggingFace开发的开源库HF-PEFT框架及其使用方法和技巧。
应用部分展示PEFT在表格数据处理和金融领域Text-to-SQL生成任务中的案例,证明其在提升大模型特定任务性能方面的有效性,为未来研究和应用提供参考。
.
4.5.1 PEFT 实践
下面介绍PEFT主流框架的使用,包括安装和配置、微调策略选择、模型准备与训练流程等内容, 以及相关使用技巧。
.
1)PEFT 主流框架
HF-PEFT是一个由Hugging Face开发的开源参数高效微调库,旨在通过仅微调少量参数实现对大型预训练模型的快速适应,从而显著降低内存和计算成本。它集成了多种先进的微调技术,如LoRA、Adapter-tuning、Prompt-tuning和IA3等,并支持与Hugging Face的Transformers、Diffusers和Accelerate等工具无缝集成,适用于从单机到分布式环境的多样化训练和推理场景。
HF-PEFT特别适用于大模型,能够在消费级硬件上实现高性能,并且可以与模型量化技术兼容,进一步减少模型的内存需求。此外,HF-PEFT支持多种架构模型,包括Transformer和Diffusion,并允许用户手动配置,在自己的模型上启用PEFT。
HF-PEFT还提供了详细的文档、快速入门指南和示例代码,在https://huggingface.co/docs/peft/。帮助用户快速训练PEFT模型和加载已有模型进行推理。HF-PEFT拥有活跃的社区支持,并鼓励社区贡献,是一个功能强大、易于使用且持续更新的库。
.
2)HF-PEFT 框架使用
使用HF-PEFT框架进行模型微调可以显著提升模型在特定任务上的性能,同时保持训练的高效性。
通常,使用HF-PEFT框架进行模型微调的步骤如下:
-
安装与配置:首先,在环境中安装HF-PEFT框架及其依赖项,主要是Hugging Face 的 Transformers 库。
-
选择模型与数据:根据任务需求,挑选合适的预训练模型,并准备相应的训练数据集。
-
确定微调策略:选择适合任务的微调方法,例如LoRA或适配器技术。
-
模型准备:加载预训练模型并为选定的微调方法进行配置,包括任务类型、推理模式、参数值等。
-
模型训练:定义完整的训练流程,包括损失函数、优化器设置,并执行训练,同时可应用数据增强和学习率调度等技术。
通过上述步骤,可以高效地使用HF-PEFT框架进行模型微调,以适应特定的任务需求,并提升模型性能。
.
3)PEFT 相关技巧
HF-PEFT 库提供多种参数高效微调技术,用于在不微调所有模型参数的情况下,有效将预训练语言模型适应各种下游应用。以下是一些PEFT技术常用的参数设置方法:
Prompt Tuning
-
num_virtual_tokens:表示为每个任务添加的 virtual tokens 的数量,也就是软提示的长度,该长度通常设置在 10-20 之间,可根据输入长度进行适当调节。
-
prompt_tuning_init:表示 prompt 参数的初始化方式。可以选择随机初始化 (RANDOM)、文本初始化 (TEXT),或者其他方式。文本初始化方式下,可以使用特定文本对 prompt embeddings 进行初始化以加速收敛。
Prefix Tuning
-
num_virtual_tokens:与 Prompt Tuning 中相同,表示构造的 virtual tokens 的数量,设置和 Prompt Tuning 类似。
-
encoder_hidden_size:表示用于 Prefix 编码的多层感知机 (MLP) 层的大小,通常与模型的隐藏层大小相匹配。
LoRA
-
r:秩的大小,用于控制更新矩阵的复杂度。通常可以选择较小的值如 4、8、16,对于小数据集,可能需要设置更小的 r 值。
-
lora_alpha:缩放因子,用于控制 LoRA 权重的大小,通常与 r 成反比,以保持权重更新的一致性。
-
lora_dropout:LoRA 层的 dropout 比率,用于正则化以防止过拟合,可以设置为一个较小的值,比如 0.01。
-
target_modules:指定模型中 LoRA 中要应用的模块,如注意力机制中的 query、key、value 矩阵。可以选择特定的模块进行微调,或者微调所有线性层。
注意,具体的参数设置可能会根据所使用的模型、数据集和具体任务有所不同,因此在实际应用中可能需要根据实验结果进行调整。
过拟合 (Overfitting):指的是模型在训练数据上表现得非常好,但在新的、未见过的数据(测试数据)上表现不佳的现象。
.
4.5.2 PEFT 应用
在现实应用中,大量垂直领域数据以表格的形式存储在关系型数据库中。但大语言模型在预训练语料中表格数据的占比通常很少,相关任务上性能欠佳。
参数高效微调技术是适应表格数据的典型应用。下面介绍其在表格数据查询和分析上的两个案例。
.
1)表格数据查询
表格数据查询常需编写复杂的SQL代码,对初学者门槛高。Text-to-SQL技术可将自然语言转为SQL,提升效率,降低难度。大语言模型助力该技术发展,但在金融等垂直领域,因数据稀缺,全参数微调易过拟合,PEFT技术成更优选择。
图4.10:FinSQL示意图
FinSQL 是面向金融垂直领域的Text-to-SQL框架,包含提示构造、参数高效微调 和输出校准三部分。
-
提示构造:通过混合数据增强和并行模式链接提升数据质量和检索效率;
-
参数高效微调:采用LoRAHub融合多个LoRA模块,降低计算成本并提升少样本场景性能;
-
输出校准:修正语法错误并用Self-Consistency方法选择一致性SQL。
FinSQL相比基线方法,显著提升了金融领域Text-to-SQL任务的准确性和效率。
.
2)表格数据分析
表格数据分析中,传统深度学习方法因表格数据缺乏局部性、包含多种数据类型和特征少而难以直接应用。
大语言模型编码大量先验知识,有效弥补表格数据特征不足的问题。但为更好地适应表格任务,仍需少量标记数据微调,而少量数据易导致过拟合。PEFT技术通过仅微调部分参数,有效降低过拟合风险,使大语言模型在表格数据上的性能更稳健。
图4.11: TabLLM 框架图
例如,TabLLM提出基于大语言模型的少样本表格数据分类框架,将表格数据序列化为自然语言字符串并附上分类描述提示模型,使用LoRA在少量带标签样本上微调,其性能在多个基准数据集上超过传统深度学习和梯度提升树等基线方法,展现出强大的小样本学习能力。
.
其他参考:【大模型基础_毛玉仁】系列文章
声明:资源可能存在第三方来源,若有侵权请联系删除!