Запустить несколько ИИ-агентов на одной видеокарте можно, если движок инференса умеет обслуживать параллельные запросы без потерь. Свежий пример — OpenJet: на RTX 3090 с моделью Qwen3.8-27B Q4_K_M он выдаёт 4 агентам суммарно около 290 tok/s, тогда как llama-server --parallel 4 на той же карте даёт 18–20 tok/s на агента. Разница — не в модели, а в движке.
Почему несколько агентов на одной GPU упираются в скорость
Узкое место — не видеопамять и не модель, а то, как движок обслуживает параллельные запросы. Когда четыре агента одновременно генерируют текст, обычный сервер выстраивает их в очередь или переключается между ними с потерями на пересчёт состояния. В результате каждый агент получает 18–20 tok/s вместо ожидаемых десятков.
OpenJet решает это своим CUDA-движком: мегаядро (megakernel) обслуживает несколько диалогов на одном GPU одновременно. Это не «ускорение модели» и не квантование — меняется способ исполнения вычислений, а не веса.
Важно: цифры ниже — из замера автора проекта на одной RTX 3090, модель Qwen3.8-27B Q4_K_M. Другие карты и модели дадут другие значения, но соотношение показательно.
Что показывает сравнение: 4 агента, одна карта
При четырёх параллельных агентах OpenJet обгоняет llama-server --parallel 4 в 3–4 раза по скорости декодирования. Вот замеры на RTX 3090:
| Показатель | llama-server --parallel 4 | OpenJet --agents 4 |
|---|---|---|
| Декодирование, короткие промпты | 18–20 tok/s | 64–72 tok/s |
| Декодирование, контекст 23K у каждого | 15–16 tok/s | 52–55 tok/s |
| Первый токен следующего запроса на этих контекстах | 13,4 с | 0,2–0,5 с |
Суммарно при коротких промптах OpenJet отдаёт около 290 tok/s на четыре агента. Второй важный эффект — задержка первого токена: 13,4 секунды против 0,2–0,5 секунды. Для агента, который делает десятки коротких вызовов, это критичнее, чем пиковая скорость: ожидание в 13 секунд на каждый шаг превращает работу в пытку.
Кому это нужно и как начать
Это нужно тем, кто держит локальный кодинг-агент и хочет запускать несколько задач параллельно на одной карте — например, четыре сессии на разные ветки или фоновые агенты, пока вы работаете в пятой. Если у вас один диалог за раз, выигрыш от такого движка почти не проявится.
Стартовать стоит так:
- Проверьте, что модель и квантование совпадают с поддерживаемыми — в примере это Qwen3.8-27B Q4_K_M.
- Сравните на своей карте: запустите llama-server --parallel 4 и зафиксируйте tok/s на агента и время до первого токена.
- Запустите OpenJet с флагом --agents 4 и повторите тот же замер на тех же промптах и той же длине контекста.
- Смотрите не на суммарный tok/s, а на два числа: tok/s на агента при вашем рабочем контексте и задержку первого токена.
Если ваш сценарий — несколько параллельных агентов, сравнивать нужно именно при 23K контекста: на коротких промптах разрыв выглядит больше, на длинных — честнее.
Чем это отличается от обычного параллельного сервера
Обычный llama-server --parallel 4 уже умеет обслуживать несколько запросов, но платит за это скоростью на каждом. OpenJet меняет нижний слой: собственный CUDA-движок с мегаядром вместо стандартного пути инференса. Поэтому выигрыш идёт сразу по двум метрикам — пропускной способности и задержке первого токена.
Практический вывод: если вы выбираете, на чём поднимать локального агента, смотрите не только на модель и квантование, но и на движок. Одна и та же модель в разных инструментах ведёт себя по-разному — это отдельная тема, которую мы разбирали в материале почему одна и та же модель кодит по-разному в разных инструментах.
Что проверить перед тем, как переносить рабочий процесс
Первое — поддержка вашей модели и квантования: движок заточен под конкретную связку, в примере это Qwen3.8-27B Q4_K_M. Второе — память: четыре агента с контекстом 23K каждый требуют запаса VRAM, и считать его лучше до скачивания — методика в статье сколько VRAM нужно для локальной LLM. Третье — реальный сценарий: если агенты у вас работают в команде над одной задачей, важна не только скорость, но и то, как они делят контекст — об этом в разборе как заставить ИИ-агентов работать в команде.
Частые вопросы
Сколько агентов можно запустить на одной RTX 3090? В замере OpenJet — четыре параллельных агента на Qwen3.8-27B Q4_K_M с контекстом до 23K у каждого. Больше — вопрос запаса VRAM и допустимой задержки, универсального числа нет.
Почему llama-server --parallel 4 такой медленный? Он обслуживает запросы параллельно, но с потерями на переключение и пересчёт состояния: 18–20 tok/s на агента на коротких промптах и 15–16 tok/s при контексте 23K. Специализированный движок снимает это узкое место.
Что важнее — tok/s или время до первого токена? Для агентов важнее время до первого токена: 13,4 с против 0,2–0,5 с на каждый шаг складываются в минуты ожидания за десятки вызовов.
Больше разборов по ИИ и автоматизации — в канале: @il_chum