Предыстория
Последние полгода я активно занимаюсь разработкой сервисов на базе больших языковых моделей, они же «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», если хочется найти вариант подешевле).
Ниже я покажу, как находить подходящие модели для решения ваших задач на паре примеров.
Пример использования №1: Поиск более интересной альтернативы для популярной модели Mistral 7B
В качестве базы я возьму популярную модель Mistral 7B, про которую активно рассказывают в блогах и ML-пабликах. Модель хорошая, рабочая, но вдруг есть более качественная альтернатива с той же архитектурой? Открываем страницу https://llm.extractum.io/list/ — здесь размещен полный каталог моделей. После этого введем в строку быстрого поиска «mistral-7b»:
Первая строка — лидер рейтинга, который может похвастаться оценкой 63.64 на Leaderboard. Обратите внимание, это не оригинальная модель Mistral 7B от MistralAI, а её «затюненная» версия. Оригинальная Mistral имеет более низкий балл 54.96. Так почему бы не попробовать альтернативную?
Рассмотрим другой пример, когда вы находитесь внутри карточки оригинальной модели Mistral 7B:
Справа вы найдете список альтернативных моделей, каждая из которых имеет ту же архитектуру и похожие параметры, но другую оценку. Зеленый цвет означает, что модель превосходит выбранную вами по своим параметрам.
Перейдем к первому варианту в списке:
Это лучшее решение в категории. Таким образом, вы можете находить для себя более подходящие варианты по важным для вас параметрам.
Пример использования №2: Поиск модели, совместимой с архитектурой Llama, которой будет достаточно 16 ГБ оперативки на MacOS, с большим контекстным окном и высоким рейтингом на Hugging Face
Снова погружаемся в процесс поиска. На этот раз наша цель — лучшая модель для коммерческого использования, которая эффективно работает на 16 ГБ ОЗУ MacOS и совместима с библиотекой llama.cpp. Так что же будет считаться «лучшей» моделью в этом контексте? — Та, которая имеет самый высокий рейтинг на HF Leaderboard, минимальное требуемое VRAM для вывода (менее 16 ГБ) и максимальную длину контекста.
Начнем поиск отсюда: https://llm.extractum.io/list/?16GB.
Для начала скроем все лишние столбцы:
Затем отфильтруем модели на основе их типа архитектуры. Оставим только те, которые совместимы с Llama:
Перед нами список оставшихся 3900 моделей из первоначальных 8900. Теперь отсортируем все модели, у которых длина контента составляет менее 32 000 токенов:
Осталось 135 решений. Что ж, сузим выбор до моделей с коммерческими лицензиями, включая лицензии MIT, Apache-2.0 и лицензии Creative Commons (и исключая любые с некоммерческими вариациями):
Теперь можно выдохнуть — в списке только 17 моделей. Учитывая, что только две модели из списка имеют оценки на HuggingFace Leaderboard, начать лучше с них. Например, с этой:
Чтобы открыть карточку модели, нужно кликнуть по её названию. Внутри содержится полная информация по ее параметрам, включая размер контекста:
Все они отлично справляются с задачей анализа данных для поиска нужных результатов, хотя и имеют более короткий контекст. Таким образом, если контекст в 32000 токенов — не критический параметр, можно рекомендовать первую модель из списка альтернатив.
Кстати, этот процесс поиска можно запустить и с другой страницы — https://llm.extractum.io/list/?for_commercial. Она содержит все модели, разрешенные для коммерческого использования — это значит, что сразу можно сосредоточиться на поиске по другим параметрам:
Таким образом, можно использовать многоуровневую фильтрацию моделей, начиная с
требуемого объема видеопамяти, типа лицензии, типов моделей (Codegen, основанные на инструкциях), типа квантизации (GGUF, AWQ, GPTQ) и т.д;
выбора конкретных ключевых слов, упомянутых в названии, описании, тегах и т.д. через быстрый поиск;
фильтрации или выбора конкретных элементов через выпадающее меню в таблице или использования предустановок в выпадающем списке.
Альтернативные критерии выбора оптимальной модели
Рейтинг HuggingFace Leaderboard — не единственный помощник для поиска подходящей модели. При выборе вы можете учитывать популярность/трендовость модели, которая формируется на базе динамики загрузок и «лайков» за последние 3 дня.
Выпадающее меню с пресетами позволяет быстро переключаться между списками, сформированными на основе различных критериев:
Интерфейс карточки модели
Помимо описанных случаев использования, можно выделить ряд возможностей LLM Explorer, которые помогают сделать навигацию среди тысячей моделей более приятной и эффективной. В частности, повысить удобство работы с карточкой модели. Данные возможности проиллюстрированы на скриншоте ниже:
Планы по развитию
Есть несколько новых возможностей, которые скоро появятся в сервисе:
Отдельные бенчмарки моделей ARC, HellaSwag, MMLU, HumanEval, и другие популярные, а также отдельные бенчмарки по поддержке языков программирования для Code-Generation моделей.
Стоимость использования моделей на типовых конфигурациях.
Быстрый фильтр по поддерживаемым языкам.
Быстрый фильтр по отраслям и тематике модели (математичекая, финансовая, медицинская и пр).
Ну и самая частая просьба от посетителей - это темная тема.
Заключение
Если у вас появились вопросы по функциональности или предложения по развитию сервиса, напишите в комментариях. Буду рад любой обратной связи.
Комментарии (21)
Lidms
12.12.2023 11:45Проведена большая работа. Вы молодец. А как бы я мог найти llm лучшие для создания кода на питоне?
tablum Автор
12.12.2023 11:45Начните отсюда https://llm.extractum.io/list/?codegen
Справа есть поле для быстрого поиска, в него можно вписать python, отфильтруются те, что для python кода.Lidms
12.12.2023 11:45Самую лучшую на сегодняшний день: Phind-CodeLlama-34B-v2 так не найти.
Есть еще варианты?tablum Автор
12.12.2023 11:45Она в рейтинге (в районе 34 ранка), просто сейчас сортировка по средней оценке бенчмарков. Чуть позже прикручу в этот раздел сортировку по humaneval-python. Из codegen моделей WizardCoder-Python-34B хорошая, она не только код умеет генерить, но и по остальным бенчмаркам хороша (равно как и квантизованная).
SlavikF
12.12.2023 11:45Извиняюсь, если это off-topic, но подходят ли LLM модели для задачи написания summary (резюме, краткое содержание)?
То есть чтобы я мог отдать на вход длинную статью на русском языке (приблизительно 30-60 минут выступления), а получить несколько предложений с кратким содержанием? Или в какую сторону копать?
tablum Автор
12.12.2023 11:45Да, это задача саммаризации: скормить большой текст в модель и попросить её изложить кратко. Подойдут любые модели, которые хорошо работают с русским языком.
heartdevil
12.12.2023 11:45Извините за оффтопик, а можно ли LLM поднять на ноуте, где только cpu поддерживается? Оперативки 32гига. Или все будет жутко тормозить?
tablum Автор
12.12.2023 11:45Можно попробовать 4bit кватизацию для модели и инференс через llama.cpp. Но, конечно, генерация будет небыстрой.
slivka_83
12.12.2023 11:45Спасибо за очень полезный инструмент. Поисковик HF действительно ужасный :)
Есть несколько предложений/вопросов:
1. Планируется ли подключить русские бенчмарки RussianSuperGLUE или MERA?
2. Таблица сейчас полностью не влазит на экран (по крайней мере для ноута, fullhd). Постоянно приходится прокручивать вниз-вверх, влево-направо - очень не удобно. Предложения:
- Зафиксировать первый столбец с названием (и убрать из него maintainer, чтобы стал поуже - для него есть отдельный столбец)
- Заменить текст в заголовках колонок на иконки - это сильно уменьшит их ширину.
- Как-нибудь сделать горизонтальную прокрутку постоянно видной (даже если не докрутили до низа таблицы)
3. Сделать цвет кнопок глобальных фильтров однотонным. Текст на градиенте трудновато читать.
tablum Автор
12.12.2023 11:45Спасибо за комментарий и предложения.
Пока не планирую, для начала появятся стандартные MMLU, ARC, TrustfulQA и аналогичные.
OK, хорошие предложения. Сделаю.
Здесь нужно пособирать больше обратной связи. Если действительно это так, то уберу градиент.
stf555
Очень хорошо! А можете добавить фильтр на <12 VRAM?
tablum Автор
Да, можно добавить. У вас какой-то специфический кейс? Почему 12?
stf555
Имя ему 3060 :)
tablum Автор
Ага, тогда имеет смысл.
novoselov
GPU Spec Database в помощь