English translation is not available yet. Showing Russian content.
Рассчитать TCO для self‑hosted vs API
ТЕХНИЧЕСКОЕ ЗАДАНИЕ: Рассчитать TCO для self‑hosted vs API
1. Цель задачи
Научиться системно сравнивать совокупную стоимость владения (TCO) для двух стратегий развертывания LLM: использование коммерческого API (например, OpenAI, Anthropic) и самостоятельное размещение модели (self‑hosted) на собственных GPU‑серверах или облачных инстансах. Вы должны построить финансовую модель, учитывающую затраты на GPU, электричество, инженерную поддержку, и определить порог, при котором self‑hosted становится дешевле API.
Ключевой результат Файл Excel/Google Sheets или Python‑ноутбук с расчётом TCO за 12 месяцев для 3–4 сценариев нагрузки, включая точку безубыточности (break‑even volume) и график crossover.
2. Исходные данные
| Что нужно | Откуда взять |
|---|---|
| Стоимость API (input+output) за 1M токенов | Официальные страницы цен OpenAI, Anthropic, Google (или архивные цены) |
| Характеристики GPU (A100‑80G, H100, L40S) | Облачные прайс‑листы (AWS, GCP, Azure, Lambda Labs) |
| Потребление электроэнергии GPU+сервер | Спецификации NVIDIA (TDP) + оценка 10–20% на охлаждение |
| Среднемесячная нагрузка (токены в месяц) | Гипотеза: 50M, 200M, 1B токенов; можно взять из логов существующей системы |
| Стоимость 1 кВт·ч | Средняя по региону (например, $0.10‑0.15 для EU/US) |
| Зарплата MLOps/SRE инженеров (FTE) | Glassdoor / Levels.fyi / собственная оценка (например, $150k‑200k/год) |
| Амортизация GPU (срок службы 3–5 лет) | Стандартные нормы бухгалтерии (линейный метод) |
| Стоимость сети, хранилища, лицензий (если есть) | Оценка 10–20% от железа |
Если нет реальных данных — симулируем:
- Используем общедоступные цены OpenAI: $15/M input, $60/M output (gpt‑4o-mini) и $10/M input, $30/M output (gpt‑4o) – актуальные на 2025.
- Для self‑hosted берём A100‑80G по $1.50/ч (on‑demand AWS) или покупку $10k/ед. (сервер с 8× GPU ~$80k).
- Нагрузку моделируем через постоянное число токенов в месяц (50M, 500M, 5B) с ratio output/input = 1:3.
3. Технологический стек
| Компонент | Инструменты | Назначение |
|---|---|---|
| Расчётная модель | Python (Jupyter Notebook) + pandas, numpy | Построение финансовой модели |
| Визуализация | matplotlib / plotly | Графики cross‑over, break‑even |
| Исходные данные | CSV / YAML / константы в коде | Хранение цен и параметров |
| Версионирование | Git + GitHub | Управление изменениями модели |
4. Этапы выполнения
Этап 1: Сбор и верификация исходных данных (2–3 часа)
Действия
-
Собрать актуальные цены API
- Записать стоимость input/output токенов для 3 моделей (gpt‑4o‑mini, gpt‑4o, Claude 3.5 Sonnet).
- Сохранить в структурированном виде (словарь или CSV).
-
Определить стоимость self‑hosted
- Вариант A: покупка GPU (CAPEX) с линейной амортизацией за 3 года.
- Вариант B: аренда облачных GPU (OPEX) – цены Spot vs On‑Demand.
Пример таблицы
-
Оценить нагрузку
- Выбрать три сценария: low (50M токенов/мес), medium (200M), high (1B).
- Доля output/input = 0.25 (1 output на 4 input).
-
Оценить стоимость инженерного сопровождения
- Self‑hosted требует 0.5 FTE SRE + 0.25 FTE MLE = $150k/год.
- API требует 0.1 FTE MLE = $25k/год.
-
Электричество
- Средняя цена $0.12/kWh.
- Потребление сервера: GPU TDP + 30% overhead (CPU, RAM, охлаждение).
Ожидаемый результат этапа Файл data.py с константами и словарём цен.
Этап 2: Построение модели TCO для self‑hosted (3–4 часа)
Действия
-
Рассчитать стоимость одного месяца self‑hosted по компонентам:
Формулы:
-
Определить необходимую пропускную способность
- Для заданного объёма токенов в месяц вычислить количество GPU‑часов при известном throughput (например, A100: 2000 токенов/с для 7B модели, 500 токенов/с для 70B).
- Если одна GPU не справляется – масштабировать линейно.
-
Учесть неполную утилизацию (utilisation factor):
- Self‑hosted обычно загружен на 30–50%, добавляем коэффициент 0.4.
Пример фрагмента кода
TOKENS_PER_MONTH = 200e6 throughput = 2000 # tok/s per GPU hours_needed = TOKENS_PER_MONTH / (throughput * 3600) / utilisation gpu_count = max(1, math.ceil(hours_needed / 730)) # 730 часы в месяце -
Построить зависимость TCO от объёма
Ожидаемый результат этапа Функция tco_self_hosted(volume, gpu_type, purchase_type) возвращающая break‑down.
Этап 3: Построение модели TCO для API (1 час)
Действия
-
Формула
TCO_API = (input_cost_per_M * input_tokens_M) + (output_cost_per_M * output_tokens_M) -
Добавить ежемесячную фиксированную стоимость
- Подписки (если есть), поддержка инженера 0.1 FTE.
-
Вычислить для тех же сценариев нагрузки, что и self‑hosted.
Ожидаемый результат этапа Функция tco_api(volume, model_name).
Этап 4: Сравнение и определение порога (2–3 часа)
Действия
-
Построить совместный график
- Ось X: миллионы токенов в месяц.
- Ось Y: TCO за 12 месяцев.
- Линии: API (по модели), self‑hosted (покупка), self‑hosted (аренда).
-
Найти точку пересечения (break‑even) — объём, при котором TCO_self = TCO_API.
- Использовать
scipy.optimize.rootили линейную интерполяцию.
- Использовать
-
Провести sensitivity analysis
- Изменить цену GPU ±20%, стоимость электричества ±50%, зарплату инженеров ±30%.
- Построить диаграмму торнадо влияния факторов.
-
Сделать вывод для 3 сценариев
- Low: API дешевле?
- Medium: примерно равно?
- High: self‑hosted выгоднее?
Ожидаемый результат этапа Ноутбук с графиками и таблицей пороговых значений.
Этап 5: Оформление и документирование (1–2 часа)
Действия
-
Оформить Jupyter Notebook
- Секции с markdown-описанием.
- Чистый код с функциями.
- Вывод таблиц и графиков.
-
Добавить раздел “Assumptions & Limitations” (допущения):
- Утилизация, стабильность цен API, рост нагрузки.
-
Подготовить executive summary (одна страница PDF) для стейкхолдеров.
Ожидаемый результат этапа tco_analysis.ipynb + tco_summary.pdf.
5. Критерии приемки (Definition of Done)
- Модель корректно загружает и валидирует все исходные цены.
- Для self‑hosted учтены CAPEX/OPEX, электричество, labour.
- Для API учтены input/output цены и labour.
- Сгенерирован график cross‑over для минимум 2 GPU‑вариантов.
- Точка безубыточности вычислена численно (ошибка <1%).
- Sensitivity analysis выполнен для 3 факторов (цена GPU, электричество, зарплата).
- Код написан на Python, использует pandas/numpy, воспроизводим.
- Итоговый ноутбук содержит комментарии и markdown с выводами.
- Внешний вид графиков соответствует технической документации (подписи осей, легенда).
- Executive summary приложен в PDF.
6. Ожидаемый результат
Основной артефакт tco_analysis.ipynb (Jupyter Notebook) с полным расчетом.
Содержание:
- Импорт данных, константы.
- Функции расчёта для self‑hosted (CAPEX, OPEX) и API.
- Вычисление TCO для трёх сценариев нагрузки.
- График cross‑over и break‑even volume.
- Sensitivity analysis (диаграмма торнадо).
- Выводы: при каком объёме self‑hosted дешевле API.
Опциональные дополнительные результаты
tco_dashboard.html(интерактивный plotly dashboard).tco_model.xlsx(таблица с формулами для менеджеров).cost_comparison.pdf(одностраничный отчет для принятия решений).
7. Возможные сложности и их решение
| Сложность | Решение |
|---|---|
| Цены API меняются часто | Взять архивные данные или указать дату фиксации. |
| Неизвестен реальный throughput модели на GPU | Использовать общедоступные бенчмарки (Hugging Face leaderboards). |
| Различие в latency и QoS (API vs self-hosted) | Не учитывать в TCO, вынести как non‑financial factor. |
| Неопределенность в cost of capital | Использовать WACC 10% для дисконтирования CAPEX. |
| Сложность учёта масштабирования (multi‑node) | Моделировать как линейное расширение с накладными расходами 20% на сеть. |
8. Бюджет времени (оценка)
| Этап | Время (часы) |
|---|---|
| 1. Сбор и верификация данных | 2–3 |
| 2. Модель self‑hosted | 3–4 |
| 3. Модель API | 1 |
| 4. Сравнение и break‑even | 2–3 |
| 5. Оформление и документация | 1–2 |
| Итого | 9–13 часов |
Примечание Для первого раза рекомендуется выделить 2 полных рабочих дня (16 часов), учитывая поиск данных и отладку.
9. Связанные вопросы из базы знаний
| Вопрос | Тема |
|---|---|
| 45 | Как рассчитать стоимость инференса LLM при разных batch size? |
| 67 | Какие метрики использовать для сравнения производительности GPU? |
| 89 | Что такое TCO и какие компоненты в него входят? |
| 112 | Как оценить CAPEX и OPEX для ML‑инфраструктуры? |
| 145 | Формула break‑even для SaaS vs self‑hosted |
| 203 | Влияние utilisation factor на стоимость владения |
| 278 | Сравнение spot vs on‑demand инстансов для ML |
| 312 | Амортизация GPU: сроки и методы |
| 401 | Sensitivity analysis в финансовых моделях |
| 523 | Точка безубыточности для двух архитектур (monolith vs microservices) |
10. Чек-лист самопроверки
- Я проверил, что все цены указаны с единицами измерения ($/M tok, $/kWh).
- Я убедился, что учтены оба варианта self‑hosted (покупка и аренда).
- График cross‑over отображает все 3 сценария нагрузки.
- В sensitivity analysis выбран хотя бы один фактор, делающий self‑hosted дешевле при любом объёме.
- Выводы сформулированы в терминах “Если объём превышает X, то self‑hosted выгоднее на Y%”.
- Код воспроизводим: можно запустить в чистом окружении с
pip install -r requirements.txt. - Executive summary умещается на одной странице и понятен не‑техническому руководителю.
- Допущения явно перечислены (utilization 40%, throughput по бенчмарку).