Загрузка 0
ПОДЕЛИТЬСЯ

Мой блог

Листай вниз

Модели Granite 4.2: архитектура и особенности обучения рассуждающих LLM от IBM

Модели Granite 4.2: архитектура и особенности обучения рассуждающих LLM от IBM

Команда разработчиков IBM представила семейство моделей Granite 4.2 — первую линейку плотных языковых моделей с архитектурой decoder-only, ориентированных на глубокие рассуждения. Релиз включает три варианта с разным количеством параметров: 3B, 8B и 30B. Каждая модель создана с нуля и обучена на массиве примерно в 15 триллионов токенов в рамках пятиэтапной стратегии, которая расширяет контекстное окно до 512 тысяч токенов. После предварительного обучения системы проходят этап супервизируемого дообучения (SFT) на цепочках рассуждений, логических задачах и агентских траекториях, а затем — многоэтапное обучение с подкреплением. В этот конвейер входит агентское обучение с подкреплением, в ходе которого версии на 8B и 30B учатся применять инструменты в реальных изолированных средах.

Все модели новой линейки оснащены функцией переключения между режимами рассуждений и работы без них, а также специальным экономным режимом мышления, который расходует небольшой запас ресурсов на обработку простых запросов. Кроме того, реализована поддержка нативных вызовов инструментов. Модели распространяются под лицензией Apache 2.0. Если ранние версии семейства выступали в роли надежных ассистентов для выполнения инструкций, то новые модели добавляют в арсенал явные рассуждения. Каждая система способна выстраивать цепочку мыслей перед тем, как выдать окончательный ответ, и гибко переключаться в зависимости от сложности поставленной задачи.

Три представленные версии разделяют общие архитектурные подходы и единую цепочку обучения, масштабируясь под свои размеры. Наиболее заметные отличия в возможностях проявляются на стадии пост-тренинга. Модели на 8B и 30B параметров дополнительно проходят блок агентского обучения с подкреплением, что позволяет им действовать как полноценные автономные агенты: использовать внешние инструменты, редактировать и запускать программный код, работать с терминалом и выполнять поиск в интернете в защищенных условиях. Нативный вызов инструментов поддерживается всеми вариантами. Благодаря совместимости с эндпоинтами OpenAI (например, через vLLM) модели генерируют вызовы функций в стандартном формате и бесшовно интегрируются в существующие агентские инфраструктуры без дополнительной адаптации. Также обеспечена поддержка в SGLang.

Архитектурные особенности модельного ряда

В основе линейки лежит плотная трансформерная архитектура типа decoder-only. Базовые компоненты включают механизм внимания с группированными запросами (Grouped Query Attention, GQA) с 40 головками внимания и 8 головками ключей/значений, а также позиционные эмбеддинги Rotary Position Embedding (RoPE) с параметром $\theta = 10\,000\,000$. Для прямой обработки данных используется многослойный персептрон (MLP) с активацией SwiGLU, нормализация RMSNorm с коэффициентом $\varepsilon = 1e-5$, а также раздельные входные и выходные эмбеддинги без связывания. Вычисления производятся в формате точности bfloat16.

Технические характеристики конкретных конфигураций распределены следующим образом:

  • Размерность эмбеддингов: 2560 для версии 3B Dense; 4096 для 8B Dense и 30B Dense.
  • Количество слоев: 40 у моделей 3B и 8B; 64 у модели 30B.
  • Размер головки внимания: 64 для 3B; 128 для 8B и 30B.
  • Количество головок внимания: 40 у 3B; 32 у версий 8B и 30B.
  • Количество головок KV: 8 для всех трех вариантов.
  • Скрытая размерность MLP: 8192 (3B), 12800 (8B) и 32768 (30B).
  • Длина последовательности: 131072 токена для всех модификаций.

Процесс предварительного обучения

Обучение с нуля на объеме около 15 триллионов токенов опирается на пятиэтапную методику. На первом и втором этапах реализуется базовое пре-обучение. Третий и четвертый этапы представляют собой промежуточное обучение с постепенным улучшением качества данных и их отбором (data annealing). Пятый этап посвящен работе с длинным контекстом, за счет чего окно расширяется до 512 тысяч токенов. На каждом этапе задействуются уникальные комбинации данных и графики изменения скорости обучения, что позволяет плавно переходить от широких массивов веб-данных к более структурированным и качественным источникам. Общая схема предварительного обучения продолжает подходы предыдущего поколения.

Этап контролируемой тонкой настройки

Процесс контролируемой тонкой настройки (Supervised fine-tuning, SFT) преобразует базовую модель в надежного ассистента, способного следовать инструкциям, рассуждать и работать с инструментами. Итоговый набор данных для SFT объединяет агентские (31,6%) и неагентские (68,4%) материалы, составляя в общей сложности около 7,2 миллиона примеров или примерно 100 миллиардов токенов, из которых порядка 65 миллиардов являются обучаемыми. Агентский корпус охватывает широкий спектр областей: программную инженерию (SWE, 69%), вызовы инструментов (12,1%), работу с терминалом (8,0%), математику (3,5%), поиск (0,8%) и действия (0,2%). Эти примеры и траектории генерируются с помощью разнообразных каркасов и обвязок агентов, включая OpenHands, OpenCode, Terminus-2, SWE-agent, OpenResearcher, MiniSWE, OpenSeeker, EnvScaler, Gemini CLI, Hermes, Codex и Goose. Агентские данные объединяют как материалы из открытых источников, так и собственные синтетически сгенерированные среды обучения с подкреплением, охватывая самые разные комбинации агентов и управляющих сред.

Неагентский корпус состоит из нескольких крупных категорий: следование инструкциям (18,8%), программирование (18,8%), математика (14,6%), многоязычные данные (7,0%), науки (5,4%), рассуждения (3,0%) и безопасность (0,8%). Перед включением любого образца в финальный набор данных для SFT применяется многоступенчатый контроль качества. На первом этапе данные из различных источников нормализуются и приводятся к единому формату OpenAI Chat, что делает структуру диалогов и взаимодействие с инструментами единообразными для всех датасетов и каркасов. Затем в качестве языковых моделей-судей задействуются GPT-OSS-120B и Gemma 4 для оценки качества каждого образца. Низкооцененные примеры удаляются, равно как и материалы с галлюцинациями, вымышленной информацией, некорректными вызовами инструментов или обращениями к функциям, которые не описаны в соответствующем списке инструментов.

В тех случаях, когда это необходимо, применяются специализированные эвристические правила под конкретные датасеты для дальнейшего повышения качества и устранения известных источников шума. На завершающем этапе выполняется локальная и глобальная дедупликация. Она основана на вычислении хэшей SHA-256 по комбинации полей инструментов и сообщений, что позволяет исключить дубликаты как внутри отдельных источников, так и по всему объему SFT-смеси. Весь корпус предварительно подвергается глобальному перемешиванию, чтобы снизить влияние порядка следования и гарантировать качественное смешение данных из разных доменов в процессе обучения. Перемешанный корпус разбивается на файлы parquet равного размера, которые токенизируются с использованием токенизатора и шаблона чата модели, после чего передаются для подготовки к крупномасштабному распределенному обучению.

Перед запуском финальных масштабных процедур специалисты настраивают гиперпараметры на репрезентативных конфигурациях, подбирая расписания скорости обучения, начальные значения скорости и коэффициенты разогрева для обеспечения стабильного обучения моделей разного размера. Итоговая конфигурация обучения выглядит следующим образом: вычислительная инфраструктура задействует от 32 до 128 узлов (в зависимости от размера модели), на каждом из которых установлены конфигурации 4× Grace/GB200; длина упакованной последовательности составляет 131 072 (128K) токена; глобальный размер батча равен 128; скорость обучения фиксирована на уровне 1,0e-5 после фазы разогрева и снижается до 3,0e-6 для второго этапа; разогрев скорости обучения занимает 2,5% от общего числа тренировочных итераций; продолжительность обучения составляет около 2 эпох при схеме параллелизма TP=2, PP=1, CP=4 или CP=2.

Для модели с параметрами в 30 миллиардов дополнительно проводится вторая фаза SFT, ориентированная конкретно на агентское программирование. На этом этапе данные агентских задач, программной инженерии и кодинга подвергаются апсэмплингу для увеличения их реального вклада в тренировочное распределение, тогда как около 16% смеси сохраняются в качестве данных повторного проигрывания из оригинального SFT-корпуса. Модель 30B дообучается еще примерно в течение одной эпохи на более низкой скорости обучения, равной 3,0e-6. Подобный целенаправленный второй этап увеличивает частоту взаимодействия модели с траекториями агентского кодинга без утраты навыков, приобретенных на начальной стадии SFT. Сразу после завершения настройки SFT запускается многоступенчатый конвейер обучения с подкреплением в различных средах.

Особенности обучения с подкреплением

Вместо единого прохода обучения с подкреплением (RL) разработчики применяют последовательную цепочку целенаправленных этапов, охватывающих множество сред: математику, программирование, науку, следование инструкциям, использование инструментов и структурированный вывод, а затем программную инженерию, работу с терминалом и поиск в интернете. Каждый этап представляет собой независимый запуск RL, нацеленный на развитие конкретного навыка и использующий в качестве отправной точки контрольную точку предыдущей фазы. Базовое RL с проверяемыми наградами и усилителями навыков применяется для всех размеров моделей, тогда как блок агентного RL, включающий программную инженерию, терминал и поиск, задействуется только для версий с 8B и 30B параметрами. Каждая модель завершает цикл процедурой RLHF.

Каждый этап представляет собой отдельный запуск GRPO, который стартует с весов предыдущего шага. Все стадии обучаются с использованием асинхронного метода GRPO (Group Relative Policy Optimization), благодаря чему генератор и тренер в цикле никогда не блокируют работу друг друга. Пул рабочих процессов генерации непрерывно формирует ответы и передает готовые траектории в общий буфер. Как только буфер наполняется объемом данных на один полный шаг, тренер забирает этот батч, выполняет шаг оптимизатора и передает обновленные параметры обратно генераторам без остановки их работы. Обновление весов может произойти посреди генерации, из-за чего одна траектория окажется сшитой из двух соседних версий политики. Разработчики допускают такой подход вместо затрат на его предотвращение, поскольку воркеры повторно используют имеющийся кэш KV, а не перестраивают его после каждого обновления. Единственным защитным механизмом служит лимит, который не позволяет рабочим процессам отставать от тренера более чем на одно обновление, что ограничивает степень отклонения сэмпла от актуальной политики. Возникающее при этом несоответствие устраняется в целевой функции с помощью усеченного важностного семплирования (truncated importance sampling), которое ограничивает отношение логарифмических вероятностей обучения и генерации фиксированным потолком, не давая случайным устаревшим токенам доминировать в обновлении.

Преимущества оцениваются относительно группы с базовой линией методом исключения одного элемента (leave-one-out): каждый ответ сопоставляется со средней наградой остальных образцов, полученных для того же промпта, что исключает необходимость создания отдельной сети оценки (value network). Для наглядности можно рассмотреть RLVR — первый и самый продолжительный этап: на каждом шаге 256 промптов сопоставляются с 16 сгенерированными ответами на каждый из них, формируя батч из 4096 примеров, который тренер обрабатывает за один шаг оптимизатора до начала следующей генерации. На последующих стадиях этот механизм остается неизменным, меняются лишь параметры конфигурации каждого этапа. Вся конвейерная лента использует единый набор гиперпараметров на каждой стадии, что упрощает запуск и сравнение учебной программы. Часть настроек зафиксирована повсеместно:

  • Алгоритм: GRPO (без сети оценки, групповые относительные преимущества);
  • Стек обучения: NeMo-RL (Megatron-Core + vLLM) со средами NeMo-Gym;
  • Клиппирование коэффициента (мин. / макс.): 0.2 / 0.28;
  • Размер микро-батча: 1;
  • Параллелизм: тензорный параллелизм 2–4; без конвейерного или контекстного параллелизма.

От этапа к этапу меняется конфигурация каждого запуска: количество промптов и вариантов генерации на шаг, максимальная длина контекста, задействован ли агентный цикл и степень регуляризации по отношению к эталонной политике. Ниже приведены точные настройки для цепочки модели 30B по этапам:

  • RLVR (×3): 256 промптов/шаг, 16 генераций/промпт, длина контекста 64K, 1 шаг разворота, KL 0, скорость обучения 5e-7;
  • Усилитель инструкций (IF booster): 256 промптов/шаг, 16 генераций/промпт, длина контекста 64K, 1 шаг разворота, KL 0, скорость обучения 5e-7;
  • Усилитель кода (Code booster): 64 промпта/шаг, 16 генераций/промпт, длина контекста 64K, 1 шаг разворота, KL 0.05, скорость обучения 5e-7;
  • SWE 1: 64 промпта/шаг, 16 генераций/промпт, длина контекста 128K, 1 шаг разворота, KL 0.01, скорость обучения 5e-7;
  • SWE 2: 32 промпта/шаг, 16 генераций/промпт, длина контекста 128K, 128 шагов разворота, KL 0, скорость обучения 5e-7;
  • Терминал (Terminal): 8 промптов/шаг, 32 генерации/промпт, длина контекста 64K, 64 шага разворота, KL 0.01, скорость обучения 1e-6;
  • Поиск (Search): 32 промпта/шаг, 16 генераций/промпт, длина контекста 128K, 64 шага разворота, KL 0.01, скорость обучения 5e-7;
  • RLHF: 128 промптов/шаг, 16 генераций/промпт, длина контекста 48K, 1 шаг разворота, KL 0.05, скорость обучения 5e-7.

Указанные параметры актуальны для модели с 30 миллиардами параметров. Глобальный размер батча рассчитывается как произведение количества промптов на шаг и числа генераций на один промпт (например, 256 умножить на 16 дает 4096 для этапа RLVR).

Оценка возможностей моделей

Новое семейство прошло комплексное тестирование в различных дисциплинах, включая агентное написание кода, общие агентные задачи и использование инструментов, логические рассуждения, диалоговые сценарии и точное следование инструкциям, а также работу с большими контекстами. Для плотных конфигураций с размерами 3B, 8B и 30B были зафиксированы следующие результаты. В категории агентного программирования (SWE Bench Multilingual модель 8B показала 30.78, а 30B — 41.89; для SWE Bench Pro результаты составили 19.11 и 33.29 соответственно; в SWE Bench Verified — 47.67 для 8B и 57.00 для 30B; на Terminal-Bench 2.1 — 20.56 у 8B и 29.24 у 30B, тогда как для версии 3B эти тесты не проводились). В общих агентных задачах и работе с инструментами модель 3B набрала 45.78 на $\tau^3$-bench, 52.41 на BFCL (v4) и 32.10 на ProfBench; версия 8B продемонстрировала 58.06 на $\tau^3$-bench, 50.29 на BFCL, 41.20 на ProfBench, 41.07 на BirdBench и 1189.00 на GDPval; старшая модель 30B показала 62.00, 61.39, 42.90, 41.85 и 1225.00 баллов в тех же тестах. В тестах на логические рассуждения модель 3B получила 78.33 на AIME25, 66.67 на HMMT Feb25, 54.80 на GPQA, 69.71 на LiveCodeBench v6 и 24.11 на SciCode; конфигурация 8B достигла 86.67, 78.33, 64.14, 73.24 и 36.09 баллов; а модель 30B показала 89.17 на AIME25, 89.17 на HMMT, 66.41 на GPQA, 75.77 на LiveCodeBench и 38.76 на SciCode. В задачах чата и следования инструкциям результаты распределились следующим образом: MMLU-Pro принесла 67.84, 74.04 и 77.60 для размеров 3B, 8B и 30B; MMLU-ProX lite от IBM — 27.78, 61.06 и 66.64; Arena-Hard-V2 — 34.96, 65.19 и 67.93; IFBench (prompt) — 74.33, 79.33 и 77.17. В бенчмарках длинного контекста RULER на отметке 64K модели показали 67.52 (3B), 80.99 (8B) и 89.96 (30B), а на отметке 128K — 55.30, 71.41 и 81.38 баллов соответственно. Поддерживаемые языки включают английский, немецкий, испанский, французский, японский, португальский, арабский, чешский, итальянский, корейский, нидерландский и китайский.

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

Для работы с языковыми моделями семейства можно использовать стандартные библиотеки экосистемы Python. Настройка окружения начинается с установки необходимых пакетов с помощью команд pip install torch, pip install accelerate transformers. После этого загружается сама модель и соответствующий ей токенизатор из репозитория ibm-granite/granite-4.2-3b с помощью модуля transformers. При инициализации модели через AutoModelForCausalLM.from_pretrained указываются параметры device_map="cuda" для задействования графического процессора и torch_dtype=torch.bfloat16 для оптимизации вычислений, после чего модель переводится в режим оценки с помощью метода model.eval().

Пример программного запроса демонстрирует обработку задачи на подсчет букв. Пользовательское сообщение с вопросом о количестве букв «r» в слове «strawberry» передается через шаблон чата, который активируется функцией tokenizer.apply_chat_template с параметром enable_thinking=True. Токенизированные входные данные переносятся на устройство модели, после чего запускается генерация ответа методом model.generate. Задается максимальное количество новых токенов 8192, температура 1.0, параметр top_p на уровне 0.95 и разрешена стохастическая выборка do_sample=True. В результате выполнения модель выдает блок рассуждений в тегах <think>, где пошагово анализирует каждую букву слова, после чего формирует итоговый ответ о том, что в слове содержится три такие буквы.

Шаблон чата позволяет гибко управлять поведением генерации, в том числе полностью отключать блок логических размышлений. Например, при запросе столицы Франции параметр enable_thinking устанавливается в значение false. В этом случае модель пропускает этап внутреннего анализа и выдает прямой ответ о том, что столицей Франции является Париж, без генерации промежуточных рассуждений.

Кроме того, предусмотрен режим пониженного уровня усилий для простых задач. Если задать параметр enable_thinking=True вместе с флагом low_effort=True для математического примера сложения чисел, модель выдает минимальный блок размышлений с пометкой о простоте ответа, после чего быстро возвращает результат вычислений.

Важной особенностью архитектуры является встроенная поддержка вызова внешних инструментов с предварительным логическим обоснованием. Перед тем как задействовать определенную функцию, модель анализирует задачу и аргументирует необходимость вызова конкретного инструмента и причины такого выбора. Сами инструменты описываются в соответствии со схемой определения функций OpenAI. В примере с запросом прогноза погоды в Бостоне задается функция get_current_weather с обязательным параметром названия города. При передаче сообщения пользователя вместе с описанием доступных инструментов и активацией параметров шаблона чата модель сначала рассуждает о наличии подходящей функции в доступном списке, определяет необходимость передачи города Бостона в качестве параметра и формирует соответствующий запрос на вызов.

Интеграция с агентскими средами разработки

Модели могут служить эффективной основой для создания агентских инструментов программирования. Благодаря встроенной поддержке механизмов рассуждения и вызова внешних инструментов через API, совместимый со стандартами OpenAI, эти языковые решения легко интегрируются в популярные программные среды без использования дополнительных адаптеров. Для начала работы достаточно запустить сервер vLLM, а затем воспользоваться инструкциями для конкретной рабочей среды.

Инструмент OpenCode представляет собой терминальный агент искусственного интеллекта для разработки кода. Процесс его установки выполняется с помощью терминальной команды curl -fsSL https://opencode.ai/install | bash. После завершения инсталляции необходимо настроить конфигурационный файл, расположенный по пути ~./config/opencode/opencode.json. В этот файл вносится следующая структура:

{ "$schema": "https://opencode.ai/config.json", "model": "local/granite-4.2-30b", "provider": { "local": { "npm": "@ai-sdk/openai-compatible", "name": "vLLM (local)", "options": { "baseURL": "http://localhost:8000/v1", "apiKey": "EMPTY" }, "models": { "granite-4.2-30b": { "name": "Granite 4.2 30B", "limit": { "context": 131072, "output": 8192 } } } } } }

Для запуска утилиты используется команда opencode, а для выполнения конкретной задачи разработчика применяется команда opencode run "your task description". Подробная документация доступна на официальном сайте проекта opencode.ai/docs.

В свою очередь, Pi представляет собой минималистичный агентский каркас для автоматизированного написания кода, функционирующий непосредственно в командной строке. Данное решение поддерживает подключение пользовательских провайдеров через специальный конфигурационный файл с именем models.json.

Для быстрой установки инструментальной среды выполните команду в терминале: curl -fsSL https://pi.dev/install.sh | sh. После этого перейдите к настройке файла конфигурации ~/.pi/agent/models.json, где прописываются параметры провайдера vllm с базовым адресом http://localhost:8000/v1, типом API openai-completions и пустым ключом доступа, а также отключаются роли разработчика и параметры рассуждений. В секции моделей укажите идентификатор granite-4.2-30b с поддержкой логических цепочек, текстовым входом, контекстным окном в 131 072 токена, максимальным лимитом вывода в 8192 токена, а также стандартными параметрами семплирования.

Для запуска среды введите команду pi, после чего выберите нужную версию модели непосредственно во время интерактивной сессии через специальную команду или комбинацию клавиш. Полное руководство по эксплуатации доступно на официальном ресурсе документации.

Помимо этого, поддерживается интеграция с OpenHands — специализированным автономным агентом для разработки программного обеспечения, способным самостоятельно выстраивать планы, писать программный код и выполнять команды в терминале. Чтобы задействовать его, установите и запустите приложение согласно официальной инструкции, а затем укажите параметры языковой модели в настройках платформы. Обратите внимание, что при подключении к совместимым с OpenAI конечным точкам перед названием модели необходимо обязательно указывать префикс openai/. Все детали по расширенной настройке, устранению неполадок и альтернативным способам развертывания можно найти в профильной документации проекта.

Источник: huggingface.co

Оставить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

01.
На платформе MonsterInsights