Pavel Zloi
Проблема долговременной памяти чатов Хоть я и считаю себя сторонником памяти агентных систем, даже большой пост на эту тему писал, но работая с чатами в которых есть память истории всех сообщений периодически ловлю себя на мысли, что надо напилить какой-нибудь…
Размышлял о памяти нейросетей и очень захотелось перечитать труд Марвина Мински про фреймы знаний.
❤🔥6
Trychroma
Chroma Context-1: Training a Self-Editing Search Agent
Retrieval pipelines typically operate in a single pass, which poses a problem when the information required to answer a question is spread across multiple documents or requires intermediate reasoning to locate. In practice, many real-world queries require…
Конвертация Chroma Context-1 в MXFP4 для домашней 4090
Позавчера Chroma выкатила техрепорт по своей модельке chromadb/context-1, прочёл я его сегодня и был крайне впечатлен.
Это 20B параметров, MoE-архитектура на базе openai/gpt-oss-20b, модель натренирована на агентный поиск, делает декомпозицию сложных запросов на подзапросы, выполнняет итеративный поиск по корпусу документов, и самое интересное - self-editing context, когда модель сама решает какие из найденных документов оставить, а какие выкинуть чтобы не засорять контекстное окно. На бенчмарках показывает результаты сопоставимые с топовыми LLM при скорости как у gpt-oss-20b.
Естественно, захотелось потрогать руками, но... модель выложена в BF16, а это 39 ГБ только веса, ну а моя 4090 хоть и прокачана до 48 ГБ VRAM, но 39 ГБ чистых весов + KV-кеш + накладные расходы CUDA в неё не влезут, нужно минимум ~45-50 ГБ чтобы хоть что-то сгенерировать с минимальным контекстом, но нужен не минимальный, а хотя бы 30-60к токенов, агенты же.
Что делать? Смотрю на оригинальную gpt-oss-20b от OpenAI, она в формате MXFP4, это Microscaling FP4, хитрый 4-битный формат, где каждый вес хранится как E2M1 (2 бита экспонента, 1 бит мантиссы), а группа из 32 весов делит общий 8-битный масштаб (E8M0), нативно поддерживается в vLLM через Marlin-ядра и должно отлично работать на RTX 50xx серии, в таком формате модель занимает ~14 ГБ, на мою 4090 влезает с запасом.
Сформировал спеки для кодового агента в Cursor, говорю мол вот тебе веса модели gpt-oss-20b как референс, вот спецификация по методам сжатия MXFP4, вот веса модели context-1 в BF16 которую надо конвертировать, вот docker-compose.yaml с vLLM 0.18.0 на которой агент должен проверять модель.
Задача написать скрипт конвертации, конвертировать модель, запустить в vLLM, убедиться по HTTP что приходят адекватные ответы.
Агент написал скрипт, который читает safetensors, для MoE-экспертов (gate_up_proj и down_proj) транспонирует веса в layout который ожидает vLLM, квантует и пакует всё в MXFP4, по аналогии с gpt-oss-20b, а слои внимания, роутера и эмбеддингов копируются как есть в BF16. В результате 39 ГБ превращаются в ~14 ГБ.
Запустил на vLLM, всё работает, reasoning что-то там рефлексирует, ответы вроде адекватные, но при тестировании tool calling (function calling) выяснилась забавная штука - модель при вызове инструментов валится с ошибкой:
Покопавшись в конфигах gpt-oss-20b обнаружил, что в generation_config.json модели отсутствует токен
Создал PR с фиксом в трекере оригинальной модели.
Ну а квантованную в MXFP4 версию загрузил на HuggingFace: evilfreelancer/context-1-mxfp4
PS. Поднял её на домашней видяшке и сделал доступной через мою апишку, пример как заюзать через openai-клиент добавил в комментарии.
Позавчера Chroma выкатила техрепорт по своей модельке chromadb/context-1, прочёл я его сегодня и был крайне впечатлен.
Это 20B параметров, MoE-архитектура на базе openai/gpt-oss-20b, модель натренирована на агентный поиск, делает декомпозицию сложных запросов на подзапросы, выполнняет итеративный поиск по корпусу документов, и самое интересное - self-editing context, когда модель сама решает какие из найденных документов оставить, а какие выкинуть чтобы не засорять контекстное окно. На бенчмарках показывает результаты сопоставимые с топовыми LLM при скорости как у gpt-oss-20b.
Естественно, захотелось потрогать руками, но... модель выложена в BF16, а это 39 ГБ только веса, ну а моя 4090 хоть и прокачана до 48 ГБ VRAM, но 39 ГБ чистых весов + KV-кеш + накладные расходы CUDA в неё не влезут, нужно минимум ~45-50 ГБ чтобы хоть что-то сгенерировать с минимальным контекстом, но нужен не минимальный, а хотя бы 30-60к токенов, агенты же.
Что делать? Смотрю на оригинальную gpt-oss-20b от OpenAI, она в формате MXFP4, это Microscaling FP4, хитрый 4-битный формат, где каждый вес хранится как E2M1 (2 бита экспонента, 1 бит мантиссы), а группа из 32 весов делит общий 8-битный масштаб (E8M0), нативно поддерживается в vLLM через Marlin-ядра и должно отлично работать на RTX 50xx серии, в таком формате модель занимает ~14 ГБ, на мою 4090 влезает с запасом.
Сформировал спеки для кодового агента в Cursor, говорю мол вот тебе веса модели gpt-oss-20b как референс, вот спецификация по методам сжатия MXFP4, вот веса модели context-1 в BF16 которую надо конвертировать, вот docker-compose.yaml с vLLM 0.18.0 на которой агент должен проверять модель.
Задача написать скрипт конвертации, конвертировать модель, запустить в vLLM, убедиться по HTTP что приходят адекватные ответы.
Агент написал скрипт, который читает safetensors, для MoE-экспертов (gate_up_proj и down_proj) транспонирует веса в layout который ожидает vLLM, квантует и пакует всё в MXFP4, по аналогии с gpt-oss-20b, а слои внимания, роутера и эмбеддингов копируются как есть в BF16. В результате 39 ГБ превращаются в ~14 ГБ.
Запустил на vLLM, всё работает, reasoning что-то там рефлексирует, ответы вроде адекватные, но при тестировании tool calling (function calling) выяснилась забавная штука - модель при вызове инструментов валится с ошибкой:
openai_harmony.HarmonyError: Unexpected token 12606 while expecting start token 200006
Покопавшись в конфигах gpt-oss-20b обнаружил, что в generation_config.json модели отсутствует токен
<|call|> (id 200012) в списке eos_token_id, из-за этого модель не останавливает генерацию после вызова tool call и harmony ломается. По сути баг в vLLM, но фикс элементарный, добавить 200012 в eos_token_id в generation_config.json модели, после этого и обычный чат и tool calling заработали как надо.Создал PR с фиксом в трекере оригинальной модели.
Ну а квантованную в MXFP4 версию загрузил на HuggingFace: evilfreelancer/context-1-mxfp4
PS. Поднял её на домашней видяшке и сделал доступной через мою апишку, пример как заюзать через openai-клиент добавил в комментарии.
🔥32❤8👏5
Sparse Attention Is All I Need
Вчера в соседнем чатике мне задали резонный вопрос о том какие метрики использовались для оценки качества работы конвертированной ruGPT3XL модели? И это очень правильный вопрос, я честно не знал, что ответить, так как гонял тесты MERA в отрыве от её оригинальной версии, потому что оригинальную так и не смог запустить (слишком старое железо требуется для древнего мегатрона, пайчарма, апекса, куды и так далее).
Ну и в общем свербила меня эта мысль, думаю ладно, надо что-то сделать, проблема только в том какую метрику считать? Решил взять perplexity (PPL), так как она указана в карточках всех моделей, но тут возникла другая проблема, эта PPL должна быть на датасете на котором оригинальные модельки тестировались, а у меня его по понятным причинам нет, да и не уверен, что он есть даже где-то в недрах SberDevices, времени то прошло почти пять лет с тех пор.
Короче пришла идея взять любой датасет с русскими текстами, желательно не очень большой на 5-10k примеров и чтобы размерность примеров была в пределах 2k токенов, под это условие отлично подошёл датасет gazeta Ильи Гусева @senior_augur.
Решил делать так, взять значения perplexity из карточек оригинальных моделей, составить табличку, написать скрипт расчёта прям как в публикации про rugpt3 модельки, потом взять датасет gazeta и выполнить расчёт на rugpt3small, rugpt3medium, rugpt3large и моей ruGPT3XL, полученные циферки сравнить и посмотреть есть ли корреляция.
При первом прогоне тесты показали, что конвертированная модель сильно проседает по PPL, результат был 50.1, что примерно в 4 раза больше чем 12.05 у оригинальной модели, думаю ну не может же быть, стал копать, оказалось агент решил не портировать механизм Sparse Attention (разреженного внимания) и вместо него заюзал Self Attention, родной механизм внимания у GPT2 и производных.
Внимательно попинал агента, показал ему примеры кода с правильным механизмом внимания, дал почитать публикацию про модельки ruGPT3 и спустя некоторое время получил исправленную версию modeling_rugpt3xl.py с репликой аналогичного механизма из Megatron-LM.
Запустил прогонку расчёта PPL ещё раз и увидел уже красивые циферки 11.68, по всем замерам составил табличку и несколько графиков, подробности тут.
Дополнительная проверка кода llama.cpp показала, что код Sparse Attention там тоже не поддерживается и сконвертированная в GGUF моделька будет использовать неправильный механизм внимания, похоже придётся делать большой патч в llama.cpp, попытаюсь добавить поддержку ruGPT3XL туда уже полноценно.
Вчера в соседнем чатике мне задали резонный вопрос о том какие метрики использовались для оценки качества работы конвертированной ruGPT3XL модели? И это очень правильный вопрос, я честно не знал, что ответить, так как гонял тесты MERA в отрыве от её оригинальной версии, потому что оригинальную так и не смог запустить (слишком старое железо требуется для древнего мегатрона, пайчарма, апекса, куды и так далее).
Ну и в общем свербила меня эта мысль, думаю ладно, надо что-то сделать, проблема только в том какую метрику считать? Решил взять perplexity (PPL), так как она указана в карточках всех моделей, но тут возникла другая проблема, эта PPL должна быть на датасете на котором оригинальные модельки тестировались, а у меня его по понятным причинам нет, да и не уверен, что он есть даже где-то в недрах SberDevices, времени то прошло почти пять лет с тех пор.
Короче пришла идея взять любой датасет с русскими текстами, желательно не очень большой на 5-10k примеров и чтобы размерность примеров была в пределах 2k токенов, под это условие отлично подошёл датасет gazeta Ильи Гусева @senior_augur.
Решил делать так, взять значения perplexity из карточек оригинальных моделей, составить табличку, написать скрипт расчёта прям как в публикации про rugpt3 модельки, потом взять датасет gazeta и выполнить расчёт на rugpt3small, rugpt3medium, rugpt3large и моей ruGPT3XL, полученные циферки сравнить и посмотреть есть ли корреляция.
При первом прогоне тесты показали, что конвертированная модель сильно проседает по PPL, результат был 50.1, что примерно в 4 раза больше чем 12.05 у оригинальной модели, думаю ну не может же быть, стал копать, оказалось агент решил не портировать механизм Sparse Attention (разреженного внимания) и вместо него заюзал Self Attention, родной механизм внимания у GPT2 и производных.
Внимательно попинал агента, показал ему примеры кода с правильным механизмом внимания, дал почитать публикацию про модельки ruGPT3 и спустя некоторое время получил исправленную версию modeling_rugpt3xl.py с репликой аналогичного механизма из Megatron-LM.
Запустил прогонку расчёта PPL ещё раз и увидел уже красивые циферки 11.68, по всем замерам составил табличку и несколько графиков, подробности тут.
Дополнительная проверка кода llama.cpp показала, что код Sparse Attention там тоже не поддерживается и сконвертированная в GGUF моделька будет использовать неправильный механизм внимания, похоже придётся делать большой патч в llama.cpp, попытаюсь добавить поддержку ruGPT3XL туда уже полноценно.
1👍12❤2
Pavel Zloi
Sparse Attention Is All I Need Вчера в соседнем чатике мне задали резонный вопрос о том какие метрики использовались для оценки качества работы конвертированной ruGPT3XL модели? И это очень правильный вопрос, я честно не знал, что ответить, так как гонял…
Мой третий PR в llama.cpp
GitHub
cpp: Adding new arch RUGPT3XL by EvilFreelancer · Pull Request #21161 · ggml-org/llama.cpp
Overview
Add dedicated RUGPT3XL architecture with block-sparse per-head attention support for the ruGPT-3 XL (1.3B) language model. ruGPT-3 XL was trained with DeepSpeed's FixedSparsityConf...
Add dedicated RUGPT3XL architecture with block-sparse per-head attention support for the ruGPT-3 XL (1.3B) language model. ruGPT-3 XL was trained with DeepSpeed's FixedSparsityConf...
1👏17🔥10❤5👍4
Pavel Zloi
Sparse Attention Is All I Need Вчера в соседнем чатике мне задали резонный вопрос о том какие метрики использовались для оценки качества работы конвертированной ruGPT3XL модели? И это очень правильный вопрос, я честно не знал, что ответить, так как гонял…
По совету хабровчанина внёс правки в код класса модели чтобы она обучалась без ошибок, проблема появилась после фикса Sparse Attention, надо было мне чуть дотошнее всё проверить.
Вдобавок ко всему по рекомендации от того же пользователя добавил в модель поддержку Triton, в результате чего на динамическом графе модели удалось достигнуть прироста в скорости инференса до 40%, а если выполнить torch.compile то и все 50% прирост.
Код класса модели тут: modeling_rugpt3xl.py
Подробнее про SDPA и бенчмаркинг тут: Training throughput (SDPA and Inductor)
Вдобавок ко всему по рекомендации от того же пользователя добавил в модель поддержку Triton, в результате чего на динамическом графе модели удалось достигнуть прироста в скорости инференса до 40%, а если выполнить torch.compile то и все 50% прирост.
Код класса модели тут: modeling_rugpt3xl.py
Подробнее про SDPA и бенчмаркинг тут: Training throughput (SDPA and Inductor)
👍14❤4👏2
GitHub
GitHub - EvilFreelancer/acpbox: OpenAI-compatible HTTP API that acts as a gateway to the Agent Client Protocol (ACP)
OpenAI-compatible HTTP API that acts as a gateway to the Agent Client Protocol (ACP) - EvilFreelancer/acpbox
ACPBox - что обновилось за последние коммиты
Пока ковырялся в агентных интеграциях, довел ACPBox до состояния когда его реально удобно поднимать как универсальный OpenAI-совместимый шлюз поверх ACP агентов.
- Добавил вдобавок к OpenCode и Cursor поддержку Claude и Codex в контейнере
- Установка агентов перенесена в runtime, раньше я думал что логичнее будет ставить их на этапе сборки, это норм когда агент один, но когда их четыре... при помощи переменной AGENTS в environment можно перечислить через запятую список нужных агентов, чтобы лишнее не ставить, по дефолту ставится OpenCode
- Единый префикс ACPBOX_ в env для настроек приложения
- Добавил GitHub Actions для публикации Docker образа по тегам, улучшил публикацию в PyPI и связал tagging workflow с публикациями
Минимальная конфигурация для запуска
Такой docker-compose.yaml понадобится чтобы запустить агента OpenCode в формате ACPBox:
Конфиг OpenCode кладём в папку рядом с docker-compose.yaml, а вот его содержимое:
Исходники тут: https://github.com/EvilFreelancer/acpbox
PyPi пакет: https://pypi.org/project/acpbox/
Docker-образ тут: https://hub.docker.com/r/evilfreelancer/acpbox
Пока ковырялся в агентных интеграциях, довел ACPBox до состояния когда его реально удобно поднимать как универсальный OpenAI-совместимый шлюз поверх ACP агентов.
- Добавил вдобавок к OpenCode и Cursor поддержку Claude и Codex в контейнере
- Установка агентов перенесена в runtime, раньше я думал что логичнее будет ставить их на этапе сборки, это норм когда агент один, но когда их четыре... при помощи переменной AGENTS в environment можно перечислить через запятую список нужных агентов, чтобы лишнее не ставить, по дефолту ставится OpenCode
- Единый префикс ACPBOX_ в env для настроек приложения
- Добавил GitHub Actions для публикации Docker образа по тегам, улучшил публикацию в PyPI и связал tagging workflow с публикациями
Минимальная конфигурация для запуска
Такой docker-compose.yaml понадобится чтобы запустить агента OpenCode в формате ACPBox:
services:
acpbox:
restart: unless-stopped
image: evilfreelancer/acpbox:latest
environment:
- ACPBOX_ACP_COMMAND=["opencode","acp","--log-level","ERROR"]
- ACPBOX_ACP_WORKSPACE=/workspace
- AGENTS=opencode
ports:
- "8080:8080"
volumes:
- ./workspace:/workspace
- ./opencode.json:/home/user/.config/opencode/opencode.json:ro
Конфиг OpenCode кладём в папку рядом с docker-compose.yaml, а вот его содержимое:
{
"$schema": "https://opencode.ai/config.json",
"model": "rpa/gpt-oss:20b",
"provider": {
"rpa": {
"npm": "@ai-sdk/openai-compatible",
"options": {
"baseURL": "https://api.rpa.icu",
"apiKey": "https://t.me/evilfreelancer"
},
"models": {
"gpt-oss:20b": {
"tool_call": true
}
}
}
}
}Исходники тут: https://github.com/EvilFreelancer/acpbox
PyPi пакет: https://pypi.org/project/acpbox/
Docker-образ тут: https://hub.docker.com/r/evilfreelancer/acpbox
❤11🔥4
Zloibit, pimp my LLM
Запостил на Boosty небольшой тизер публикации на Хабр про увеличение контекста у модели ruGPT3XL с 2k до 8k токенов, моделька уже лежит на HF вот тут:
https://huggingface.co/evilfreelancer/ruGPT3XL-8k
Запостил на Boosty небольшой тизер публикации на Хабр про увеличение контекста у модели ruGPT3XL с 2k до 8k токенов, моделька уже лежит на HF вот тут:
https://huggingface.co/evilfreelancer/ruGPT3XL-8k
🔥11❤5🤝4
Вечерняя мудрость:
Использование термина агентский вместо агентный в контексте ИИ агентов - маркер дилетанта
🤡16💯10😁3
Pavel Zloi
Встречайте мой новый пост "Реставрация ruGPT-3 XL или как я вернул к жизни забытую русскую языковую модель" на Хабр, в нём я подробно рассказал о том как была реализована конвертация, как проводилось её тестирование, как запустить локально, как конвертировать…
Опубликовал пост "ruGPT3XL идёт в качалку / поднимаем контекст до 8k" на Хабр, в нём рассказал что было исправлено и добавлено по фидбэку после прошлого поста, а так же про то как я поднял максимальный контекст у модели с 2k до 8k токенов.
Веса конвертированной модели тут:
https://huggingface.co/evilfreelancer/ruGPT3XL-8k
Веса конвертированной модели тут:
https://huggingface.co/evilfreelancer/ruGPT3XL-8k
Хабр
ruGPT3XL идёт в качалку / поднимаем контекст до 8k
Это продолжение предыдущей публикации про реставрацию ruGPT3XL. Для тех кто не читал, кратенько, я конвертировал древний Megatron-LM чекпоинт в HuggingFace-формат, залил веса на HF, накатил поддержку...
❤8🔥6🥱2👍1🫡1
Когда поднимут цены на ИИ
Недавно мне пришлось оказаться на одной лекции, имен называть не буду, но общий настрой выступления можно описать так - человеку показали Claude Code, после чего он искренне поверил, что теперь "бизнесом можно управлять через ИИ", а "инженеры больше не нужны".
Что особенно показательно, речь шла не о случайном слушателе хайповой волны с FOMO, это был представитель высшего руководства своей компании, и при этом с техническим бэкграундом. И именно поэтому наблюдать за происходящим было особенно интересно. Когда подобные тезисы озвучивает начинающий специалист, это можно списать на недостаток опыта. Когда так рассуждает руководитель, это уже выглядит как симптом более широкой тенденции.
В ходе выступления демонстрировались разные примеры "внедрения ИИ". Один из них - внутренняя база знаний, собранная из большого массива текстовых файлов со спецификациями, часть которых оформлена в виде skills и хранится в Obsidian. Дальше схема выглядела примерно так: в папку inbox складываются почта, документы, заметки и прочие материалы, затем по расписанию запускается Claude Code, который обрабатывает весь этот массив, "каким-то" образом масштабирует базу, "как-то" векторизует данные, проставляет связи, строит граф и в итоге формирует систему, которая "в целом работает" и "что-то" делает.
Само по себе это не выглядит чем-то невозможным. Но проблема в другом - в подобных историях очень часто отсутствует понимание, что именно происходит внутри такого пайплайна, где в нём реальная ценность, какие части действительно требуют LLM, а какие можно было бы решить более простыми и дешёвыми средствами.
Именно здесь возникает более интересный вопрос - не технологический, а экономический.
Чем больше компаний будут переводить процессы на подобные решения без глубокого понимания их устройства, тем выше вероятность, что крупные игроки рынка начнут увереннее пересматривать ценовую политику. Если бизнес уже встроил ИИ в ключевые процессы, если управленческий слой привык к такой модели работы, а часть прежней инженерной экспертизы уже сокращена или вытеснена, то пространство для манёвра резко уменьшается. В такой ситуации повышение цены воспринимается не как повод отказаться от инструмента, а как вынужденная операционная издержка.
Именно поэтому мне кажется вполне вероятным, что по мере роста зависимости бизнеса от LLM-сервисов стоимость таких решений будет увеличиваться. Не потому, что это обязательно выгодно всем участникам рынка прямо сейчас, а потому что у поставщиков появится всё больше оснований считать спрос менее чувствительным к цене. Проще говоря, чем сильнее компания встроила ИИ в ежедневные процессы, тем сложнее ей будет отказаться от него даже при заметном росте расходов.
В этом смысле главный риск сегодня не в самом факте использования ИИ, а в модели внедрения, при которой инструмент становится критически важным раньше, чем появляется понимание его ограничений, архитектуры и реальной стоимости владения. А там, где возникает такая зависимость, почти всегда рано или поздно возникает и вопрос повышения цены.
Недавно мне пришлось оказаться на одной лекции, имен называть не буду, но общий настрой выступления можно описать так - человеку показали Claude Code, после чего он искренне поверил, что теперь "бизнесом можно управлять через ИИ", а "инженеры больше не нужны".
Что особенно показательно, речь шла не о случайном слушателе хайповой волны с FOMO, это был представитель высшего руководства своей компании, и при этом с техническим бэкграундом. И именно поэтому наблюдать за происходящим было особенно интересно. Когда подобные тезисы озвучивает начинающий специалист, это можно списать на недостаток опыта. Когда так рассуждает руководитель, это уже выглядит как симптом более широкой тенденции.
В ходе выступления демонстрировались разные примеры "внедрения ИИ". Один из них - внутренняя база знаний, собранная из большого массива текстовых файлов со спецификациями, часть которых оформлена в виде skills и хранится в Obsidian. Дальше схема выглядела примерно так: в папку inbox складываются почта, документы, заметки и прочие материалы, затем по расписанию запускается Claude Code, который обрабатывает весь этот массив, "каким-то" образом масштабирует базу, "как-то" векторизует данные, проставляет связи, строит граф и в итоге формирует систему, которая "в целом работает" и "что-то" делает.
Само по себе это не выглядит чем-то невозможным. Но проблема в другом - в подобных историях очень часто отсутствует понимание, что именно происходит внутри такого пайплайна, где в нём реальная ценность, какие части действительно требуют LLM, а какие можно было бы решить более простыми и дешёвыми средствами.
Именно здесь возникает более интересный вопрос - не технологический, а экономический.
Чем больше компаний будут переводить процессы на подобные решения без глубокого понимания их устройства, тем выше вероятность, что крупные игроки рынка начнут увереннее пересматривать ценовую политику. Если бизнес уже встроил ИИ в ключевые процессы, если управленческий слой привык к такой модели работы, а часть прежней инженерной экспертизы уже сокращена или вытеснена, то пространство для манёвра резко уменьшается. В такой ситуации повышение цены воспринимается не как повод отказаться от инструмента, а как вынужденная операционная издержка.
Именно поэтому мне кажется вполне вероятным, что по мере роста зависимости бизнеса от LLM-сервисов стоимость таких решений будет увеличиваться. Не потому, что это обязательно выгодно всем участникам рынка прямо сейчас, а потому что у поставщиков появится всё больше оснований считать спрос менее чувствительным к цене. Проще говоря, чем сильнее компания встроила ИИ в ежедневные процессы, тем сложнее ей будет отказаться от него даже при заметном росте расходов.
В этом смысле главный риск сегодня не в самом факте использования ИИ, а в модели внедрения, при которой инструмент становится критически важным раньше, чем появляется понимание его ограничений, архитектуры и реальной стоимости владения. А там, где возникает такая зависимость, почти всегда рано или поздно возникает и вопрос повышения цены.
3💯34👍19🔥12👎1
Вайбкодерская мудрость:
Если кодовый агент не может справиться с кодом - значит надо взять модель поумнее.
1😁46👍5
Хабр
Цифровой сотрудник на OpenClaw: нанять, обучить и не потерять
Привет! Я Сабина, владелец продукта из Центра экспертизы ИИ, ВкусВилл. В конце 2025 года мы писали про экспериментальный MCP сервер для выбора товаров. Очень признательны за вашу обратную связь, будем...
Сегодня вышел пост "Цифровой сотрудник на OpenClaw: нанять, обучить и не потерять" на Хабр, в котором говорится о том, как во ВкусВилле запустили бота сотрудника на базе OpenClaw на модельке Kimi, это очень любопытная тема, я после их успеха с MCP-сервером для поиска товаров крайне внимательно наблюдаю за новостями от них.
Вначале поста мне понравилась оговорка "А пока мы готовимся к покупателям-агентам, расскажем, как агенты становятся нашими коллегами." - в интересном направлении идут, и ИМХО уж если где и есть люди обладающие волей продвинуть агентную коммерцию в нашей стране (привет Александру Абрамову @dealerAI и его команде), так это только ВкусВилл.
Вначале поста мне понравилась оговорка "А пока мы готовимся к покупателям-агентам, расскажем, как агенты становятся нашими коллегами." - в интересном направлении идут, и ИМХО уж если где и есть люди обладающие волей продвинуть агентную коммерцию в нашей стране (привет Александру Абрамову @dealerAI и его команде), так это только ВкусВилл.
👍16🤮4🤡3🔥2🤣2❤1
Тестирование GigaChat 3.1 10B на агентных бенчмарках
Обычно я не пишу про новые модели, тем более отечественные, но совсем недавно состоялся релиз моделей семейства GigaChat 3.1 от команды Сбера.
В линейке вышли две модели, на 702B и 10B параметров, обе построены как MoE и обе, судя по позиционированию, должны хорошо работать с русским языком, но моя специализация больше про агенты, поэтому я рассматриваю модели прежде всего как основа для агентов. Поскольку у меня нет ресурсов для запуска версии на 702B, выбор пал на 10B, так как после апгрейда моей RTX 4090 до 48 Гб памяти такой вариант вполне можно погонять локально.
Про предыдущую ноябрьскую модель мне писать не хотелось, потому что для агентных сценариев она была практически бесполезна, максимум наивный tool calling на несколько тулов. При этом в анонсе 3.1 отдельно делался акцент на том, что она поддерживает function calling, поэтому ожидание было простое - модель должна заметно лучше работать в таких задачах.
С учётом прошлого опыта, когда промпт для тройки ещё пару недель доводили после релиза, я решил не спешить и отложил тесты, однако, пару дней назад появилась новость о том, что в vLLM была добавлена поддержка гигачатовского шаблона tool calling, и вроде как теперь тулами точно можно пользоваться.
Для оценки я использовал три хорошо знакомых мне бенчмарка, которые довольно быстро показывают, способна модель решать агентные задачи или нет:
- SWE - https://github.com/swe-bench/SWE-bench
- TAU - https://github.com/sierra-research/tau-bench
- BFCL - https://github.com/ShishirPatil/gorilla/tree/main/berkeley-function-call-leaderboard
На SWE модель показала 0%. Пришлось прям заморочится чтобы запустить тестирование модели на этом бенчмарке, а потом ещё и тюнить chat template пошел, потому что модель не хотела стабильно генерировать валидный diff patch, но даже это ситуацию не исправило, хотя с новым шаблоном промежуточные результаты стали чуть стабильнее.
На TAU результат тоже 0%. Модель уходит в бесконечные последовательности вызовов тулов и не может корректно определить, достаточно ли ей уже данных для завершения задачи или нет.
Единственным бенчмарком, который показал подозрительно (так как на остальных агентных бенчах результаты нулевые) высокие результаты, оказался BFCL. На нём модель набрала 89.5% на Simple Python, 91% на Multiple, а на остальных тестах результаты были уже скромнее - в районе 61%. Заодно этот бенч показал, что параллельные вызовы модель не поддерживает (но это возможно через правки промта можно поправить).
Результаты тестов, детали запуска и отладочные данные собраны здесь:
https://github.com/EvilFreelancer/gigachat-benchmarking
Чуда, к сожалению, не произошло. Складывается впечатление, что развитие больших языковых моделей пока не до конца синхронизировано с тем направлением, в котором сейчас движется объективная действительность, так как для практических agentic-сценариев одной только более-менее рабочей поддержки function calling уже недостаточно. Если модель не держит agentic loop, её прикладная ценность в таких задачах остаётся очень ограниченной.
При этом прогресс всё же есть. Если смотреть на дистанции в несколько лет, путь от ruGPT2 до почти стабильно работающего function calling - это заметный прогресс. Но по текущим меркам этого всё ещё мало.
Мой итоговый вывод довольно простой:
На мой взгляд, для среднего класса агентных задач куда интереснее выглядел бы формат MoE в диапазоне 100-150B в битности MXFP4, при этом и нижнюю границу компактной модели, как мне кажется, нет большого смысла опускать ниже 13B (как-то посчитать какой размер оптимальнее всего для 24Гб VRAM с контекстом 30-60k токенов), да и плюс размер эксперта в 1.8B маловато, к чему высокая скорость если модель не держит контекст и уходит в циклы.
Для себя выводы я сделал, подожду GigaChat 4, по моим ощущениям, она должна выйти осенью на AI Journey. Возможно, у новой модели ситуация изменится. Хотя вполне вероятно, что к тому моменту рынок снова успеет уйти вперёд.
Обычно я не пишу про новые модели, тем более отечественные, но совсем недавно состоялся релиз моделей семейства GigaChat 3.1 от команды Сбера.
В линейке вышли две модели, на 702B и 10B параметров, обе построены как MoE и обе, судя по позиционированию, должны хорошо работать с русским языком, но моя специализация больше про агенты, поэтому я рассматриваю модели прежде всего как основа для агентов. Поскольку у меня нет ресурсов для запуска версии на 702B, выбор пал на 10B, так как после апгрейда моей RTX 4090 до 48 Гб памяти такой вариант вполне можно погонять локально.
Про предыдущую ноябрьскую модель мне писать не хотелось, потому что для агентных сценариев она была практически бесполезна, максимум наивный tool calling на несколько тулов. При этом в анонсе 3.1 отдельно делался акцент на том, что она поддерживает function calling, поэтому ожидание было простое - модель должна заметно лучше работать в таких задачах.
С учётом прошлого опыта, когда промпт для тройки ещё пару недель доводили после релиза, я решил не спешить и отложил тесты, однако, пару дней назад появилась новость о том, что в vLLM была добавлена поддержка гигачатовского шаблона tool calling, и вроде как теперь тулами точно можно пользоваться.
Для оценки я использовал три хорошо знакомых мне бенчмарка, которые довольно быстро показывают, способна модель решать агентные задачи или нет:
- SWE - https://github.com/swe-bench/SWE-bench
- TAU - https://github.com/sierra-research/tau-bench
- BFCL - https://github.com/ShishirPatil/gorilla/tree/main/berkeley-function-call-leaderboard
На SWE модель показала 0%. Пришлось прям заморочится чтобы запустить тестирование модели на этом бенчмарке, а потом ещё и тюнить chat template пошел, потому что модель не хотела стабильно генерировать валидный diff patch, но даже это ситуацию не исправило, хотя с новым шаблоном промежуточные результаты стали чуть стабильнее.
На TAU результат тоже 0%. Модель уходит в бесконечные последовательности вызовов тулов и не может корректно определить, достаточно ли ей уже данных для завершения задачи или нет.
Единственным бенчмарком, который показал подозрительно (так как на остальных агентных бенчах результаты нулевые) высокие результаты, оказался BFCL. На нём модель набрала 89.5% на Simple Python, 91% на Multiple, а на остальных тестах результаты были уже скромнее - в районе 61%. Заодно этот бенч показал, что параллельные вызовы модель не поддерживает (но это возможно через правки промта можно поправить).
Результаты тестов, детали запуска и отладочные данные собраны здесь:
https://github.com/EvilFreelancer/gigachat-benchmarking
Чуда, к сожалению, не произошло. Складывается впечатление, что развитие больших языковых моделей пока не до конца синхронизировано с тем направлением, в котором сейчас движется объективная действительность, так как для практических agentic-сценариев одной только более-менее рабочей поддержки function calling уже недостаточно. Если модель не держит agentic loop, её прикладная ценность в таких задачах остаётся очень ограниченной.
При этом прогресс всё же есть. Если смотреть на дистанции в несколько лет, путь от ruGPT2 до почти стабильно работающего function calling - это заметный прогресс. Но по текущим меркам этого всё ещё мало.
Мой итоговый вывод довольно простой:
Использовать маленькую модель на 10B незачем, а большую на 702B - не на чем.
На мой взгляд, для среднего класса агентных задач куда интереснее выглядел бы формат MoE в диапазоне 100-150B в битности MXFP4, при этом и нижнюю границу компактной модели, как мне кажется, нет большого смысла опускать ниже 13B (как-то посчитать какой размер оптимальнее всего для 24Гб VRAM с контекстом 30-60k токенов), да и плюс размер эксперта в 1.8B маловато, к чему высокая скорость если модель не держит контекст и уходит в циклы.
Для себя выводы я сделал, подожду GigaChat 4, по моим ощущениям, она должна выйти осенью на AI Journey. Возможно, у новой модели ситуация изменится. Хотя вполне вероятно, что к тому моменту рынок снова успеет уйти вперёд.
5🔥22👍13🤷♂6🍓2🫡2
Агентная ruGPT3XL-8k
Задали мне на Хабр вопрос про доработку Unsloth Studio чтобы можно было модельку ruGPT3XL-8k дообучить.
Ранее я не пользовался данным UI и понятия не имел, сможет ли он потянуть такую задачу, полез разбираться и оказалось, никаких правок вносить вообще не нужно, Unsloth Studio спокойно подхватил и ruGPT3XL-8k, и датасет в формате SharedGPT.
Типа такого:
Обучать я решил не абы как, а с прикладной целью, после опытов над ai-sage/GigaChat3.1-10B-A1.8B собрал свой SFT-микс, чтобы попробовать затюнить dense 1.3B модель под agentic-loop сценарии, где важны не просто ответы "вообще", а умение держать ход рассуждений, пользоваться инструментами и не разваливаться на многошаговых задачах.
По настройкам решил не изобретать велосипед и пошёл в достаточно консервативный QLoRA-сетап. Обучение крутится в 4-bit, с LoRA rank 16 и alpha 16, max_seq_length выставил в 8196, batch size 1 при gradient accumulation 8, так что эффективный батч получается 16. Learning rate - 2e-4 с cosine scheduler, warmup на 100 шагов, оптимизатор adamw_8bit, плюс gradient checkpointing от Unsloth.
Обучение провожу на 1x RTX 4090 пропатченной до 48Гб в сервисном центре Vik-On.
По датасетам тоже решил не мудрствовать лукаво, собрал винегрет английских и русских семплов, всего 150k записей.
Английская часть (82.5k) это тулколлинг, reasoning и agentic use cases из
- Mustafaege/qwen3.5-toolcalling-v2
- interstellarninja/hermes_reasoning_tool_use
- Featherlabs/featherlabs_agentic_v1
- arcee-ai/reasoning-sharegpt
По чуть-чуть из каждого датасета, с упором на agentic-loop.
Русская часть (67.5k) это
- belyakoff/xlam-ru-tool-calling
- HelioAI/Helio1-Reasoning-50K-RU
- ZeroAgency/ru-thinking-reasoning-r1-v2
- ZeroAgency/ru-big-russian-dataset
Но отфильтрованные по reasoning.
Кстати, хочу передать привет Александру @ak_segfault из ZeroAgency @zeroagency, спасибо за датасеты!
Через пару дней уже расскажу, что получилось по качеству после тюна, студия пишет что ETA примерно 40 часов с учётом прогонки eval.
Задали мне на Хабр вопрос про доработку Unsloth Studio чтобы можно было модельку ruGPT3XL-8k дообучить.
Ранее я не пользовался данным UI и понятия не имел, сможет ли он потянуть такую задачу, полез разбираться и оказалось, никаких правок вносить вообще не нужно, Unsloth Studio спокойно подхватил и ruGPT3XL-8k, и датасет в формате SharedGPT.
Типа такого:
{
"conversations": [
{"role": "system", "content": "..."},
{"role": "user", "content": "..."},
{"role": "assistant", "content": "..."},
{"role": "tool", "content": "..."},
{"role": "assistant", "content": "..."}
]
}Обучать я решил не абы как, а с прикладной целью, после опытов над ai-sage/GigaChat3.1-10B-A1.8B собрал свой SFT-микс, чтобы попробовать затюнить dense 1.3B модель под agentic-loop сценарии, где важны не просто ответы "вообще", а умение держать ход рассуждений, пользоваться инструментами и не разваливаться на многошаговых задачах.
По настройкам решил не изобретать велосипед и пошёл в достаточно консервативный QLoRA-сетап. Обучение крутится в 4-bit, с LoRA rank 16 и alpha 16, max_seq_length выставил в 8196, batch size 1 при gradient accumulation 8, так что эффективный батч получается 16. Learning rate - 2e-4 с cosine scheduler, warmup на 100 шагов, оптимизатор adamw_8bit, плюс gradient checkpointing от Unsloth.
Обучение провожу на 1x RTX 4090 пропатченной до 48Гб в сервисном центре Vik-On.
По датасетам тоже решил не мудрствовать лукаво, собрал винегрет английских и русских семплов, всего 150k записей.
Английская часть (82.5k) это тулколлинг, reasoning и agentic use cases из
- Mustafaege/qwen3.5-toolcalling-v2
- interstellarninja/hermes_reasoning_tool_use
- Featherlabs/featherlabs_agentic_v1
- arcee-ai/reasoning-sharegpt
По чуть-чуть из каждого датасета, с упором на agentic-loop.
Русская часть (67.5k) это
- belyakoff/xlam-ru-tool-calling
- HelioAI/Helio1-Reasoning-50K-RU
- ZeroAgency/ru-thinking-reasoning-r1-v2
- ZeroAgency/ru-big-russian-dataset
Но отфильтрованные по reasoning.
Кстати, хочу передать привет Александру @ak_segfault из ZeroAgency @zeroagency, спасибо за датасеты!
Через пару дней уже расскажу, что получилось по качеству после тюна, студия пишет что ETA примерно 40 часов с учётом прогонки eval.
👍19❤7🫡4🤯2🔥1