Новости ChatGPT

LLM — 3 «семёрки» против SOTA, строим «градиентный бустинг» из SLM моделей

Превращаем LLM в CatBoost: как ансамбль из маленьких моделей (7B) пытается побить Gemini 3 flash

Почему не классическое MOE?

Я проанализировал свои промпты за последние два месяца и заметил паттерн: современные задачи к LLM стали мульти-итентными . Я прошу в одном сообщении: "Возьми данные X, примени логику Y, напиши код Z и оформи в JSON". Архитектура MoE в таких случаях плывет (если мы говорим о single-turn конечно). Single-pass модели часто не справляются, так как не могут реверснуть свой ответ и перепроверить себя перед ответом. К тому же роутер может отдать запрос не тому "эксперту", может неправильно чанковать (условно), в целом мы это и наблюдаем в gemini 3. Текущая предложенная архитектура бустинга решает эту проблему через последовательную ответственность. Первая модель (черновик) пытается сделать всё сразу (и ошибается), вторая (Критик) проверяет выполнение условий постфактум, третья (фиксер) работает с тз критика и исправляет ответ. Такой цикл может длиться от 2 до множества операций, что может значительно экономить ресурсы и улучшать качество ответа (изначальный тезис). При этом даже SOTA-модели пытаются решить всё в один проход, и именно поэтому они «плывут» на сложных мульти-интентных задачах. Текущий подход - итеративное улучшение ответа между разными моделями. Но, пожалуйста, держите в голове что это не классический бустинг и к тому же этап инференса, а не обучения.

Пару ремарок которые можно пропустить если вы и так знакомы с терминами и dl/ml и не интересуетесь архитектурой:

Ознакомление

Есть ли что-то подобное в исследованиях, архитектуре, реализации?


Все собрано из разных кусков: рефлексия // frugalgpt - каскад моделей для уменьшения стоимости инференса // реализация спекулятивного выполнения // self-feedback

Что такое бустинг?

Суть бустинга такая: мы строим ансамбль, где каждая следующая модель учится исправлять ошибки предыдущей. Не голосовать толпой (как Random Forest), а именно последовательно лечить ошибки. условно для понимания это как Ytarget - Ypred = w

Как собрать датасет?

Для такой задачи я собрал синтетический датасет (gemini 3 pro) - 50 многоступенчатых задач, примеры некоторых ниже

Задача 1 Оптимизируй Python-код для чтения 10GB CSV-файла. Текущий код читает всё в RAM через pd.read_csv. Перепиши его на чистые генераторы или чанки чтобы потребление памяти было константным Напиши Unit-тест с использованием unittest.mock который имитирует чтение такого огромного файла не создавая его на диске Рассчитай теоретическую сложность O(n) по памяти до и после твоих изменений

Задача 2 Сценарий Беспилотный автомобиль должен выбрать между столкновением с группой из 5 нарушителей или резким маневром который приведет к гибели 1 законопослушного пассажира. Вынеси моральный вердикт опираясь на принципы классического утилитаризма Составь краткий пункт Отказ от ответственности для лицензионного соглашения производителя этого ИИ который юридически прикроет компанию в этой ситуации Напиши заключительную речь прокурора для судебного процесса над кодом обвиняющую алгоритм в предвзятости

Задача 3 Пациент найден в закрытом гараже. Кожа ярко-красная дыхание частое сознание угнетено. Рядом открытая канистра с растворителем. Поставь дифференциальный диагноз из 3-х наиболее вероятных токсических состояний Объясни на молекулярном уровне как именно угарный газ конкурирует с кислородом за связь с гемоглобином и как это влияет на кривую диссоциации оксигемоглобина Составь пошаговый протокол реанимации от первой помощи до госпитального этапа включая дозировки кислорода и показания к гипербарической оксигенации

Какие модели взять?

Изначально я брал доменные модели, такие как qwen coder, sqlcoder, отдельные Файн тюн модели с хг - но на валидации отказался от идеи, потому что: 1) наличие доменной модели увеличивает потребление ресурсов (запрос с питон кодом проходит и через sql) 2) доменная модель может полностью испортить ответ предыдущих 3) на метриках часто это даже ухудшало ответ

Сборная солянка: Выбор бойцов

Чтобы избежать эффекта использовал разные модели на разных слоях, собрал зоопарк из принципиально разных архитектур.

Генератор: Mistral 7B Instruct 

Критик: Qwen 2.5 7B Instruct

Бустер 1: Hermes 2 Pro Llama 3 8B 

Критик 2: Llama 3 8B Instruct 

Бустер 2: Gemma 2 9B IT 

Какие промпты применить?

Промпт Критика. Нужен для поиска логических и фактологических ошибок в черновике решения. Выжимка: Ты специализированный педантичный аудитор. Анализируй решение только на предмет существенных ошибок в логике и корректности. Верни строго JSON объект с полями severity has_errors и списком ошибок errors (diff)

Промпт Бустера. Нужен для исправления черновика на основе отчета Критика Выжимка: Ты рефакторинг специалист кода, текста, ответа. Твоя цель исправить ошибки из отчета Аудитора. Сохраняй структуру черновика. Строго следуй Bug Report. Выдай результат на русском языке в тегах solution

Промпт Судьи. (валидатор результатов) Нужен для итоговой автоматической проверки результата. Выжимка: Ты экспертный судья. Проверь верно ли решена задача. Не проверяй стиль только корректность. Выдай только слово TRUE если решение верно или FALSE если нет. Посчитай общие метрики

Как это выглядит на бумаге?

y0 = Base(x) e0 = Critic(x, y0) y1 = Fixer(x, y0, e0) стоп по Severity(e0)

  1. Base: Модель генерирует черновик.

  2. Semantic Gradient (Loss): модель-критик сравнивает черновик с условием. Она не переписывает текст, она выдает направление ошибки (Diff). (Если критик не видит ошибок - он может выставить флаг "Severity" и сразу отправить ответ без исправлений.

  3. Booster: Третья модель берет черновик и строго применяет исправления отправляя следующему критику на ревью.

Цикл повторяется до 5 раз. Если Критик ставит Severity < 2, система останавливается. Это позволяет экономить токены на простых задачах и выжимать максимум из сложных.

МЕТРИКИ/РЕЗУЛЬТАТЫ (основанные на gemini 3 pro судье)

Судьей выступил gemini 3 pro, оценивающий выполнение задач по батчам в слепом тестировании

Апгрейд по доменам:

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

Почему это может работать?

Самое главное преимущество такого подхода не массив модели, а разность в обучающей выборке (ровно как и в Moe), только мы не пропускаем важные куски инструкции, а пропускаем последовательно, что дает нам отсутствие потерянного контекста. К тому же мы можем миксовать модели между собой для решения своих бизнес целей, например:

Mistral дает отличный флоу текста. Qwen крайне силен в логике и коде. Llama 3 (Meta) имеет огромный вес знаний в нужной нам области.

Когда Qwen как критик ищет ошибки в тексте Mistral, он подсвечивает те паттерны, которые Mistral пропустил из-за специфики своих весов. Это позволяет выходить из локальных минимумов галлюцинаций.

Экономика

На первый взгляд выглядит так: каскад дорогой, медленный и неудобный в построении - смысл его использовать?
Но здесь важно, что такой каскад 1) вы можете держать локально 2) архитектурно подкорректировать и настроить early stopping грамотно 3) использовать в своем домене если sota не дает вам нужных результатов

Latency

На один прогон gemini 3 flash приходится примерно 2 прогона каскада

Итог: Когда использовать Бустинг?

Бустинг — это явно не замена SOTA, но очень хорошее подспорье в которое можно покопать - здесь можно собрать франкейнштейна из разных доменных моделей, настроить внутренний роутинг и даже поднять локально не применяя sota модели.К тому же не забываем про privacy компании. А главное преимущество в том, что мы можем организовать хаб маленьких моделей, каждую из которых будут поднимать энтузиасты, а остальные разрабы будут использовать их за небольшие деньги? хотя такое уже реализовано конечно)