Как быстро выбирать языковые модели (LLM) под свои задачи

2d08f46937d7e99566180ced594f0cdc.png

Предыстория

Последние полгода я активно занимаюсь разработкой сервисов на базе больших языковых моделей, они же «LLM». Для каждого проекта мне приходится подбирать модель по определенным критериям: языковая поддержка, требования к памяти, типу (instruction-based или completion), скорости генерации и т.п. Первое время я использовал платформу HuggingFace, где ежедневно публикуются около сотни новых моделей. Но кто им пользовался, знает, насколько там неудобный и слабый поиск: даже точные совпадения по названию он иногда не выдаёт. Плюс к этому, приходится тратить достаточно времени, чтобы найти и сравнить модели по нескольким критериям.

На платформе, конечно, можно обнаружить пару рейтингов, которые немного упрощают задачу выбора. Там даже можно сориентироваться по бенчмаркам: HuggingFace Leaderboard (общие) и BigCode LeaderBoard (для генерациии и обработки исходного кода). Но упрощают поиск они не сильно, потому что даже при наличие готовых таблиц с очевидными лидерами, сами списки моделей небольшие. Например, HF Leaderboard ограничивается только 1300 моделями, BigCode отображает всего около 30, в то время как «за бортом» рейтинга остаются десятки других новых и интересных квантизованных или «затюненных» моделей, более подходящих для моих задач. Их только нужно как-то найти.

Иногда мелькали ссылки на github репозитории с рейтингами моделей. Но они обновляются редко и содержат, пожалуй, даже ещё более короткий список моделей. Так что тоже не то.

В результате я решил, что нужно взять актуальную базу моделей с HuggingFace, где их порядка 40.000, и прикрутить к этой базе удобный интерфейс для поиска, фильтрации и сравнения моделей. Так появился проект LLM Explorer.

Каждый день бот сканирует репозитории и добавляет новые языковые модели, удаляет неактуальные, обновляет информацию о числе лайков и загрузок по существующим. Кроме этого, дополняет данные о моделях значениями бенчмарков из нескольких рейтингов, что позволяет их сравнивать по различным срезам. На декабрь в базе LLM Explorer больше 14.000 актуальных языковых моделей. Могло быть и больше, но я не добавляю в базу модели с нулевыми загрузками и те, что сильно устарели.

Теперь выбор нужной языковой модели у меня занимает пару минут. 

Возможности LLM Explorer

Если бы меня попросили обозначить наиболее значимые возможности LLM Explorer, я бы назвал следующие:

  • Готовые тематические списки языковых моделей: те, которые работают на 8GB или 16GB оперативки, сгруппированные по параметрам (7b, 34b), instruction-based модели, доступные для коммерческого использования, «без цензуры» и пр.

  • Рейтинг по основным группам моделей сразу на стартовой (блоки «TOP 10…»), включая те, что сейчас в тренде.

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

  • Возможность быстрого анализа «внутренностей» моделей, их параметров обучения и файн-тюнинга.

  • Функция быстрого и контекстного поиска по ключевым словам и тегам.

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

  • Сохранение настроек поиска и ранее используемых фильтров.

  • Анализ списка моделей, полученных на основе базовой модели (см. поле «Базовая модель» в карточке модели).

Стартовая страница

В большинстве случаев мне достаточно зайти на стартовую и сразу «провалиться» в нужную модель, которая обычно оказывается лучшей в своей группе. Для этого есть рейтинги. Но если хочется более детального сравнения, то лучше начать с полного списка или конкретной группы (например, «LLM for Commercial Use» или «Models Fit in 8GB RAM», если хочется найти вариант подешевле).

929c96593bda6cbe79115678cf0a244e.png

Ниже я покажу, как находить подходящие модели для решения ваших задач на паре примеров.

Пример использования №1: Поиск более интересной альтернативы для популярной модели Mistral 7B

В качестве базы я возьму популярную модель Mistral 7B, про которую активно рассказывают в блогах и ML-пабликах. Модель хорошая, рабочая, но вдруг есть более качественная альтернатива с той же архитектурой? Открываем страницу https://llm.extractum.io/list/ — здесь размещен полный каталог моделей. После этого введем в строку быстрого поиска «mistral-7b»:

ceae36ad5f4f9484a7c486210d531c38.png

Первая строка — лидер рейтинга, который может похвастаться оценкой 63.64 на Leaderboard. Обратите внимание, это не оригинальная модель Mistral 7B от MistralAI, а её «затюненная» версия. Оригинальная Mistral имеет более низкий балл 54.96. Так почему бы не попробовать альтернативную?

Рассмотрим другой пример, когда вы находитесь внутри карточки оригинальной модели Mistral 7B:

7d089a52301850103f9c5dce1e3ddee1.png

Справа вы найдете список альтернативных моделей, каждая из которых имеет ту же архитектуру и похожие параметры, но другую оценку. Зеленый цвет означает, что модель превосходит выбранную вами по своим параметрам.

Перейдем к первому варианту в списке:

8c2d8e1e75629d15dce48eb6b2e3dc0e.png

Это лучшее решение в категории. Таким образом, вы можете находить для себя более подходящие варианты по важным для вас параметрам.

Пример использования №2: Поиск модели, совместимой с архитектурой Llama, которой будет достаточно 16 ГБ оперативки на MacOS, с большим контекстным окном и высоким рейтингом на Hugging Face.

Снова погружаемся в процесс поиска. На этот раз наша цель — лучшая модель для коммерческого использования, которая эффективно работает на 16 ГБ ОЗУ MacOS и совместима с библиотекой llama.cpp (подробнее можно прочитать в статье о настройке вывода). Так что же будет считаться «лучшей» моделью в этом контексте? — Та, которая имеет самый высокий рейтинг на HF Leaderboard, минимальное требуемое VRAM для вывода (менее 16 ГБ) и максимальную длину контекста.

Начнем поиск отсюда: https://llm.extractum.io/list/?16GB.

d589c7565720657304122af63dab49bc.png

Для начала скроем все лишние столбцы:

ce6415cd1af9d0181a560f75fd0d9ea4.png

Затем отфильтруем модели на основе их типа архитектуры. Оставим только те, которые совместимы с Llama:

77441d573273977c65d912cc2cfee701.png

Перед нами список оставшихся 3900 моделей из первоначальных 8900. Теперь отсортируем все модели, у которых длина контента составляет менее 32 000 токенов:

d5d21f034e4f098aa9e9aff1be335c8c.png

Осталось 135 решений. Что ж, сузим выбор до моделей с коммерческими лицензиями, включая лицензии MIT, Apache-2.0 и лицензии Creative Commons (и исключая любые с некоммерческими вариациями):

89674672e9e9d636539c86500a836474.png

Теперь можно выдохнуть — в списке только 17 моделей. Учитывая, что только две модели из списка имеют оценки на HuggingFace Leaderboard, начать лучше с них. Например, с этой:

198018a93d8f21383e87a4e96334d5bf.png

Чтобы открыть карточку модели, нужно кликнуть по её названию. Внутри содержится полная информация по ее параметрам, включая размер контекста:

78b62930fcea000a1d4f12fd1d86ed07.png

Все они отлично справляются с задачей анализа данных для поиска нужных результатов, хотя и имеют более короткий контекст. Таким образом, если контекст в 32000 токенов — не критический параметр, можно рекомендовать первую модель из списка альтернатив.

Кстати, этот процесс поиска можно запустить и с другой страницы — https://llm.extractum.io/list/? for_commercial. Она содержит все модели, разрешенные для коммерческого использования — это значит, что сразу можно сосредоточиться на поиске по другим параметрам:

0d2ae7bbaf7b445bb7dc534782f991cd.png

Таким образом, можно использовать многоуровневую фильтрацию моделей, начиная с:

  • Требуемого объема видеопамяти, типа лицензии, типов моделей (Codegen, основанные на инструкциях), типа квантизации (GGUF, AWQ, GPTQ) и т.д.

  • Выбора конкретных ключевых слов, упомянутых в названии, описании, тегах и т.д. через быстрый поиск.

  • Фильтрации или выбора конкретных элементов через выпадающее меню в таблице или использования предустановок в выпадающем списке.

Альтернативные критерии выбора оптимальной модели

Рейтинг HuggingFace Leaderboard — не единственный помощник для поиска подходящей модели. При выборе вы можете учитывать популярность/трендовость модели, которая формируется на базе динамики загрузок и «лайков» за последние 3 дня.

Выпадающее меню с пресетами позволяет быстро переключаться между списками, сформированными на основе различных критериев:

c05dafa872d5f7b33569512cce863ba7.png

Интерфейс карточки модели

Помимо описанных случаев использования, можно выделить ряд возможностей LLM Explorer, которые помогают сделать навигацию среди тысячей моделей более приятной и эффективной. В частности, повысить удобство работы с карточкой модели. Данные возможности проиллюстрированы на скриншоте ниже:

cbbab387648607595fb86be06ac11f02.png

Планы по развитию

Есть несколько новых возможностей, которые скоро появятся в сервисе:

  • Отдельные бенчмарки моделей ARC, HellaSwag, MMLU, HumanEval, и другие популярные, а также отдельные бенчмарки по поддержке языков программирования для Code-Generation моделей.

  • Стоимость использования моделей на типовых конфигурациях.

  • Быстрый фильтр по поддерживаемым языкам.

  • Быстрый фильтр по отраслям и тематике модели (математичекая, финансовая, медицинская и пр).

  • Ну и самая частая просьба от посетителей — это темная тема.

Заключение

Если у вас появились вопросы по функциональности или предложения по развитию сервиса, напишите в комментариях. Буду рад любой обратной связи.

© Habrahabr.ru