Обновить

Соло-инференс-провайдер в ЕС: как я снизил цену на 11 центов и получил 146 миллионов токенов за сутки.

Дисклеймер: я оператор LLM Tech, инференс-провайдера из одного человека и одной GPU. Пост про технику и экономику, не реклама. Цифры можно проверить на публичной странице статуса, ссылка в конце.

Сетап

Одна RTX PRO 6000 Blackwell 96GB в аренде в финском датацентре, edge-VPS в Германии, между ними nginx и самописный шим на aiohttp, примерно 700 строк. Модель — Qwen3.8-27B в NVFP4: это аппаратный формат Blackwell, по качеству близко к fp8, по стоимости обслуживания примерно вдвое дешевле. Контекст 262К.

Кубернетеса нет, автоскейлинга нет, команды тоже нет. Каждый запрос пишется в JSONL-журнал со снапшотом цены на момент запроса, так что любой инвойс восстанавливается построчно даже спустя месяц.

Как устроен рынок, если ты маленький

Заявки в большие агрегаторы лежат в очередях неделями. Зато есть площадки, где провайдера подключают за день. На одной из них мою модель обслуживали несколько провайдеров, а роутер площадки выбирал исполнителя по взвешенной цене.

Механика такая: запросы с включённым промпт-кешированием роутятся только на кеш-способных провайдеров, по сумме базовых цен вход+выход. Провайдеры на llama.cpp с Q4_0 в этой лиге не играют, мультитенантный префикс-кеш там не работает.

Ход на 11 центов

Я снизил цену выходных токенов с $2.20 до $2.09 за миллион — на 11 центов ниже ближайшего кеш-неспособного конкурента по сумме. Через час роутер площадки перечитал мой /v1/models (цены они читают живьём) и весь кеш-тяжёлый трафик модели поехал ко мне.

Следующие сутки: 2 087 запросов, 146 миллионов токенов, из них 129М отданы из кеша. В пике — 8 миллионов токенов за 5 минут и больше сотни конкурентных стримов. Карта в моменте делала 40М токенов в час.

Экономика кеша

До меня неделю доходило, что кеш работает не как скидка, а как ров. При 91% кеш-хитов из 145М входных токенов реально прожёвано около 16М, остальное — чтение готовых KV-блоков из VRAM по $0.04 за миллион. Взвешенная цена входа вышла $0.06–0.08/М, дешевле авто-пула площадки, хотя базовая цена у меня выше, чем у части конкурентов.

То есть тот, у кого прогрет кеш клиента, может быть одновременно дешевле для клиента и прибыльнее для себя. А конкурент без кеша, который догоняет тебя ценой, дотирует каждый токен на полной себестоимости префилла. Мне понадобилась неделя, чтобы перестать думать о кеше как о строчке в прайсе.

Технические грабли, о которых нигде не написано

Кеш на гибридной архитектуре. У Qwen3.8 смешанное внимание (full attention + GDN-слои), и vLLM кеширует их иначе, чем чистые трансформеры: блоки по 1 584 токена, потому что страница внимания выравнивается по mamba-странице. Материализация ленивая: первый запрос кеш не создаёт, второй создаёт, читает только третий. Промпты короче ~5К токенов в кеш не попадают вовсе. Я сначала решил «кеш сломан», потому что тестировал двумя одинаковыми запросами. Тестируйте тремя.

Поля reasoning. В нестриминговых ответах vLLM кладёт рассуждения в поле reasoning, в стриминговых дельтах — в reasoning_content. Я потерял день, читая не то поле, и успел записать чекпоинт в «инстракт-онли».

NVFP4-квант сохранил vision-башню. Модель всюду числится текстовой, но OpenAI-шный image_url просто работает: картинка 768×512 плюс 40 токенов ответа занимает 1.2 секунды, а в usage прилетает multimodal_tokens. Узнал случайно, когда полез смотреть карточку модели у крупного агрегатора.

Таймауты складываются в гильотину. Генерация 32К токенов на 50 ток/с занимает 640+ секунд. Проверьте всю цепочку: у меня aiohttp с ClientTimeout(total=600) молча убил легитимный стрим и записал его в журнал как 200. nginx при этом невиновен, его proxy_read_timeout считает паузу между байтами, а не общее время.

429 вместо очереди. Лимиты конкурентности на канал, при превышении — мгновенный 429 с Retry-After. Тихая очередь портит TTFT всем сразу, быстрый отказ даёт клиенту среагировать. Единственный настоящий 502 за ~6000 запросов оказался гонкой с протухшим keep-alive и лечится одним

Теги:
+4
Комментарии2

Публикации