SSD Nodes Learn 🎉 VPS від $5.50/міс
Посібники Matt ConnorВід Matt Connor · Оновлено 2026-08-13

GPU VPS чи API: коли оренда стає вигіднішою

Дізнайтеся формулу точки беззбитковості та місячний обсяг токенів, за якого GPU VPS за $0.50 на годину дешевший за оплату API за токени.

Де насправді знаходиться точка беззбитковості

GPU VPS стає вигіднішим за тарифікацію API за токен у момент, коли фіксована щомісячна орендна плата, поділена на фактичну кількість згенерованих вами за місяць вихідних токенів, стає нижчою за вартість таких самих токенів в API. Орендна плата не змінюється. Рахунок за API змінюється з кожним запитом. Тому відповідь завжди виражається в місячному обсязі, а не у простому «так» або «ні».

Розглянемо VPS із GPU середнього класу за $0.50 на годину, тобто $365 за місяць тривалістю 730 годин. Порівняно з API frontier-моделі точка беззбитковості настає на рівні 24.3 мільйона вихідних токенів на місяць. Порівняно з невеликою комерційною моделлю це 73 мільйона. Порівняно з розміщеною моделлю з відкритими вагами такого самого розміру ви ніколи не досягнете беззбитковості, оскільки одна карта не може згенерувати за місяць достатньо токенів, щоб досягти точки перетину.

Опубліковані дослідження точки беззбитковості не відповідають на це запитання. Два з них, опубліковані раніше у 2026 році, визначають точку перетину приблизно на рівні 72% постійного завантаження H200 і в діапазоні від 22% до 48% duty cycle для MI300X. В обох випадках порівняння проводиться з serverless-продуктом того самого постачальника, а вартість прискорювачів за годину вища, ніж більшість читачів цього матеріалу витрачає за місяць. Арифметика не змінюється. Нижче наведено повторний розрахунок для однієї карти, однієї open model у діапазоні від 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 це буде окремий рядок у рахунку. На власній картці попереднє заповнення контексту споживає час 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 (key-value cache, стан attention для кожного запиту, який 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 GPU за $0.50 на годину та відкрита модель 8B, яку обслуговує vLLM. Сукупна швидкість становить 400 вихідних токенів на секунду за 16 одночасних запитів. Орендна плата фіксована незалежно від того, використовуєте ви GPU чи ні. За такої швидкості за місяць можна обробити 1,051 мільйона вихідних токенів. Саме стільки виробляє GPU, якщо працює безперервно.

ChartMonthly cost by output volume: one GPU VPS at $0.50 per hour against metered APIs (USD)
The data behind this chart
[
  {
    "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 доларів, оскільки орендна плата не залежить від того, як ви використовуєте GPU. Кожна лінія API є прямою, що проходить через нуль. Кожна пара ліній перетинається рівно один раз.

За 25 мільйонів вихідних токенів на місяць рахунок за frontier API становить 375 доларів, тому різниця між двома варіантами не перевищує десяти доларів. За 50 мільйонів токенів рахунок за малу комерційну модель становить 250 доларів, і цей варіант усе ще дешевший. За 1000 мільйонів вихідних токенів, для чого GPU має бути зайнятий 95% місяця, рахунок за hosted API з відкритими вагами становить 200 доларів, тоді як орендна плата залишається такою самою. GPU програє майже вдвічі саме за обсягу, за якого працює найінтенсивніше.

Останній результат дивує багатьох, але він закономірний. Hosted endpoint із відкритими вагами працює на GPU-флоті з високою утилізацією, тому його ціна близька до вартості повністю завантаженого GPU. Неможливо перевершити за вартістю повністю завантажений флот, орендуючи один GPU і використовуючи його не на повну потужність. Натомість можна перевершити ціни frontier-моделей, які визначаються їхніми можливостями, а не часом роботи GPU.

Вартість мільйона вихідних токенів за кожного коефіцієнта завантаження

Обсяг і коефіцієнт завантаження — це один і той самий показник, розглянутий з двох боків. Оренда оплачує години. Години простою нічого не виробляють, але все одно коштують грошей.

ChartCost per million output tokens at each duty cycle (USD, list prices August 2026)
The data behind this chart
[
  {
    "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 містять типові опубліковані роздрібні ціни станом на August 2026: 0.20 доларів за мільйон вихідних токенів для розгорнутої моделі з відкритими вагами 8B, 5.00 доларів для невеликої комерційної моделі та 15.00 доларів для frontier-моделі. Це лише орієнтовні значення. Перед ухваленням рішення перевірте актуальну сторінку з цінами. Якщо ви порівнюєте витрати з фіксованим місячним планом, а не з оплатою за кількість токенів, розрахунок для підписки працює інакше, тому точка перетину знову зміщується.

За повного завантаження відеокарти мільйон вихідних токенів коштує 0.35 доларів, і це справді дешево. За коефіцієнта завантаження 10% той самий мільйон коштує 3.47 доларів. За коефіцієнта завантаження 2% він коштує 17.36 доларів, що зовсім не відповідає діапазону ціни 0.20 доларів, яку hosted open model стягує за такий самий результат.

За коефіцієнта завантаження нижче приблизно 10% оренда GPU є дорогим варіантом. Ви платите 3.47 доларів за мільйон токенів за результат, який продається за 0.20 доларів. Різниця купує вам приватність і рахунок, сума якого не змінюється. Вони можуть мати реальну цінність. Але це не цінова перевага, тому не вважайте її такою.

Місячний обсяг API для беззбитковості на кожному рівні

ChartBreak-even output volume per month, and the duty cycle it requires
The data behind this chart
[
  {
    "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% від продуктивності, яку може забезпечити карта. Це невисокий поріг. Невелика команда, яка протягом робочого дня використовує coding agents, його перевищить.

Порівняно з малим комерційним рівнем вам потрібно 73 мільйона токенів на місяць, або 6.9% завантаження. Для hosted open-weight рівня потрібне завантаження 174%. Значення понад 100% недосяжне за визначенням: карта мала б працювати більше годин, ніж містить місяць. Одна карта середнього класу за такої погодинної ставки не може виграти в цьому порівнянні. Тому змінити результат можна лише дешевшою картою, швидшою картою або причиною, не пов’язаною з ціною.

Що приховує формула

Формула враховує години роботи GPU і токени. Деякі реальні витрати до неї не входять.

Холодний запуск. Модель 8B із вагами у 16-бітному форматі займає приблизно 16 GB, а її завантаження з локального диска у VRAM триває десятки секунд. Якщо зупиняти інстанс між використаннями, щоб заощадити на оренді, цей час очікування виникатиме під час першого запиту щоразу. Якщо залишати інстанс увімкненим, щоб уникнути очікування, коефіцієнт використання різко зменшується, а вартість одного токена зростає. Саме цей компроміс є головною причиною існування serverless inference.

Сховище та завантаження. Ваги моделей займають багато місця. Модель 8B у 16-бітному форматі займає приблизно 16 GB, модель 30B, квантизована до 4 біт, — приблизно 18 GB, а модель 30B у 16-бітному форматі взагалі не вміщується на карті обсягом 24 GB. На верхньому рівні масштабування обмеження швидко стають очевидними: запуск open model із трильйоном параметрів, як-от Kimi K3, означає, що самі ваги перевищують обсяг будь-якої окремої карти, яку можна орендувати погодинно. За цей диск ви платите щомісяця, а під час кожного повторного розгортання витрачаєте час на завантаження. Запустіть du -sh ~/.cache/huggingface/hub після тижня експериментів. Він зростає швидше, ніж можна очікувати, тому що кожна квантизація, яку ви випробували хоча б один раз, усе ще зберігається на диску.

Ваш власний час. Версії драйверів і CUDA, помилки нестачі пам’яті під час використання довжини контексту, яка вчора працювала, оновлення моделі, що змінює chat template. Ніщо з цього не відображається у показнику вартості одного токена, але за все це ви платите своїми вечорами. Якщо ви раніше не підбирали конфігурацію такого інстансу, перед орендою на місяць варто прочитати, що насправді дає GPU VPS.

Різниця в якості. Це найбільша прихована витрата, яку найскладніше оцінити. Open model 8B — не frontier model. Якщо їй потрібно три спроби там, де frontier model достатньо однієї, її реальна ціна за корисну відповідь утричі вища за значення на графіку, а саме завдання все одно може завершитися невдало. Порівнюйте моделі на власних запитах, перш ніж порівнювати їх за ціною. Для agent workloads зазвичай використовують маршрутизацію за складністю та залишають дешеві локальні токени для масових операцій. Саме до цього переважно зводиться контроль витрат агентів на VPS.

Платежі, про які ви забули. Погодинний GPU instance, який ви зупинили, часто й далі списує кошти за підключене сховище та зарезервовану IP-адресу. Перевіряйте рахунок, а не сторінку з цінами.

Коли self-hosting вигідніший не лише за ціною

Чотири випадки, коли вирішальним фактором є не розрахунок вартості.

  • Дані, які не можуть залишати ваш контроль. Якщо вимоги комплаєнсу забороняють надсилати текст третій стороні, ціна за токен не є суттю питання.
  • Стабільно великий обсяг за розкладом. Завдання пакетної класифікації, яке щоночі виконується шість годин, за визначенням має 25% коефіцієнта використання і ніколи не створює несподіваного рахунку.
  • Обмеження швидкості. У вашої власної відеокарти є одна черга, і вона належить вам.
  • Модель, якої немає в жодному API. Якщо вам потрібна конкретна fine-tune-модель, порівнювати її немає з чим.

Якщо ви хочете спочатку протестувати дешевий варіант, запуск невеликої моделі на VPS за допомогою Ollama займе один день, а підбір розміру open model відповідно до відеокарти, яку ви орендували б покаже, який саме GPU вам потрібен. Спочатку виконайте вимірювання там, перш ніж орендувати GPU на місяць.

FAQ

За якого щомісячного обсягу токенів GPU VPS стає вигіднішим за API?

Розділіть щомісячну вартість GPU на ціну API за мільйон вихідних токенів. Картка з орендною платою $365 на місяць за frontier API за ціною 15.00 доларів за мільйон вихідних токенів окупається за обсягу 24.3 мільйона вихідних токенів на місяць. Для невеликої комерційної моделі за ціною 5.00 доларів цей показник становить 73 мільйона. Для hosted open-weight моделі за ціною 0.20 доларів одна картка середнього класу взагалі не може згенерувати протягом місяця достатньо токенів для окупності.

Чому hosted open-weight API коштує дешевше, ніж власний GPU?

Тому що його ціну встановлено близько до вартості повністю завантаженого 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%?

З погляду ціни — ні. За 10% duty cycle ви платите 3.47 доларів за мільйон вихідних токенів, а за 2% — 17.36 доларів. Обидва значення перевищують ціну всіх API з оплатою за використання в цьому порівнянні, крім frontier-рівня. Орендуйте GPU VPS за завантаження нижче цього порога лише тоді, коли ви платите за приватність або за модель, якої немає в жодному API.