«Тренируйся на Python, служи на C++» — такой девиз мог бы быть у Google, когда речь идет о большей части их работы в области машинного обучения.
Python удобен для специалистов по данным, но использование его интерпретатора в конвейере обслуживания может увеличить накладные расходы и усложнить развертывание. Отраслевой проект OpenXLA Project предоставляет инструменты для компиляции вычислений машинного обучения в нативный код для различных процессоров.
Последним компонентом этой системы, выпущенным в открытый доступ, стал XSE, сокращение от XLA Serving Engine.
Одноразовое инференс-выполнение
XSE больше подходит не для крупномасштабного инференс-выполнения LLM (для чего лучше подойдут vLLM или SGLang), а для небольших, более узкоспециализированных моделей, которых в Google множество.
«Обслуживание LLM сейчас привлекает основное внимание, но значительная часть производственного инференс-выполнения по-прежнему приходится на модели ранжирования, рекомендаций, встраивания и компьютерного зрения. Эти запросы обычно короткие, с очень высокой [частотой запросов в секунду] и жесткими ограничениями по задержке», — написал во вторник в LinkedIn Натан Бич, директор по управлению продуктами Google.
В Google XSE уже обрабатывает более шести миллионов запросов в секунду в таких сервисах, как YouTube Shorts, Google Ads и Поиск.
Эти модели работают не для праздной беседы. Они ранжируют результаты, рекомендуют видео и принимают другие решения на лету, часто незаметно для пользователей.
Интерпретатор Python, обдумывающий каждый запрос, стал бы узким местом, если не концом самого Google. По тестам Google с короткими запросами, XSE обеспечил в два-пять раз большую пропускную способность по сравнению с их лучшим оптимизированным Python-сервером, используя четверть памяти.
Никакого Python
В этой системе специалисты по машинному обучению пишут код своих моделей на Python, используя JAX от Google для помощи в вычислениях. Google также планирует интеграцию с TorchTPU, чтобы пользователи PyTorch могли экспортировать модели для обслуживания на C++ на TPU. Экспортный инструмент упаковывает вычисления модели в StableHLO, портативное промежуточное представление, вместе с обученными весами в «XLA SavedModel».
Готовый к работе C++ рантайм использует XLA для компиляции этих вычислений в нативный код для целевого кремния. Никакого интерпретатора Python здесь нет.
XLA SavedModels могут работать на GPU и CPU — Google сотрудничал с Arm и Intel для разработки экосистемы XLA. Но Google, очевидно, считает, что было бы гораздо круче, если бы вы запускали свои модели на их собственных TPU-ускорителях.
Медлительность Python продолжает оставаться проблемой для сообщества машинного обучения. Помимо XSE, были предприняты и другие подходы, многие из которых предполагают как можно более быстрое избавление от Python-кода. PyTorch предлагает нативный C++ рантайм под названием LibTorch. Кроме того, Microsoft и ее партнеры предлагают ONNX Runtime, который поддерживает открытый формат графа с Python-привязками.
Даже собственная референсная реализация Python в значительной степени полагается на C, а Rust теперь получает свою долю. ®
Всегда имейте в виду, что редакции могут придерживаться предвзятых взглядов в освещении новостей.
Автор – Joab Jackson




