Как запустить несколько ИИ-агентов на одной видеокарте
Как запустить несколько ИИ-агентов на одной видеокарте

Как запустить несколько ИИ-агентов на одной видеокарте

Запустить несколько ИИ-агентов на одной видеокарте можно, если движок инференса умеет обслуживать параллельные запросы без потерь. Свежий пример — 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 секунд на каждый шаг превращает работу в пытку.

Кому это нужно и как начать

Это нужно тем, кто держит локальный кодинг-агент и хочет запускать несколько задач параллельно на одной карте — например, четыре сессии на разные ветки или фоновые агенты, пока вы работаете в пятой. Если у вас один диалог за раз, выигрыш от такого движка почти не проявится.

Стартовать стоит так:

  1. Проверьте, что модель и квантование совпадают с поддерживаемыми — в примере это Qwen3.8-27B Q4_K_M.
  2. Сравните на своей карте: запустите llama-server --parallel 4 и зафиксируйте tok/s на агента и время до первого токена.
  3. Запустите OpenJet с флагом --agents 4 и повторите тот же замер на тех же промптах и той же длине контекста.
  4. Смотрите не на суммарный tok/s, а на два числа: tok/s на агента при вашем рабочем контексте и задержку первого токена.

Если ваш сценарий — несколько параллельных агентов, сравнивать нужно именно при 23K контекста: на коротких промптах разрыв выглядит больше, на длинных — честнее.

Больше разборов по ИИ и автоматизации — в канале @il_chum

Чем это отличается от обычного параллельного сервера

Обычный 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