Своя видеокарта или API: где генерация изображений дешевле


Сравнивать api stable diffusion со своей видеокартой нужно не по цене самой генерации, а по полной стоимости часа работы. У собственного сервера есть покупка GPU, электричество, охлаждение, обслуживание и часы, когда карта ничего не генерирует. У API большая часть этой математики заменяется ценой конкретного запуска.

Для расчёта возьмём два сценария: генерацию изображений на своём железе и оплату готовой операции через API. В последнем случае цена известна заранее: операция «Картинка по описанию (image)» стоит 9 ₽ за запуск, оплата идёт без абонентской платы и минимального платежа. Полный список доступных операций и цены можно посмотреть в разделе API.

Главная задача здесь не определить универсально более дешёвый вариант. Нужно найти собственную точку безразличия: сколько запусков в месяц должно пройти через GPU, чтобы затраты на оборудование и его эксплуатацию имели смысл по сравнению с оплатой каждого запуска.

Из чего складывается стоимость своей генерации

Цена видеокарты — только первая строка расчёта. Если GPU стоит 150 000 ₽ и используется три года, нельзя сравнивать 150 000 ₽ напрямую с ежемесячным счётом за API: стоимость железа нужно распределить по сроку эксплуатации.

Удобная модель выглядит так: ежемесячная стоимость оборудования плюс электричество плюс обслуживание плюс стоимость простоя. Затем эту сумму делим на фактическое количество генераций за месяц. Получается себестоимость одного запуска.

Статья Пример расчёта Сумма в месяц
GPU 150 000 ₽ / 36 месяцев 4 167 ₽
Остальная часть ПК 90 000 ₽ / 36 месяцев 2 500 ₽
Электричество 0,55 кВт × 8 ч × 30 дней × 7 ₽ 924 ₽
Обслуживание и резерв условно 1 000 ₽ 1 000 ₽
Итого до учёта простоя — 8 591 ₽

Цифры в таблице — пример модели, а не тариф или расчёт для конкретной видеокарты. Тариф на электричество, потребление системы, цена комплектующих и срок эксплуатации у каждого проекта будут своими. Но сама структура расчёта остаётся такой же.

Особенно важно учитывать всю систему, а не только GPU. Если для генерации требуется компьютер за 90 000 ₽, накопитель, память, блок питания и охлаждение, эти расходы тоже должны попасть в себестоимость. Иначе собственное железо будет выглядеть дешевле только потому, что часть расходов была вычеркнута из формулы.

Ещё один параметр — производительность. Допустим, конкретная конфигурация в среднем выполняет 20 запусков в час. При непрерывной работе за 8 часов это 160 запусков. Но реальная загрузка редко равна 100%: запросы приходят неравномерно, сервер может обновляться, очередь может быть пустой, а GPU может простаивать между задачами.

Точка окупаемости собственного сервера генерации
Точка окупаемости собственного сервера генерации

Простой железа: главная статья расходов, о которой забывают

Представим, что собственный компьютер обходится в 8 591 ₽ в месяц до отдельной оценки простоя. Если он действительно выполняет 5 000 генераций в месяц, базовая стоимость одного запуска составит около 1,72 ₽. На фоне API с ценой 9 ₽ за запуск собственный GPU в такой загрузке выглядит иначе, чем при 200 запусках.

Теперь уменьшим загрузку до 500 запусков в месяц. Те же 8 591 ₽ делятся уже на 500, и получается около 17,18 ₽ на генерацию. Железо физически не стало дороже, но стоимость каждой фактически использованной генерации выросла в десять раз.

Запусков в месяц Затраты 8 591 ₽/мес. Себестоимость запуска API по 9 ₽
200 8 591 ₽ 42,96 ₽ 1 800 ₽
500 8 591 ₽ 17,18 ₽ 4 500 ₽
1 000 8 591 ₽ 8,59 ₽ 9 000 ₽
2 000 8 591 ₽ 4,30 ₽ 18 000 ₽
5 000 8 591 ₽ 1,72 ₽ 45 000 ₽

В этой упрощённой модели точка пересечения находится примерно около 955 запусков в месяц. До неё API за 9 ₽ за запуск требует меньше прямых расходов, после неё фиксированные затраты собственного оборудования распределяются на большее число задач.

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

Читать  Как подготовить ролик перед обработкой: длина, формат и что вырезать

Есть и второй вариант простоя — технический. Если сервер приходится перезапускать, обновлять окружение, следить за диском, чистить кэш или разбираться с зависимостями, это уже не время GPU, а время разработчика или администратора. Его можно посчитать по той же формуле: часы обслуживания × стоимость часа специалиста.

Цена за запуск у шлюза: с чем сравнивать

Для API правильная единица сравнения — не «месяц доступа», а конкретная операция. В справке сервиса указана оплата за запуск без абонентской платы и без минимального платежа. Для изображения операция image стоит 9 ₽ за запуск, image-edit — 35 ₽, photo-video — 25 ₽, upscale — 50 ₽.

Операция Цена за запуск 10 запусков 100 запусков
Картинка по описанию (image) 9 ₽ 90 ₽ 900 ₽
Изменить фото по описанию (image-edit) 35 ₽ 350 ₽ 3 500 ₽
Оживить фото (photo-video) 25 ₽ 250 ₽ 2 500 ₽
Увеличить качество фото (upscale) 50 ₽ 500 ₽ 5 000 ₽
Видео по описанию (video) 119 ₽ 1 190 ₽ 11 900 ₽

Это важное отличие от собственного сервера: при 200 запусках image расходы по тарифу составят 1 800 ₽, при 2 000 — 18 000 ₽, при 10 000 — 90 000 ₽. В модели с собственным GPU ежемесячные фиксированные затраты остаются примерно на одном уровне, пока оборудование не требуется расширять.

Сам API вызывается обычным HTTP-запросом. Ключ передаётся в заголовке Authorization, а операции запускаются через POST /generate. Конкретные поля запроса для выбранной операции следует брать из списка операций, который возвращает GET /services.

curl -X GET "https://genius-bot.ru/wp-json/genius/v1/services" \
  -H "Authorization: Bearer YOUR_API_KEY"

Если ключ уже есть, сначала можно получить список доступных операций и их цен, затем построить собственный калькулятор стоимости. Ключ выдаётся в разделе API после входа и показывается один раз, поэтому его не стоит хранить непосредственно в публичном коде проекта.

Для интеграции через Python схема начинается с того же HTTP API. Например, получение баланса выглядит так:

import requests

API_KEY = "YOUR_API_KEY"
BASE_URL = "https://genius-bot.ru/wp-json/genius/v1"

response = requests.get(
    f"{BASE_URL}/balance",
    headers={"Authorization": f"Bearer {API_KEY}"},
    timeout=30,
)

response.raise_for_status()
print(response.json())

Для запуска конкретной операции приложение отправляет POST на /generate, а состояние созданной задачи можно затем проверять через GET /tasks/{id}. Если приложение не хочет постоянно опрашивать API, можно передать callback_url: после готовности задачи сервис отправит POST на указанный адрес.

Смешанная схема: своё железо и облачный шлюз
Смешанная схема: своё железо и облачный шлюз

Точка окупаемости в картинках в месяц

Для изображения с тарифом 9 ₽ формула точки пересечения проста. Если собственная система стоит F рублей в месяц с учётом амортизации, электричества и обслуживания, а API обходится в P рублей за запуск, то количество запусков N определяется как N = F / P.

Для приведённого примера F = 8 591 ₽, P = 9 ₽. Получаем 8 591 / 9 ≈ 955 запусков в месяц. При меньшей фактической нагрузке собственное оборудование не успевает распределить фиксированные расходы на достаточное количество генераций.

Но слово «окупается» здесь требует аккуратности. В реальном проекте нужно отдельно посчитать первоначальную покупку, срок использования, остаточную стоимость оборудования и возможную замену GPU. Если компьютер через три года можно продать, вся покупная цена не является безвозвратной потерей.

Другой расчёт нужен для аренды GPU. Если вместо покупки используется почасовая аренда, в формуле исчезает часть капитальных затрат, но появляется стоимость часа. Тогда сравнивать нужно не «аренда GPU для нейросети против API» вообще, а стоимость одной завершённой генерации с учётом загрузки GPU.

Например, если аренда условно стоит 100 ₽ в час, а выбранная конфигурация фактически выдаёт 20 нужных результатов за час, вычислительная часть составляет 5 ₽ на результат. Но если из-за очереди и подготовительных операций GPU загружен только половину времени, эффективная цена уже будет около 10 ₽. Это иллюстрация метода расчёта, а не тариф конкретного провайдера.

Для проекта с нестабильным спросом этот коэффициент загрузки часто важнее номинальной скорости GPU. Карта, которая способна генерировать много изображений подряд, не превращается автоматически в дешёвое решение, если большинство часов она простаивает.

Скачки нагрузки: где облако выигрывает всухую

Фиксированная видеокарта особенно неудобна, когда нагрузка приходит волнами. Допустим, в течение обычного месяца нужно 500 изображений, но два раза в месяц появляется задача на 2 000 генераций за короткий период. Покупка железа только под такие пики означает, что значительная часть его мощности будет простаивать в остальные дни.

API меняет структуру расходов: при отсутствии запусков нет платежа за сам факт наличия доступа. Если выполнить 500 операций image, стоимость по указанному тарифу составит 4 500 ₽. Если в другом месяце понадобится 2 500 запусков, сумма будет 22 500 ₽.

Читать  Перевести видео на другой язык: почему перевод не влезает в ролик

Здесь не нужно пытаться сравнивать месячные платежи напрямую с ценой видеокарты. Сначала стоит построить график нагрузки хотя бы за 3–6 месяцев: количество запусков по дням, максимальное количество задач в час и среднее количество задач в час. После этого становится видно, насколько реально загрузить собственный GPU.

У API есть и техническое ограничение, которое следует включить в расчёт архитектуры: не больше 60 запросов в минуту на один ключ. Это не следует трактовать как гарантированную скорость завершения генераций — речь именно об ограничении частоты запросов.

Если приложение генерирует задания пачками, имеет смысл учитывать очередь на своей стороне. Например, 600 HTTP-запросов нельзя просто отправить одним burst через один ключ: верхняя граница частоты составляет 60 запросов в минуту. Архитектура должна учитывать это ограничение независимо от того, насколько быстро создаются задачи.

Смешанная схема: своё железо плюс шлюз на пики

Не обязательно выбирать между вариантами «только GPU» и «только API». При устойчивой базовой нагрузке можно держать собственное оборудование, а редкие пики отдавать через API. В такой модели GPU отвечает за предсказуемый ежедневный поток, а переменная часть расходов появляется только тогда, когда собственная очередь становится слишком большой.

Математика здесь немного сложнее. Пусть собственная инфраструктура обходится в 6 000 ₽ в месяц, а её нормальная загрузка — 1 000 генераций. Ещё 800 задач в месяц приходятся на пики и отправляются через API по 9 ₽. Тогда переменная часть составляет 7 200 ₽, а общая модель — 13 200 ₽ за 1 800 результатов, или примерно 7,33 ₽ на результат до учёта других расходов.

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

Для подключения такой схемы достаточно разделить очередь на два маршрута. Например, задания с низким приоритетом остаются на локальном GPU, а задачи, для которых установлен предельный срок выполнения, отправляются через API. После завершения можно сохранять идентификатор задачи и получать результат через GET /tasks/{id} либо использовать callback_url.

При оценке собственного железа я бы отдельно записывал четыре показателя: рубли капитальных затрат в месяц, рубли электричества, часы обслуживания и фактические генерации. Затем добавлял пятый показатель — максимальную нагрузку в час. Среднее количество генераций отвечает на вопрос о себестоимости, а пиковое — на вопрос, хватит ли этой конфигурации вообще.

Для чистого API расчёт ещё проще: количество запусков умножается на цену конкретной операции. Для image это 9 ₽ за запуск, для image-edit — 35 ₽, для photo-video — 25 ₽, для upscale — 50 ₽. Поэтому перед сравнением с GPU нужно сначала определить, какую именно операцию выполняет ваш продукт, а не использовать абстрактную цену «генерации изображения».

Если вы рассматриваете api stable diffusion как способ убрать капитальные затраты, отдельно проверьте, какие операции нужны приложению и сколько запусков происходит в месяц. Справка сервиса описывает API как набор конкретных операций с отдельными ценами; в ней не стоит самостоятельно предполагать, какая внутренняя модель используется для конкретного маршрута.

Итоговый калькулятор можно свести к одной таблице. Для собственного железа: амортизация + электричество + обслуживание + доля стоимости простоя, всё разделить на фактические генерации. Для API: количество запусков × цена операции. Для смешанной схемы: фиксированная стоимость своего оборудования + API-запуски, ушедшие за пределы локальной мощности.

Частые вопросы

Когда покупка видеокарты начинает окупаться?

В упрощённой модели это происходит после точки N = F / P, где F — полная ежемесячная стоимость собственной инфраструктуры, а P — цена одного API-запуска. При 8 591 ₽ ежемесячных затрат и цене API 9 ₽ точка пересечения составляет около 955 запусков в месяц.

Нужно ли учитывать электричество при сравнении с API?

Да. Потребление GPU и всей системы переводится в кВт·ч, затем умножается на ваш тариф и фактические часы работы. Если сервер работает круглосуточно, а генерации идут только часть времени, электричество в часы простоя также относится к стоимости содержания сервера.

Читать  Озвучка видео через TTS API: как встроить в конвейер монтажа

Что выгоднее при 200 генерациях в месяц?

Для приведённой модели с расходами 8 591 ₽ в месяц собственная себестоимость составила бы около 42,96 ₽ за генерацию. При тарифе 9 ₽ за запуск 200 операций через API стоили бы 1 800 ₽. Это сравнение конкретного примера, а не универсальное правило: при другой цене GPU, сроке эксплуатации, тарифе электричества и производительности результат изменится.

Можно ли использовать API только во время пиков?

Да, архитектурно можно разделить поток задач между локальной обработкой и API. Для API доступны POST /generate, получение состояния через GET /tasks/{id} и необязательный callback_url для уведомления о готовности задачи.

Есть ли абонентская плата?

По указанным условиям оплата производится за запуск, без абонентской платы и без минимального платежа. При выпуске первого ключа на баланс начисляется 50 ₽ для пробного использования.

Где взять ключ и проверить операции?

Ключ выдаётся после входа в разделе API и показывается один раз. Список операций и цен можно получать через GET /services, а подробности подключения доступны в документации и разделе API.

API для разработчиковОзвучка, музыка, видео и картинки одним ключом. Пробный баланс при выпуске.
Получить ключ