Открытые модели или платный API: как посчитать, что дешевле в вашем случае
Расчёт, который убил фичу в нашем продукте, занял пятнадцать минут и выглядел так. Готовый сервис вырезания фона стоит около 20 центов за изображение. Пользователь загружает в гардероб порядка пятидесяти вещей. Получается около десяти долларов на человека только за подготовку картинок, при годовом доходе с пользователя в районе двух сотен рублей.
Дальше вопрос выбора технологии перестаёт быть техническим.
Считать надо не цену операции, а расход на пользователя
Цена за вызов API ничего не говорит, пока не умножена на поведение человека. Одна и та же операция по двадцать центов бывает копеечной и разорительной, разница только в том, сколько раз её вызывает один пользователь за месяц.
Поэтому расчёт всегда сводится к двум числам в одинаковых единицах: сколько вы получаете с активного пользователя за период и сколько тратите на него за тот же период. Если второе больше первого, рост числа пользователей увеличивает убыток, и никакие оптимизации кода это не меняют.
Что дала открытая модель на своём сервере
В нашем случае вырезание фона делает BiRefNet, открытая модель под лицензией MIT, поднятая на своём сервере. Распознавание атрибутов вещи делает marqo-fashionSigLIP, тоже открытая, под Apache 2.0.
Экономика меняется принципиально: вместо оплаты за каждое изображение появляется фиксированная аренда порядка шести тысяч рублей в месяц, а стоимость одной операции падает до долей копейки. При этом чем больше пользователей, тем ниже себестоимость одной операции, то есть расход перестаёт расти линейно вместе с аудиторией.
Обратная сторона честная: фиксированная аренда платится и тогда, когда пользователей мало. На старте это дороже, чем поштучная оплата. Порог переключения считается ровно там, где месячная аренда сравнивается с суммой платежей за операции.
Чего мы сознательно не делали
Не обучали свою модель. Вырезание фона и распознавание атрибутов это решённые задачи, своя модель заняла бы месяцы ради того же качества. Своим имеет смысл делать то, чего нет ни у кого: в нашем случае это алгоритм сопоставления образа с конкретным гардеробом, а не сами модели.
Не брали зарубежный облачный бэкенд. Через систему проходят персональные данные граждан России, а закон требует, чтобы их запись и хранение шли в базах на территории России. У популярных зарубежных платформ российских регионов нет, поэтому вопрос решился размещением на российском облаке до того, как начался выбор моделей.
Не оставляли дорогие операции бесплатными. Это отдельный принцип: дешёвая операция может быть безлимитной, дорогая становится валютой продукта. Если генерация изображения стоит рубли, а обработка загруженной фотографии копейки, то безлимитной делается вторая, а первая идёт по счётчику. Иначе самые активные пользователи оказываются самыми убыточными.
Три вопроса до выбора
Сколько операций приходится на одного активного пользователя в месяц. Без этого числа сравнивать нечего.
Есть ли ограничения по данным. Персональные данные, врачебная или банковская тайна, договор с клиентом: всё это может закрыть внешний сервис независимо от цены.
Кто будет обслуживать сервер. Открытая модель это не только лицензия, но и обновления, мониторинг и дежурство. Если такого человека нет, фиксированная аренда превращается в скрытый долг, который однажды придётся отдать в самый неподходящий момент.
Практический порядок действий
Начинать стоит с платного API, пока пользователей мало: так вы платите только за то, что реально используется, и быстрее проверяете саму идею. Одновременно считать точку, в которой поштучная оплата становится дороже аренды, и заранее договориться, что при её достижении переезд делается сразу, а не после первого счёта, который вас расстроит.
Важно, чтобы переезд был возможен технически. Для этого работа с моделью изолируется за своим интерфейсом с первого дня: код продукта вызывает вашу функцию обработки, а не сервис напрямую. Это несколько часов работы на старте и недели экономии потом. Без такой изоляции расчёт себестоимости не имеет смысла, потому что переезд просто не состоится.
Частые вопросы
Когда платный API выгоднее своего сервера
Когда операций мало и они редкие, когда качество платной модели заметно выше открытой, и когда у вас нет человека, готового обслуживать сервер. Фиксированная аренда выгодна только при постоянной нагрузке, на низком объёме она проигрывает поштучной оплате.
Нужно ли обучать свою модель
Почти никогда. Вырезание фона и распознавание атрибутов это решённые задачи, обучение заняло бы месяцы ради того же качества. Своим имеет смысл делать только то, чего нет в готовом виде: как правило, это логика поверх моделей, а не сами модели.
Что с персональными данными при использовании внешнего API
Если через сервис проходят персональные данные граждан России, законодательство требует, чтобы их запись и хранение шли в базах на территории России. У популярных зарубежных платформ российских регионов нет, и это ограничение решается размещением, а не выбором модели.
Как считать себестоимость правильно
В тех же единицах, что и доход: на одного активного пользователя за период. Цена за операцию сама по себе ничего не говорит, пока не умножена на число операций, которое пользователь совершает за месяц или за год.
Продуктовая стратегия, коммуникация с клиентами, управление проектами
[Telegram →]