Сочетание нескольких адаптеров LoRA для Llama 2

Sочетание нескольких адаптеров для 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…