PEFT 文档
Llama-Adapter
并获得增强的文档体验
开始使用
Llama-Adapter
Llama-Adapter 是一种专为将 Llama 转换为指令遵循模型而设计的 PEFT 方法。Llama 模型被冻结,只学习一组附加在输入指令词元前的适应性提示。由于随机初始化的模块插入模型中可能导致模型丢失部分现有知识,Llama-Adapter 使用零初始化的注意力和零门控来逐步将指令提示添加到模型中。
论文摘要如下:
我们提出了 LLaMA-Adapter,一种轻量级的适配方法,用于高效地将 LLaMA 微调为指令遵循模型。使用 52K 条自指令演示,LLaMA-Adapter 在冻结的 LLaMA 7B 模型上仅引入了 1.2M 个可学习参数,在 8 个 A100 GPU 上的微调成本不到一小时。具体来说,我们采用一组可学习的适配提示,并将它们前置到较高 Transformer 层的输入文本词元中。然后,提出了一种带有零门控的零初始化注意力机制,它自适应地将新的指令性线索注入 LLaMA,同时有效地保留其预训练知识。通过高效训练,LLaMA-Adapter 生成高质量的响应,与完全微调了 7B 参数的 Alpaca 相当。此外,我们的方法可以简单地扩展到多模态输入,例如图像,用于图像条件的 LLaMA,它在 ScienceQA 上实现了卓越的推理能力。我们在 https://github.com/ZrrSkywalker/LLaMA-Adapter 发布了我们的代码。.
AdaptionPromptConfig
class peft.AdaptionPromptConfig
< 源码 >( 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://huggingface.co/papers/2303.16199 中描述的适配提示。
顶部的 L 个注意力模块被替换为 AdaptedAttention 模块,这些模块包装了原始模块,但插入了带有门控(用于零初始化)的可训练提示。
关于多适配器模式的说明
- 我们通过维护一个以适配器名称为索引的 AdaptedAttention 模块字典来存储不同适配器的状态。
- 每次切换适配器时,我们都会从模型中移除当前活动适配器的模块,将它们存储在字典中,并用新适配器的模块替换它们。
- 为避免状态重复和潜在的不一致,当前活动的适配器总是从字典中移除。
- 禁用适配器也会导致模块从模型中移除。
添加一个具有给定名称和配置的适配器。
通过换出 AdaptedAttention 模块来禁用适配器层。
通过换入缓存的 AdaptedAttention 模块来启用适配器层。
设置模型以使用具有给定名称的适配器。