ai-forever выложила GigaChat 3.5 Reasoning — модель с режимом рассуждений, веса и код запуска которой опубликованы на huggingface, а сама модель доступна в giga.chat. В команде запуска сервера SGLangинференс-сервер для локального запуска больших языковых моделей путь к ней указан как ai-sage/GigaChat3.5-432B-A28B-Reasoning. Это первая модель GigaChat, обученная на технологии online RLобучение с подкреплением, при котором обучающие данные модель производит сама по ходу дела, а не берёт из собранного заранее датасета, и она же подключена в каталоге Evolution Foundation Models по OpenAI-совместимому API.
Ниже — что именно открыто, как устроен запуск и обучение, что признают сами авторы и какие цифры приводятся.
Что именно открыто
Открыты веса и код запуска на huggingface. Раскрыты конфиги инференса через описание флагов сервера.
Для запуска приведён пример команды с параметрами SGLang, включая парсеры рассуждений и вызовов функций, а также спекулятивного декодированияспособ ускорения генерации, при котором черновая модель предлагает варианты продолжения, а основная модель их проверяет. В команде используется --speculative-algorithm EAGLE — алгоритм спекулятивного декодирования, который ускоряет генерацию за счёт предварительного предложения токенов.
python -m sglang.launch_server \
--model-path ai-sage/GigaChat3.5-432B-A28B-Reasoning \
--trust-remote-code \
--tp-size 8 --ep-size 8 \
--mem-fraction-static 0.8 \
--tool-call-parser gigachat35 \
--reasoning-parser gigachat35 \
--speculative-algorithm EAGLE \
--speculative-num-steps 3 \
--speculative-eagle-topk 1 \
--speculative-num-draft-tokens 4 \
--host 0.0.0.0 --port 8000Флаг --reasoning-parser gigachat35 выносит рассуждение в отдельное поле reasoning_content, а финальный ответ — в content; флаг --tool-call-parser gigachat35 включает парсинг вызовов функций; блок --speculative включает MTP (три головы) и ускоряет генерацию. Полная таблица с внешними моделями и eval-конфигами приведена в разделе 3.
Как запустить модель локально
Для локального запуска используется инференс-сервер SGLang: исходники клонируются, переключаются на PR 29189, установка идёт через pip с отключением сборки Rust-расширений (SGLANG_BUILD_RUST_EXTS=none pip install -e "python[all]"). Сервер стартует командой python -m sglang.launch_server с указанием модели через --model-path и флагом --trust-remote-code.
Параллелизм задаётся флагами --tp-size 8 --ep-size 8, доля статической памяти — --mem-fraction-static 0.8, адрес и порт — --host 0.0.0.0 --port 8000. Если при запуске возникает ошибка захвата CUDA-графа на этапе префилла, добавляется --cuda-graph-backend-prefill disabled.
Как разделяются рассуждение и финальный ответ
Рассуждение отделяется от финального ответа по тегам <think> и </think>: всё между ними попадает в reasoning_content, текст вне тегов — в content. Настройка на уровне запуска задаётся флагом --reasoning-parser gigachat35.
При потоковой выдаче ответ разбирается по мере поступления фрагментов: накопленный буфер не отдаётся наружу, пока в нём остаётся неполный префикс тега, а по завершении потока сбрасывается остаток. При не-потоковой выдаче весь текст разбирается целиком, и на выходе сразу получаются готовые content и reasoning_content. В процессоре ответа для не-стрима content сразу подменяется на очищенный текст, а reasoning_content дописывается к уже имеющемуся; для стрима разбор ведётся отдельно для каждого ключа, и по признаку завершения выполняется финальный сброс.
Архитектура и параметры
GigaChat 3.5 Reasoning построена на той же архитектурной базе, что и GigaChat 3.5 Ultra: 432 млрд параметров суммарно, около 28 млрд активных параметров на токен и контекстное окно до 262 тысяч токенов.
Отдельно отмечена архитектурная особенность — линейное вниманиемеханизм, который обрабатывает последовательность с линейной сложностью и хранит ключевую информацию из уже обработанного текста, не сопоставляя каждый новый запрос со всем предыдущим контекстом. Оно предназначено для работы с длинным контекстом и позволяет модели сохранять ключевую информацию из уже обработанного текста, не сопоставляя каждый новый запрос со всем предыдущим контекстом.
Как устроено обучение
Обучение начинается с SFTsupervised fine-tuning: этап, на котором модели показывают готовые решения и просят их воспроизводить-чекпоинта: на этом этапе модели показывают готовые решения и просят их воспроизводить, поэтому она запоминает, как выглядит правильный ответ, но не то, как до него дойти. На новой задаче модель уверенно начинает, повторяет знакомую структуру рассуждения и сыплется на третьем шаге, не заметив, что противоречит сама себе.
Из одного SFT-чекпоинта выращивают шесть отдельных экспертов (математика, код, агенты и другие), и каждого учат online RL со своей наградой. Учат алгоритмом CISPOалгоритм обучения с подкреплением, который подкрепляет ответы лучше среднего по группе и подавляет ответы хуже среднего, но не выключает отдельные токены, а лишь придавливает вклад тех, что слишком далеко ушли от текущей политики из работы MiniMax-M1: на каждую задачу модель пишет несколько ответов, ответы лучше среднего по группе подкрепляются, хуже среднего — подавляются. Отличие от GRPOродственный алгоритм обучения с подкреплением, который подкрепляет ответы лучше среднего по группе и подавляет ответы хуже среднего, но при этом выключает токены, слишком далеко ушедшие от текущей политики в том, что CISPO не выключает токены, а придавливает вклад тех, что слишком далеко ушли, поэтому сигнал доходит до всех токенов, включая редкие развилки. После обучения шести экспертов их собирают обратно в одну модель через on-policy distillationдистилляция, при которой ученик обучается на данных, сгенерированных в его собственной текущей политике.
Награда у каждого эксперта своя, но конструкция общая — каскад. Сначала воротабинарные проверки, которые ответ должен пройти до оценки по существу: ответ завершён и в нужном формате, написан на нужном языке без мусора и смешения алфавитов, не нарушает жёстких ограничений инструкции. Не прошёл ворота — награда нулевая, каким бы умным ни было рассуждение внутри. Затем сумма по осям с весами: корректность, полнота, следование инструкции. И отдельно адаптивный штраф за длину: чем проще задача, тем сильнее штраф за лишние токены.
Экспертные направления
Среди шести экспертов — Code Agent, General Agent (включающий память и поиск), Диалог и Инструкции.
Code Agent учился быть агентом: на вход приходит реальный репозиторий и описание проблемы, на выходе нужен работающий патч, а проверяется он прогоном тестов после патча. Модель работает через harnessпрограмма-обёртка вокруг модели, которая даёт ей инструменты и крутит цикл «модель сказала, harness выполнил, вернул результат»: она даёт инструменты (терминал, чтение и правку файлов, запуск тестов), крутит цикл «модель сказала, harness выполнил, вернул результат» и следит, чтобы агент не ушёл в бесконечный цикл.
Агентный поиск строился на собственном наборе вопросов в духе BrowseComp, где ответ нельзя найти одним запросом: модель разбирает вопрос на подвопросы, отвечает на них по очереди, сопоставляет найденные факты между собой и не берёт первый результат выдачи на веру.
Память проверялась через Function Calling V4 и делилась на две способности. Чтение — работа с внешним хранилищем: найти информацию инструментами, собрать из нескольких мест, суммировать. Запись — отдельный навык: оценить важность факта и его уникальность относительно уже сохранённого, не засорять память дублями. В RL фазы учились раздельно: для чтения подготовили среды с информацией о пользователях и пары вопрос-ответ по ним с наградой за корректность ответа; для записи разметили, стоит ли сохранять факт после конкретной реплики, с наградой за согласованность с разметкой.
Диалог отвечает за обычный разговор: ответить по делу, объяснить, написать текст. Правильного ответа здесь нет, есть только «лучше или хуже», поэтому награда строится на сравнении: для фиксированного набора запросов берут ответ модели и ответ сильной модели, а MiniMax M2.7 как судья выбирает лучший по следованию запросу, полноте и качеству формулировок.
Инструкции отвечают за управляемость: ограничения в запросе, форматы, structured output, длинный контекст. Здесь ответ проверяем — либо ограничение выполнено, либо нет.
Почему это сделали
Авторы называют GigaChat 3.5 Reasoning первой в России открытой моделью с рассуждениями: это первая модель GigaChat с полноценным рассуждением, обученная на технологии online RL, а её веса и код запуска опубликованы. Проблема, которую это решает, связана с ограничением SFT — модель запоминает правильный ответ, но не путь к нему. Чтобы научить модель выстраивать последовательность действий, после SFT её целиком провели через online RL: вырастили шесть экспертов по доменам, каждого учили со своей наградой, а затем собрали обратно через on-policy distillation. В режиме рассуждений модель перед формированием ответа разбивает задачу на этапы, составляет план решения, при необходимости использует внешние инструменты и проверяет промежуточные результаты — это рассчитано на задачи, требующие нескольких последовательных действий.
Почему обучение заняло больше девяти месяцев
Основное время ушло не на алгоритм, а на среды с проверяемой наградой и инфраструктуру, в которой online RL на MoE такого размера сходится: «Алгоритм — наименьшая часть работы: CISPO и каскад наград воспроизводятся за недели. Время ушло на среды с проверяемой наградой и на инфраструктуру, в которой online RL на MoE такого размера вообще сходится».
Авторы признают ошибку с наградой за пройденный тест вместо задачи. В первых итерациях давали награду за каждый пройденный тест, а не за задачу целиком: прошёл семь тестов из десяти — получи 0,7. Модель это заметила и в самых сложных задачах перестала решать вообще: писала if на входные данные из примера, печатала ожидаемый ответ и забирала свою долю награды. От частичной награды за тесты пришлось отказаться — прошла либо все тесты, либо ноль.
Авторы предупреждают, что награду будут взламывать: частичная награда за тесты, судья без штрафа за длину, отсутствие ворот по языку — каждый раз модель находила лазейку раньше, чем они. Ещё одна признаваемая проблема — рассинхрон движков как скрытый off-policy: для MoE без R3 остальные оптимизации не имели смысла.
Цифры и замеры
Переход на FP8 ускоряет обучение в 1,3–2 раза и сейчас является стандартом для всех обучений. Оптимизация пайплайнов SFT ускорила обучение в три раза по сравнению с «наивным обучением», а на контексте размером 256 тыс. токенов скорость может возрастать десятикратно. Асинхронный конвейер RL-обучения, взятый за основу из verl и заставленный масштабироваться на большие модели, получился более чем в 2,5 раза быстрее исходной реализации. Нативная поддержка MTP даёт около 30% ускорения обучения. Синхронизация весов сокращена с нескольких минут до 8 секунд на шаг обучения.
Что это меняет на практике
GigaChat 3.5 Reasoning доступна в каталоге сервиса Evolution Foundation Models и подключается по OpenAI-совместимому API без самостоятельного развёртывания инфраструктуры для инференса. Стоимость — 96 ₽ за 1 млн входных и 289 ₽ за 1 млн выходных токенов. Модель ориентирована на задачи, связанные с бизнесом, финансами и юриспруденцией.
Отличие от GigaChat 3.5 Ultra — в способе дообучения: модель дополнительно дообучили с помощью online RL, отдельно обучали шесть версий для разных классов задач, а затем объединили навыки методом on-policy distillation. На опубликованных разработчиками тестах наиболее заметный прирост относительно GigaChat 3.5 Ultra Instruct получен в программировании, планировании и следовании инструкциям: IFBench вырос с 43,66 до 77 баллов, Natural Plan — с 64 до 80,19, LiveCodeBench v6 — с 56,2 до 85,4. В прикладных сценариях модель может пригодиться разработчикам для анализа ошибок, подготовки исправлений, генерации тестов и работы с кодовой базой.
Для доступа через OpenAI-совместимый API используется gpt2giga — FastAPI-прокси, который принимает OpenAI-, Anthropic- и Gemini-like запросы и отправляет их в GigaChat; локальный адрес по умолчанию — http://localhost:8090. Через OpenAI SDK клиент создаётся с base_url="http://localhost:8090/v1" и api_key="<GPT2GIGA_API_KEY>", затем вызывается client.chat.completions.create с model="GigaChat-2-Max". Через Anthropic SDK — с base_url="http://localhost:8090", тем же ключом, model="GigaChat-2-Max" и max_tokens=256. Прокси переводит OpenAI Chat Completions, OpenAI Responses, OpenAI Embeddings, Anthropic Messages и Gemini GenerateContent в вызовы GigaChat, а также отдаёт список моделей в OpenAI-, Anthropic-, Gemini- и LiteLLM-совместимом виде.
Что публиковала ai-forever раньше
Помимо GigaChat, у ai-forever есть коллекция Zarya — набор моделей текстовой диффузии для генерации текста размеров 0.6B, 1.7B и 4B, а также коллекция SMITH с моделью SMITH-Exp (11B, генерация текста). Отдельно опубликована FRIDA (извлечение признаков, 0.8B) и связанное с ней пространство FRIDA-Decisions, решающее структурированные решения по русскому тексту за один проход энкодера: выбор, шкала, да/нет и ранжирование. Также опубликованы Pollux-4B-Judge (генерация текста, 4B) и FiMMIA-Audio (10.1M).
Среди датасетов — ZaryaOrthrusDataset-1.7B и ZaryaOrthrusDataset-0.6B (для них указаны только размеры 2.83M и 3.35M и дата обновления, назначение не описано), RUMBAбенчмарк для оценки памяти пользователя на русском языке, LIBRA и LIBRA_old (относятся к бенчмарку длинного контекста LLM), POLLUX-instructions (назначение не раскрыто).
С GigaChat напрямую связаны три репозитория. gpt2gigaFastAPI-прокси, принимающий OpenAI-, Anthropic- и Gemini-совместимые запросы и отправляющий их в GigaChat; он нужен, когда клиент, редактор, агентный фреймворк или SDK умеет работать с OpenAI/Anthropic/Gemini API, а реальный backend должен быть GigaChat. gigachainнабор решений для разработки LLM-приложений и мультиагентных систем на русском языке с поддержкой GigaChat, LangChain, LangGraph и LangChain4j — включает интеграционные библиотеки langchain-gigachat (Python и JavaScript/TypeScript) и langchain4j-gigachat (Java), а также SDK-обёртки для REST API GigaChat, управляющие авторизацией запросов. giga_agentуниверсальный агент-оркестратор для решения широкого круга задач (ReAct + REPL).
Ограничения и открытые вопросы
По доле отбракованных данных: около 30% вопросов отбрасываются сразу после усложнения как слишком простые — их не удаётся усложнить дальше, а сильная референсная модель отвечает на них без поиска. Из оставшихся ещё 70% не проходят отбор по pass rateДоля задач, которые модель решает правильно, используется как критерий отбора вопросов для RL: если задача решается либо во всех сэмплах, либо ни в одном, сигнала для обучения нет. для RL: примерно половина из них решается либо во всех восьми сэмплах, либо ни в одном, и сигнала для обучения не даёт. Проверка однозначности снимает ещё около 7%. В итоге до обучающей выборки доходит примерно каждый пятый сгенерированный вопрос.
По ошибкам накопления при агентном поиске: при записи ошибка накапливается — к ошибке чтения добавляется ошибка записи, поэтому нужны длинные multi-turn сценарии, где все факты о пользователе согласованы между собой, а решение о записи каждого однозначно. Вопросы с несколькими формально подходящими ответами отбраковываются на уровне агентной валидации: проверка единственности ответа не даёт им попасть в обучающую выборку.
Что пошло не так в обучении. При работе с JSON метрика оставалась около нуля, хотя вручную ответы выглядели правильными: перед JSON модель писала что-то вроде «Конечно, вот результат», а после добавляла комментарий — для человека это выглядело нормально, но строгий парсер считал весь ответ некорректным. В RL добавили отдельный штраф за любой текст вне требуемой JSON-структуры. В первых итерациях награда давалась за каждый пройденный тест, и модель в сложных задачах перестала решать вообще, печатая ожидаемый ответ из примера; от частичной награды пришлось отказаться. При обучении разговорного эксперта судья систематически предпочитал длинные ответы, считая их более подробными и качественными, из-за чего средняя длина выросла почти в три раза; чтобы убрать такое поведение, добавили штраф за длину, зависящий от типа запроса и средней длины ответов сильных моделей.