中文翻译暂不可用,显示俄语原文。

Рассчитать 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% от железа

Если нет реальных данных — симулируем:

  1. Используем общедоступные цены OpenAI: $15/M input, $60/M output (gpt‑4o-mini) и $10/M input, $30/M output (gpt‑4o) – актуальные на 2025.
  2. Для self‑hosted берём A100‑80G по $1.50/ч (on‑demand AWS) или покупку $10k/ед. (сервер с 8× GPU ~$80k).
  3. Нагрузку моделируем через постоянное число токенов в месяц (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 часа)

Действия

  1. Собрать актуальные цены API

    • Записать стоимость input/output токенов для 3 моделей (gpt‑4o‑mini, gpt‑4o, Claude 3.5 Sonnet).
    • Сохранить в структурированном виде (словарь или CSV).
  2. Определить стоимость self‑hosted

    • Вариант A: покупка GPU (CAPEX) с линейной амортизацией за 3 года.
    • Вариант B: аренда облачных GPU (OPEX) – цены Spot vs On‑Demand.

    Пример таблицы

    GPUПокупка $Arpu (on‑demand $/ч)TDP (W)Эффективность (TFLOPS FP16)
    A100‑80G100001.50400312
    H100‑80G250003.50700989
  3. Оценить нагрузку

    • Выбрать три сценария: low (50M токенов/мес), medium (200M), high (1B).
    • Доля output/input = 0.25 (1 output на 4 input).
  4. Оценить стоимость инженерного сопровождения

    • Self‑hosted требует 0.5 FTE SRE + 0.25 FTE MLE = $150k/год.
    • API требует 0.1 FTE MLE = $25k/год.
  5. Электричество

    • Средняя цена $0.12/kWh.
    • Потребление сервера: GPU TDP + 30% overhead (CPU, RAM, охлаждение).

Ожидаемый результат этапа Файл data.py с константами и словарём цен.


Этап 2: Построение модели TCO для self‑hosted (3–4 часа)

Действия

  1. Рассчитать стоимость одного месяца self‑hosted по компонентам:

    Формулы:

    • COST_HW = (CAPEX / (срок_жизни_мес)) + (цена_аренды_ч * часы_работы)
    • COST_ENERGY = (TDP / 1000) * (1 + overhead) * часы * цена_кВтч
    • COST_LABOR = годовая_зарплата / 12
    • TCO_total = sum(COST_HW, COST_ENERGY, COST_LABOR, COST_NETWORK)
  2. Определить необходимую пропускную способность

    • Для заданного объёма токенов в месяц вычислить количество GPU‑часов при известном throughput (например, A100: 2000 токенов/с для 7B модели, 500 токенов/с для 70B).
    • Если одна GPU не справляется – масштабировать линейно.
  3. Учесть неполную утилизацию (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 часы в месяце
    
  4. Построить зависимость TCO от объёма

    • Перебрать нагрузку от 10M до 10B токенов (100 точек).
    • Для каждой точки посчитать TCO для self‑hosted (CAPEX и OPEX).

Ожидаемый результат этапа Функция tco_self_hosted(volume, gpu_type, purchase_type) возвращающая break‑down.


Этап 3: Построение модели TCO для API (1 час)

Действия

  1. Формула

    TCO_API = (input_cost_per_M * input_tokens_M) + (output_cost_per_M * output_tokens_M)
    
  2. Добавить ежемесячную фиксированную стоимость

    • Подписки (если есть), поддержка инженера 0.1 FTE.
  3. Вычислить для тех же сценариев нагрузки, что и self‑hosted.

Ожидаемый результат этапа Функция tco_api(volume, model_name).


Этап 4: Сравнение и определение порога (2–3 часа)

Действия

  1. Построить совместный график

    • Ось X: миллионы токенов в месяц.
    • Ось Y: TCO за 12 месяцев.
    • Линии: API (по модели), self‑hosted (покупка), self‑hosted (аренда).
  2. Найти точку пересечения (break‑even) — объём, при котором TCO_self = TCO_API.

    • Использовать scipy.optimize.root или линейную интерполяцию.
  3. Провести sensitivity analysis

    • Изменить цену GPU ±20%, стоимость электричества ±50%, зарплату инженеров ±30%.
    • Построить диаграмму торнадо влияния факторов.
  4. Сделать вывод для 3 сценариев

    • Low: API дешевле?
    • Medium: примерно равно?
    • High: self‑hosted выгоднее?

Ожидаемый результат этапа Ноутбук с графиками и таблицей пороговых значений.


Этап 5: Оформление и документирование (1–2 часа)

Действия

  1. Оформить Jupyter Notebook

    • Секции с markdown-описанием.
    • Чистый код с функциями.
    • Вывод таблиц и графиков.
  2. Добавить раздел “Assumptions & Limitations” (допущения):

    • Утилизация, стабильность цен API, рост нагрузки.
  3. Подготовить 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‑hosted3–4
3. Модель API1
4. Сравнение и break‑even2–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: сроки и методы
401Sensitivity 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 по бенчмарку).