Зачем вообще локальные агенты, если есть GPT-5?
Потому что API-запросы к OpenAI - это как арендовать квартиру. Удобно, пока не захочешь повесить картину на стену. А локальная модель - это своя квартира. Ломай стены, строй перегородки, храни контекст в 120 тысяч токенов и не думай о лимитах.
Первый миф, который нужно развеять: локальные модели для агентов - это не "более дешёвая версия" GPT. Это принципиально другой подход к работе. Вы не просто экономте деньги - вы получаете контроль над каждым аспектом агента.
Железо: три 3090 и почему это важно
Моя конфигурация: 3x RTX 3090, 128GB RAM, Ryzen 9 5950X. Почему именно три карты? Потому что две - мало, четыре - перебор для большинства моделей, а три - золотая середина.
| Компонент | Минимальные требования | Рекомендуемые | Почему |
|---|---|---|---|
| VRAM | 48GB | 72GB+ | Квантование Q8 + контекст 120k сжирают память |
| Системная RAM | 64GB | 128GB+ | Для оффлоадинга слоёв и кэширования |
| PCIe lanes | x8 на карту | x16 на карту | Снижает латентность при обмене между GPU |
Если у вас одна 4090 на 24GB - забудьте о полноценном агентном кодировании. Да, вы запустите модель. Но контекст будет 8-16k, и ваш агент забудет, что делал пять минут назад.
Выбор модели: Kilo Code против Devstral-Small-2
Здесь всё просто: если вам нужен агент для работы с кодом - Kilo Code. Если нужен более универсальный агент для планирования и исполнения - Devstral-Small-2.
1 Скачивание и подготовка моделей
Не качайте модели через веб-интерфейс Hugging Face. Используйте CLI с резюме-файлами. Так вы гарантируете целостность и сможете возобновить загрузку.
Самая частая ошибка: скачать первую попавшуюся квантованную версию. Люди берут GGUF с квантованием Q4, потому что она "влезает" на их карту, а потом удивляются, почему агент генерирует бред.
2 Квантование Q8: роскошь или необходимость?
Q8 - это 8-битное квантование. Сохраняет 99.5% качества оригинальной модели при экономии 50% памяти против FP16. Для агентов это критически важно.
- Q4: для чата подойдёт, для агентов - нет. Потеря логики в длинных цепочках рассуждений
- Q6: компромисс, если VRAM не хватает. Но агент будет "спотыкаться" на сложных задачах
- Q8: золотой стандарт для локальных агентов. Качество почти как у FP16, память в два раза меньше
- FP16: если у вас 4x A100 - можно. Для смертных - слишком тяжело
3 Контекст 120k: зачем столько?
Потому что агент работает не с одним запросом, а с цепочкой. История чата, результаты поиска, выводы от суб-агентов, системные промпты - всё это нужно хранить в контексте.
Вот что занимает место:
- Системный промпт (2-5k токенов)
- История диалога с агентом (10-30k)
- Результаты поиска по документации (5-15k)
- Контекст кода проекта (20-50k)
- Промежуточные рассуждения агента (10-20k)
Сложите эти числа. 16k контекста хватит на полчаса работы, потом агент начнёт "забывать".
Настройка vLLM для распределённого инференса
Ollama и Text Generation WebUI хороши для чата. Для агентов нужен vLLM. Он умеет распределять слои модели по нескольким GPU и эффективно управлять памятью.
Ключевой параметр - tensor_parallel_size. Для трёх карт ставим 3. Если поставить 2, третья карта будет простаивать. Если поставить 1, модель не влезет в память одной карты.
Оптимизация памяти: PYTORCH_CUDA_ALLOC_CONF и не только
Даже с 72GB VRAM память может закончиться. Особенно если вы запускаете несколько агентов параллельно или работаете с очень большим контекстом.
Три настройки, которые спасут вас:
- max_split_size_mb: 512 - уменьшает фрагментацию памяти
- garbage_collection_threshold: 0.8 - более агрессивная сборка мусора
- expandable_segments: False - предотвращает "распухание" сегментов памяти
Если вы сталкивались с проблемой, когда Granite 4.0 сжирает всю память A100, эти настройки помогут и с Kilo Code.
Интеграция с агентными фреймворками
Локальная модель - это только движок. Сам агент нужно спроектировать и реализовать. Вот как выглядит пайплайн:
- Агент получает задачу (например, "напиши микросервис на FastAPI")
- Planner разбивает задачу на подзадачи
- Каждая подзадача выполняется с доступом к инструментам (поиск, файловая система, выполнение кода)
- Результаты собираются и анализируются
- Агент корректирует план и продолжает выполнение
Ваш локальный Kilo Code или Devstral-Small-2 - это только LLM в этом пайплайне. Весь остальной код - ваш или взят из фреймворков вроде LangGraph, AutoGen.
Бенчмаркинг: как понять, что всё работает
Не доверяйте синтетическим тестам вроде HumanEval. Они измеряют способность модели решать изолированные задачки, а не работать как агент.
Вот что нужно тестировать:
| Метрика | Целевое значение | Как измерить |
|---|---|---|
| Токенов в секунду | 30+ при генерации | vLLM метрики |
| Латентность первого токена | <500ms | Замерить время от запроса до первого токена |
| Потребление VRAM | 60-65GB из 72GB | nvidia-smi |
| Стабильность контекста | Без деградации на 100k+ | Тест на длинных диалогах |
Для автоматического бенчмаркинга можно настроить автономного агента для тестирования.
Типичные проблемы и решения
Ошибки, которые совершают 90% людей при настройке локальных агентов:
Проблема: Агент "забывает" инструкции из системного промпта после 20-30 сообщений.
Решение: Не храните системный промпт только в начале контекста. Периодически повторяйте ключевые инструкции в диалоге.
Проблема: Скорость генерации падает с ростом контекста.
Решение: Используйте attention sinks в vLLM. Они позволяют сохранить производительность даже с контекстом в 200k+ токенов.
Проблема: Модель работает нестабильно на разных картах.
Решение: Проверьте PCIe lanes. Если карты работают в x4 или x8 режиме вместо x16, производительность упадёт в 2-3 раза.
Что дальше? От локального агента к кластеру
Когда один сервер с тремя 3090 перестаёт хватать, пора думать о гибридном кластере. Prefill на eGPU, декодирование на Strix Halo, кэширование на отдельном сервере.
Но это уже следующий уровень. Для начала научитесь эффективно использовать то, что есть. Три 3090 с правильно настроенным Kilo Code Q8 и контекстом 120k - это мощнее, чем кажется.
Главное преимущество локальных агентов не в экономии денег на API. А в том, что вы контролируете каждый аспект системы. Можете изменить промпт, добавить инструменты, настроить логику планирования. В облаке вы арендуете чёрный ящик. У себя - строите систему.
Следующий шаг - подключить production-ready архитектуру с ReAct, Advanced RAG и инструментами. Но это уже другая история.