LiteRT.js は、オンデバイス推論ランタイム LiteRT の JavaScript バインディングである。Web アプリから .tflite モデルをブラウザ内でローカル実行でき、プライバシー保護、サーバ費用の回避、リアルタイム向けの低遅延を狙う。.tflite 実行における TensorFlow.js からの進化として位置づけられ、JavaScript 実装のカーネルではなく、WebAssembly 経由でネイティブ寄りのクロスプラットフォーム・ランタイムを利用する。

主なポイントは次のとおり。

  • パッケージは @litertjs/core(npm)
  • 変換: LiteRT Torch で PyTorch モデルを一段変換できる。AI Edge Quantizer で層ごとの量子化も設定できる
  • アクセラレータ: CPU は XNNPACK(マルチスレッド、relaxed SIMD)、GPU は ML Drift 経由の WebGPU、NPU は実験的な WebNN(Chrome / Edge)
  • 古典的な CV・音声モデルでは、既存の Web ランタイム比で最大約 3 倍の高速化を示す。同一環境での CPU(XNNPACK)に対し、WebGPU / WebNN は約 5〜60 倍になるケースもある(2024 年の Apple MacBook Pro、M4、管理されたブラウザ環境)
  • Ultralytics YOLO 向けに公式の LiteRT エクスポートが Python パッケージへ組み込まれた。Depth Anything(WebGPU による単眼深度推定)や Real-ESRGAN(ブラウザ内 4 倍アップスケール)などのデモもある
  • 今後は WebNN 統合の深化とオンデバイス生成 AI、LLM 向けの LiteRT-LM.js がロードマップに挙がる

GPU 加速でモデルを読み込み、推論する最小例は次のとおり。

javascript
import { loadLiteRt, loadAndCompile, Tensor } from '@litertjs/core';

await loadLiteRt('path/to/wasm/directory/');

const model = await loadAndCompile('path/to/your/model.tflite', {
  accelerator: 'webgpu',
});

const inputTypedArray = new Float32Array(1 * 3 * 244 * 244);
const inputTensor = new Tensor(inputTypedArray, [1, 3, 244, 244]);
const results = await model.run(inputTensor);
const resultArray = (await results[0].moveTo('wasm')).toTypedArray();

#参考文献