LLaMA-Adapter:零初始注意机制的语言模型高效微调

23年6月来自上海AI实验室,香港中文大学和UCLA的论文“LLaMA-Adapter: Efficient Fine-tuning of Language Models with Zero-init Attention“。

LLaMA-Adapter是一种轻量级的自适应方法,可以有效地将 LLaMA 微调为指令跟从模型。 用 52K 自指令(self instruct)的演示,LLaMA-Adapter 在冻结的 LLaMA 7B 模型上仅仅引入了 1.2M 可学习参数,并且在 8 个 A100 GPU 上进行微调的成本还不到一小时。 具体来说,采用一组可学习适应的提示,并将它们添加到Transformer更高层的单词token中。 然后,提出一种零门控(zero gating)的零初始注意机制,将新的指令线索自适应地注入LLaMA,同时有效地保留其预训练的知识。 通过高效的训练,LLaMA-Adapter 可以生成高质量的响应,可与具有全微调7B 参数的 Alpaca 相媲美。 除了语言命令之外,该方法还可以简单地扩展用于学习图像条件 LLaMA 模型的多模态指令,该模型在 ScienceQA 和 COCO Caption 基准上实现了卓越的推理性能。 此外,还评估了零初始注意机制,让它在传统视觉和语言任务上微调其他预训练模型(ViT、RoBERTa),展示了卓越的泛化能力。

如图显示LLaMA -adapter的特点。 轻量级自适应方法在一小时内仅用 120 万个可学习参数有效地微调 LLaMA 7B 模型。 经过训练,LLaMA-Adapter 表现出卓越的指令跟从和多模态推理能力。

添加图片注释,不超过 140 字(可选)

下图给出一些细节。如果随机初始化自适应提示,可能在训练开始时会对单词token造成干扰,从而损害微调的稳定性和有效性。 考虑到这一点,为了逐步学习指令知识,采用零初始注意机制和门控机制实现早期的稳定训练。该方法将最后 L个Transformer层的普通注意机制修改为零初始注意,即插入具有可学习提示的轻量级适配器。
请添加图片描述

除了文本指令之外,LLaMA-Adapter 还能够根据其他模态的输入回答问题,丰富的跨模态信息增强了语言模型。 如图所示:以ScienceQA基准[41]为例,类似于COCO Caption数据集[8];给定视觉和文本上下文以及相应的问题和选项,模型需要进行多模态理解才能给出正确答案;在 ScienceQA 基准 [41] 上,LLaMA-Adapter 被扩展为用于图像条件问答的多模态变型;给定图像作为视觉上下文,通过多尺度聚合获取全局图像token,并将其按元素添加到适应提示中以跟从视觉指令。

添加图片注释,不超过 140 字(可选)

零初始注意机制的适应提示方法,不仅限于指令模型领域,还可以进一步用于微调传统视觉和语言任务中的大模型,发挥卓越的泛化能力。
视觉模型。 选择预训练的 ViT [16] 作为下游图像分类任务的基础视觉模型。 与 LLaMA 类似,将自适应提示作为前缀插入到 ViT 中最上面的 L 个Transformer层中,并将所有插入层的注意操作修改为零初始注意。 通过越来越多地注入下游视觉语义,只在冻结ViT 之上引入一些参数,在 VTAB-1k [67] 基准上获得与全微调相当的分类精度,这表明了注意算子在视觉领域的功效。

语言模型。 用在大规模未标记文本语料库上预训练的 RoBERTa [40],并在 SQuAD [54] 基准上评估提取式问答的零初始化注意操作。 在 P-tuning v2 [38] 之上实现了零初始注意,这是一种有效适应地大语言模型的提示调整方法。 同样,仅启用 P-tuning v2 中的提示token和零门控因子,使其在微调期间可学习。 结果证明在传统语言任务上的优势。

### 微调Llama-Factory模型 对于微调Llama-Factory模型,过程涉及多个方面,包括初始化模型训练环境、定义微调参数以及可能涉及到的检查点恢复机制。 #### 初始化模型训练环境 使用 `L.Fabric` 来初始化模型训练环境是一个重要的起点。这一步骤会从 `model_config.yaml` 文件加载必要的模型配置,并基于这些配置创建GPT模型实例[^1]。此阶段确保了后续微调操作的基础设置正确无误。 #### 定义微调参数 为了有效地执行微调工作,在启动实际训练之前需明确定义一系列关键参数。这些参数涵盖了所选用的具体模型版本、目标数据集的选择、用于指导微调过程的数据模板设计、采用何种类型的微调策略(例如LoRA适配器),还有诸如输出保存路径、批量处理尺寸、学习率调整方案及记录进度的日志频率等方面的内容[^3]。 ```bash # Example of defining finetuning parameters within a script or configuration file. finetune_params=( --model_name_or_path "path_to_model" --dataset_name "your_dataset" --template "specific_template_for_data" --adapter_type lora --output_dir "./results" --per_device_train_batch_size 8 --learning_rate_scheduler linear --logging_steps 10 ) ``` #### 检查点恢复方法 当考虑继续先前中断过的微调进程时,则需要关注如何实现有效的检查点恢复功能。针对这一需求,可以通过适当修改脚本文件来支持这项特性。具体来说,如果想要使 `finetune_lora.sh` 支持从特定检查点重启的能力,那么就需要按照一定方式编辑该shell脚本中的相应部分[^2]。 ```bash # Pseudo code snippet showing how one might modify the shell script to support checkpoint recovery. if [[ -n "$CHECKPOINT_PATH" ]]; then echo "Resuming from checkpoint at $CHECKPOINT_PATH..." python train.py \ --resume_from_checkpoint ${CHECKPOINT_PATH} \ "${@}" else python train.py "${@}" fi ``` 通过上述措施可以较为全面地覆盖到对Llama-Factory模型实施微调所需的主要环节和技术细节。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值