PEFT 文档
Llama-Adapter
并获取增强的文档体验
开始使用
Llama-Adapter
Llama-Adapter 是一种 PEFT 方法,专门为将 Llama 转变为指令遵循模型而设计。 Llama 模型被冻结,仅学习添加到输入指令标记前缀的一组适配提示。由于插入模型中随机初始化的模块可能会导致模型丢失其现有的一些知识,因此 Llama-Adapter 使用零初始化的注意力机制和零门控来逐步将指令提示添加到模型中。
论文摘要如下:
我们提出了 LLaMA-Adapter,这是一种轻量级适配方法,可以有效地将 LLaMA 微调为指令遵循模型。使用 52K 自我指导演示,LLaMA-Adapter 仅在冻结的 LLaMA 7B 模型上引入了 120 万个可学习参数,并且在 8 个 A100 GPU 上进行微调的成本不到一小时。具体来说,我们采用了一组可学习的适配提示,并将它们添加到较高 Transformer 层的输入文本标记之前。然后,提出了一种具有零门控的零初始化注意力机制,该机制自适应地将新的指令线索注入到 LLaMA 中,同时有效地保留其预训练知识。通过高效的训练,LLaMA-Adapter 生成高质量的响应,与完全微调 7B 参数的 Alpaca 相当。此外,我们的方法可以简单地扩展到多模态输入,例如图像,用于图像条件 LLaMA,这在 ScienceQA 上实现了卓越的推理能力。我们在 https://github.com/ZrrSkywalker/LLaMA-Adapter 发布了我们的代码.
AdaptionPromptConfig
class peft.AdaptionPromptConfig
< source >( task_type: typing.Union[str, peft.utils.peft_types.TaskType, NoneType] = None peft_type: typing.Union[str, peft.utils.peft_types.PeftType, NoneType] = None auto_mapping: typing.Optional[dict] = None base_model_name_or_path: typing.Optional[str] = None revision: typing.Optional[str] = None inference_mode: bool = False target_modules: str = None adapter_len: int = None adapter_layers: int = None )
存储 AdaptionPromptModel 的配置。
AdaptionPromptModel
实现 https://arxiv.org/pdf/2303.16199.pdf 中描述的适配提示。
顶部的 L 注意力模块被替换为 AdaptedAttention 模块,这些模块包装了原始模块,但插入了带有门控(用于零初始化)的可训练提示。
关于多适配器模式的说明
- 我们通过保留由适配器名称索引的 AdaptedAttention 模块字典来存储不同适配器的状态。
- 每次我们切换适配器时,我们都会从模型中删除当前活动适配器的模块,将其存储在字典中,并将其替换为新适配器的模块。
- 为了避免重复和可能不一致的状态,当前活动的适配器始终从字典中删除。
- 禁用适配器也会导致模块从模型中删除。
添加具有给定名称和配置的适配器。
通过交换 AdaptedAttention 模块来禁用适配器层。
通过换入缓存的 AdaptedAttention 模块来启用适配器层。
设置模型以使用具有给定名称的适配器。