Сколько стоит миллион токенов, в обе стороны.
API берёт плату за токен и ничего — пока вы простаиваете. Машина берёт плату за месяц и ничего — за токен. Что дешевле, решает одно деление, и ответ зависит куда больше от того, насколько загружена машина, чем от цены того или другого.
Коротко
- Точка окупаемости — это объём
- Это не цена. $692 в месяц даёт столько токенов, сколько машина реально способна произвести — вопрос в том, наберётся ли у вас столько работы.
- В сравнении с топовым API
- Один небатчированный поток на нашем самом дешёвом узле уже стоит $6.42 за миллион. Это меньше $15.00, которые берёт топовая закрытая модель, — ещё до всякого батчинга.
- В сравнении с теми же открытыми весами
- Вам нужно примерно 7.1× от пропускной способности одного потока, чтобы обойти $0.90 за миллион. Именно для этого нужен непрерывный батчинг, и это обычное дело.
- Где API продолжает выигрывать
- Скачкообразный трафик, низкий объём и любая модель, веса которой никто вам не продаст.
Коротко
Почти любое сравнение этих двух вариантов, которое вам встретится, сводится к одному числу — «самостоятельный хостинг дешевле в десять раз», «API дешевле, пока вы не станете огромными» — и обе формулировки совершают одну и ту же ошибку: называют цену за токен для машины, с которой не берут плату за токен. У арендованного GPU ровно одна цена, и она не меняется: сгенерируете вы за месяц миллиард токенов или ни одного — счёт будет одинаковым. Поэтому честный вопрос — не «сколько стоит токен здесь», а «сколько токенов нужно сгенерировать, чтобы фиксированная цена обогнала счётчик».
Это число — результат деления, и оно посчитано ниже на наших собственных ценах и нашей модели пропускной способности — той же самой, что использует конфигуратор. Всё, что дальше, — о двух вещах, которые определяют, удастся ли выйти на этот объём: батчинг и часы, когда машина простаивает.
Арифметика
Четыре строки. Третью стоит написать на доске; четвёртую обычно пропускают, и именно этот пропуск превращает разумную оценку в ошибочную.
# 1. What the API charges. Linear in what you use, zero when you stop.
api_cost_per_month = output_tokens_per_month / 1e6 × api_price_per_million
# 2. What the machine charges. A constant. Tokens are free once you own the hours.
machine_cost_per_month = monthly_price
# 3. Set them equal. This is the break-even VOLUME, in output tokens per month.
break_even_tokens = monthly_price / api_price_per_million × 1e6
# 4. And the only question that matters: can the machine produce that many?
# 730 hours is the month we bill, so 2,628,000 seconds of it.
sustained_tokens_per_second = break_even_tokens / 2,628,000
Строка 4 — это устойчивая скорость, а не пиковая. Машина, которая выдаёт 600 токенов в секунду один час в сутки, а остальные двадцать три часа простаивает, имеет устойчивую скорость 25, и инвойсу всё равно, о какой из двух скоростей вы говорите.
Сколько стоит один поток
Начнём с худшего случая — это единственная величина, которую можно указать без допущений: один запрос за раз, без батчинга, машина всё остальное время простаивает. Каждый узел ниже работает с Llama 3.3 70B при 4-bit (AWQ, GPTQ), и пропускная способность — наша собственная консервативная оценка — та, что упирается в пропускную способность памяти, а не измерена в удачный день.
| Узел | Как это запускает модель | В месяц | Один поток | Стоимость за миллион |
|---|---|---|---|---|
| 2 × NVIDIA RTX 5090 | Разделено между всеми 2 картами | $692 | 41 tok/s | $6.42 |
| 2 × NVIDIA RTX 4090 | Разделено между всеми 2 картами | $416 | 23 tok/s | $6.88 |
| 4 × NVIDIA RTX 5090 | Разделено между всеми 4 картами | $1,345 | 68 tok/s | $7.53 |
| 4 × NVIDIA RTX 4090 | Разделено между всеми 4 картами | $814 | 38 tok/s | $8.15 |
| 2 × NVIDIA A100 PCIe | Разделено между всеми 2 картами | $802 | 36 tok/s | $8.48 |
| 8 × NVIDIA RTX 5090 | Разделено между всеми 8 картами | $2,584 | 100 tok/s | $9.83 |
Воспринимайте это как потолок, а не как расценку. Это то, сколько стоит токен, если заставить машину отвечать на один вопрос за раз, а всё остальное время месяца оставить её простаивать — наименее эффективный из всех возможных способов владеть GPU. Любой реальный стек инференса справляется лучше, и следующие два раздела — как раз о том, насколько лучше.
Точка окупаемости по уровням
Возьмите самую дешёвую строку выше — 2 × NVIDIA RTX 5090 за $692 в месяц — и спросите, сколько работы ей нужно выполнить, чтобы обойти каждый ценовой уровень рынка API.
| Сколько вы заплатили бы вместо этого | За 1M вывода | Объём безубыточности | Устойчивая скорость | По сравнению с одним потоком |
|---|---|---|---|---|
| Топовая проприетарная модель | $15.00 | 46M | 18 tok/s | Уже дешевле |
| Проприетарная модель среднего уровня | $4.00 | 173M | 66 tok/s | 1.6× |
| 70B с открытыми весами, специализированный провайдер Одни и те же веса | $0.90 | 769M | 293 tok/s | 7.1× |
| 70B с открытыми весами, самый дешёвый serverless Одни и те же веса | $0.40 | 1,730M | 658 tok/s | 16.1× |
Последний столбец — это вся суть статьи. Там, где написано «уже дешевле», один небатчированный поток на машине $692 обходит API, и думать не о чем. Там, где указан коэффициент, машина всё ещё может выиграть — но только если вы действительно её загрузите, а об этом — следующий раздел.
Батчинг — это вся игра
Генерация одного токена требует однократного чтения активных весов из памяти. Генерация ста токенов для ста разных запросов требует того же самого однократного чтения — одни и те же веса обслуживают все запросы в батче. Именно поэтому стек с непрерывным батчингом даёт токенов в секунду в разы больше, чем один поток на том же оборудовании, и именно поэтому соотношение в последнем столбце этой таблицы вообще достижимо.
Что даёт батчинг
Совокупная пропускная способность резко растёт с параллелизмом, пока узким местом остаются веса, а затем выходит на плато, когда KV-кэш заполняет карту и ограничением становится сама арифметика.
- Многократное превышение одного потока — это обычное дело, а не оптимистичный прогноз
- Это не стоит вам ничего, кроме памяти, которую занимают дополнительные кэши
- vLLM делает это по умолчанию — её не настраивают, а кормят
Во что это вам обходится
Пропускная способность растёт с параллелизмом нелинейно, а задержка на запрос увеличивается по мере роста батча. Шестьдесят четыре потока не дают в шестьдесят четыре раза больше токенов.
- Каждый поток получает токены медленнее, чем получал бы в одиночку
- KV-кэш заканчивается первым — рассчитывайте его размер осознанно
- Простаивающий батч-слот не генерирует ничего: параллелизм, которого у вас нет, не стоит ничего
Практическое следствие: воспринимайте коэффициент в таблице точки окупаемости как целевую пропускную способность, а не как число пользователей. Цель «в десять раз больше одного потока» не означает «десять пользователей»; она означает, что сервер должен в среднем выдавать в десять раз больше своей небатчированной скорости, а для этого обычно нужно заметно больше десяти одновременных запросов и заметно меньше сотни. Измерьте это на своей машине, прежде чем закладываться на конкретное число — это один бенчмарк, и он закрывает вопрос.
Часы простоя, за которые вы всё равно платите
Всё сказанное выше предполагало, что нагрузка распределена по месяцу равномерно. На деле это не так. За машину, арендованную помесячно, вы платите и в воскресенье в 04:00, а токены, которые вы не сгенерировали в этот момент, на будущее не переносятся. Разделите неделю, которую вы реально обслуживаете, на неделю, за которую реально платите:
| Когда приходит нагрузка | Часов в неделю | Нужная пиковая скорость | Эффективная стоимость за миллион |
|---|---|---|---|
| Continuously, 24/7 | 168 h | Устойчивая скорость | $6.42 |
| Двенадцать часов в сутки | 84 h | 2.0× | $12.84 |
| Рабочие часы, будни | 40 h | 4.2× | $26.97 |
| Два часа в сутки | 14 h | 12.0× | $77.07 |
Третья строка — это то, где живёт большинство внутренних инструментов, и она незаметно увеличивает точку окупаемости больше чем в четыре раза. Это самая частая причина, по которой оценка self-hosting оказывается неверной — не цена токена, не оборудование, а предположение, что рабочая неделя — это целая неделя.
Почему ваш промпт почти ничего не стоит
Есть одна асимметрия, которая сильно играет в пользу владения машиной, и никакое сравнение цены за токен её не показывает. API берёт плату за входные токены — обычно от четверти до трети цены выходного токена. На собственном GPU входные токены обрабатываются на этапе префилла, который параллельно обрабатывает весь промпт и упирается в производительность вычислений, а не в пропускную способность памяти. Префилл работает на порядок быстрее по токенам в секунду, чем генерация.
Что не учитывает арифметика
Четыре вещи, которые никогда не попадают в таблицу цены за токен, но решают вопрос не реже, чем цифры.
Каждый запрос куда-то уходит. API видит ваши промпты, а промпты — это ваш продукт, документы ваших клиентов или ваш код. На арендованной вами машине веса и трафик остаются на самой машине — а мы вообще не спрашивали, кто вы. Это не строчка в смете, но для некоторых задач это решает всё.
Модели устаревают и снимаются с поддержки; ваша — нет. Размещённая у провайдера модель может измениться, получить новую версию с другим поведением или быть выведена из эксплуатации по графику, который вам не подконтролен. Веса на вашем собственном NVMe будут вести себя так же и через год, а это очень важно, если вы проводили оценку именно на них.
Фиксированная цена — это число другого рода. Тарификация по счётчику означает, что баг, цикл повторов или всплеск трафика превращается в счёт, о котором вы узнаёте постфактум. Помесячный срок не может вас удивить: худший случай — что машина медленная, а не что она дорогая.
Кто-то должен это администрировать. Честная цена самостоятельного хостинга включает полдня на настройку и изредка вечер, когда подводит драйвер или контейнер. Наша документация нужна для того, чтобы это были полдня, а не неделя, но это не ноль — и притворяться иначе значит лишать подобные сравнения доверия.
На чьей вы стороне
По порядку — остановитесь на первом пункте, который подходит вам.
- Вам нужно качество топовой закрытой модели. Тогда эта статья не про вас: эти веса вам никто не сдаст в аренду. Используйте API и вернитесь к вопросу, когда открытая модель сократит разрыв на вашей конкретной задаче.
- Ваш объём мал, или вы пока его не знаете. Используйте API. Это самый дешёвый способ выяснить, как на самом деле выглядит ваш трафик, а счётчик — вполне подходящий измерительный прибор.
- Ваш трафик неравномерен и допускает очередь. Используйте API либо разделите нагрузку: собственная машина для стабильной базовой нагрузки, размещённый у провайдера эндпоинт для пиков. Ничто не заставляет выбирать только один вариант.
- Вы поддерживаете реальный, батчированный объём запросов к модели с открытыми весами. Это тот случай, когда выигрывает железо, причём выигрывает с большим отрывом — фиксированная цена перестаёт расти, пока счётчик продолжает тикать. Прежде чем поверить в это, проверьте своё собственное число в таблице выше.
- Промпты чувствительны, модель не должна меняться, или счёт должен быть известен заранее. Тогда арифметика — формальность. Арендуйте машину, вмещающую вашу модель, и оплатите её, не сообщая никому, кто вы.
На какой бы строке вы ни остановились, число, которое нужно проверить, — это то, что стоит в таблице точки окупаемости для вашей модели и вашего объёма. Конфигуратор показывает для каждого узла, который мы сдаём в аренду, помещается ли ваша модель на одну карту, нужно ли её разделять и какова оценка пропускной способности — это все данные, которые нужны этой арифметике. Если вы всё ещё выбираете между помесячной арендой и почасовой тарификацией, это другая точка окупаемости, и она тоже разобрана.
Посчитайте свою точку окупаемости на реальной машине.
Конфигуратор даёт оценку пропускной способности и ежемесячную цену для каждого узла в каталоге — это те два числа, которые делит это руководство.
Другие руководства
- Практика · 11 мин
Llama 3.3 70B на одном узле
От доставленной машины до OpenAI-совместимого эндпоинта: флаги, которые действительно важны, и два флага, которые незаметно вдвое снижают пропускную способность.
Читать руководство - Практика · 10 мин
Файнтюнинг модели 70B на одной карте
QLoRA на одной GPU с 48 GB: что помещается, сколько это стоит в месяц и почему полный файнтюнинг — машина совсем другого уровня.
Читать руководство - Оплата · 8 мин
Оплата сервера криптовалютой
Что на самом деле происходит между нажатием «оплатить» и получением root, какую монету выбрать и четыре ошибки, которые теряют деньги при первом платеже.
Читать руководство