Превращаем 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
Что такое бустинг?
Суть бустинга такая: мы строим ансамбль, где каждая следующая модель учится исправлять ошибки предыдущей. Не голосовать толпой (как 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)
Base: Модель генерирует черновик.
Semantic Gradient (Loss): модель-критик сравнивает черновик с условием. Она не переписывает текст, она выдает направление ошибки (Diff). (Если критик не видит ошибок - он может выставить флаг "Severity" и сразу отправить ответ без исправлений.
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 компании. Если у вас есть датасеты подходящие под такие задачи, я бы с радостью их прогнал через этот каскад и сравнил с бэйзлайн, пишите в комментарии.
Комментарии (10)

slavamegas
31.01.2026 18:35https://habr.com/ru/articles/991370/
# [Инсайт] Градиентный бустинг из SLM (7B) против SOTA LLM
## Meta
| Поле | Значение |
| --- | --- |
| Дата | 2026-01-31 |
| Источник | habr.com/ru/articles/991370/ [1] |
| Тип | LLM Ensemble / DevOps [Комментарии] |
| Статус | New |
***
## Samari
Статья предлагает **итеративный бустинг** из маленьких моделей (SLM 7B): Base генерит черновик, Critic ищет ошибки (JSON с severity/errors), Booster фиксит — цикл до 5 раз или low severity.[1]
Ансамбль (Mistral7B Base, Qwen7B Critic, Hermes8B/Llama/Gemma Booster) бьёт Gemini 3 Flash на мульти-итент задачах (код+логика+JSON), особенно в медицине/финансах.[1]
Преимущества над MOE: последовательная проверка (реверс ошибок), экономия (early stop), локальность (on-prem), микс архитектур для доменов.[1]
Метрики: апгрейд качества на сложных задачах; latency ~2x Gemini, но privacy и кастомизация на высоте.[1]
Идеально для single-turn мульти-задач, где SOTA плывёт из-за one-pass.[1]
***
## Польза для проекта
- **Прямое продолжение Chef & Critic**: Base=Chef (Qwen32B/Mistral), Critic=Qwen7B, Booster=Hermes — добавь цикл в n8n для итераций до low severity.[1][1]
- **On-prem оптимизация**: SLM (7-9B) на RTX4080 (16GB), микс Ollama-моделей (Qwen/Mistral/Llama) вместо дорогих SOTA; early stop экономит VRAM.[1][1]
- **Усиление RAG/SDD**: бустинг для spec/code/judge пайплайна — Critic ловит галлюцинации в RAG, Booster фиксит под JSON-контракт.[1][1]
- **Для WB-finance/TG**: домены логика/финансы — где прирост максимум; тест на PnL-код или TG-RAG.[1][1]
- **Интеграция с промптами**: мышление-промпты (№1/№6) в Critic для structured errors; полный локальный ансамбль без API.[1][1]
***
## Критика и ограничения
- **Latency рост**: 2-5 итераций = 2-5x медленнее one-pass; не для real-time (TG-боты), только batch/offline.[1]
- **Сложность настройки**: нужны точные промпты (JSON errors), домен-модели могут конфликтовать; тюнинг early stop критичен.[1]
- **Не классический бустинг**: inference-time, без обучения; на inference метрики хороши, но scaling на 1000+ задач? — тест нужен.[1]
- **Зависит от синтетики**: датасет 50 задач от Gemini; реальные WB-задачи (RAG+code) могут требовать доработки промптов.[1]
- **Ресурсы**: даже SLM — несколько загрузок в VRAM; для Coolify/production нужен оркестратор (Redis queue).[1][1]
***
## Развёрнутое объяснение (для junior)
### Простыми словами (аналогия)
Обычная LLM — **один бросок кубика**: генерит ответ за проход, часто с ошибками на сложном (код+логика+JSON).
**Бустинг SLM** — как **CatBoost в ML**: первая модель (Base) даёт черновик, вторая (Critic) находит ошибки (residuals), третья (Booster) фиксит — итеративно до идеала.
Аналогия Lego: Base строит грубый дом, Critic говорит «стена кривая, крыша течёт», Booster перекладывает кирпичи. Маленькие модели (7B как Lego-блоки) собирают SOTA-качество.
### Шаги запуска: 3–7 шагов
1. **Подготовь модели в Ollama**
```
ollama pull mistral:7b-instruct # Base
ollama pull qwen2.5:7b-instruct # Critic
ollama pull hermes-2-pro-llama-3:8b # Booster1
```
[1]
2. **n8n workflow: Base → Critic → Booster**
- Нода1 `Ollama` (Mistral): генерит черновик по задаче.
- Нода2 `Ollama` (Qwen): промпт «Анализируй на ошибки, верни JSON {severity: 1-5, errors: [...] }».
- IF: severity >2 → Booster (Hermes): «Исправь по errors, сохрани структуру». Цикл в Loop Over Items (max 5).[1][1]
3. **Промпт Critic (JSON)**
```
Ты аудитор. Верни JSON: {"severity":3, "has_errors":true, "errors":[{"type":"logic","desc":"CSV в RAM O(n) память"},...]}
```
[1]
4. **Early stop**
- После Critic: IF severity <2 → output final; else → Booster + back to Critic.[1]
5. **Интеграция с Chef & Critic**
- Замени single Critic на бустинг-цикл; используй Qwen32B как final Booster.[1][1]
6. **Тестирование**
- Синтетический датасет: 5 задач (код CSV, мораль авто, токсины) → Gemini/Ollama Judge на TRUE/FALSE.[1]
7. **Production**
- Redis queue для parallel batches; логи severity в pgvector для тюнинга.[1][1]
### Пример кода (n8n Code-нода для Critic parse)
```python
import json
critic_response = $input.first().json.response # от Qwen
try:
report = json.loads(critic_response)
severity = report.get('severity', 5)
errors = report.get('errors', [])
return [{'json': {'severity': severity, 'errors': errors, 'continue': severity > 2}}]
except:
return [{'json': {'severity': 5, 'continue': True}}]
```
Парсит JSON, решает цикл![1]
### Глоссарий
- **Gradient Boosting** — ансамбль, где модели фиксят ошибки предыдущих (residuals).[1]
- **SLM (Small Language Model)** — 7-9B модели вроде Mistral/Qwen vs LMM (70B+).[1]
- **Early Stopping** — остановка цикла при low severity (экономия).[1]
***
## Action items для Инсайты
1. Загрузить SLM-ансамбль в Ollama: Mistral7B/Qwen7B/Hermes8B (effort: low).[1]
2. Построить n8n PoC: Base(Mistral) → Critic(Qwen JSON) → Booster(Hermes) + Loop (max5, early stop severity<2) (effort: high).[1][1]
3. Тест на 10 задачах (CSV-код, PnL-логика, TG-RAG); Judge = Qwen32B или Gemini (effort: medium).[1][1]
4. Интегрировать в Chef & Critic: заменить single Critic на бустинг-цикл (effort: medium).[1][1]
5. Метрики: latency/quality vs single Qwen32B; логи в Sheets/pgvector (effort: medium).[1][1]
6. Док в insayty.md: промпты + схемы; связать с RAG/SDD (effort: low).[1][1]
7. Update Insaity.xlsx HIGH, Space on-prem/DevOps (effort: low).[1]
***
## Строка для Insaity.xlsx
| Дата анализа | Источник (тема+ссылка) | Тип (Направление) | Инсайт | Контекст/детали (развёрнуто + глоссарий) | Приоритет | Срочность | Важность | Сложность | Action items | Статус | Связанный Space пользователя |
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
| 2026-01-31 | habr.com/ru/991370/ LLM бустинг SLM [1] | LLM Ensemble [Комментарии] | Итеративный бустинг SLM: Base → Critic(JSON errors) → Booster, цикл до low severity, бьёт SOTA на мульти-задачах. | Что это? Каскад 7B-моделей (Mistral Base, Qwen Critic, Hermes Booster): черновик → audit errors → fix, 2-5 итераций. Зачем? Лучше one-pass SOTA на код+логика; локально, privacy, микс доменов (медицина/финансы).[1] Как запустить? 1) Ollama pull SLM; 2) n8n: Ollama Base → Code-parse Critic JSON → IF severity>2 → Booster Loop; 3) Промпты: Critic JSON severity/errors; 4) Тест 10 задач; 5) Интеграция Chef&Critic; 6) Метрики latency/quality; 7) Док + xlsx.[1][1] Аналогия: CatBoost — фикс ошибок по шагам. Пример: Python Code-нода для parse Critic. Глоссарий: SLM — small 7B; Early Stopping — стоп по severity; Residuals — ошибки для Booster.[1] | HIGH | Нормально (1-2 нед) | Важна (Medium/High) | Средняя/Высокая | 1) Ollama SLM ансамбль; 2) n8n PoC бустинг-loop; 3) Тест 10 задач + Judge; 4) Замена Critic в Chef&Critic; 5) Метрики Sheets; 6) insayty.md промпты; 7) xlsx update.[1][1] | New | Инсайты, on-prem, DevOps |

AleGen
31.01.2026 18:35Не "samari", а "summary" - "краткое содержание". Слова "samari" в английском языке нет.
Politura
Судя по описанию, нечто похожее на то, что реализовано в большинстве агентских систем: задача разбивается на мелкие шаги, для каждого шага идет цикл с выполнением и проверкой до тех пор, пока шаг не будет полностью выполнен, затем переход к следующему шагу.
averagedigital Автор
по сути да, но здесь мы усиляем каждый ответ отдельным экспертом. Разница между мое только в том, что там параллельно, а здесь последовательно