Хук: момент, когда API стал болью

В марте 2026 мы посмотрели на счёт за Claude API — $4,200 за месяц — и поняли: наш код-агент сжигает больше токенов, чем мы зарабатываем.

Это было не абстрактное «API дорогой». Конкретика: наш pi.dev-агент за одну сессию генерирует ~200K токенов. 10 сессий в день — это 2 млн токенов. По API это ощутимые деньги каждый день, по локальному — электричество.

Мы не «решили собрать сервер из любопытства». Мы перестали быть заложниками чужого API: теперь наш код-агент работает в air-gapped среде, без лимитов провайдера и без зависимости от чужого uptime.

Почему не API

Сначала — цифры. Сколько стоил бы наш объём через API (blended-тарифы $0.14–0.50 за 1M токенов в зависимости от модели и провайдера):

Объём в месяцAPI (blended $0.14–0.50/1M)
100M токенов$14–50
500M токенов$70–250
1B токенов$140–500

На пиковых нагрузках агентов это не «оплата по факту» — это постоянная статья расходов, которая растёт вместе с продуктом.

Но деньги — не единственная причина. Для нас критичны три вещи:

  1. Приватность. Данные не уходят наружу. Для RU-рынка с чувствительным кодом и внутренними документами это не «nice to have», а требование.
  2. Автономность. Нет зависимости от доступности чужого API: rate limits, инциденты провайдера, региональные блокировки.
  3. Контроль. Мы видим каждый токен: где он сгенерирован, сколько стоит, почему запрос занял 8 секунд.

«API дорогой, локально дешевле» — скучная аргументация. Наша: мы перестали быть пользователями API и стали операторами инфраструктуры.

Железо: путь от 0 до 3×(2×RTX 3090)

Мы не начинали с 6 GPU. Мы начинали с ноутбука. Четыре фазы:

ФазаЖелезоМодельTok/sКонтекстAPI-эквивалент, $/1M
0RTX 2060 Mobile (ноутбук)Qwen3.5-7B Q4~1232K
11×RTX 3090 (б/у, ~$700)Qwen3.6-27B Q4~3564K~$0.5
22×RTX 3090 (TP=2)Qwen3.8-27B-AWQ-MTP~75256K~$0.3
33×(2×RTX 3090) = 6 GPUQwen3.8-27B-AWQ-MTP~75×3256K~$0.1

Фаза 0: ноутбук. RTX 2060 Mobile, Qwen3.5-7B через Ollama, 12 tok/s. Для чата — нормально. Для агента — нет: агент держит контекст, вызывает tools, генерирует кодом — 12 tok/s превращает 30-минутную задачу в полтора часа.

Фаза 1: первая 3090. Б/у RTX 3090 за ~$700. Qwen3.6-27B в Q4. 35 tok/s, контекст 64K. Для одиночного агента уже работало. Но 256K контекста — а агенту нужна полная история + код + tool calls — не влезало.

Фаза 2: вторая 3090, TP=2. Tensor parallelism по двум картам, Qwen3.8-27B-AWQ-MTP. 100 tok/s, контекст 256K влез. Проблема: один сервер — single point of failure. Crash vLLM на середине сессии = потерянный контекст и остановленный агент.

Фаза 3: третий узел. 3×(2×3090) = 6 GPU. Теперь мы можем параллельно гонять 3 агента + RAG-сервис + embedding-модель. И — это важно — потерять один узел перестало быть катастрофой.

Для каждой фазы мы замеряли три вещи: tok/s, максимальный контекст и степень параллельности. Цифры в таблице — не из документации, а из наших замеров на конкретном железе.

Что НЕ работает (честно)

RTX 3090 — это Ampere, не Ada и не Hopper. Честные ограничения:

  • Нет нативного FP8. Аппаратного FP8-инференса на 3090 нет — поэтому мы квантуем в AWQ (INT4), а не FP8.
  • NVLink-мосты в нашем конфиге не используются. TP=2 работает по PCIe 4.0 — для 27B модели этого достаточно, и мы это замерили (см. часть 3).
  • 24GB VRAM на GPU — потолок. Контекст 256K + веса 27B — это постоянный расчёт «что влезает, а что нет».

Мы не собирали H100-кластер. Мы собирали то, что было доступно и по карману. И этого хватило для 1 млрд токенов/сутки.

Что дальше

В части 2 — как мы выбрали Qwen3.8 из 12 протестированных моделей. И почему MTP-спекулятивное декодирование дало нам до ×2.7 скорости.


Мы прошли этот путь сами — и теперь делаем то же самое для компаний. Подбор железа и модели, настройка vLLM, балансировка, токономика: если у вас есть LLM-нагрузка и вопрос «сколько это стоит и как ускорить», обсудим ваш проект.

Как мы выбрали Qwen3.8-27B из 12 моделей: бенчмарки, MTP и почему 27B — sweet spot →