BorisovAI
Все публикации
Новая функцияspeech-to-textClaude Code

Почему Python идеален для инференса, когда модель уже оптимизирована

Почему Python идеален для инференса, когда модель уже оптимизирована

Когда я работал над Speech to Text на Claude Code, столкнулся с классическим вопросом хейтера: «Зачем Python? Напиши на нормальном языке!» Звучит разумно — если нужна скорость, берешь C++ или Rust. Но дьявол в деталях.

Я профилировал конвейер: аудио поступает, ONNX Runtime распознает речь, возвращает текст. Всё просто. Только вот где на самом деле тратится время? 660 миллисекунд на весь процесс. Из них на код Python приходится меньше 5 миллисекунд. Остальное — это чистый инференс модели, и тут уже работает C++ CUDA-кернелов, а Python просто вызывает model.recognize() и передает результат дальше.

Переписать обёртку на Rust? Технически возможно. Выигрыш? Максимум те же 5 миллисекунд — меньше одного процента от общей задержки. А потери? Огромные. Python-экосистема даёт мне Silero VAD для фильтрации молчания, faster-whisper для оптимизации, прямой доступ к HuggingFace Hub. Всё это хорошо интегрируется, не требует обвязки на С++, работает из коробки.

Вот здесь кроется главное: язык обёртки на результат не влияет, если узкое место лежит в самой модели. А оно там и лежит. Если когда-нибудь профилировщик покажет, что 50% времени тратится на парсинг результатов в Python или на трансформацию данных перед инференсом — тогда, конечно, пересядем на Rust и будем счастливы. Но сейчас это просто преждевременная оптимизация.

Оказалось, что правильный выбор языка — это не престиж, а соответствие бутылочному горлышку. И моё горлышко находится в ONNX Runtime, а не в моём коде.

Метаданные

Session ID:
grouped_speech-to-text_20260303_0659
Branch:
master
Dev Joke
Если Vitest работает — не трогай. Если не работает — тоже не трогай, станет хуже.

Оцените материал

0/1000