LiteRT.js: быстрый AI-инференс в браузере от Google
Технический обзор · Июль 2026

LiteRT.js: высокопроизводительный
AI-инференс в браузере от Google

Google переносит свой нативный on-device ML-рантайм в браузер — до 3x быстрее TensorFlow.js с ускорением WebGPU. Практический обзор с примерами кода, бенчмарками и реальными сценариями использования.

Олег Максимов 16 июля 2026 14 мин чтения

Что такое LiteRT.js?

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 не просто запускает модели — он запускает их на правильном оборудовании. Архитектура предоставляет три бэкенда ускорения:

CPU — XNNPACK

Высокооптимизированная библиотека Google для CPU с многопоточностью и SIMD. Работает везде, плавно деградирует и всё равно в 2-3 раза быстрее JS-ядер.

🎮

GPU — ML Drift + WebGPU

Современное GPU-ускорение через WebGPU. Даёт ускорение в 5-60 раз для моделей зрения и аудио. Поддерживается в Chrome, Edge и Firefox.

🧠

NPU — WebNN (экспериментальный)

Нацелен на специализированные нейронные процессоры для энергоэффективного инференса. Экспериментально в Chrome и Edge (Apple Neural Engine и др.).

Рантайм автоматически выбирает лучший доступный бэкенд. Если WebGPU недоступен, используется WebAssembly с XNNPACK. Если браузер поддерживает WebNN и у устройства есть NPU — задействуется он для максимальной энергоэффективности.

Производительность: до 3x быстрее TensorFlow.js

Google протестировала LiteRT.js против существующих веб-решений на классических моделях компьютерного зрения и аудиообработки. Результаты впечатляют:

2-3x

Быстрее 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 недоступен.

Апскейл изображений с Real-ESRGAN

Одно из самых впечатляющих демо 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 обрабатывает его локально, и результат появляется через секунды.

Конвертация моделей PyTorch

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 открывает веб-приложения, которые раньше были возможны только в нативных приложениях. Вот самые перспективные сценарии:

Детекция объектов с YOLO

Ultralytics — создатели YOLO — встроили поддержку LiteRT напрямую в свой Python-пакет. Модели YOLO26 развёртываются на мобильных, edge-устройствах и в браузере буквально несколькими строками кода. Веб-демо показывает детекцию объектов с веб-камеры в реальном времени — полностью в браузере.

Оценка глубины

Демо Depth Anything показывает оценку глубины с одной камеры, работающую через LiteRT.js и WebGPU. Видеопоток с веб-камеры превращается в интерактивное 3D-облако точек в реальном времени — расчёт глубины и преобразование пикселей в 3D-пространство — всё в браузере.

Векторный поиск

Векторный поиск прямо в браузере — одно из самых интересных применений. Текст и изображения преобразуются в эмбеддинги на устройстве через LiteRT.js и EmbeddingGemma, после чего выполняется поиск по векторной близости — без отправки данных на сервер. Демо на CodePen.

Транскрибация аудио

Модели Whisper, конвертированные в .tflite, транскрибируют аудио в реальном времени на клиенте. Голосовые заметки, транскрипции встреч и функции доступности работают офлайн и с нулевой задержкой — идеально для PWA и Electron-приложений.

Сравнение: LiteRT.js vs TensorFlow.js

Если вы уже используете 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.

FAQ

Что такое LiteRT.js?
LiteRT.js — JavaScript-биндинг LiteRT, рантайма Google для on-device машинного обучения. Он запускает .tflite модели прямо в браузере с аппаратным ускорением через WebGPU, WebAssembly с XNNPACK для CPU и экспериментальной поддержкой WebNN для NPU.
Чем LiteRT.js отличается от TensorFlow.js?
LiteRT.js в 2-3 раза быстрее TensorFlow.js как на CPU, так и на GPU. Он использует нативный рантайм LiteRT через WebAssembly вместо JavaScript-ядер, что даёт доступ к XNNPACK, ML Drift и WebNN. TensorFlow.js остаётся полезным для обучения в браузере, но для инференса LiteRT.js значительно быстрее.
Какие модели можно запускать в LiteRT.js?
Любые .tflite модели: YOLO для детекции объектов, Depth-Anything-V2 для оценки глубины, Real-ESRGAN для апскейла изображений, Whisper для транскрибации аудио. PyTorch модели конвертируются в .tflite за один шаг через LiteRT Torch.
Поддерживает ли LiteRT.js WebGPU?
Да. LiteRT.js использует WebGPU через ML Drift — это даёт ускорение в 5-60 раз по сравнению с CPU. WebGPU поддерживается в Chrome, Edge и Firefox с совместимой видеокартой.
Можно ли использовать LiteRT.js в продакшене?
Да. LiteRT.js — стабильный релиз Google с npm-пакетом @litertjs/core и официальной документацией. Он основан на том же рантайме, что работает на миллиардах устройств. WebGPU стабилен; WebNN пока экспериментален.
Можно ли использовать LiteRT.js с PyTorch?
Да. LiteRT Torch конвертирует PyTorch в .tflite за один шаг. После конвертации и квантизации через AI Edge Quantizer модель готова к развёртыванию в браузере через LiteRT.js.
Стоит ли переходить с TensorFlow.js на LiteRT.js?
Если ваш проект использует TensorFlow.js только для инференса — да, переход на LiteRT.js даст 2-3x ускорение. Если вы используете TF.js для обучения или у вас сложный пайплайн — миграция не срочная. Библиотеки могут сосуществовать в одном проекте.

Стоит ли использовать LiteRT.js?

Если вы создаёте веб-приложение, которому нужен 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 или подобрать оптимальную архитектуру для вашей задачи. Бесплатная консультация.