/MoDA

Is a framework designed to enhance the performance and flexibility of large language models by dynamically selecting and integrating specialized LoRA adapters based on the input query.

Primary LanguageJupyter NotebookMIT LicenseMIT

Mixture of dynamically connected adapters (MoDA)

Смесь Динамически Подключаемых Адаптеров (Mixture of dynamically connected adapters или просто MoDA) — это фреймворк, разработанный для повышения производительности и гибкости крупных языковых моделей за счет динамического выбора и интеграции специализированных адаптеров на основе входного запроса. Этот проект облегчает бесшовную интеграцию и выполнение различных адаптеров для оптимизации ответов на разные типы запросов.

Русский | English

moda schema

Особенности

  • Динамический выбор адаптеров - на входе у системы стоит модель способная выполнять function call (router), благодаря этому система самостоятельно выбирает наиболее подходящий адаптер в зависимости от условий входного запроса;
  • Интеграция нескольких адаптеров - ведомая модель (socket) поддерживает возможность переключения на несколько адаптеров с различными функциями, такими как языковые (language specific) или доменные (domain specific) задачи;
  • Эффективное использование ресурсов - предусмотрена поддержка bitsnadbytes для загрузки моделей в 8-битном формате, для экономии вычислительных ресурсов;
  • Расширяемый фреймворк - легко добавить и настроить новые адаптеры через YAML-конфиг.

Конфигурация

MoDA использует файл config.yml для указания моделей и адаптеров. Ниже представлена схема конфигурационного файла.

router:
  name: <model_name>
  load_in_4bit: <True/False> # False по умолчанию
  load_in_8bit: <True/False> # False по умолчанию

socket:
  name: <model_name>
  load_in_4bit: <True/False> # False по умолчанию
  load_in_8bit: <True/False> # False по умолчанию

functions:
  - name: <adapter_name>
    prompt: <system_prompt>
    description: <description>
    condition: <condition_for_using_adapter>
    chat_template: <chat_template>

Полный пример можно найти в файле config.yml, расположенном в корне этого репозитория.

Использование

Для того чтобы понять, как использовать MoDA, обратитесь к Jupyter-блокноту moda.ipynb, что в корне репозитория. Этот ноутбук предоставляет исчерпывающий пример загрузки моделей, инициализации разговора, обработки вызовов функций и динамического переключения между различными адаптерами для эффективной обработки пользовательских запросов.

Лицензия

Этот проект лицензирован под лицензией MIT. Подробности см. в файле LICENSE.

Цитирование

@misc{moda2024sources,
    title={Mixture of dynamically connected adapters (MoDA)}, 
    author={Pavel Rykov},
    year={2024}
}