AI-агенты для длинных задач: как запускать команду разработчиков на 5GB VRAM с late-cli
Я — Денис Шохирев, Agentic AI Systems Architect из Фрайбурга. В DennisCraft AI Studio я вывожу автономные multi-agent системы в прод для DACH-клиентов. Мой стек: Claude, Supabase, n8n, Doppler, self-hosted Postgres. Недавно на проекте для индустриального заказчика столкнулся с жёстким ограничением: нужен был production-grade AI pipeline, а GPU — только 5GB VRAM. В демо это не проблема, но в проде — реальный technical debt. Проблема длинных задач на ограниченном железе Большинство примеров мул
Я — Денис Шохирев, Agentic AI Systems Architect из Фрайбурга. В DennisCraft AI Studio я вывожу автономные multi-agent системы в прод для DACH-клиентов. Мой стек: Claude, Supabase, n8n, Doppler, self-hosted Postgres. Недавно на проекте для индустриального заказчика столкнулся с жёстким ограничением: нужен был production-grade AI pipeline, а GPU — только 5GB VRAM. В демо это не проблема, но в проде — реальный technical debt.
Проблема длинных задач на ограниченном железе
Большинство примеров мультиагентных систем демонстрируются на мощных облачных GPU или вообще без ограничений по VRAM. На деле у европейских B2B-клиентов часто только mid-tier NVIDIA (например, T400, T1000, V100) — 4-5GB VRAM на агентную команду. Если задача длится >30 минут (проектирование, рефакторинг, CI/CD), стандартные подходы не работают: начинаются out-of-memory, деградация скорости, падения процессов.
Падение производительности и "залипание" агентов
В проде замечал типичные сбои: агенты "зависают" на тяжелых задачах, не возвращая статус; процессы n8n уходят в deadlock; Claude или LLM-подобные генераторы отваливаются на больших объёмах текста. В реальности даже "маленький" кодоген по Python на 2000 строк может выбить пайплайн.
Рынок решений — и почему late-cli оказался рабочим
Большинство решений — это либо дорогие managed LLM API с лимитами по количеству токенов (Anthropic, OpenAI), либо self-host на больших GPU. Но с 5GB VRAM реально работает только несколько инструментов: late-cli (https://github.com/late-labs/late), quantized модели, и жесткая оптимизация пайплайна.
Архитектура: как собрать команду AI-агентов на 5GB VRAM
Реальный стек:
- Claude Code через API (только для генерации и ревью кода, не держу модель локально)
- late-cli для orchestration и управления задачами
- Supabase/Postgres — persistent storage (контекст, задания, артефакты)
- n8n — автоматизация пайплайнов (триггеры, CI/CD, уведомления)
- Doppler — секреты и переменные окружения
late-cli: распределение памяти и управление задачами
late-cli — это open-source CLI-обёртка для запуска LLM-агентов с низким footprint на RAM/VRAM. Его основное преимущество — динамическое выделение VRAM под конкретный агент/таск, с контролем очередности и автоматическим сбросом памяти после завершения.
# Пример запуска 3 агентов с ограничением VRAM
late agent run --model=phi-2 --max-vram=4800 --tasks=tasks.yaml
# tasks.yaml:
# - name: "review_code"
# input: "src/app.py"
# - name: "write_tests"
# input: "src/app.py"
# - name: "refactor"
# input: "src/utils.py"
Распараллеливание по очереди, а не по потокам
Секрет — не пытаться держать всех агентов одновременно в памяти. Я делю длинные задачи на батчи (chunk size 256-512 токенов), для каждой задачи агент стартует и выгружается, освобождая VRAM. Очередь организую через Supabase, а n8n следит за состоянием пайплайна и уведомляет если агент отвалился.
Pipeline: как это работает в реальном проде
Пошагово:
- Задачи (issue) кладутся в Supabase: контекст, код, требования.
- n8n триггерит запуск агента через late-cli, выделяя max 4.8GB VRAM.
- Агент обрабатывает батч, результат пишет обратно в Supabase.
- n8n проверяет статус, триггерит следующий батч/агента.
- Claude Code API используется для ревью и подсказок по критическим изменениям.
- После завершения — CI/CD пайплайн, деплой и аудит (semgrep, bandit).
import requests
def trigger_agent(task_id, input_path):
response = requests.post(
"http://localhost:8000/run",
json={
"task_id": task_id,
"input": open(input_path).read(),
"max_vram": 4800
}
)
return response.json()
Сравнение: как ведут себя popular LLM frameworks
| Фреймворк | Минимум VRAM | Динамический сброс памяти | Управление батчами |
|---|---|---|---|
| late-cli | 4GB | Да | Да |
| LangChain | 8GB+ | Нет | Ограниченно |
| OpenLLM | 10GB+ | Нет | Частично |
Безопасность: как не пропустить уязвимости в автоматическом коде
В 2024 Stanford CodeML paper (https://arxiv.org/abs/2402.00957) показано, что 38% LLM-сгенерированного Python содержат CWE-89 паттерны. Я ловил SQL-инъекции и XSS на трёх последних релизах именно в автоматическом коде, даже после ревью через Claude.
- semgrep — для статического анализа Python/TypeScript
- bandit — для проверки Python-скриптов на уязвимости
- gitleaks — для поиска секретов в репозитории
semgrep --config=auto src/
bandit -r src/
gitleaks detect --source=./repo
FAQ
Можно ли запускать более сложные модели на 5GB VRAM?
Сильно зависит от quantization. Например, phi-2 (INT4) едет нормально, Llama-3 — нет, даже в quantized виде.
Как хранить длинный контекст между агентами?
Supabase или Postgres — храню chunk'и в отдельной таблице, ID задачи — ключ.
В чём разница между late-cli и LangChain для low-resource?
late-cli реально экономит память, LangChain требует больше VRAM из-за internal state.
Как дебажить, если агент завис?
Сигналы через n8n + логирование в Supabase. Если не ответил за 10 минут — авто-kill и рестарт.
Какой минимальный стек для такой архитектуры?
late-cli, Supabase/Postgres, n8n. Claude Code API — для ревью, не обязательно.
В каких production-проектах у вас чаще всего "залипают" агенты: на разметке данных, генерации кода или CI/CD? Интересно узнать ваши кейсы. Я делаю бесплатный аудит AI-стека для DACH-команд в B2B. Пишите в LinkedIn или @ger_dennis_ai.
Превратить процесс в систему, которая работает
Продакшн-качество, а не демо.