Bad Theory Labs выпустила BTL-3 Compact - открытую agent-модель на 27 миллиардов параметров, которая упакована в один GGUF-файл весом 8.39 ГБ. Это меньше, чем занимает 8B-модель в fp16. Сжатие выполнено с помощью собственной техники AVQ2: affine INT4 квантизация с rank-32 коррекцией выхода. На выходе получаем 2.5 бита на параметр без критической деградации - тест на 100-шаговом tool-gate показывает сохранение 92.2% точности от полной версии.
Модель заточена под агентный кодинг и структурированное использование инструментов. HumanEval 95.12% pass@1, BFCL v4 AST 88.5%, точность множественных вызовов инструментов 95.5%, воздержание от вызова 91.2%. Контекстное окно 262K токенов, скорость генерации 43 ток/с на RTX PRO 6000. Запускается полностью локально через llama.cpp. Если вы искали способ развернуть мощную agent-модель на одной карте без облачных зависимостей - это прямой кандидат.
Что такое BTL-3 Compact и почему это важно
BTL-3 Compact - это сжатая версия agent-модели BTL-3 от Bad Theory Labs. Полная версия содержит 27 миллиардов параметров и требует соответствующего железа. Compact-версия решает главную проблему: помещает те же 27B параметров в 8.39 ГБ, что позволяет запускать модель на потребительских GPU и даже на CPU с достаточным объёмом RAM.
Ключевая ценность - радикальное сжатие без потери agent-функциональности. Обычная 8B-модель в fp16 занимает около 16 ГБ. Здесь 27B-модель весит вдвое меньше, сохраняя преимущества большего числа параметров: лучшее понимание сложных инструкций, точнее следование многошаговым сценариям, меньше галлюцинаций при вызове инструментов.
Технические характеристики:
- Параметры: 27B, сжаты до 2.5 бит/параметр
- Размер файла: 8.39 ГБ в формате GGUF
- Контекст: 262 000 токенов
- Скорость: 43 ток/с на RTX PRO 6000
- Сохранение точности: 92.2% от полной версии на 100-шаговом tool-gate
- Запуск: полностью локальный, llama.cpp
Модель ориентирована на агентный кодинг и структурированное использование инструментов. Она генерирует код, вызывает API, принимает решение о необходимости вызова функции и корректно воздерживается, когда вызов не требуется. Это не универсальный чат-бот - это инструмент для построения автономных AI-агентов.
Техника сжатия AVQ2: как 27B параметров уместили в 8.39 ГБ
Стандартная INT4 квантизация даёт 4 бита на параметр. Для 27B-модели это примерно 13.5 ГБ - уже неплохо, но всё ещё многовато для 12-гигабайтной видеокарты. Bad Theory Labs пошла дальше: AVQ2 использует affine INT4 с rank-32 коррекцией выхода, достигая 2.5 бит на параметр и финального размера 8.39 ГБ.
Affine-преобразование добавляет параметры масштаба и сдвига для каждой группы весов. Это позволяет точнее подогнать квантизованные значения под реальное распределение. Низкоранговая коррекция (rank-32) компенсирует ошибки, возникающие при экстремальном сжатии: вместо хранения полной матрицы ошибок сохраняется её низкоранговое приближение - две матрицы размера N×32 и 32×M. Объём дополнительных данных невелик, а точность восстанавливается существенно.
Affine INT4 и rank-32 коррекция: детали метода
INT4-квантизация отображает значения весов в 4-битное целое число с диапазоном [-8, 7]. Стандартный подход использует один масштабный коэффициент на блок весов - симметричную квантизацию. Affine INT4 добавляет смещение: quantized_value = round((float_value - zero_point) / scale). Параметры scale и zero_point подбираются отдельно для каждого блока, что даёт лучшее приближение для асимметричных распределений.
Rank-32 коррекция работает как постобработка. После квантизации и деквантизации вычисляется ошибка выхода слоя: разница между оригинальным float32-выходом и выходом после INT4-кодирования/декодирования. Эта ошибка аппроксимируется произведением двух матриц ранга 32. На инференсе коррекция применяется дополнительным проходом: выход квантизованного слоя плюс результат умножения входного вектора на низкоранговую поправку. Накладные расходы - около 32×hidden_size×2 операций на слой, что незначительно по сравнению с основным вычислением.
Формат GGUF выбран не случайно. Он поддерживает смешанную точность: веса хранятся в INT4, коррекционные матрицы - в float16, affine-параметры - в float32. llama.cpp эффективно обрабатывает такую структуру, распараллеливая основной проход и коррекцию.
Интересно сравнить этот подход с экстремальным квантованием, которое мы тестировали ранее. В статье про Ternary-Bonsai-27B 2-битная версия набрала лишь 7.9% в Terminal-Bench 2.0, а 1-битная ушла в бесконечную генерацию. AVQ2 с 2.5 битами на параметр и rank-32 коррекцией показывает принципиально другой уровень сохранения качества - 92.2% от полной версии.
Бенчмарки: на что способна BTL-3 Compact в цифрах
Разработчики предоставили результаты по ключевым бенчмаркам для agent-моделей. Цифры высокие, разбираем каждый показатель и его практический смысл.
| Бенчмарк | Результат | Что измеряет |
|---|---|---|
| HumanEval | 95.12% pass@1 | Генерация корректного Python-кода по описанию задачи с первой попытки |
| BFCL v4 AST | 88.5% | Точность вызова функций: правильный выбор функции и корректное заполнение аргументов |
| Множественные вызовы инструментов | 95.5% | Последовательный вызов нескольких API в правильном порядке с передачей данных между вызовами |
| Воздержание от вызова | 91.2% | Способность не вызывать инструмент, когда запрос пользователя не требует вызова |
| 100-шаговый tool-gate | 92.2% от полной версии | Сохранение точности на длинных цепочках из 100 последовательных инструментальных вызовов |
HumanEval 95.12% pass@1 ставит BTL-3 Compact на уровень топовых моделей для генерации кода. Для контекста: GPT-4 показывал около 87% на этом бенчмарке, Claude 3.5 Sonnet - около 92%. Модель с 27B параметров, сжатая до 8.39 ГБ, обходит флагманские проприетарные модели полуторагодичной давности.
BFCL v4 AST 88.5% - сильный результат для открытой модели. BFCL (Berkeley Function Calling Leaderboard) проверяет способность модели правильно выбирать функцию из списка доступных и заполнять аргументы в соответствии со схемой. AST-метрика (Abstract Syntax Tree) оценивает структурную корректность вызова, игнорируя незначимые различия в форматировании.
Точность множественных вызовов 95.5% и воздержание от вызова 91.2% - критически важные метрики для продакшен-агентов. Первая гарантирует, что агент не сломается на цепочке из нескольких последовательных API-вызовов. Вторая предотвращает ложные срабатывания, когда модель пытается вызвать инструмент в ответ на обычный вопрос пользователя.
Агентный кодинг и работа с инструментами: практические сценарии
BTL-3 Compact спроектирована для трёх основных сценариев:
Генерация кода по описанию. Модель получает спецификацию на естественном языке и генерирует рабочий код. HumanEval 95.12% означает, что в 95 случаях из 100 первая версия кода проходит все тесты. Это уровень, достаточный для использования в IDE-ассистентах и средах автоматической генерации кода.
Последовательные вызовы API. Агент получает задачу «найди последние issues в репозитории, сгруппируй по автору и создай отчёт в Google Docs». Модель вызывает GitHub API для получения issues, обрабатывает ответ, группирует данные и вызывает Google Docs API для создания документа. Точность 95.5% на множественных вызовах подтверждает надёжность в таких цепочках.
Отказ от вызова при нерелевантном запросе. Пользователь пишет «привет, как дела?». Модель определяет, что инструменты не нужны, и отвечает текстом. 91.2% точности воздержания означает, что только в 8.8% случаев агент ошибочно попытается вызвать функцию. Это снижает расход токенов и предотвращает каскадные ошибки.
100-шаговый tool-gate - стресс-тест для agent-моделей. Агент выполняет 100 последовательных операций с инструментами, где каждый следующий вызов зависит от результата предыдущего. Полная версия BTL-3 проходит этот тест с определённой точностью, Compact-версия сохраняет 92.2% от неё. Для сравнения: многие модели после 10-15 шагов начинают повторять вызовы или теряют контекст задачи.
Запуск на своем железе: производительность и требования
BTL-3 Compact распространяется в формате GGUF - один файл, готовый к использованию с llama.cpp и совместимыми библиотеками. Загрузка через llama-cpp-python занимает три строки кода.
Производительность на RTX PRO 6000: 43 ток/с. Это комфортная скорость для интерактивной работы. Оценка для других GPU:
- RTX 4090 (24 ГБ): модель полностью помещается в VRAM, ожидаемая скорость 50-60 ток/с за счёт более высокой тактовой частоты и пропускной способности памяти
- RTX 3090 (24 ГБ): аналогично, 40-50 ток/с
- RTX 4070 (12 ГБ): модель помещается с запасом, 30-40 ток/с
- Apple M2 Ultra (76 ГБ unified): 15-20 ток/с через Metal
- CPU-only (64 ГБ DDR5): 5-8 ток/с, зависит от числа каналов памяти
Контекстное окно 262K токенов открывает возможности для работы с крупными кодовыми базами. В такой контекст помещается около 200 000 слов или примерно 600-800 страниц технической документации. Агент может держать в памяти историю длинных сессий, полные спецификации API и логи выполнения без необходимости внешней RAG-системы.
Модель запускается полностью локально. Никаких API-ключей, никаких облачных сервисов, никаких сетевых запросов. Код и данные остаются на вашем оборудовании. Это критично для enterprise-сценариев с NDA и чувствительной кодовой базой.
Пример кода: быстрый старт с BTL-3 Compact
Установка и первый запуск:
pip install llama-cpp-python
# Загрузка модели (укажите путь к GGUF-файлу)
wget https://huggingface.co/bad-theory-labs/BTL-3-Compact-GGUF/resolve/main/btl-3-compact-avq2.gguf
Базовый инференс с вызовом инструментов:
from llama_cpp import Llama
# Загрузка модели
llm = Llama(
model_path="./btl-3-compact-avq2.gguf",
n_ctx=262144, # полный контекст 262K
n_gpu_layers=-1, # все слои на GPU
verbose=False
)
# Определение инструмента
tools = [{
"type": "function",
"function": {
"name": "get_weather",
"description": "Получить текущую погоду для города",
"parameters": {
"type": "object",
"properties": {
"city": {"type": "string", "description": "Название города"}
},
"required": ["city"]
}
}
}]
# Запрос с вызовом функции
response = llm.create_chat_completion(
messages=[{"role": "user", "content": "Какая погода в Берлине?"}],
tools=tools,
tool_choice="auto"
)
# Обработка ответа
if response["choices"][0]["message"]["tool_calls"]:
tool_call = response["choices"][0]["message"]["tool_calls"][0]
print(f"Вызвана функция: {tool_call['function']['name']}")
print(f"Аргументы: {tool_call['function']['arguments']}")
else:
print(response["choices"][0]["message"]["content"])
Модель доступна на Hugging Face в репозитории Bad Theory Labs. Файл btl-3-compact-avq2.gguf - единственное, что нужно для запуска.
Сравнение с аналогами: почему 27B Compact лучше 8B в fp16
8B-модель в fp16 занимает около 16 ГБ. BTL-3 Compact с 27B параметров весит 8.39 ГБ - почти вдвое меньше. Сравнение не в пользу 8B по двум причинам: размер и потенциал качества.
Больше параметров - выше потолок способностей. 27B-модель даже после сжатия до 2.5 бит сохраняет более богатые внутренние представления, чем 8B в полной точности. Это проявляется в сложных задачах: многошаговое рассуждение, генерация нетривиального кода, обработка длинных инструкций с множеством условий. Эффект подтверждается на практике - в статье про Nanbeige 4.2-3B мы разбирали, как архитектурные ухищрения позволяют 3B-модели обходить 9B-аналоги, но прямой рост параметров остаётся самым надёжным способом поднять качество.
Сравнение с другими agent-моделями:
- Toolformer (Meta, 6.7B): оригинальная agent-модель, требует около 13 ГБ в fp16. BTL-3 Compact вдвое меньше по размеру и существенно превосходит по бенчмаркам
- Gorilla (Berkeley, 7B): специализируется на вызове API, около 14 ГБ. BTL-3 Compact показывает лучшую точность множественных вызовов и работает с более широким спектром инструментов
- Qwen3.5-9B: сильная модель общего назначения с agent-способностями. Занимает около 18 ГБ в fp16. BTL-3 Compact меньше, быстрее на том же железе и специализированно заточена под агентные сценарии
Отдельно стоит отметить тренд на сжатие больших моделей. В тесте 1-битного квантирования IQ1M модель Hy3-GGUF показала скорость 20 ток/с после сжатия до 89 ГБ. BTL-3 Compact идёт по тому же пути, но с более консервативным и точным подходом: 2.5 бита вместо 1 бита, плюс rank-32 коррекция. Результат - 92.2% точности вместо обвала качества, характерного для экстремального квантования.
Ограничения и когда BTL-3 Compact может не подойти
BTL-3 Compact - специализированный инструмент, и у него есть границы применимости. Честно обозначаем сценарии, где стоит выбрать другую модель.
Задачи, требующие высочайшей точности. 92.2% от полной версии - отличный результат для сжатой модели, но 7.8% потери могут быть критичны в сценариях формальной верификации кода, генерации криптографических алгоритмов или медицинских расчётов. Если цена ошибки высока, используйте полную версию BTL-3 или модель с меньшим уровнем сжатия.
Простая генерация текста. BTL-3 Compact оптимизирована для агентного кодинга и вызова инструментов. Для обычных диалогов, суммаризации или креативного письма существуют более лёгкие альтернативы, которые займут меньше памяти и дадут сравнимый результат. Модель не универсальна - её сила в структурированных задачах с чёткими схемами вывода.
Оборудование без GPU. На CPU модель работает, но скорость 5-8 ток/с делает интерактивное использование некомфортным. Для агентных сценариев, где каждый шаг требует нескольких вызовов модели, задержка накапливается быстро. Если GPU нет, рассмотрите меньшие agent-модели - например, 7B-8B варианты, которые на CPU дадут 15-20 ток/с.
Задачи вне домена инструментов. BTL-3 Compact тренирована на сценариях с явным вызовом функций и генерацией кода. Для задач вроде анализа тональности, извлечения сущностей или вопросно-ответных систем без инструментов её преимущества перед универсальными моделями сопоставимого размера не очевидны. Выбирайте модель под задачу, а не наоборот.
BTL-3 Compact задаёт новый стандарт для компактных agent-моделей: 27B параметров в 8.39 ГБ с сохранением 92.2% точности. Это практичный инструмент для разработчиков, которым нужен мощный локальный агент без multi-GPU-ферм и облачных биллингов. Модель уже доступна для скачивания и тестирования - приведённый выше код позволяет запустить её за пять минут.