На прошедшей неделе вышло сразу несколько новых Open Source LLM. Разбираемся, что в них особенного, а также как и зачем их запускать локально. Статья будет полезна тем, у кого мало опыта в работе с локальными большими языковыми моделями.

  1. Зачем запускать LLM локально

  2. Как запускать LLM локально

  3. Модели, вышедшие на прошедшей неделе

  4. Вывод

Зачем запускать LLM локально

Преимущества Open Source моделей по сравнению с использованием ChatGPT, Google Gemini, Claude 3 и тд:

  1. Бесплатно. Вам не нужно платить за подписку. И если $20 в месяц для личного использования — не критично, то при разработке своего проекта можно хорошо сэкономить на API.

  2. Оффлайн доступ. Модель запускается локально — вам не нужно подключение к интернету, VPN и тд.

  3. Приватно. Ваши данные никуда не отправляются, все хранится локально на компьютере. Можно не бояться, что корпорации получат доступ к личной информации.

  4. Персонализация. Используя такие подходы, как RAG, вы можете обогатить модели большим объемом своих данных — дать доступ к тысячам документов, хранящихся на вашем компьютере. И все это бесплатно.

Но, конечно, есть и минусы:

  1. Требования к железу. Хорошую LLM не получится запустить на слабом компьютере. Но, например, если у вас есть MacBook с чипом M1 и выше и хотя бы 16GB ОЗУ, то вам уже доступно множество моделей, качество которых будет сравнимо с ChatGPT 3.5 Turbo. Правда, это касается в основном запросов на английском языке, с русским языком Open Source работает хуже.

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

Как запускать LLM локально

LM Studio

LM Studio предоставляет удобный графический интерфейс для загрузки всех популярных LLM и общения с ними. Чтобы начать, вам нужно:

  1. Скачать и установить LM Studio с официального сайта

  2. В интерфейсе кликнуть "Download" в карточке нужной модели

  3. Перейти во вкладку "AI Chat" и писать запросы в выбранную Open Source LLM

Вкладка AI Chat выглядит по сути так же, как веб-интерфейс ChatGPT: слева список диалогов с моделью, по центру чат. Сверху можно выбрать модель, с которой будет диалог:

Интерфейс LM Studio -  все как в ChatGPT
Интерфейс LM Studio - все как в ChatGPT

LM Studio доступна на Mac с чипами M1 и выше, а также на Windows и Linux. Требования к RAM и GPU зависят от конкретной LLM, но рекомендуется иметь от 16GB оперативной памяти.

Ollama

Ollama — это приложение для Mac, Linux и Windows, предоставляющее быстрый доступ к Open Source LLM через CLI интерфейс. Здесь, в отличие от LM Studio, нет графического интерфейса, то есть писать запросы нужно в терминале. Но разработчики утверждают, что так даже удобнее, ведь все взаимодействие с LLM происходит через текст, а GUI только тормозит работу.

Для начала работы вам потребуется:

  1. Установить Ollama с официального сайта

  2. Написать в консоли команду ollama run llama3. Вместо llama3 можно выбрать любую другую Open Source LLM

  3. Писать вопросы к модели прямо в терминале

Пример запроса к Llama 3 в терминале через Ollama
Пример запроса к Llama 3 в терминале через Ollama

Требования к железу, как обычно, зависят от конкретной LLM, но ваша GPU должна иметь Compute Capability 5.0 или выше. Список таких видеокарт можно посмотреть здесь.

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

Код на Python

Конечно, веса любой модели можно просто скачать с Hugging Face и запустить через Python, но если эта модель уже доступна в описанных выше редакторах, то обычно проще воспользоваться готовым GUI или CLI интерфейсом.

Новые Open Source LLM

Phi-3-vision

Первая мультимодальная LLM в семействе Phi-3 от Microsoft. Это значит, что она понимает не только текст, но и фото. В ней всего 4.2B параметров, но она уже превосходит такие большие модели как Claude-3 Haiku и Gemini 1.0 Pro в некоторых задачах компьютерного зрения. Вы можете увидеть результаты бенчмарков в таблице ниже, но давайте лучше посмотрим на примеры ее работы.

Бенчмарки для Phi-3-Vision
Бенчмарки для Phi-3-Vision

Попробовать бесплатно эту модель можно на ее странице в Azure AI Studio, либо запустить локально, используя код с Hugging Face (мне хватило 12GB на видеокарте, чтобы ее запустить). Например, вы можете прислать скриншот таблицы и попросить модель переписать ее в виде Markdown:

Просим Phi-3-vision распознать и переписать таблицу
Просим Phi-3-vision распознать и переписать таблицу
Ответ модели

Certainly! Below is the markdown table converted from the image:

| Benchmark  | Phi-3 Vision-128K-In1 | LLaVA-1.6 Vicuna-7B | QWEN-VL Chat |
|------------|-------------------------|-----------------------|---------------|
| MMMU      | 40.2                    | 34.2                  | 39.0          |
| MMBench   | 80.5                    | 76.3                  | 75.8          |
| ScienceQA | 90.8                    | 70.6                  | 67.2          |
| MathVista | 44.5                    | 31.5                  | 29.4          |

This table compares different benchmarks across three different AI models: Phi-3 Vision-128K-In1, LLaVA-1.6 Vicuna-7B, and QWEN-VL Chat. The benchmarks include MMMU, MMBench, ScienceQA, and MathVista, with their respective scores for each AI model.

Как мы видим, модель отлично понимает структуру и смысл картинки. Аналогично вы можете описывать разные графики, диаграммы, и просто любой объект на фото из окружающего мира.

Вы можете посмотреть больше идей для использования Phi-3-vision в этой статье. Мне оттуда понравился пример, где модель распознала конкретный объект на фото, помеченный цифрой:

Модель понимает, какой объект помечен цифрой 4 на фото
Модель понимает, какой объект помечен цифрой 4 на фото

Mistral-7B v0.3

Это обновление предыдущей версии Mistral-7B-v0.2, которая занимала 52 место в рейтинге Chatbot Arena, что выше, чем у GPT-3.5-Turbo-1106.

В версии 0.3 появилась поддержка Function Calling — это значит, что вы можете дать модели информацию о некоторых функциях, которая она будет предлагать вызывать в зависимости от контекста. Например, вы можете описать функцию get_weather(city), и если модель получит вопрос о текущей погоде в каком-то городе, она предложит вызвать эту функцию и передать в аргументы нужный город. Это полезно, если вы разрабатываете свой проект на базе LLM и хотите расширить стандартный функционал модели.

Новую версию можно попробовать прямо в Web интерфейсе на Hugging Face, также она доступна через Ollama.

CogVLM2

Это мультимодальная модель, основанная на Llama-3-8B-Instruct. Авторы утверждают, что она превосходит (или хотя бы не хуже) GPT-4 Vision в большинстве случаев! При этом модель имеет 19B параметров, что больше, чем у Phi-3 Vision, которую разбирали выше. Для запуска этой модели потребуется от 16GB видео-памяти.

Модель может анализировать картинки разрешением до 1344 * 1344 пикселей, а также поддерживать диалог с длиной контекста в 8K токенов. Работает для английского и китайского языков, а скачать, чтобы запустить локально можно на Hugging Face.

Llama-3 8B

Эта модель вышла уже больше месяца назад, но нельзя не упомянуть ее, если говорим про Open Source LLM. Сейчас она занимает 19 место в рейтинге на Chatbot Arena, обходя все версии ChatGPT-3.5 Turbo, а также почти все модели от Mistral, Gemma, Phi, и много кого еще.

Llama 3 можно запустить через Ollama или скачать на официальном сайте. Благодаря 4-битной квантизации, модель занимает всего 4.7 GB.

Вывод

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


Если вам интересны новости из мира LLM, то подписывайтесь на мой Telegram канал Никита про LLM — пишу только про самое главное, без инфошума.

Комментарии (43)


  1. theurs
    30.05.2024 06:18
    +1

    В каком месте качество ламы3 8б сравнимо с ChatGPT 3.5 Turbo?

    Проверить как работают маленькие модели можно бесплатно на многих сайтах, это мрак полнейший, даже не близко к ChatGPT 3.5 Turbo.

    Даже распиаренная lama3 70b на фоне ChatGPT 3.5 Turbo выглядит не очень здорово... Если и лучше чем то то только знаниями событий после 2021.


    1. janvarev
      30.05.2024 06:18
      +2

      Проверить как работают маленькие модели можно бесплатно на многих сайтах, это мрак полнейший, даже не близко к ChatGPT 3.5 Turbo.

      "Доказательств, приводить, конечно, никто не собирался..."

      Вот вам скрин с текущего рейтинга Арены, с двумя упомянутыми моделями.


      1. kunsun
        30.05.2024 06:18

        А что то за таблица? Я вот сейчас зашел на опенроутер и попросил у самой модной ph3 - 14b простенький текст написать. Там получился текст в духе "твая мая большой друг индейцев карифана...". ChatGPT себе такого никогда не позволял.


        1. nikitayusupov Автор
          30.05.2024 06:18
          +2

          Это таблица с сайта https://chat.lmsys.org/ - Chatbot Arena. Там любой человек может вслепую проголосовать за модель - написать свой запрос, получить 2 ответа от разных моделей и выбрать какой из ответов лучше, при этом он не видит названия моделей до своего голоса. На основе этих голосов потом и складывается рейтинг


          1. kunsun
            30.05.2024 06:18
            +2

            В этой таблице Клауд 2.1 ниже чем лама 8б. Это абсолютно нереально. Ни в какой вселенной. Только если нашли какой то специальный тест на который ламу натаскивали, типа повтори 10 раз одну букву задом наперед.

            А еще Клауд-1 выше чем Клауд 2 и 2.1. Может эту таблицу перевернуть надо?


            1. nikitayusupov Автор
              30.05.2024 06:18
              +1

              Это правда, что вопросы к рейтингу возникают регулярно, поэтому авторы добавляют разные фильтры - можно посмотреть рейтинг по разным типам запросов, например, только сложные промпты. Или по разным языкам.

              Для китайского языка, кстати, Claude 1 в рейтинге выше, чем Llama. Но все равно рейтинг не всегда будет объективным, потому что голосуют обычные люди, не имея четких критериев.

              Другой вопрос, что объективного рейтинга сейчас, кажется, нет :(


          1. syrus_the_virus
            30.05.2024 06:18
            +1

            Каким боком какой-то рейтинг на каком-то сайте может отражать картину того, что хорошо обученная модель, которая крутится на сервере с сотнями петафлопс производительности, быть хуже или равна плохо обученной модели, запущенной на ПК с абстрактным RTX4080? Даже если сравнивать модели в лоб, по количеству параметров и слоев, даже тут близко ламы и мистрали не подбираются к chatgpt 3.5, и я молчу о качестве датасетов у коммерческой gpt.


            1. nikitayusupov Автор
              30.05.2024 06:18
              +1

              Можно еще обратиться к бенчмаркам, которые приводят здесь.

              Результаты бенчмарков уже слегка другие - большинство версий ChatGPT-3.5 обгоняют Llama, но, тем не менее, и Mistral 7B, и Llama 3 выглядят очень неплохо и в этом рейтинге.

              Тут нужно добавить, что Llama - это разработка Meta. Здесь они сами сравнивают свою open source модель с Gemini Pro 1.5 и Claude 3 Sonnet.

              Можно предположить, что у Meta (ex. Facebook) довольно много и ресурсов, и качественных датасетов, и продвинутых технологий, чтобы обучить качественную модель, способную конкурировать с младшими версиями ChatGPT


            1. Wwyn
              30.05.2024 06:18

              Мне кажется, что после обучения, где будет крутиться твоя модель не важно. На компе медленно, на сервере быстрее.


        1. janvarev
          30.05.2024 06:18
          +1

          Про рейтинг Арены я писал здесь, если что: https://habr.com/ru/companies/timeweb/articles/805261/

          Вкратце - метрики для оценки моделей работают плохо, поэтому сейчас топовым является рейтинг моделей на Арене (Там юзеры сами делают запрос к двум нейросетям, а затем оценивают, какой ответ лучше. Возникает набор оценок “выиграл-проиграл”, на основании которых считается рейтинг ЭЛО — и чем выше рейтинг, тем выше вероятность того, что модель ответит лучше, чем другая модель с более низким рейтингом.)


          1. kunsun
            30.05.2024 06:18

            Ну очевидный же бред. Либо эти люди не просили генерировать тексты (основная работа для ллм) либо они не читали результаты. Крошечные модели сильно заметно уступают всем крупным моделям, даже таким слабым как лама3-70 и клауд-1.


            1. nikitayusupov Автор
              30.05.2024 06:18
              +2

              Как раз недавно авторы Chatbot Arena добавили фильтр для сложных запросов, вот тут можно посмотреть разбор, что изменилось в рейтинге

              Главный вывод — действительно, многие open source модели сильно упали в рейтинге, то есть они и правда справляются хуже со сложными запросами, чем модели типа ChatGPT и Claude.

              Но тем не мене, если сравнивать не с топовыми представителями, а со старыми версиями (ChatGPT-3.5 и тд), то новые open source модели выглядят неплохо даже в обновленном рейтинге


    1. nikitayusupov Автор
      30.05.2024 06:18

      Здравствуйте!

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

      Я опираюсь на рейтинг Chatbot Arena - https://chat.lmsys.org/, там в основном результаты для английского языка. Рейтингу можно доверять, как так модели тестируются людьми вслепую


    1. palyaros02
      30.05.2024 06:18
      +1

      А вы на русском спрашивали наверное? На русском мрак, но это прямо было заявлено метой, что у них только 5% датасета были не на английском, это на все языки кроме него вместе взятые. Не общайтесь с опенсорс ллм на русском!

      Я попросил llama3 70b написать мне шаблон бекенда интернет-магазина на fastapi и был крайне удивлен. Она без дополнительных указаний и просьб придумала структуру проекта, обосновала, написала код каждого файла и даже про безопасность подумала. Потом вежливо сама предложила инструкции по развертыванию, но тут уже я отказался.

      В разы лучше 3.5. И не ленится, как 3.5 типа "вот вам заголовки функций, код напишите сами".


  1. MountainGoat
    30.05.2024 06:18
    +3

    KoboldCPP. Использовать нужно KoboldCPP. Ощутимо лучшая производительность чем ollama, настраивается через параметры командной строки, имеет более простой, но более функциональный интерфейс чем LMStudio, и opensource.


    1. nikitayusupov Автор
      30.05.2024 06:18

      Спасибо за рекомендацию! Посмотрел гайды, выглядит удобно.

      Про ollama еще можно добавить, что у них есть интересная подборка Community Integrations: https://github.com/ollama/ollama/blob/main/README.md#community-integrations

      Там много open source реализаций с интеграцией ollama, например, локальная RAG-система, которая позволит задавать вопросы к локальным PDF и другим файлам. Или бот в телеграме на базе ollama. Думаю, все это можно реализовать и без ollama, а список просто использовать для вдохновения


  1. IgorAlentyev
    30.05.2024 06:18
    +3

    Есть еще https://jan.ai/ с приятным gui и api для локального запуска.


    1. alfa41
      30.05.2024 06:18

      Спасибо! Интересная штука и не требует установки под линуксом


  1. Barabashkad
    30.05.2024 06:18

    если ли где то сравнение скорости работы на локальном железе ?


    1. nikitayusupov Автор
      30.05.2024 06:18

      Качество модели VS количество токенов обработано за 1 доллар
      Качество модели VS количество токенов обработано за 1 доллар

      Не совсем про скорость, но думаю, что это очень коррелирует. Вот тут есть интересная табличка - по оси Х рейтинг модели на Chatbot Arena, а по оси Y - количество токенов, которые обработаются за 1 доллар. Для LLM моделей скорость работы часто коррелирует с их размером, соответственно и со скоростью работы, и вероятно с ценой. Но это мой субъективный опыт, бывают исключения, нужно перепроверять.

      Llama 3 8B выглядит очень неплохо на этом графике.


    1. nikitayusupov Автор
      30.05.2024 06:18
      +1

      Вот тут еще нашел табличку как раз про скорость:

      количество токенов в секунду для разных LLM
      количество токенов в секунду для разных LLM

      Числа таблице - кол-во токенов в секунду для разных open source LLM. Видно, что корреляция с размером прямая - llama 2 7B генерирует почти в 2 раза больше токенов за секунду, чем llama 2 13B.

      Это уже не очень актуальные модели, статья старовата, но примерно можно ориентироваться. Интересно, что Mistral и Llama почти не отличаются при одинаковых размерах. Поэтому можно предположить, что сильнее всего на скорость влияет именно размер модели


  1. Barabashkad
    30.05.2024 06:18

    то есть можно прикупить RTX 4070 16G и использовать его для реальной работы
    с финансовой точки зрения это не выгодно
    но за приватность и автономность не сильно завышаная плата :-)


    1. nikitayusupov Автор
      30.05.2024 06:18

      Согласен, что для личного использования не слишком выгодно покупать GPU, особенно когда ChatGPT-4o бесплатно доступен сейчас всем)

      Но если локально хранится много документов (PDF, таблицы и тд), то можно легко прикрутить RAG систему, используя open source LLM (пример), которая будет отвечать на вопросы по этим документам. В ChatGPT их всех не загрузишь, а по API OpenAI часто ходить будет дорого. Для этого кейса уже вполне выгодно покупать видеокарту


      1. sneg2015
        30.05.2024 06:18

        А что отвечает в этом коде за векторизацию? Платная система или опенсорс?


        1. nikitayusupov Автор
          30.05.2024 06:18
          +1

          Судя по этой строчке — open source модель, но думаю можно и свое что-то подставить, в т.ч. платное


          1. sneg2015
            30.05.2024 06:18

            Я как раз и ищу, что-то адекватное и бесплатное. Иначе приходится платить за openai, векторизатор, сервер. При таком раскладе можно уже выбирать или сервер попроще и opanai, или сервер покруче и все в локалке.


    1. Ob-iVan
      30.05.2024 06:18
      +1

      RTX 4070 16G - экономически не очень выгодный вариант.
      RTX 4060 Ti 16G на локальных моделях почти не отличается по скорости инференса, особенно если модель не влазит в память целиком и используется лишь частичный GPU Offload (а на моделях 70+ происходит именно так), при разнице в цене более чем в полтора раза.


  1. Barabashkad
    30.05.2024 06:18
    +2

    я вижу еще один способ личного использования
    например в местах где запрещают использование LLM и физически закрывают к ним доступ ;-)
    но можно принести свой лэптоп :-)
    и на нем гонять персонального асистента :-)
    даже если он будет без доступа в интернет :-)


    1. nikitayusupov Автор
      30.05.2024 06:18

      100%, моему знакомому, который работает в одном российском банке, запрещено использовать любые ChatGPT и аналоги на работе (по соображениям безопасности), в таком случае я бы точно запускал какую-нибудь Llama локально)


  1. LanMaster
    30.05.2024 06:18

    А что с цензурой на "домашней" модели? Политкорректность прибита гвоздями? Отрисовка нюдсов запрещена бай дизайн?


    1. Ob-iVan
      30.05.2024 06:18

      Нет, есть много моделей со снятой (или почти снятой) цензурой.
      Например, Lexi-Llama-3-8B-Uncensored или Llama-3-70b-Uncensored-Lumi-Tess.
      Также есть модели, у которой цензура не очень жесткая "из коробки".


    1. StarJohn
      30.05.2024 06:18

      По последнему вопросу: ставьте Stable Diffusion by AUTOMATIC1111, потом регистрируйтесь на Civitai.com, просите сайт вам показывать вообще всё и выбираете модель по вкусу - там будет более чем достаточно вариантов. Не забудьте прочитать описание, там бывают разные типы моделей, которым нужны разные настройки. Скачиваете и запускаете.

      В итоге иногда даже получается NSFW там, где был обычный запрос, типа: красивая девушка, букет цветов, улица, Париж. :)


  1. Ob-iVan
    30.05.2024 06:18

    Удалось ли кому-то осуществить ввод изображений через GUI LM Studio?
    (если что - кнопки аттачмента в строке ввода запросов там нет)


  1. 0x00fe
    30.05.2024 06:18
    +1

    А подскажите - есть локальные llm api с function calling? lm studio не умеет, как и все выше перечисленные (ollama, lama.cpp koboldcpp, jan, ...)


    1. nikitayusupov Автор
      30.05.2024 06:18

      https://ollama.com/library/mistral

      Здравствуйте! Попробуйте вот тут посмотреть, у Mistral как раз одно из нововведений — function calling, и ollama на сайте даёт пример, как этим пользоваться через API локально.

      https://github.com/ollama/ollama/blob/main/docs/api.md#api

      Вот тут подробнее про API


  1. saege5b
    30.05.2024 06:18

    Phi-3-vision - на азуре при вопросе "что ты умеешь?", у меня стабильно уходил в бесконечный цикл. А на вопрос "как тобой пользоваться?" генерировал рекламу про какой он хороший.


  1. alfa41
    30.05.2024 06:18
    +1

    Спасибо за статью и отдельное спасибо за ollama ;)


  1. pood
    30.05.2024 06:18
    +1

    В качестве UI есть вот такой Open Web UI https://github.com/open-webui/open-webui

    Из фишек которые есть - умеет подгружать в чат файлы или ссылки на статьи, и даже забирать субтитры к видео с Ютуба, и отвечать на вопросы по этим данным. Кажется есть встроенный аналог RAG, но пока не тестировал


    1. pood
      30.05.2024 06:18

      Тут речь про web ui для ollama


    1. alfa41
      30.05.2024 06:18

      Создалось впечатление, что скорость ответов чуть пониже чем в терминале. Из дополнительных плюсов: возможность подключать внешние модели через api


  1. Pol1mus
    30.05.2024 06:18

    Кто как использует маленькие модели в своих задачах? Реально работающие проекты для реальных задач а не просто запустить на локальном железе ради запустить на локальном железе или нагенерировать бутора для фейковых сайтов лишь бы было что то похожее на настоящие тексты.

    Не обязательно локальные, мне интересно как и для чего можно использовать ллм которые с трудом 2 слова могут связать.


    1. MountainGoat
      30.05.2024 06:18
      +1

      Я в кодинге использую сразу три модели. Большой (Mixtral 8x22B) я задаю руками общефилосовские вопросы. Средняя (какая-то мешанина на базе 8x7) через дополнение Continue пишет мне комментарии, docstringи и тесты. А мелкая через то же расширение работает постоянным автодополнением.

      Сделал подружке GTP-4o в телефоне по API. При этом мелкая модель получает текст вопроса и ответа и по ним генерирует заголовок к беседе, для сортировки бесед в UI.

      Хочу попробовать прикрутить её же к Obsidian чтобы делал заголовки для заметок. Мелкой вероятно не обойдусь, но только потому, что у меня в ходу 3 языка. Был бы пиндосом - обошёлся бы точно.


  1. DrrRos
    30.05.2024 06:18

    А как запускали Phi-3-vision? Пытался через oobabooga - это же единственный вариант запуска через transformers с Web ui? - не отвечает, хотя видно, что модель грузится, плагин multimodal стоит