Ключевые моменты
- Веса модели занимают примерно 2 байта на параметр при 16-битном формате, 1 байт при 8-битном и 0,5 байта при 4-битном, плюс место для контекстного кэша.
- Арендный GPU оплачивается за каждый час работы, а API — только за токены, которые вы отправляете и получаете.
- При цене $0,15 за 1 млн входных токенов и $0,50 за 1 млн выходных токенов 20 000 чатов в день по 1 500 входных и 500 выходных токенов обходятся в $285 в месяц.
- Собственная инфраструктура выигрывает, когда вам нужна тонкая настройка, другая модель, автономная работа или стабильный, очень большой объём.
Короткий ответ: это зависит от вашего объема
Если вы спрашиваете, как запустить веса LLM самостоятельно, честный итог таков: запустить модель на своей машине легко, но запустить её дешево для других пользователей сложно. Для личного использования достаточно ноутбука или десктопного GPU. Сервису, который должен отвечать многим пользователям одновременно в любое время суток, требуется больше памяти, больше настройки и кто-то, кто будет поддерживать его работу.
Альтернатива — обращаться к размещенному эндпоинту, совместимому с OpenAI, и платить за каждый токен. Для небольших и средних рабочих нагрузок это почти всегда дешевле, потому что вы никогда не платите за время простоя GPU. Для очень больших и стабильных рабочих нагрузок или для задач, требующих вашей собственной дообученной модели, владение оборудованием начинает иметь смысл. Разделы ниже приводят цифры по обоим вариантам, чтобы вы могли найти свою точку безубыточности.
Здесь нет бесплатного тарифа. Вы можете активировать разовый пробный баланс $0,50 на странице API-ключа после входа в систему, а после этого пополнять предоплаченный баланс от $20. Пробного баланса достаточно, чтобы запустить реальный тест ваших промптов, прежде чем принимать какие-либо решения.
Что на самом деле требуется для хостинга модели
Языковая модель — это большой файл чисел, весов, которые должны находиться в быстрой памяти во время работы модели. Размер этого файла — первое ограничение, и вы можете вычислить его самостоятельно: количество параметров умножить на количество байт на параметр.
| Размер модели | 16-битные веса | 8-битные веса | 4-битные веса |
|---|---|---|---|
| 8B параметров | 16 ГБ | 8 ГБ | 4 ГБ |
| 32B параметров | 64 ГБ | 32 ГБ | 16 ГБ |
| 70B параметров | 140 ГБ | 70 ГБ | 35 ГБ |
Это только веса. Сверху вам нужна память для кэша ключ-значение, которая растет с длиной каждого активного диалога, и некоторый запас для среды выполнения. Модель, которая номинально помещается в 24 ГБ, может исчерпать память, как только вы запросите длинный контекст или подключите нескольких параллельных пользователей. Квантование до 4-битного формата уменьшает файл, но также немного меняет качество вывода, и эффект варьируется в зависимости от модели.
Затем идет программная часть. Вам нужен сервер инференса, такой как llama.cpp, Ollama или vLLM, HTTP-слой, чтобы ваши приложения могли обращаться к нему, способ перезапуска при сбоях и мониторинг, чтобы вы замечали сбои. Ничто из этого не сложно по отдельности. Все это занимает время, и время — часть стоимости.
Вариант один: запустить на своем компьютере
Самый дешевый способ начать — использовать машину, которая у вас уже есть. Такие инструменты, как Ollama и llama.cpp, загружают модель и предоставляют локальный сервер, и многие из них также предлагают эндпоинт в стиле OpenAI, поэтому код, который вы пишете для них, позже может указывать на размещенное API, изменив две настройки.
Локальный хостинг хорошо подходит, когда:
- вы один человек, экспериментируете, и несколько секунд на ответ приемлемы;
- данные никогда не должны покидать машину;
- вы хотите быстро попробовать много разных открытых моделей;
- у вас есть GPU с достаточной памятью, и он простаивает большую часть дня.
Это плохой вариант, когда нужно обслуживать других людей, когда модель, которую вы хотите, больше вашей памяти или когда вам нужны длинные контексты. Наше собственное сравнение локальных моделей без цензуры и размещенных API подробно рассматривает компромиссы, включая то, как меняется качество ответов между небольшими локальными моделями и большими размещенными.
Электричество — реальная, но небольшая статья расходов для одного пользователя. Большая стоимость — это оборудование, которое вам пришлось купить, за которое вы платите независимо от того, используете вы его или нет. Если вы уже владеете им, предельная стоимость низка, и локальный хостинг трудно превзойти для частных экспериментов.
Вариант два: арендовать сервер с GPU
Когда вашей собственной машины недостаточно, следующим шагом является арендованный GPU. Поставщики взимают плату за час работы машины с определенным объемом памяти GPU. Цены сильно различаются между поставщиками и часто меняются, поэтому проверяйте их текущие тарифы, а не доверяйте любым цифрам, которые вы читаете в статье, включая эту.
Важна форма счета. Арендованный сервер оплачивается за каждый час его включения, отвечает ли он на один запрос или ни на один. Если оставить его включенным на весь месяц, арифметика проста: в месяце около 730 часов (8 760 часов в году, деленных на 12). Предположим, чисто как пример, что подходящий сервер стоит $1 в час. Его круглосуточная работа стоит 730 × $1 = $730 в месяц до добавления хранилища, пропускной способности и вашего времени.
Вы можете выключить сервер, когда не используете его, но тогда вы платите задержками: загрузка большой модели в память занимает время, и первый пользователь после паузы ждет её. Настройки автоскейлинга уменьшают это, но добавляют свою сложность.
Точка безубыточности по сравнению с API следует из цены. Один миллион входных токенов плюс один миллион выходных токенов стоят $0,15 + $0,50 = $0,65 в этом API. Ваш предполагаемый сервер за $730 равен 730 ÷ 0,65 ≈ 1 123 таким парам, или примерно 1,1 миллиарда входных и 1,1 миллиарда выходных токенов в месяц. При объеме ниже этого API обходится дешевле. При объеме выше этого хорошо используемый сервер может выиграть, при условии, что он действительно справится с этим трафиком, что зависит от модели, GPU и того, насколько хорошо вы настроите сервер.
Вариант три: использовать размещенное API
Использование API избавляет от необходимости в оборудовании, сервере и простое. Вы отправляете запрос, получаете ответ и платите только за использованные токены. Тарификация здесь составляет $0,15 за 1 млн входных токенов и $0,50 за 1 млн выходных токенов, оплата по факту из предоплаченного баланса, без подписки. Баланс не сгорает, а неудачные или отклонённые запросы не оплачиваются.
Вот как это выглядит при трех реалистичных объемах. Предполагается, что типичный ход чата использует 1 500 входных токенов (системный промпт плюс история) и 500 выходных токенов.
- Один запрос: 1 500 входных токенов стоят 0,0015 × $0,15 = $0,000225, а 500 выходных токенов стоят 0,0005 × $0,50 = $0,00025. Вместе это $0,000475.
- 1 000 чатов в день, 30 дней: 1 000 × $0,000475 = $0,475 в день, или $14,25 в месяц.
- 20 000 чатов в день, 30 дней: 20 000 × $0,000475 = $9,50 в день, или $285 в месяц.
- Пакетная задача из 100 000 запросов с 2 000 входными и 400 выходными токенами в каждом: входные данные составляют 200 млн токенов, то есть 200 × $0,15 = $30; выходные — 40 млн токенов, то есть 40 × $0,50 = $20. Итого $50.
При средней цифре API стоит $285 в месяц, что значительно ниже предполагаемых $730 за круглосуточный сервер. При наибольшей цифре вам потребуется гораздо больше трафика, прежде чем арендованный сервер догонит. Ваши собственные промпты определяют реальные цифры, поэтому измерьте выборку, а не гадайте. Блок использования, который возвращается с каждым ответом, показывает точное количество токенов.
Пробный баланс в $0,50 покрывает около 1 052 запросов размером 1 500 входных и 500 выходных токенов (0,50 ÷ 0,000475 ≈ 1 052), что вполне достаточно для тестирования. После этого вы можете пополнить баланс на любую целую сумму от $20 до $500. Крупные пополнения сопровождаются бонусом: +5% от $50, +10% от $100 и +15% от $200, поэтому пополнение на $100 даёт $110 на балансе. Подробности на странице с ценами. Оплата картой (Visa, Mastercard, Apple Pay, Google Pay) или криптовалютой (USDT в сети TRC20, USDC в сети Base).
От чего вы отказываетесь, если не размещаете модель сами
API не лишено компромиссов, и лучше знать их до создания на его основе.
- Одна модель. Вы получаете одну модель с открытыми весами, адресуемую как
uncensored. Вы не можете заменить её на другую или загрузить свои веса. - Нет дообучения и только текст. Нет эндпоинта обучения, нет эмбеддингов, а также генерации изображений, аудио или видео.
- Ограничения. Полный ключ позволяет 8 параллельных запросов и 300 запросов в минуту. Пробный ключ позволяет 2 и 60. Это подходит для большинства приложений, но очень большой пакет требует очереди на вашей стороне.
- Контекст. Контекстное окно составляет 100 000 токенов для промпта плюс завершение.
- Ваши данные покидают вашу сеть. Промпты не используются для обучения, но они передаются третьей стороне. Если это неприемлемо для определенного набора данных, хостите локально.
Самостоятельный хостинг — лучший выбор, когда любое из этих является жестким требованием: дообучение на ваших данных, конкретная модель, которую не предлагает API, полностью автономная работа или стабильный объем, достаточный для того, чтобы оборудование было занято круглосуточно.
Попробуйте API перед покупкой оборудования
Тестовый час стоит меньше, чем один час аренды большинства серверов и показывает, насколько хорошо модель отвечает на ваши промпты. Эндпоинт совместим с OpenAI, поэтому если у вас уже есть код, который работает с локальным сервером, вам нужно изменить только базовый URL, API-ключ и ID модели. Этот скрипт также сообщает, сколько стоил каждый запрос, используя данные об использовании в ответе:
from openai import OpenAI
client = OpenAI(
base_url="https://api.uncensoredllmhub.com/v1",
api_key="YOUR_API_KEY",
)
resp = client.chat.completions.create(
model="uncensored",
messages=[{"role": "user", "content": "Summarise the pros and cons of self-hosting an LLM."}],
)
u = resp.usage
cost = u.prompt_tokens / 1_000_000 * 0.15 + u.completion_tokens / 1_000_000 * 0.50
print(resp.choices[0].message.content)
print(f"in={u.prompt_tokens} out={u.completion_tokens} cost=${cost:.6f}")
Запустите его на нескольких десятках ваших реальных промптов, сложите строки стоимости и умножьте на ожидаемый дневной объём. Это даст вам цифру, которую можно сравнить с ценой оборудования. Если вам нужны детали настройки, в документации перечислены поддерживаемые параметры, включая потоковую передачу, вызов функций и JSON-режим.
