Локально или в облаке: где своё железо реально выигрывает у API

Одна и та же задача на одном и том же сервере: в первом варианте 25 секунд речи обрабатывались две минуты, во втором - за десять секунд. Разбираю на замерах, где локальная модель реально выигрывает у облачного API, а где это самообман, и по какому фильтру я прохожу эту развилку.

Александр МазинАлександр Мазин AI-инженер · автоматизация бизнеса Опубликовано
Весы: монолитный блок против лёгкой формы из тонких линий

Вопрос "локальная модель или облачный API" почти всегда обсуждают идеологически: одни за приватность, другие за удобство. Между тем это обычная инженерная развилка, у которой есть числовой ответ - разный для разных задач.

У меня накопились замеры на одной задаче, где я прошёл оба пути до конца, - распознавание речи. Расскажу, что получилось, и заодно сформулирую фильтр, по которому эту развилку стоит проходить в любом другом проекте.

Задача

Голосовой ввод на сайте и в личных инструментах: человек говорит, получает готовый текст. К этому же классу относится расшифровка звонков и встреч - обычно самый первый реальный ИИ-проект в компании, потому что польза очевидна и данные уже есть.

Требования были такие: русский язык, приемлемая задержка, и аудио не должно уезжать в чужие руки без необходимости. Последнее - не паранойя: в звонках клиентов лежат персональные данные, и отправка их наружу превращает техническую задачу в юридическую.

Первый заход: сделать красиво

Первым делом я взял готовую потоковую обёртку - из тех, что показывают текст прямо во время речи, слово за словом. Выглядит эффектно, и на демо-роликах всё летает.

На процессорном сервере она дала показатель реального времени около 5. Расшифровка означает следующее: 25 секунд речи обрабатываются две минуты. Пользоваться этим нельзя.

Важно, что дело было не в железе - это отдельный сервер с быстрыми ядрами, взятый специально под задачу. Дело в подходе: потоковое распознавание постоянно пересчитывает уже сказанное, чтобы уточнить гипотезу, и на процессоре эта переработка съедает всё.

Второй заход: сделать просто

Я выбросил потоковость и сделал скучно: человек говорит целиком, запись уходит на сервер одним куском, модель распознаёт её за один проход.

Показатель реального времени - 0,26. Сорок секунд речи обрабатываются за десять. После настройки - 0,12, то есть быстрее реального времени в восемь раз.

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

Третий заход: посчитать на своём железе

Отдельная история - обработка на ноутбуке. На современном Маке есть отдельный ускоритель для нейросетей, и модель, собранная под него, показывает 208-кратную скорость относительно реального времени. Часовой разговор расшифровывается за считанные секунды, разделение на говорящих - примерно так же быстро.

Здесь же я собрал грабли, которые стоит знать заранее:

  • Безвентиляторный ноутбук перегревается, если гнать распознавание и разделение говорящих одновременно. Последовательно - те же секунды, но без троттлинга. Параллелить на одном ускорителе бессмысленно.
  • Затравка модели (список терминов, чтобы правильно писала специальные слова) должна быть обычной фразой, а не списком. Список, начинающийся со слова "Термины:", модель вставляла прямо в расшифровку, а на плохом звуке зацикливалась и повторяла его. Модель затравку продолжает, а не исполняет. После переписывания живым предложением мусор исчез, и скорость выросла втрое.

Фильтр: когда локально выигрывает

Из этой и соседних задач сложилось правило, по которому я развилку прохожу.

Локально выигрывает, когда:

  • нагрузка постоянная и предсказуемая - расшифровка всех звонков, обработка всех документов;
  • данные чувствительные и их отправка наружу создаёт отдельную юридическую задачу;
  • задача узкая, и под неё есть небольшая специализированная модель;
  • нужна независимость от чужой доступности, тарифов и геополитики.

Облако выигрывает, когда:

  • нагрузка редкая или рваная - железо будет простаивать;
  • задача требует рассуждений, а не распознавания: разбор смысла, написание текста, принятие решений;
  • вам нужен лучший результат сегодня, а не приемлемый;
  • вы ещё проверяете гипотезу и не знаете, взлетит ли вообще.

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

Что забрать себе

  • Развилка решается замером, а не убеждениями. Полдня на прототип обоих вариантов окупаются.
  • Красивое решение и работающее - разные вещи. Потоковая выдача выглядит лучше, а даёт хуже и медленнее.
  • Считайте не стоимость запроса, а стоимость месяца при вашей нагрузке. При постоянном потоке своё железо окупается быстро, при редких обращениях не окупается никогда.
  • Гибрид - нормальный ответ. Тяжёлое и однообразное держите у себя, интеллект берите в облаке.

Новые разборы - на почту

Разборы задач автоматизации: что автоматизировать, сколько это стоит и что даёт в цифрах. Одно письмо на статью, без рекламы чужих продуктов.

Александр Мазин

Александр Мазин

AI-инженер. Автоматизирую бизнес под ключ: CRM, интеграции, AI-ассистенты, платформы. Пишу о системах, которые заменяют отдел.