Инструменты15 июля 2026 г., 11:16 МСК🤖 Auto

Google выпустил LiteRT.js: ускорение AI в браузере до 60x через WebGPU

Google представил LiteRT.js — JavaScript-обертку для нативного рантайма LiteRT, позволяющую запускать .tflite модели прямо в браузере с использованием WebGPU и WebNN.

Баннер новости 3611

Суть обновления: от JS-ядер к WebAssembly

Google выпустил LiteRT.js (версия 2.5.2), который является JavaScript-биндингом для библиотеки инференса на устройстве LiteRT (ранее TensorFlow Lite). В отличие от TensorFlow.js, использующего ядра на JavaScript, LiteRT.js компилирует нативный кроссплатформенный рантайм в WebAssembly. Это позволяет веб-приложениям наследовать оптимизации, квантование и аппаратные улучшения, ранее доступные только для Android, iOS и десктопа.

Ключевые преимущества подхода: выполнение инференса локально (enhanced privacy), отсутствие серверных затрат и сверхнизкая задержка. Модель формата .tflite загружается и выполняется непосредственно в браузере.

Архитектура и три бэкенда

LiteRT.js поддерживает три пути выполнения, но с важным ограничением: частичная делегация запрещена. Граф вычислений не может быть разделен между CPU и GPU. Если модель не может быть полностью делегирована выбранному акселератору, происходит фоллбэк на выполнение через wasm (CPU).

  • CPU: Использует оптимизированную библиотеку XNNPACK с поддержкой многопоточности и релаксированным SIMD.
  • GPU: Работает через WebGPU с использованием решения ML Drift.
  • NPU: Поддержка через экспериментальный API WebNN (доступен в Chrome и Edge). Требует включения флага jspi: true для моста между синхронным планированием ядер и асинхронным опросом устройства.

Производительность: цифры и бенчмарки

Тестирование проводилось в контролируемой среде браузера на MacBook Pro 2024 с чипом Apple M4. Результаты демонстрируют значительный прирост скорости по сравнению с альтернативами:

Сравнение Результат Примечание
LiteRT.js vs другие веб-рантаймы До 3x быстрее На CPU и GPU для CV и аудио моделей
GPU/NPU vs собственный CPU (LiteRT.js) Ускорение в 5–60x Для ресурсоемких задач: трекинг объектов, транскрипция
WebNN (NPU) Экспериментально Требует JSPI и поддержки браузера

Обратите внимание: цифра «10x», циркулирующая в некоторых источниках, не подтверждена официальным анонсом Google.

Управление памятью и интеграция

Важнейшая особенность LiteRT.js — ручное управление памятью. Библиотека не использует сборщик мусора для тензоров. Каждое создание объекта Tensor требует явного вызова метода .delete(). Пропуск этого шага приводит к утечке памяти устройства (device memory leak). В коде это выглядит так:

input.delete();
for (const t of results) t.delete();
cpuTensor.delete();

Для конвертации моделей из PyTorch используется LiteRT Torch (ai-edge-torch). Модель должна быть экспортируема через torch.export.export (TorchDynamo), без динамических размеров входных данных и условных ветвлений, зависящих от значений тензоров во время выполнения.

LiteRT.js против TensorFlow.js

Google позиционирует LiteRT.js не как полную замену, а как замену для Graph Models в TensorFlow.js. TF.js остается рекомендуемым инструментом для пред- и постобработки данных. Для взаимодействия между библиотеками существует пакет @litertjs/tfjs-interop, позволяющий передавать тензоры через runWithTfjsTensors. Использование tensor.dataSync на бэкенде WebGPU не рекомендуется из-за высоких накладных расходов.

Примеры использования

При запуске Google представил четыре демо-сценария:

  • Детекция объектов в реальном времени: Ultralytics YOLO26.
  • Глубина с веб-камеры: Depth-Anything-V2 для создания 3D-облака точек.
  • Апскейлинг изображений: Real-ESRGAN (локальная обработка без загрузки).
  • Семантический поиск: EmbeddingGemma для векторного поиска прямо в странице.

Источник: MarkTechPost ↗