GPU VPS или API: расчет точки безубыточности
Узнайте, при каком объеме токенов аренда GPU VPS становится выгоднее оплаты API. Мы приводим формулу расчета и точные цифры для моделей разных классов, чтобы вы оптимизировали затраты.
Где на самом деле находится точка безубыточности
GPU VPS выгоднее оплаты API за каждый токен в одном случае: когда фиксированная ежемесячная арендная плата, деленная на количество сгенерированных за месяц токенов, становится меньше стоимости аналогичного объема токенов при использовании API. Арендная плата не меняется. Счет за API растет с каждым запросом. Поэтому ответ всегда зависит от ежемесячного объема, а не от простого «да» или «нет».
Рассчитаем это для GPU VPS среднего уровня стоимостью $0.50 в час, что составляет $365 за месяц из 730 часов. При сравнении с API передовых моделей точка безубыточности достигается на уровне 24.3 миллионов выходных токенов в месяц. При сравнении с небольшой коммерческой моделью этот показатель составляет 73 миллионов. При сравнении с хостингом моделей с открытыми весами того же размера точка безубыточности не достигается никогда, так как одна карта не способна сгенерировать достаточное количество токенов в месяц, чтобы выйти на уровень окупаемости.
Опубликованные исследования безубыточности не дают ответа на этот вопрос. В одном из анализов поставщика от июля 2026 года точка пересечения находится на уровне 50% загрузки выделенного H100 по цене $2.00 в час при сравнении с serverless-инференсом. Подобные исследования сравнивают выделенную карту уровня дата-центра с serverless-продуктом, при этом оценивая ускорители по ставке, в несколько раз превышающей используемую здесь почасовую оплату. Арифметика остается прежней. Ниже приведен перерасчет для одной карты, одной открытой модели в диапазоне от 7B до 30B параметров и стандартной тарификации API.
Каждое число ниже является входным параметром, а не результатом. Замените их на свои собственные значения.
Формула для подстановки ваших собственных значений
cost_per_million = (hourly_rate * 1000000) / (tokens_per_second * 3600 * duty_cycle)
breakeven_millions_per_month = (hourly_rate * hours_per_month) / api_price_per_million
capacity_millions_per_month = (tokens_per_second * 3600 * hours_per_month) / 1000000
required_duty_cycle = breakeven_millions_per_month / capacity_millions_per_monthЧетыре входных параметра, каждое из которых можно измерить или найти.
hourly_rate— стоимость GPU VPS в час, включая время простоя. Если вы платите помесячно, разделите эту сумму на 730.tokens_per_second— совокупная скорость генерации, которую сервер поддерживает при вашей реальной нагрузке. Это не пиковое значение для одного потока из маркетинговых таблиц поставщика.duty_cycle— доля времени в месяц, в течение которой GPU занят генерацией токенов. Если вы арендуете сервер на месяц и используете его по два часа в день, этот показатель составит 8.3%.api_price_per_million— цена за выходные токены у провайдера, с которым вы сравниваете стоимость.
В примере учитываются выходные токены с обеих сторон, так как именно они составляют основную часть счета при работе чат-ботов и агентов. Если ваши промпты длинные, добавьте стоимость входных токенов к обеим сторонам. В случае с API это будет отдельная строка в счете. При использовании собственного сервера предварительное заполнение (prefill) потребляет ресурсы GPU, поэтому оно уже отражено в снижении итогового показателя tokens_per_second.
Как измерить количество токенов в секунду перед тем, как доверять расчетам
Все вышесказанное опирается на одно измеренное число. Ошибка в три раза в этом показателе приведет к ошибке в три раза в итоговом ответе. Измеряйте его на той видеокарте, которую вы арендуете, используя именно ту модель и квантование, которые планируете запускать.
Ollama позволяет получить показатель для одного потока одной командой:
ollama run qwen3:8b --verbose "Write 400 words about disk latency."--verbose выводит блок с таймингами после завершения ответа. Важная строка — eval rate, она показывает количество токенов в секунду, учитывая только генерацию. prompt eval rate — это скорость префилла (prefill), которая обычно значительно выше. Ваши показатели будут отличаться от этих:
eval count: 412 token(s)
eval duration: 9.612s
eval rate: 42.86 tokens/sОдиночный поток — неверный показатель для модели стоимости, так как он измеряет один запрос за раз на карте, способной обслуживать множество запросов одновременно. Чтобы получить совокупный показатель, запустите модель через vLLM и посмотрите пропускную способность, которую сервер сообщает о себе сам:
pip install vllm
vllm serve Qwen/Qwen3-8B --max-model-len 8192Пока запросы находятся в обработке, сервер выводит строку состояния через каждый интервал отчетности. Точные поля меняются от релиза к релизу vLLM, поэтому ориентируйтесь на свои данные, а не на мои:
Avg prompt throughput: 812.4 tokens/s, Avg generation throughput: 396.1 tokens/s, Running: 16 reqs, Waiting: 0 reqs, GPU KV cache usage: 21.7%Avg generation throughput — это число, которое требуется для формулы. Оно растет по мере добавления параллельных запросов, пока не заполнится KV cache (key-value cache, состояние внимания для каждого запроса, которое vLLM хранит в VRAM), после чего рост прекращается. Если увеличить нагрузку еще сильнее, запросы встанут в очередь вместо ускорения, что будет видно по растущему счетчику Waiting. В состав vLLM также входит генератор нагрузки vllm bench serve. Его флаги меняются в разных версиях, поэтому запускайте vllm bench serve --help для той версии, которую вы установили, вместо копирования команды из блога.
Наблюдайте за картой во время теста:
nvidia-smi --query-gpu=utilization.gpu,memory.used,power.draw --format=csv -l 5Если utilization.gpu держится около 100% во время генерации, значит, вы ограничены пропускной способностью, и измеренное число является реальным пределом. Если показатель остается низким, ограничение кроется в другом: слишком мало параллельных запросов, медленный клиент или модель, которая не помещается в VRAM и частично выгружается в системную RAM. Ollama и vLLM делают здесь принципиально разные компромиссы, и разрыв между ними на одной и той же карте достаточно велик, чтобы изменить точку окупаемости в несколько раз.
Как выглядит счет за месяц
Рассмотрим пример: GPU VPS с 24 GB видеопамяти за $0.50 в час, на котором запущена модель 8B через vLLM. Суммарная производительность составляет 400 выходных токенов в секунду при 16 одновременных запросах. Арендная плата фиксирована независимо от использования карты. При такой нагрузке пропускная способность составляет 1,051 миллиона выходных токенов в месяц — это объем, который карта выдает при непрерывной работе.
Данные, на которых построен график
[
{
"output_tokens_millions": 5,
"gpu_vps_usd": 365,
"open_api_usd": 1,
"small_api_usd": 25,
"frontier_api_usd": 75
},
{
"output_tokens_millions": 10,
"gpu_vps_usd": 365,
"open_api_usd": 2,
"small_api_usd": 50,
"frontier_api_usd": 150
},
{
"output_tokens_millions": 25,
"gpu_vps_usd": 365,
"open_api_usd": 5,
"small_api_usd": 125,
"frontier_api_usd": 375
},
{
"output_tokens_millions": 50,
"gpu_vps_usd": 365,
"open_api_usd": 10,
"small_api_usd": 250,
"frontier_api_usd": 750
},
{
"output_tokens_millions": 100,
"gpu_vps_usd": 365,
"open_api_usd": 20,
"small_api_usd": 500,
"frontier_api_usd": 1500
},
{
"output_tokens_millions": 250,
"gpu_vps_usd": 365,
"open_api_usd": 50,
"small_api_usd": 1250,
"frontier_api_usd": 3750
},
{
"output_tokens_millions": 500,
"gpu_vps_usd": 365,
"open_api_usd": 100,
"small_api_usd": 2500,
"frontier_api_usd": 7500
},
{
"output_tokens_millions": 1000,
"gpu_vps_usd": 365,
"open_api_usd": 200,
"small_api_usd": 5000,
"frontier_api_usd": 15000
}
]График стоимости GPU представляет собой горизонтальную линию на уровне 365 долларов, так как арендная плата не зависит от нагрузки. Линии стоимости API проходят через ноль. Каждая пара графиков пересекается ровно один раз.
При объеме 25 миллионов выходных токенов в месяц использование frontier API обходится в 375 долларов, поэтому разница между вариантами составляет менее десяти долларов. При 50 миллионах токенов небольшая коммерческая модель стоит 250 долларов и остается более выгодным вариантом. При 1000 миллионах выходных токенов, для чего карта должна быть загружена на 95% времени, стоимость использования хостинга с открытыми весами составляет 200 долларов при той же арендной плате. В этом случае аренда карты проигрывает почти в два раза при максимальной загрузке.
Последний результат часто удивляет, но это не случайность. Хостинг для моделей с открытыми весами — это парк GPU, работающий с высокой утилизацией, поэтому его цена близка к стоимости работы одной полностью загруженной карты. Невозможно превзойти по цене парк с высокой утилизацией, арендуя одну карту и используя её не на полную мощность. Что действительно можно превзойти, так это ценообразование frontier-моделей, которое определяется их возможностями, а не временем работы оборудования.
Стоимость миллиона выходных токенов при различных циклах нагрузки
Объем и цикл нагрузки — это две стороны одного и того же факта. Аренда оплачивается по часам. Часы простоя не приносят результата, но всё равно стоят денег.
Данные, на которых построен график
[
{
"label": "100% duty",
"self_host_usd_per_million": "0.35",
"open_api_usd_per_million": "0.20",
"small_api_usd_per_million": "5.00",
"frontier_api_usd_per_million": "15.00"
},
{
"label": "50% duty",
"self_host_usd_per_million": "0.69",
"open_api_usd_per_million": "0.20",
"small_api_usd_per_million": "5.00",
"frontier_api_usd_per_million": "15.00"
},
{
"label": "25% duty",
"self_host_usd_per_million": "1.39",
"open_api_usd_per_million": "0.20",
"small_api_usd_per_million": "5.00",
"frontier_api_usd_per_million": "15.00"
},
{
"label": "10% duty",
"self_host_usd_per_million": "3.47",
"open_api_usd_per_million": "0.20",
"small_api_usd_per_million": "5.00",
"frontier_api_usd_per_million": "15.00"
},
{
"label": "5% duty",
"self_host_usd_per_million": "6.94",
"open_api_usd_per_million": "0.20",
"small_api_usd_per_million": "5.00",
"frontier_api_usd_per_million": "15.00"
},
{
"label": "2% duty",
"self_host_usd_per_million": "17.36",
"open_api_usd_per_million": "0.20",
"small_api_usd_per_million": "5.00",
"frontier_api_usd_per_million": "15.00"
}
]Три столбца API содержат типичные опубликованные цены по состоянию на август 2026 года: 0.20 долларов за миллион выходных токенов для размещаемой модели с открытыми весами (8B), 5.00 долларов для небольшой коммерческой модели и 15.00 долларов для передовой модели. Эти данные приведены для примера. Перед принятием решения проверьте актуальную страницу с ценами. Если вы сравниваете стоимость с фиксированным ежемесячным тарифом, а не с оплатой за токены, расчет подписки будет иным, и точка окупаемости сместится.
При работе видеокарты на полной загрузке стоимость миллиона выходных токенов составляет 0.35 долларов, что действительно дешево. При 10% цикле нагрузки тот же миллион стоит 3.47 долларов. При 2% цикле нагрузки стоимость составляет 17.36 долларов, что значительно выше 0.20 долларов, которые взимают за аналогичный объем вывода при использовании размещаемой модели с открытыми весами.
По сравнению с размещаемой моделью с открытыми весами, аренда GPU является более дорогим вариантом при любом цикле нагрузки, представленном в таблице. При 10% вы платите 3.47 долларов за миллион токенов, в то время как рыночная цена составляет 0.20 долларов. Разница в цене — это плата за конфиденциальность и фиксированный счет, который не меняется. Это может стоить реальных денег, но не является выигрышем в цене, поэтому не стоит рассматривать это как экономию. В сравнении с коммерческими тарифами ситуация меняется: при 10% цикле нагрузки использование собственной видеокарты оказывается выгоднее цен как на небольшие коммерческие, так и на передовые модели. Она остается дешевле передового уровня до тех пор, пока цикл нагрузки не упадет примерно до 2.3%.
Объем безубыточности для каждого уровня API
Данные, на которых построен график
[
{
"label": "Hosted open 8B API",
"breakeven_tokens_millions": 1825,
"required_duty_pct": 174
},
{
"label": "Small commercial model",
"breakeven_tokens_millions": 73,
"required_duty_pct": 6.9
},
{
"label": "Frontier model",
"breakeven_tokens_millions": 24.3,
"required_duty_pct": 2.3
}
]Для уровня frontier вам требуется 24.3 миллионов выходных токенов в месяц, что составляет всего 2.3% от производительности карты. Это низкий порог. Небольшая команда, использующая агентов для написания кода в течение рабочего дня, легко его преодолевает.
Для уровня small commercial вам требуется 73 миллионов токенов в месяц, или 6.9% рабочего цикла. Для уровня hosted open-weight требуемый рабочий цикл составляет 174%. Любое значение выше 100% по определению недостижимо: карте пришлось бы работать больше часов, чем содержит месяц. Одна карта среднего уровня при такой почасовой ставке не может выиграть в этом сравнении, поэтому изменить результат можно только с помощью более дешевой карты, более быстрой карты или причин, не связанных с ценой.
Что скрывает формула
Формула учитывает стоимость часов работы GPU и токенов. Однако существует ряд реальных затрат, которые остаются за рамками расчетов.
Холодный старт. Модель 8B с 16-битными весами занимает около 16 GB, и её загрузка с локального диска в VRAM занимает десятки секунд. Если останавливать инстанс между сеансами для экономии, вы будете платить временем ожидания при каждом первом запросе. Если оставить его запущенным, чтобы избежать задержек, коэффициент использования оборудования снизится, что увеличит стоимость одного токена. Этот компромисс — основная причина существования serverless-инференса.
Хранилище и загрузка. Веса моделей имеют большой объем. Модель 8B в 16-битном представлении занимает около 16 GB, модель 30B с квантованием до 4 бит — около 18 GB, а модель 30B в 16-битном представлении вообще не поместится на карту с 24 GB памяти. Ограничения становятся заметны очень быстро, особенно когда запуск открытой модели с триллионом параметров, такой как Kimi K3, означает, что одни только веса превышают объем памяти любой карты, доступной для аренды по часам. Вы платите за этот диск каждый месяц и тратите время при каждой пересборке. Запускайте du -sh ~/.cache/huggingface/hub после недели экспериментов. Объем данных растет быстрее, чем кажется, так как каждая версия модели, которую вы пробовали, всё еще занимает место.
Ваше личное время. Версии драйверов и CUDA, ошибки нехватки памяти (out-of-memory) при длине контекста, которая работала вчера, обновление модели, меняющее шаблон чата. Ничего из этого не отражено в показателе стоимости за токен, но всё это оплачивается вашими вечерами. Если вы ранее не подбирали конфигурацию таких серверов, стоит прочитать что на самом деле представляет собой GPU VPS, прежде чем оформлять аренду на месяц.
Разрыв в качестве. Это самая большая скрытая стоимость, которую труднее всего оценить. Открытая модель 8B не является передовой (frontier model). Если ей требуется три попытки там, где передовой модели достаточно одной, её реальная цена за полезный ответ в три раза выше табличной, и она всё равно может не справиться с задачей. Сравнивайте модели на своих промптах, прежде чем сравнивать их по цене. Для агентских рабочих нагрузок обычно применяют маршрутизацию по сложности: дешевые локальные токены используются для массовых задач, что по сути и является основой контроля расходов на агентов при работе на VPS.
Забытые счета. За остановленный почасовой GPU-инстанс часто продолжают списывать плату за подключенное хранилище и зарезервированный IP-адрес. Читайте счета, а не страницу с ценами.
Когда self-hosting выигрывает не за счет цены
Четыре случая, когда экономическая выгода не является решающим фактором.
- Данные, которые не должны покидать ваш контур. Если правила комплаенса запрещают передачу текста третьим лицам, стоимость токена перестает быть главным вопросом.
- Стабильно высокая нагрузка по расписанию. Пакетная задача классификации, которая выполняется шесть часов каждую ночь, имеет коэффициент использования 25% по определению и никогда не приводит к неожиданным счетам.
- Ограничения частоты запросов (rate limits). Ваша собственная видеокарта имеет одну очередь, и она принадлежит только вам.
- Модель, которую не предлагает ни один API. Если вам нужна специфическая дообученная модель, сравнивать ее просто не с чем.
Если вы хотите сначала протестировать бюджетный вариант, запуск небольшой модели на VPS с помощью Ollama займет один вечер, а оценка требований открытой модели к видеокарте покажет, какой GPU вам действительно нужен. Проведите замеры перед тем, как оплачивать аренду GPU на месяц.
FAQ
При каком ежемесячном объеме токенов GPU VPS выгоднее использования API?
Разделите ежемесячную стоимость аренды GPU на цену API за миллион выходных токенов. При стоимости аренды карты 365 долларов в месяц и цене передового API в 15.00 долларов за миллион, точка безубыточности составит 24.3 миллионов выходных токенов в месяц. В сравнении с небольшой коммерческой моделью по цене 5.00 долларов, этот показатель составит 73 миллионов. При сравнении с хостингом моделей с открытыми весами по цене 0.20 долларов, одна карта среднего уровня не сможет сгенерировать достаточно токенов в месяц, чтобы окупиться.
Почему хостинг API с открытыми весами стоит дешевле, чем собственный GPU?
Потому что цена API близка к стоимости эксплуатации полностью загруженного GPU, а ваша карта не загружена полностью. Провайдер, обслуживающий тысячи одновременных запросов, поддерживает высокую загрузку своего парка оборудования, поэтому может продавать токены по цене, близкой к предельным издержкам. Ваша карта простаивает большую часть дня, и вы платите за часы простоя. При 10% загрузке (duty cycle) ваша стоимость составляет 3.47 долларов за миллион выходных токенов против их 0.20 долларов.
Нужно ли учитывать входные токены наравне с выходными?
Учитывайте их, если ваши промпты имеют большую длину. Данное сравнение использует только выходные токены, так как они являются основным фактором затрат при работе чат-ботов и агентов. Добавление входных токенов меняет обе стороны уравнения. В случае с API это отдельная строка в счете с более низкой ценой. На вашей собственной карте этап prefill потребляет время GPU, поэтому эти затраты уже включены в совокупный показатель токенов в секунду, который вы измерили. Проводите измерения с реальной длиной ваших промптов, чтобы обе стороны оставались сопоставимыми.
Как измерить количество токенов в секунду, необходимое для формулы?
Запустите модель в том режиме, в котором планируете её использовать, затем считайте совокупную скорость генерации при реальной нагрузке. При использовании Ollama команда ollama run <model> --verbose выводит eval rate в токенах в секунду, но это значение для одного потока, которое не учитывает работу сервера в пакетном режиме. В vLLM работающий сервер записывает в логи Avg generation throughput во время обработки запросов — именно это значение и следует использовать. Одновременно с этим следите за nvidia-smi. Если загрузка GPU во время генерации не приближается к 100%, значит, вы еще не достигли предела производительности.
Стоит ли арендовать GPU VPS при загрузке ниже 10%?
Это зависит от того, за какой API вы бы платили в противном случае. При 10% загрузке вы платите 3.47 долларов за миллион выходных токенов, что ниже стоимости как небольших коммерческих, так и передовых моделей, но значительно выше стоимости хостинга моделей с открытыми весами. При 2% загрузке вы платите 17.36 долларов, что дороже любого API из данного сравнения, включая передовой уровень. Исходя только из цены, карта перестает быть выгодной при загрузке ниже 6.9% по сравнению с небольшими коммерческими моделями и ниже 2.3% по сравнению с передовыми, и она никогда не выигрывает у хостинга моделей с открытыми весами. Арендуйте оборудование при таких показателях только в том случае, если вы платите за конфиденциальность или за модель, которую не предлагает ни один API.