Что такое ML Drift и зачем он нужен
Google AI Edge Team открыла исходный код ML Drift, кросс-платформенного GPU-вычислительного движка для AI/ML-инференса прямо на устройствах. Лицензия Apache 2.0, репозиторий называется google-ai-edge/ml-drift, анонс датирован 9 октября 2026 года. Первоисточник анонса и репозиторий.
Задачу движок решает понятную. GPU в смартфонах, планшетах, ноутбуках и браузерах говорят на разных языках: OpenGL ES, OpenCL, Metal, WebGPU. У каждого свои шейдерные языки, правила работы с памятью, ограничения драйверов и свои трюки для ускорения. Когда инференс модели пишут на GPU вручную, приходится держать в голове все эти различия или поддерживать несколько версий одного и того же кода. ML Drift берёт эту работу на себя: разработчик обращается к единому интерфейсу, а движок разбирается с низкоуровневым API конкретной платформы.
Формулировка Google звучит амбициозно: единая основа для пиковой производительности везде. Это заявка вендора, а не измеренный результат. Ниже разберём, что подтверждено фактами, а что пока остаётся обещанием.
Кто стоит за разработкой
Автор релиза - Google AI Edge Team, команда Google по инструментам AI для edge-устройств. Она же развивает LiteRT, рантайм для запуска моделей на устройствах. Это официальный проект внутри Google, а не эксперимент одного разработчика, и такой статус заметно повышает шансы на регулярные обновления. Публичных данных о размере команды, сроках работы над движком и планах развития в анонсе нет.
Лицензия и открытый код
Apache 2.0 - permissive-лицензия. Она разрешает коммерческое использование, изменение и распространение кода, а также содержит явный грант патентных прав. На практике это значит, что ML Drift можно встроить в проприетарное приложение и не открывать собственные исходники: достаточно сохранить уведомления об авторстве. Для команд, которые выбирают зависимости для продакшена, критерий важный, и здесь Google не навязывает копилефт.
Как ML Drift упрощает работу с GPU
Ценность абстракции проявляется там, где один и тот же ML-код должен работать на разных платформах, а не на одном заранее известном устройстве.
Какие API поддерживаются
Четыре низкоуровневых API: OpenGL ES, OpenCL, Metal и WebGPU. Покрытие выглядит так:
- OpenGL ES - основной графический API Android и встраиваемых GPU;
- OpenCL - вычислительный API, распространённый на мобильных чипах и во встраиваемых решениях;
- Metal - API Apple для iPhone, iPad и Mac;
- WebGPU - веб-API для доступа к GPU из браузера.
Набор закрывает Android, iOS, macOS и веб. Браузерный сценарий пока самый капризный: WebGPU включён не во всех браузерах и не на всём железе, а поведение внутри одной платформы зависит от драйверов. В разборе Transformers.js v3 показано, почему WebGPU и 4-битные веса подходят не для каждой модели и не для каждого пользователя.
Что это даёт разработчику
Вместо нескольких бэкендов остаётся одна кодовая база. Компиляция шейдеров, выделение и синхронизация буферов памяти, планирование вычислительных проходов ложатся на движок. В теории это экономит недели работы на каждую новую платформу и упрощает поддержку: исправление живёт в одном месте, а не дублируется в ветке под каждый API.
Второй эффект - порог входа. Разработчику ML-фичи не нужно разбираться, как именно Apple или Qualcomm советуют работать с памятью на своём GPU. Он описывает вычисление, а подстройку под железо делает библиотека. Google называет движок высокопроизводительным и говорит о пиковой производительности на всех платформах, однако конкретных замеров в анонсе нет, поэтому эту часть стоит проверять самостоятельно на своих моделях.
Для сравнения: в браузерном инференсе через WebGPU уже встречаются впечатляющие цифры. По данным разбора про запуск LFM 2.5 на WebGPU скорость достигала 1440 токенов/с на RTX 3090 и до 500 токенов/с на Apple M4, но там речь о другом стеке и аппаратно-специфичных ядрах.
Связь ML Drift с LiteRT
LiteRT знаком тем, кто запускает модели на мобильных устройствах и встраиваемых системах. ML Drift встроен в этот рантайм, и это определяет, как оба проекта соотносятся друг с другом.
Роль в экосистеме LiteRT
ML Drift служит ядром GPU-ускорения внутри LiteRT. GPU-путь в рантайме опирается на этот движок, а не на отдельный набор реализаций под каждый API. Практический вывод простой: приложение на LiteRT с GPU-делегатом получает улучшения ML Drift автоматически при обновлении рантайма, без отдельной работы. Детали интеграции Google не раскрывает: неизвестно, какие части LiteRT уже переведены на новый движок, а какие остались на прежних реализациях, и насколько велика разница в скорости между ними. Анонс проекта.
Использование как отдельной библиотеки
ML Drift можно взять без LiteRT: он поставляется как самостоятельная библиотека для кастомных графических и инференс-рантаймов. Сценарий типичный: у команды свой рантайм моделей или собственный пайплайн обработки видео и графики, и нужен доступ к вычислениям на GPU без привязки к чужому фреймворку. Тогда абстракция над OpenGL ES, OpenCL, Metal и WebGPU даёт единый код для всех платформ, а само ядро инференса пишется отдельно. Второй вариант - держать общий графический пайплайн, куда ML-этапы встраиваются в общую очередь вычислений на GPU.
Кому и для каких задач подходит ML Drift
Примеры использования
- видеоэффекты в реальном времени: фильтры, стилизация, сегментация и улучшение кадра прямо на устройстве;
- генеративный AI на устройстве, где важны задержка ответа и приватность данных пользователя;
- интерактивные ML-фичи: распознавание в потоке камеры, трекинг, обработка жестов;
- кастомные графические и инференс-рантаймы, которым нужен единый слой над GPU-API.
Общая черта этих задач - жёсткие требования к задержке и работа на нескольких платформах сразу. Если один и тот же код должен крутиться на Android, iOS и в браузере, абстракция окупается. Новичку, который только пробует GPU-инференс на одном устройстве, выгода будет меньше, чем команде с кросс-платформенным продуктом.
Когда ML Drift не нужен
Есть случаи, когда слой абстракции только мешает. Если инференс идёт на CPU и GPU не задействован, движок не даст ничего, кроме лишней зависимости. Если проект живёт на одной платформе и вы разбираетесь в её API, прямой код окажется проще и предсказуемее, особенно когда нужны нестандартные оптимизации под конкретный чип. Если у вас уже есть рабочий кросс-платформенный GPU-слой или фреймворк с готовыми делегатами, переход добавит риск без гарантированной выгоды.
Ограничения и неизвестные
Самый честный раздел материала. Анонс описывает идею и архитектурную роль движка, но почти не даёт данных для инженерного решения.
Что не раскрыто в релизе
- нет бенчмарков: ни задержек, ни пропускной способности, ни сравнений с прямым использованием графических API;
- нет списка поддерживаемых GPU, чипсетов и версий драйверов;
- нет номеров версий, дат релизов и дорожной карты;
- нет описания того, как именно устроена интеграция с LiteRT;
- нет данных о стабильности и готовности к продакшену.
Утверждение о пиковой производительности на всех платформах стоит воспринимать как цель команды, пока не появятся независимые замеры. Как проверять подобные цифры, видно на примере разбора заявления о 100% эффективности GPU: без методики, сценария и указания железа такие числа почти ничего не говорят о реальной работе.
Потенциальные сложности на практике
Старые устройства - первое место, где начнутся проблемы. Уровни OpenGL ES и качество драйверов на бюджетных Android-чипах заметно отличаются, а WebGPU доступен не везде. Документация к молодому проекту обычно отстаёт от кода, поэтому отладка ляжет на разработчика. Если сроки жёсткие, разумно подождать пару релизов и первых публичных отчётов, прежде чем строить на ML Drift критичную часть продукта. Текущее состояние проекта и его место в экосистеме полезно отслеживать по тому же обсуждению релиза.
Как начать работать с ML Drift
Где взять код и документацию
Исходники лежат в репозитории google-ai-edge/ml-drift под лицензией Apache 2.0. Документацию стоит искать в README и вики проекта, а за контекстом следить в блоге Google AI Edge: команда публикует там материалы по своим инструментам для устройств. Полноценных гайдов и туториалов на момент анонса не заявлено, так что первые шаги придётся выяснять по коду и примерам в репозитории, если они там есть.
Первые шаги для интеграции
- Определите целевые платформы и проверьте, какой из четырёх API там реально доступен: OpenGL ES, OpenCL, Metal или WebGPU.
- Соберите библиотеку под свою платформу и прогоните простую модель, чтобы оценить задержку.
- Сравните результат с CPU-версией и с прямым обращением к GPU-API: разница покажет, есть ли смысл в абстракции именно для вашей задачи.
- Если вы на LiteRT, включите GPU-ускорение в актуальной версии рантайма и проверьте, какой путь задействуется на вашем устройстве.
- Заложите время на отладку на реальных устройствах, а не только на эмуляторах: разница в драйверах там проявляется сильнее всего.
ML Drift закрывает реальную боль кросс-платформенного GPU-инференса, но пока это ранний open-source релиз с минимумом публичных данных. Начинать стоит с небольших экспериментов на своём железе и целевой модели, а решение о продакшене принимать по собственным замерам. Первые отчёты сообщества и обновления репозитория покажут, насколько заявленная производительность подтвердится на практике.