Google переносит свой нативный on-device ML-рантайм в браузер — до 3x быстрее TensorFlow.js с ускорением WebGPU. Практический обзор с примерами кода, бенчмарками и реальными сценариями использования.
9 июля 2026 года Google анонсировала LiteRT.js — JavaScript-биндинг LiteRT, своего проверенного рантайма для on-device инференса, который работает на миллиардах Android, iOS и десктопных устройств. LiteRT.js переносит этот же рантайм в веб-браузер, позволяя JavaScript-разработчикам запускать ML и AI модели с максимальной производительностью полностью на стороне клиента.
Ключевое отличие от предыдущих решений: TensorFlow.js использовал JavaScript-ядра для выполнения моделей, которые принципиально медленнее нативного кода. LiteRT.js компилирует весь рантайм LiteRT — со всеми его оптимизациями — в WebAssembly, делая его доступным напрямую в браузере без серверных зависимостей.
Результат: нулевые затраты на сервер, приватность данных пользователя и сверхнизкая задержка для AI-приложений реального времени. Если у вас уже есть .tflite модели, LiteRT.js делает их развёртывание в браузере максимально простым — мощная эволюция TensorFlow.js для инференса моделей.
LiteRT.js не просто запускает модели — он запускает их на правильном оборудовании. Архитектура предоставляет три бэкенда ускорения:
Высокооптимизированная библиотека Google для CPU с многопоточностью и SIMD. Работает везде, плавно деградирует и всё равно в 2-3 раза быстрее JS-ядер.
Современное GPU-ускорение через WebGPU. Даёт ускорение в 5-60 раз для моделей зрения и аудио. Поддерживается в Chrome, Edge и Firefox.
Нацелен на специализированные нейронные процессоры для энергоэффективного инференса. Экспериментально в Chrome и Edge (Apple Neural Engine и др.).
Рантайм автоматически выбирает лучший доступный бэкенд. Если WebGPU недоступен, используется WebAssembly с XNNPACK. Если браузер поддерживает WebNN и у устройства есть NPU — задействуется он для максимальной энергоэффективности.
Google протестировала LiteRT.js против существующих веб-решений на классических моделях компьютерного зрения и аудиообработки. Результаты впечатляют:
Быстрее TensorFlow.js как на CPU, так и на GPU
Тестирование на Apple MacBook Pro M4 2024 — результаты могут отличаться в зависимости от GPU, троттлинга и оптимизации драйверов.
Для требовательных приложений реального времени — трекинг объектов, транскрибация аудио, обработка изображений — использование GPU или NPU через WebGPU или WebNN даёт ускорение в 5-60 раз по сравнению с CPU.
| Модель | CPU (XNNPACK) | WebGPU | WebNN (CoreML) |
|---|---|---|---|
| MobileNet v3 | ~4 мс | ~1 мс | ~0.5 мс |
| YOLOv8n | ~15 мс | ~3 мс | ~2 мс |
| DeepLab v3 | ~40 мс | ~8 мс | ~5 мс |
| Real-ESRGAN (4x) | ~200 мс | ~35 мс | ~25 мс |
| Whisper Tiny | ~80 мс | ~12 мс | ~8 мс |
LiteRT.js распространяется как npm-пакет @litertjs/core. Установка в проект:
npm install @litertjs/core
API — современный JavaScript. Минимальный пример загрузки и запуска модели:
import { LitertRuntime, LitertTensor } from '@litertjs/core';
// Инициализируем рантайм с WebGPU-ускорением
const runtime = await LitertRuntime.create({
backends: ['webgpu', 'wasm'], // сначала GPU, запасной — CPU
});
// Загружаем .tflite модель
const model = await runtime.loadModel('/models/mobilenet-v3.tflite');
// Создаём входной тензор
const input = new LitertTensor('float32', [1, 224, 224, 3]);
input.setData(imageData);
// Запускаем инференс
const output = await model.invoke(input);
// Читаем результаты
const predictions = output.getData();
console.log('Топ-класс:', predictions.indexOf(Math.max(...predictions)));
Рантайм сам выбирает бэкенд. Если передать backends: ['webgpu', 'wasm'],
он попробует WebGPU и упадёт на WebAssembly с XNNPACK, если WebGPU недоступен.
Одно из самых впечатляющих демо LiteRT.js — увеличение изображений в 4 раза в реальном времени через Real-ESRGAN. Модель обрабатывает патчи 128x128, превращая их в 512x512:
import { LitertRuntime } from '@litertjs/core';
const runtime = await LitertRuntime.create({ backends: ['webgpu'] });
const model = await runtime.loadModel('/models/realesrgan-4x.tflite');
async function upscaleImage(imageData, width, height) {
const outputCanvas = document.createElement('canvas');
outputCanvas.width = width * 4;
outputCanvas.height = height * 4;
// Обрабатываем патчами 128x128
for (let y = 0; y < height; y += 128) {
for (let x = 0; x < width; x += 128) {
const patch = extractPatch(imageData, x, y, 128, 128, width);
const input = tensorFromImage(patch, 128, 128);
const result = await model.invoke(input);
renderPatch(outputCanvas, result, x * 4, y * 4);
}
}
return outputCanvas;
}
Всё работает полностью в браузере — без загрузки на сервер, без аренды GPU, без API-ключей. Пользователь загружает изображение, LiteRT.js обрабатывает его локально, и результат появляется через секунды.
LiteRT.js не ограничивается моделями TensorFlow/Keras. С LiteRT Torch (ai-edge-torch) модели PyTorch конвертируются в .tflite за один шаг:
import torch
import ai_edge_torch
# Загружаем модель PyTorch
model = torch.load('yolov8n.pt')
model.eval()
# Конвертируем в .tflite одним шагом
example_input = torch.randn(1, 3, 640, 640)
edge_model = ai_edge_torch.convert(model, example_input)
# Сохраняем для браузера
edge_model.export('yolov8n.tflite')
Для дальнейшей оптимизации AI Edge Quantizer позволяет настраивать схемы квантизации для разных слоёв модели — уменьшая размер в 4 раза при сохранении качества.
LiteRT.js открывает веб-приложения, которые раньше были возможны только в нативных приложениях. Вот самые перспективные сценарии:
Ultralytics — создатели YOLO — встроили поддержку LiteRT напрямую в свой Python-пакет. Модели YOLO26 развёртываются на мобильных, edge-устройствах и в браузере буквально несколькими строками кода. Веб-демо показывает детекцию объектов с веб-камеры в реальном времени — полностью в браузере.
Демо Depth Anything показывает оценку глубины с одной камеры, работающую через LiteRT.js и WebGPU. Видеопоток с веб-камеры превращается в интерактивное 3D-облако точек в реальном времени — расчёт глубины и преобразование пикселей в 3D-пространство — всё в браузере.
Векторный поиск прямо в браузере — одно из самых интересных применений. Текст и изображения преобразуются в эмбеддинги на устройстве через LiteRT.js и EmbeddingGemma, после чего выполняется поиск по векторной близости — без отправки данных на сервер. Демо на CodePen.
Модели Whisper, конвертированные в .tflite, транскрибируют аудио в реальном времени на клиенте. Голосовые заметки, транскрипции встреч и функции доступности работают офлайн и с нулевой задержкой — идеально для PWA и Electron-приложений.
Если вы уже используете TensorFlow.js, вот честное сравнение:
| Характеристика | LiteRT.js | TensorFlow.js |
|---|---|---|
| Скорость инференса | В 2-3x быстрее ★ | База (JS-ядра) |
| Формат моделей | .tflite | TF.js model, .tflite (ограниченно) |
| Поддержка PyTorch | LiteRT Torch (один шаг) ★ | Через ONNX |
| Ускорение GPU | WebGPU (ML Drift) ★ | WebGL (ограниченно) |
| NPU / WebNN | Экспериментально ★ | Не поддерживается |
| Обучение в браузере | Не поддерживается | Поддерживается ★ |
| Размер моделей | Меньше (квантизация) ★ | Больше |
| Зрелость экосистемы | Новая (июль 2026) | Зрелая (6+ лет) ★ |
| Документация | Хорошая, растёт | Отличная ★ |
Итог: Если вы запускаете инференс на существующих .tflite моделях — LiteRT.js строго лучше: быстрее, компактнее, лучше аппаратная поддержка. Если вам нужно обучать модели в браузере или у вас работающий пайплайн TensorFlow.js — нет срочной нужды мигрировать. Пользователи TensorFlow.js могут постепенно внедрять LiteRT.js для инференса, оставив TF.js для обучения — они сосуществуют в одном проекте.
LiteRT.js впечатляет, но это не серебряная пуля:
Совет по производительности: Для продакшена предварительно компилируйте .tflite модели с XNNPACK-квантизацией на этапе сборки. Это уменьшает размер модели в ~4 раза и ускоряет инференс на 30-50% по сравнению с рантайм-квантизацией. Инструмент CLI litert_quantize доступен в LiteRT SDK.
Если вы создаёте веб-приложение, которому нужен on-device AI — распознавание изображений, детекция объектов, обработка аудио или анализ текста — LiteRT.js сейчас лучший вариант для инференса в браузере. Он быстрее TensorFlow.js, лучше использует аппаратное ускорение и опирается на зрелую экосистему LiteRT от Google.
Лучшее время для внедрения — сейчас. Библиотека стабильна, npm-пакет опубликован, экосистема предобученных .tflite моделей быстро растёт (Kaggle, Hugging Face). Поддержка WebGPU в основных браузерах означает, что большинство пользователей получат GPU-ускорение без дополнительной настройки. Для языковых AI-функций — суммаризации, классификации и модерации контента — LiteRT.js можно дополнить Chrome Prompt API, встроенным браузерным AI от Google для задач с естественным языком.
В планах Google — развитие интеграции WebNN для нативной производительности NPU и оптимизированная поддержка генеративного AI на устройстве (через LiteRT-LM.js для LLM). Тренд очевиден: всё больше AI переходит на клиентскую сторону, и LiteRT.js — инструмент, который открывает эту возможность веб-разработчикам.
Работаете над приложением, которому нужен on-device AI? Я помогу интегрировать LiteRT.js или подобрать оптимальную архитектуру для вашей задачи. Бесплатная консультация.