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
gguf: https://huggingface.co/bartowski/Mistral-Large-Instruct-2407-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-битная квантизация.
Формат 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-моделей для распознания изображений.
Запуск совместимого с 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 + 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