Агенты на локальных моделях: практическое руководство
Ключевые тезисы:
- Локальные (on-prem) модели — это модели, развёрнутые на собственном железе, а не в облаке.
- Главные драйверы использования: конфиденциальность данных (за пределами контура), контроль над стоимостью и стабильностью.
- Качество локальных моделей для агентных задач сильно зависит от размера модели и железа.
- Создание агентов под локальные модели требует особого подхода, так как они работают хуже, чем большие облачные модели (например, GPT-4).
- Лучший способ начать — использовать готовые харнесы (OpenCD, Hermes) и экспериментировать.
Что такое локальные (on-prem) модели?
On-prem модели — это подход, при котором вы скачиваете языковую модель (например, с Hugging Face) и разворачиваете её на своём оборудовании: от видеокарты в компьютере до серверной стойки.
- Облачные вычисления: Запрос улетает в ЦОД провайдера (OpenAI, Anthropic и т.д.).
- Локальные вычисления: Запрос обрабатывается на вашем железе. Для этого нужны видеокарты с большим объёмом памяти (например, RTX 4090 24ГБ, RTX 5090 36ГБ).
Минимальные сетапы и стоимость
Железо определяет, какую модель и для скольких задач можно запустить.
- Слабые тачки (8 ГБ видеопамяти): Подходят модели до 7B параметров. Это уровень для хобби, простой классификации или транскрибации.
- Для агентов (16-24 ГБ видеопамяти): Нужны для более стабильной работы. Позволяют запускать модели 14B-34B.
- Серьёзные решения (48+ ГБ видеопамяти): Например, 4x RTX 4090 (48ГБ) или RTX 6000. Позволяют работать с моделями 70B+ (GPT OSS 120B, Qwen 123B) и решать десятки сценариев.
Примерная экономика:
- RTX 4090 (24ГБ) — от 300К до 470К руб.
- Сборка фермы на 48ГБ памяти — около 1 млн руб.
- Ключевой плюс локальных моделей: Предсказуемость стоимости. Развернув решение сегодня, вы знаете, что через 3 месяца оно будет работать с тем же качеством и по той же цене (электричество), в отличие от облачных API, где цены и модели могут меняться.
Лучшие модели для разных задач
- Для слабого железа (до 8ГБ): Модели 3B-7B, например, Qwen2.5 3B, Mistral 7B. Квантизация (Q4) помогает уместить их в память.
- Для кодинга: DeepSeek Coder, Codestral, Qwen Coder.
- Для русскоязычных агентных задач (фронтир): Qwen 3.5 32B / 72B и GPT OSS 120B. Qwen 3.5 14B морально устарел.
- Как облачная альтернатива: Claude 3.5 Sonet, GPT-4o.
- Для персональных агентов: Hermes Agent (на базе GPT OSS 120B или Qwen 72B).
Важно: Маленькие модели (до 7B) не подходят для агентов общего назначения. Их стоит использовать для конкретных детерминированных задач: классификация, простой поиск, генерация заголовков.
Особенности работы с локальными моделями
- Галлюцинации и рубиконы: У маленьких моделей есть предел возможностей (рубикон эмерджентности). Для сложных задач нужны модели от 30B+ параметров.
- Контекстное окно: У маленьких моделей часто формально большое окно (70К токенов), но они не могут его эффективно "переварить". Качество падает с ростом контекста.
- Квантизация: Сильно ухудшает качество именно для агентных задач. Для них лучше использовать нативные форматы (FP16) или легкую квантизацию (FP8).
- Подгрузка весов в RAM: Можно часть модели держать в оперативной памяти, а часть в VRAM. Это позволяет запускать огромные модели на относительно скромной видеокарте, но скорость падает в разы (до 10-30 токенов/секунду).
Инструменты и харнесы (Agent Frameworks)
- OpenCD / OpenCД:
Лучший выбор для старта. Стабильнее и проще для понимания, чем Cline/Cursor. Показал хорошие результаты с Qwen 32B. - Hermes Agent: Готовый харнес с кучей скиллов из коробки (веб-поиск, работа с файлами и т.д.). Легко подключается к Telegram. Основан на GPT OSS или Qwen.
- Cursor / Cline: Мощные IDE-агенты, но сложнее для локальной настройки. Cline перестал поддерживать чат-интерфейс.
- Свой харнес: Если понимаете принцип (запрос -> LLM -> вызов тула -> рефлексия), свой минимальный фреймворк на React-цикле можно собрать за 5-7 часов.
Практический пример: запуск агента на Qwen 32B
В ходе стрима был запущен OpenCD с моделью Qwen 3.5 32B через локальный хаб.
- Агенту дали задачу: исследовать локальный репозиторий и запустить веб-сервис.
- Результат: Агент смог найти проект, понять его структуру, установить зависимости и запустить веб-интерфейс, хотя и с некоторыми костылями (проблемы с маппингом портов).
- Скорость: Работал ощутимо медленнее облачных аналогов (в 4-6 раз), но в режиме реального времени.
- Вывод: Локальные модели уровня 32B+ уже способны выполнять нетривиальные инженерные задачи в связке с хорошим харнесом.
Какие задачи поручить локальным моделям?
- Маленькие модели (<7B): Классификация, простой query expansion для поиска, суммаризация, транскрибация.
- Модели 14B-32B: Автоматизация рутинных DevOps/инфраструктурных задач (поднять мониторинг, проверить логи), работа с документами, персональные ассистенты для календаря.
- Крупные модели (70B+): Сложные агентные workflow, исследование кода, решение недетерминированных задач, требующих рассуждений.
Чего делать не стоит (пока что)
- Мультиагентные системы (MAS): Где несколько агентов общаются между собой. Создают избыточную сложность (overhead). Лучше использовать сабагентов, вызываемых основным оркестратором.
- Полностью полагаться на агентов для продакшн-критичных задач без человеческого контроля (особенно в медицине, юриспруденции).
- Ожидать, что "простое развертывание" локальной модели даст результат. Требуется настройка, подбор харнеса и тестирование.
Выводы
- Локальные модели — это уже рабочая технология для конкретных бизнес-задач, особенно где важна безопасность данных и предсказуемость затрат.
- Ключ к успеху — правильный выбор связки "железо + модель + харнес". Для старта идеально подходит OpenCD + Qwen 32B на карте с 24ГБ+ памяти.
- Начинать нужно с экспериментов. Возьмите готовый харнес, подключите к локальной модели (можно через тестовые хабы, как hub.t66.tech) и пробуйте решать свои узкие задачи.
- Не гонитесь за сложностью. Часто выигрывает самое простое и быстрое решение. Сначала поймите принцип работы агента (Reason & Act), затем оптимизируйте.
Важно: Маленькие модели (до 7B) не подходят для агентов общего назначения. Их стоит использовать для конкретных детерминированных задач: классификация, простой поиск, генерация заголовков.