PEFT 文档

Polytropon

Hugging Face's logo
加入 Hugging Face 社区

并获得增强的文档体验

开始使用

Polytropon

Polytropon 是一种多任务模型,其中包含许多不同的 LoRA 适配器“库存”。该模型通过路由函数从库存中学习适配器的正确组合,以为特定任务选择最佳模块子集。PEFT 还支持 Multi-Head Adapter Routing (MHR) 用于 Polytropon,它通过更细粒度地组合适配器头来构建和改进路由功能。适配器头被分成不相交的块,并为每个块学习不同的路由函数,从而实现更高的表达性。

在多任务学习中结合模块化技能
用于跨任务泛化的多头适配器路由

论文摘要如下:

模块化设计鼓励神经模型解开和重组不同方面的知识,以便更系统地推广到新任务。在这项工作中,我们假设每个任务都与来自(可能很小的)库存的潜在离散技能子集相关联。反过来,技能对应于参数高效(稀疏/低秩)模型参数化。通过联合学习这些和一个任务-技能分配矩阵,每个任务的网络被实例化为活动技能参数的平均值。为了促进跨任务的技能的非平凡软分区,我们试验了一系列归纳偏差,例如印度自助餐过程先验和双速学习率。我们在两个主要设置中评估了我们的潜在技能模型:1) 在 BabyAI 平台的 8 个级别上进行基于地面的指令跟随的多任务强化学习;2) 在 CrossFit 上预训练的文本到文本生成模型的少样本自适应,CrossFit 是一个包含 160 个 NLP 任务的基准。我们发现,与知识在任务之间纠缠在一起的完全共享、特定于任务或条件生成的参数的基线相比,网络的模块化设计显着提高了强化学习中的样本效率和监督学习中的少样本泛化能力。此外,我们展示了离散技能如何帮助可解释性,因为它们产生了一个明确的任务层次结构。

PolyConfig

class peft.PolyConfig

< >

( 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 r: int = 8 target_modules: Optional[Union[list[str], str]] = None exclude_modules: Optional[Union[list[str], str]] = None modules_to_save: Optional[list[str]] = None init_weights: bool = True poly_type: Literal['poly'] = 'poly' n_tasks: int = 1 n_skills: int = 4 n_splits: int = 1 )

参数

  • r (int) — Poly 中每个 Lora 的注意力维度。
  • target_modules (Union[List[str],str]) — 应用 Poly 的模块名称。
  • exclude_modules (Optional[Union[List[str], str]]) — 不应用适配器的模块名称。当传递字符串时,将执行正则表达式匹配。当传递字符串列表时,将执行精确匹配,或者检查模块名称是否以任何传递的字符串结尾。
  • modules_to_save (List[str]) — 除了 Poly 层之外,要设置为可训练并在最终检查点中保存的模块列表。
  • init_weights (bool) — 是否执行 Poly 权重的初始化。
  • poly_type (Literal["poly"]) — 要使用的 Poly 模块的变体。目前,仅支持 “poly”。
  • n_tasks (int) — 多任务场景中的任务数。
  • n_skills (int) — 每个 Poly 层中的技能 (LoRA) 数量。
  • n_splits (int) — Poly 层的每个 LoRA 中的分割数。大于 1 的值表示使用多头路由 (MHR)。

这是用于存储 PolyModel 配置的配置类。

PolyModel

class peft.PolyModel

< >

( 模型 配置 适配器名称 )

< > 在 GitHub 上更新