MistralAI, вслед за LLaMA 3.1 405B, представила свою флагманскую модель с открытыми весами Mistral Large 2 (Mistral-Large-Instruct-2407). Mistral всегда отличалась очень качественными открытыми моделями, и, судя по всему, эта будет не исключением.

Веса открыты, размер контекста составляет 128k, размер модели 123B, модель была обучена на 80 языках программирования и десятках естественных языков, включая русский. Модель хорошо себя показывает как в рассуждениях, так и в математике и программировании.

Размер модели составляет 123 млрд параметров, при таком размере она успешно противостоит самой крупной открытой модели LLaMA 405B, которая вышла несколько дней назад. Модель обучена меньше "бредить" и галлюцинировать, если она не уверена в ответе или у неё нет точного ответа, но это не точно, но попытка распознавать такие сценарии сделана.

Mistral Large 2 обучена на большом многоязычном датасете, она демонстрирует высокую эффективность на таких языках, как английский, французский, немецкий, испанский, итальянский, португальский, голландский, русский, китайский, японский, корейский, арабский и хинди.

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

Карточка модели на huggingface: https://huggingface.co/mistralai/Mistral-Large-Instruct-2407

gguf: https://huggingface.co/legraphista/Mistral-Large-Instruct-2407-IMat-GGUF

Модель доступна на арене моделей: https://arena.lmsys.org/ (вкладка side-by-side, нужная модель имеет название mistral-large-2407), где можно её попробовать онлайн.

Стихи, традиционно, самая сложная часть для языковых моделей. Сравним Sonnet-3.5 и Mistral Large 2:

Выводы можете сделать сами
Выводы можете сделать сами

Сравнить перевод песни не получилось, тут Sonnet-3.5 демонстрирует какую-то странную цензуру:

Попросим решить яблочную задачу с усложнением "но после покупки каждых двух яблок, цена за яблоко возрастает на 0,5", которое полностью ломает многие модели, включая GPT-4 (только GPT-4o справляется):

У меня есть 10 яблок. Я нахожу 3 золотые монеты на дне реки. Река протекает рядом с большим городом, который как-то связан с тем, на что я могу потратить монеты. Я теряю 4 яблока, но получаю золотую монету. На мой путь выбегают три птицы и роняют по 6 яблок. Я играю в онлайн-игру и выигрываю 6 золотых монет, но мне приходится делить их поровну с двумя моими товарищами по команде. Я покупаю яблоки на все имеющиеся у меня монеты. Цена одного яблока составляет 0,5 монеты, но после покупки каждых двух яблок, цена за яблоко возрастает на 0,5. Сколько у меня яблок? И где находится река?

Large 2 справилась с этой задачей, а Sonnet-3.5 ошиблась в подсчете цены за яблоко, как и многие другие модели. Температура 0.5.

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

Запускать такие большие модели на обычном ПК позволяет проект llama.cpp, они позволяют квантовать большие модели в формат gguf, тем самым в разы снижая требования к железу. Есть даже 1-битная квантизация.

Qwen2 72B IQ1_M модель справляется с задачей на логику и математику, когда llama3 8B Q8_0 не справляется с задачей вообще
Qwen2 72B IQ1_M модель справляется с задачей на логику и математику, когда llama3 8B Q8_0 не справляется с задачей вообще

Формат gguf также позволяет выгружать часть слоев на GPU, а часть оставлять на CPU. Поэтому если у вас есть видеокарта с 8Гб памяти, а модель занимает 12Гб - выгрузка большего числа слоев на GPU даст неплохое ускорение. Файл gguf мапится в память, поэтому объем памяти необходимый для запуска и будет размером файла. Например, Mistral Large 2 IQ2_XS потребует всего 36гб памяти.

На странице проекта перечислено множество GUI клиентов для запуска gguf-моделей. Одни из самых популярных это:

  • LM Studio - простой и функциональный клиент, позволяющий сразу же загружать модели из своего интерфейса. Есть экспериментальная поддержка rocm для amd видеокарт на Windows.

  • Jan.ai - тоже самое, что и LM Studio, только с открытым исходным кодом.

  • text-generation-webui - для тех, кто предпочитает работать в браузере, это некий аналог automatic1111 webui. Позволяет легко создавать персонажей, роли, загружать файлы персонажей SillyTavern, заставлять модель отвечать с конкретной фразы, редактировать ответы модели.

  • ollama - запускается как сервис на фоне, позволяет легко и быстро загружать одну из множества уже готовых моделей из своего каталога. Также поддерживает AMD карточки на Windows, но кроме rx 6600/6700. Автоматически выгружает модель, если она не используется. Самый продвинутый способ создавать сервер, который уже легко интегрировать в другие клиенты или расширения.

  • koboldcpp-rocm - более простой клиент, но нет проблем с rx 6600/6700, даже позволяет в 1 клик ускорять модели на rx 580 на Windows. ROCm - это прямой аналог CUDA, и если вам нужны другие нейросети на Windows, ищите версии Zluda (это транслятор CUDA запросов в ROCm), например ComfyUI-Zluda.

  • open-webui - красивый клиент в браузере, есть RAG для индексации своих документов и прочие полезные возможности, такие как запуска llava-моделей для распознания изображений.

Интерфейс jan.ai
Интерфейс jan.ai

Запуск совместимого с OpenAI сервера

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

В text-generation-webui нужно выбрать вкладку Session и активировать расширение openai.

В других клиентах это делается примерно также, кнопка запустить сервер всегда легко находится.

Локальный Copilot

Теперь, когда модель запущена в режиме сервера, можно заставить её работать как локальный Copilot с помощью расширения Continue для VSCode.

Ищем расширение Continue, ставим его, и настраиваем его либо просто выбрав сразу сервер ollama, если вы выбрали ollama, либо используя OpenAI-compatible sever. Во-втором случае вам нужно будет нажать на шестеренку расширения и прописать адрес сервера.

Например, если вы активировали плагин openai у text-generation-webui, то сервер будет такой: http://127.0.0.1:5000/v1, адрес указывается при запуске и к нему нужно добавить /v1.

После чего заполнить настройки модели.

{
  "models": [
    {
      "title": "OpenAI-compatible server / API",
      "provider": "openai",
      "model": "MODEL_NAME",
      "apiKey": "EMPTY",
      "contextLength": 8192,
      "apiBase": "http://127.0.0.1:5000/v1"      
    }
  ],

По умолчанию включена телеметрия, отключить её можно тут же.

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

Через ctrl + I мы даем новое задание написать какой-то код.

Нажимаем Ctrl+I и даем задание
Нажимаем Ctrl+I и даем задание

А уже существующий код мы можем выделить и нажать Ctrl + L, после чего автоматически откроется окно расширения слева, где мы можем давать более сложные задания по выделенному коду. Можно выделять код из разных файлов, чтобы создавать контекст для запроса, можно просить написать тесты с учетом многих файлов, рефакторить и прочее.

выделяем код, нажимает ctrl + L и даем задание
выделяем код, нажимает ctrl + L и даем задание

Описание всех возможностей: https://docs.continue.dev/how-to-use-continue

Но для целей Copilot Mistral Large 2 может быть слишком большой и будет работать локально медленно. Поэтому можно попробовать тоже самое с Codestral 22B от них же, которая показывает отличные результаты в коде, или с маленькой Gemma2 9B от гугла.

Codestral 22B: https://huggingface.co/bartowski/Codestral-22B-v0.1-GGUF

Gemma2 9b: https://huggingface.co/bartowski/gemma-2-9b-it-GGUF

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


  1. d2d8
    25.07.2024 06:28
    +5


  1. remius07
    25.07.2024 06:28

    Повторяются абзацы, начинаю бредить и галлюцинировать :D "Модель обучалась меньше бредить и галлюцинировать, если она не уверена в ответе или у неё нет точного ответа. и про GPU. Или это для тех кто с первого раза не понял?!)


  1. Vedomir
    25.07.2024 06:28

    Статья про Mistral Large 2 123B а потребление памяти приведено для Codestral 22B?


    1. Shannon Автор
      25.07.2024 06:28

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


      1. Vedomir
        25.07.2024 06:28

        Так в итоге сколько для нее надо?


        1. Shannon Автор
          25.07.2024 06:28
          +1

          От 26 гб до 130гб, смотря какое квантование выбрать. Модель в формате gguf мапится в память, поэтому размер файла примерно равно объем занимаемой памяти. Поэтому просто смотрите размеры gguf и это и будет объем занимаемой памяти.


          1. Vedomir
            25.07.2024 06:28

            Возможно наивный вопрос, но может ответ пригодится не только мне - я правильно понимаю что речь идет о видеопамяти и на стандартной потребительской машине больше 24 ГБ у 4090 особо не получить и все это уже сугубо для серверов?


            1. Shannon Автор
              25.07.2024 06:28
              +6

              Тут речь про обычную память. Например, версия IQ2_XS, для работы ей нужно 39гб обычной памяти.

              На обычной ddr4 в двухканале скорость чтения примерно равна 50гб/с, если вы будете запускать на CPU, то вы получите скорость примерно равную 0.3 t/s.
              Если вы выгрузите 55 слоев из 89 на 4090, включив cache_8bit и cache_4bit чтобы высвободить еще пару гб vram, вы получите скорость примерно 1.14 t/s.
              Скорость стала в 3 раза выше, но бутылочным горлышком является ddr4 память и 34 слоя крутящихся на ней.

              Если бы все слои удалось перенести на GPU, то скорость бы выросла на порядок, так как скорость памяти в 4090 равна 1000 гб/c, что в 20 раз быстрее.

              Поэтому, по цене одной 4090 можно купить серверную материнку, два дешевых эпика и горсть серверной недорогой ddr4 памяти общим объемом 512гб. В 16 канале это будет работать на скорости 250гб/с (тут обсуждение на эту тему).


            1. Pol1mus
              25.07.2024 06:28

              Можно поставить несколько видеокарт в один компьютер, их память сложится.

              Зы оно того не стоит, все эти вбросы про то что новая лама/мистраль/итп догнали и перегнали гпт4о - тупое вранье.


              1. Shannon Автор
                25.07.2024 06:28

                По тестам она нигде не догнала и не обогнала. Она приблизилась, и среди открытых это вполне достойный конкурент, в отличии от других открытых.

                Но в целом, есть примеры?
                Я вот тестировал всякое, и не сказать, что GPT-4o сильно вырывается вперед, если не затрагивать вопросы знаний (очевидно, что модель в 123B не может вместить в себя столько же знаний, сколько 850-1700B).

                Например запрос:

                Напиши на js код с отрисовкой рей трейсинга. В кадре должны быть серый пол, красный шар, оранжевый куб и фиолетовая пирамида, фон должен быть светлый, как будто бы день. Они должны крутиться, на них должна падать тень и свет от зеленого и розового источников. Мышкой можно крутить сцену. Всё это в одном файле.

                И обе справились с 1 раза, без правок, сразу запустилось и сцена крутиться, вертится, приближается:

                А вот claude-3-5-sonnet и llama-3.1-405b не справились, обе не запускаются и выдают какие-то ошибки.


    1. grixis
      25.07.2024 06:28

      А что нужно чтобы запустить такую модель?


  1. DarkWinter
    25.07.2024 06:28

    А на их офф сайте протестить не мог? https://chat.mistral.ai/chat