Предыстория

Последние полгода я активно занимаюсь разработкой сервисов на базе больших языковых моделей, они же «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)


  1. stf555
    12.12.2023 11:45

    Очень хорошо! А можете добавить фильтр на <12 VRAM?


    1. tablum Автор
      12.12.2023 11:45

      Да, можно добавить. У вас какой-то специфический кейс? Почему 12?


      1. stf555
        12.12.2023 11:45

        Имя ему 3060 :)


        1. tablum Автор
          12.12.2023 11:45

          Ага, тогда имеет смысл.


          1. novoselov
            12.12.2023 11:45

            GPU Spec Database в помощь


  1. Lidms
    12.12.2023 11:45

    Проведена большая работа. Вы молодец. А как бы я мог найти llm лучшие для создания кода на питоне?


    1. tablum Автор
      12.12.2023 11:45

      Начните отсюда https://llm.extractum.io/list/?codegen
      Справа есть поле для быстрого поиска, в него можно вписать python, отфильтруются те, что для python кода.


      1. Lidms
        12.12.2023 11:45

        Самую лучшую на сегодняшний день: Phind-CodeLlama-34B-v2 так не найти.
        Есть еще варианты?


        1. tablum Автор
          12.12.2023 11:45

          Она в рейтинге (в районе 34 ранка), просто сейчас сортировка по средней оценке бенчмарков. Чуть позже прикручу в этот раздел сортировку по humaneval-python. Из codegen моделей WizardCoder-Python-34B хорошая, она не только код умеет генерить, но и по остальным бенчмаркам хороша (равно как и квантизованная).


          1. Lidms
            12.12.2023 11:45

            Ок. Просьба еще добавить фильтр на <24 VRAM. Таких карт сейчас тоже много типа Tesla P40, M40 и т.д.


            1. tablum Автор
              12.12.2023 11:45

              Добавлю


  1. SlavikF
    12.12.2023 11:45

    Извиняюсь, если это off-topic, но подходят ли LLM модели для задачи написания summary (резюме, краткое содержание)?

    То есть чтобы я мог отдать на вход длинную статью на русском языке (приблизительно 30-60 минут выступления), а получить несколько предложений с кратким содержанием? Или в какую сторону копать?


    1. tablum Автор
      12.12.2023 11:45

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


  1. heartdevil
    12.12.2023 11:45

    Извините за оффтопик, а можно ли LLM поднять на ноуте, где только cpu поддерживается? Оперативки 32гига. Или все будет жутко тормозить?


    1. tablum Автор
      12.12.2023 11:45

      Можно попробовать 4bit кватизацию для модели и инференс через llama.cpp. Но, конечно, генерация будет небыстрой.


    1. 314159abc
      12.12.2023 11:45

      7B 8bit q8_0 на intel core i7 ноутбучном около 2 токена/секунду выдает.


  1. unih
    12.12.2023 11:45

    Спасибо! прямо то, что доктор прописал


  1. neowisard
    12.12.2023 11:45

    Для тех кто не заметил - Support for Mixtral was merged into Llama.cpp on December 13th.


    1. tablum Автор
      12.12.2023 11:45

      Да, они оперативно влили.


  1. slivka_83
    12.12.2023 11:45

    Спасибо за очень полезный инструмент. Поисковик HF действительно ужасный :)

    Есть несколько предложений/вопросов:

    1. Планируется ли подключить русские бенчмарки RussianSuperGLUE или MERA?

    2. Таблица сейчас полностью не влазит на экран (по крайней мере для ноута, fullhd). Постоянно приходится прокручивать вниз-вверх, влево-направо - очень не удобно. Предложения:

    - Зафиксировать первый столбец с названием (и убрать из него maintainer, чтобы стал поуже - для него есть отдельный столбец)

    - Заменить текст в заголовках колонок на иконки - это сильно уменьшит их ширину.

    - Как-нибудь сделать горизонтальную прокрутку постоянно видной (даже если не докрутили до низа таблицы)

    3. Сделать цвет кнопок глобальных фильтров однотонным. Текст на градиенте трудновато читать.


    1. tablum Автор
      12.12.2023 11:45

      Спасибо за комментарий и предложения.

      1. Пока не планирую, для начала появятся стандартные MMLU, ARC, TrustfulQA и аналогичные.

      2. OK, хорошие предложения. Сделаю.

      3. Здесь нужно пособирать больше обратной связи. Если действительно это так, то уберу градиент.