使用多个LoRA适配器组合Llama 2

多个LoRA适配器的组合使用:体验Llama 2

在不精细调整新适配器的情况下为您的LLM添加技能

作者提供的图片 — 使用来自Pixabay的图片制作

完全精细调整预训练的大型语言模型 (LLM) 对于不同的任务来说是非常昂贵的。相反,我们可以固定LLM的参数,同时只对通过LoRA适配器添加的几百万可训练参数进行精细调整。

换句话说,我们只需要对一个适配器进行精细调整,就可以让模型执行一个目标任务。例如,如果我们想将一个预训练的LLM转化为翻译模型,我们可以对一个适配器进行精细调整以实现翻译功能。我们可以为每个我们希望LLM执行的任务进行精细调整一个适配器。

但是我们能否将多个适配器组合在一起,形成一个单一的多任务适配器呢?

例如,如果我们有一个用于翻译的适配器和一个用于摘要的适配器,我们能否将它们结合起来,以便LLM可以进行翻译和摘要?

在本文中,我将展示如何将多个LoRA适配器组合成一个单一的多任务适配器。我们将看到这非常简单,并且得到的适配器与用于组合的适配器一样出色。

使用Llama 2 7B,我们将看到如何将用于翻译的适配器与用于对话的另一个适配器结合起来。有了这个适配器,我们将能够创建一个既能进行翻译又能聊天的Llama 2。

我还实现了一个笔记本,可以运行本文中解释的所有代码。您可以在这里找到它:

获取笔记本(#30)

向Llama 2添加多个适配器

在组合适配器之前,我们需要将它们添加到基础LLM中。

我们必须确保要添加的适配器已针对我们的基础LLM(即Llama 2 7B)进行了精细调整。您可以在适配器目录中的“adapter_config.json”文件中找到此信息。例如,对于kaitchup/Llama-2–7B-oasstguanaco-adapter(MIT许可证),adapter_config.json包含以下数据:

{  "auto_mapping": null,  "base_model_name_or_path": "meta-llama/Llama-2-7b-hf",  "bias": "none",  "fan_in_fan_out": false,  "inference_mode": true,  "init_lora_weights": true,  "layers_pattern": null…