MergeKit: open-source набор инструментов для слияния предобученных языковых моделей 73

小编 ·

MergeKit: open-source набор инструментов для слияния предобученных языковых моделей

MergeKit — это инструмент на Python, объединяющий несколько больших моделей в одну и объединяющий их сильные стороны. Например, если модель A сильна в писательстве, а модель B — в коде, MergeKit может объединить их в более мощную модель. Слияние возможно как на CPU, так и на GPU, при этом рекомендуется сначала объединять модели высокой точности, а затем выполнять квантование и калибровку. Этот AI-проект популярен среди разработчиков — например, его используют для превращения образовательного контента в игровую тематику, делая создание более эффективным и увлекательным.

MergeKit: open-source набор инструментов для слияния предобученных языковых моделей

Что такое Mergekit?

Mergekit — это Python-инструмент, который позволяет объединять несколько больших моделей в одну, используя преимущества каждой из них. Например, если модель A хорошо справляется с написанием текстов, а модель B отлично подходит для программирования, mergekit может объединить их в одну более мощную модель. Он также позволяет выполнять объединение на CPU или GPU, при этом рекомендуется сначала объединять модели с высокой точностью, а затем выполнять квантование и калибровку. Этот AI-проект очень популярен среди разработчиков — например, некоторые используют его, чтобы адаптировать образовательный контент под игровую тематику, делая творческий процесс более эффективным и увлекательным.

MergeKit: открытый инструментарий для объединения предварительно обученных языковых моделей.jpg

Основные функции Mergekit

  • Объединение моделей: объединение нескольких предварительно обученных языковых моделей в одну многофункциональную модель без дополнительного обучения или вычислительных затрат на интеграцию.

  • Множество алгоритмов объединения: поддержка различных методов объединения, таких как линейная интерполяция, сферическая линейная интерполяция (SLERP), Task Arithmetic, TIES, DARE и другие.

  • Аппаратная гибкость: поддержка работы на CPU или GPU, минимально требуется всего 8 ГБ видеопамяти.

  • Низкое потребление памяти: использование технологии ленивой загрузки тензоров для снижения расхода памяти.

  • Интерполяция параметров: поддержка градиентов интерполяции значений параметров для более тонкого управления.

  • Послойная сборка: поддержка сборки языковых моделей из фрагментов слоёв различных моделей («Frankenmerging»).

  • Объединение моделей смеси экспертов: объединение нескольких плотных моделей в модель со смесью экспертов.

  • Извлечение LoRA: извлечение PEFT-совместимых низкоранговых приближений из дообученных моделей.

  • Эволюционные методы объединения: включает ряд экспериментальных эволюционных методов объединения.

Основные особенности Mergekit

  • Кроссплатформенное выполнение: поддержка выполнения на GPU и CPU, для ускорения достаточно минимум 8 ГБ видеопамяти.

  • Низкое потребление памяти: достигается за счёт ленивой загрузки тензоров.

  • Множество алгоритмов объединения: включая линейную интерполяцию, SLERP, Task Arithmetic и другие, в будущем планируется добавить новые алгоритмы.

  • Графический интерфейс пользователя (GUI): предоставляется GUI на базе Arcee, упрощающий процесс объединения.

Установка и использование

Установка

git clone https://github.com/arcee-ai/mergekit.git
cd mergekit
pip install -e .

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

mergekit-yaml config.yml ./output-dir --cuda

Сценарии применения Mergekit

  • Объединение возможностей моделей: объединение моделей из различных предметных областей в одну многофункциональную модель.

  • Оптимизация производительности: сочетание преимуществ разных моделей для повышения общей производительности.

  • Оптимизация в условиях ограниченных ресурсов: создание более компактных, но мощных моделей при ограниченных вычислительных ресурсах.

  • Персонализированная настройка моделей: адаптация моделей под конкретные потребности.

  • Исследования и эксперименты с моделями: предоставление исследователям гибкой платформы для изучения различных стратегий объединения.

Github: https://github.com/arcee-ai/mergekit