GoogleがTensorFlow.jsを事実上終了 (LiteRT.jsの登場)

BBetter Stack
컴퓨터/소프트웨어게임/e스포츠AI/미래기술

스크립트

00:00:00Googleが、ブラウザ上で機械学習やAIモデルを実行できる
00:00:05ネイティブに近い速度で動作する新しいランタイムライブラリ「LiteRT.js」をリリースしました。非常に素晴らしいものです。
00:00:12今回の動画では、LiteRT.jsの仕組みを確認し、実際にテストとして
00:00:18完全にブラウザ内で動作するリアルタイム3Dモーションキャプチャアプリを構築してみます。
00:00:24とても楽しみですね。それでは詳しく見ていきましょう。では、LiteRT.jsとは一体何なのでしょうか?これはJavaScriptバインディングです。
00:00:36AndroidやiOS、組み込みハードウェアで長年モデルを実行してきた
00:00:42デバイス上推論ランタイム「LiteRT」が、WebAssemblyを通じてブラウザ上で動くようになったものです。
00:00:50LiteRT.jsの中核となるnpmパッケージにより実現しました。TensorFlow.jsとは何が違うのかというと、
00:00:58Googleには以前からブラウザ向け機械学習ライブラリ「TensorFlow.js」がありましたが、
00:01:04TensorFlow.jsはJavaScriptベースのカーネルで実行されており、これが大きなボトルネックとなっていました。
00:01:11JavaScriptカーネルは、ネイティブランタイムのようにCPUやGPUをフル活用できません。そのためTensorFlow.jsは
00:01:19ネイティブアプリの性能に遅れをとっていました。しかしLiteRT.jsはWebAssemblyを使用し、最適化された独自のカーネルを搭載しています。
00:01:27AndroidやiOSでの推論を支えるネイティブランタイムがそのままWASMにコンパイルされ、
00:01:34LiteRT.jsに公開されています。つまりWeb向けの抽象化層ではなく、
00:01:40真に最適化されたランタイムエンジンが得られるのです。バックエンドアーキテクチャも優れています。LiteRT.jsは
00:01:47CPU、GPU、さらにはNPUでも高いパフォーマンスを発揮できるよう3つの階層を持っています。CPU側では、
00:01:55Googleの最適化CPUカーネルライブラリ「XNNPack」を使用しており、マルチスレッドやSIMDサポートに対応しています。
00:02:04これはGPUなしでも動作するユニバーサルなフォールバックとなります。GPUに関しては、
00:02:11WebGPU上の「ML Drift」を利用します。ここが真の性能を発揮する場所です。ネイティブGPU
00:02:18カーネルを活用するため、シェーダーなどがJavaScriptによる処理に依存しません。また
00:02:24NPU向けには、ChromeやEdgeで実験段階の「WebNN」があり、電力効率に優れた推論向けハードウェアを
00:02:31標的としています。Google自身のベンチマークによると、
00:02:37M4チップ搭載の2024年型MacBook Proにおいて、他のWebランタイムよりCPUおよびGPUで推論が3倍高速であり、
00:02:45ビジョンやオーディオモデルでその効果が見られます。物体追跡や音声文字起こし、
00:02:53画像操作といったワークロードをCPUではなくGPUやNPUで実行すると、
00:03:00タスクによっては5倍から最大60倍ものパフォーマンス向上が見られました。
00:03:07もちろんこれはベストケースのシナリオです。Googleも
00:03:13認めているように、使用するGPUや
00:03:18サーマルスロットリング、ドライバの質によって結果は異なります。このランタイムで重要な点がもう一つあります。
00:03:24PyTorchやTensorFlowで既にモデルを利用している場合、既存の
00:03:30TF Liteファイルがあれば、LiteRT.jsはそれを直接実行できます。PyTorchユーザーに対しても「LiteRT Torch」という
00:03:38モデルを直接.TF Liteに変換する経路が用意されています。さらに、AI Edge
00:03:44量子化ツールもあり、フル書き直しなしでモデルサイズを縮小できます。これまでTensorFlow.jsで使っていたレガシーなワークフローも、
00:03:50新しいLiteRT.jsに簡単に移行できるのは素晴らしいですね。では何が
00:03:58実際にできるのか?Googleは様々な素晴らしいデモを公開しており、
00:04:03可能性を実感できます。リアルタイムのYOLO物体検出、単眼深度推定などが可能です。
00:04:09「Depth Anything」ライブラリを使えば、Webカメラ映像をリアルタイム3D点群に変換できます。さらに画像
00:04:16アップスケーリングも「Real-ESRGAN」ライブラリで可能です。これらすべてのデモが完全にクライアントサイドで動作しており、
00:04:23バックエンドやAPIを必要とせず、ブラウザ内で直接実行されます。そして次の展開も発表されました。
00:04:29「LiteRT.LM.js」です。これにより、ブラウザ上で大規模言語モデルがローカル動作するようになります。
00:04:36つまりコンピュータビジョンだけでなく、ローカルでのLLM推論も可能になるのです。
00:04:42さて、素晴らしいことばかりですが、実際にどれほどパワフルなのか自分で試してみたくなりました。
00:04:48そこで今回は、Webカメラを使ったリアルタイムのポーズ推定を行う
00:04:55モーションキャプチャアプリを構築しました。完全にブラウザのクライアントサイドで、オフラインかつ
00:05:03制限なしで動作します。新しい「Fable 5」モデルを使ってCloud Code上でコーディングしました。最終結果がこちらです。
00:05:10ちなみに、このリポジトリをダウンロードして自分で試してみたい方のために、リンクを
00:05:15下の説明欄に追加しました。LiteRT.JSがブラウザ上でBlazePoseモデルを使用して、
00:05:2333個のボディランドマークを検出し、Three.jsを用いてリアルタイムで3Dキャラを動かしています。バックエンドサーバーはなく、
00:05:31すべてがこのマシン上で、完全にオフラインで処理されています。ご覧の通り、
00:05:38CPUでは推論時間23.3ミリ秒、平均38 FPS程度です。ポーズ推定が
00:05:47少し遅延しているのがわかります。しかし、WebGPUバージョンに切り替えると、
00:05:54安定して120 FPSに達し、推論時間は8.4ミリ秒になります。ポーズ推定の
00:06:02追従も速くなりました。フレームレートで約3倍、推論時間で2.8倍の改善となり、
00:06:10Googleの公開数値とおおむね一致しています(彼らの発表の中では控えめな方ですが)。BlazePoseは
00:06:16比較的小さなモデルなのでGPUの負荷はそれほど大きくありませんが、
00:06:23それでもTensorの計算をCPUからWebGPUに移すだけで、レイテンシが大幅に削減されます。
00:06:30ポーズキャプチャを記録し、JSONやBVHファイルとして書き出す機能も追加しました。
00:06:36Blenderなどで読み込み、独自のキャラクターにリターゲットすることも可能です。ご覧の通り、
00:06:44完璧とは言えません。動きはまだ粗削りですし、
00:06:49発展途上の段階です。しかし、この初期バージョンをたった10分で構築できたことは、
00:06:56新しいLiteRT.jsの凄さを物語っています。
00:07:01以上、LiteRT.jsの概要でした。WebAssemblyがブラウザでの複雑な
00:07:08アプリケーション動作の可能性をどこまで広げたか、正直驚かされます。
00:07:14この新しいLiteRT.jsライブラリは、JavaScriptが時にネイティブに近い性能への
00:07:21ボトルネックになることを証明しました。このライブラリには非常に感銘を受けており、
00:07:27今年後半の正式リリースが待ちきれません。皆さんはLiteRT.jsについてどう思いますか?試しましたか?使ってみたいですか?
00:07:35ぜひコメントで教えてください。それでは皆さん、
00:07:40このような技術解説がお好きでしたら、高評価ボタンを押して知らせていただけると嬉しいです。
00:07:45また、チャンネル登録も忘れずにお願いします。BetterStackのAndresでした。
00:07:50また次回の動画でお会いしましょう。

핵심 요약

LiteRT.jsはWebAssemblyとWebGPUへの最適化により、ブラウザ上の機械学習推論速度を最大60倍高速化し、従来のTensorFlow.jsが抱えていたパフォーマンスのボトルネックを解消する。

하이라이트

  • GoogleがリリースしたLiteRT.jsは、WebAssemblyを介してブラウザ上でネイティブに近い速度の推論を実現するランタイムライブラリである。

  • TensorFlow.jsと比較して、WebGPUを利用することで推論パフォーマンスが最大60倍向上する可能性がある。

  • CPU推論ではXNNPackライブラリを活用し、マルチスレッドとSIMDサポートにより高い効率を維持する。

  • 2024年型MacBook Pro (M4チップ) におけるテストでは、既存のWebランタイムと比較してCPU/GPU推論が3倍高速である。

  • 既存の.tfliteモデルをそのまま実行可能なほか、LiteRT Torchを通じたPyTorchモデルの変換もサポートしている。

  • ブラウザ上で大規模言語モデルをローカル実行するLiteRT.LM.jsの展開も発表されている。

타임라인

LiteRT.jsの概要とTensorFlow.jsとの違い

  • LiteRT.jsはAndroidやiOSで利用されてきたネイティブ推論エンジンをWebAssembly経由でブラウザへ移植したものである。
  • 従来のTensorFlow.jsはJavaScriptベースのカーネルに依存しており、ハードウェアリソースをフル活用できない制約があった。
  • LiteRT.jsはネイティブランタイムを直接WASMにコンパイルすることで、最適化されたエンジンを提供している。

JavaScriptカーネルの限界を回避するため、ネイティブアプリ開発で使われるランタイムをWeb向けに転用している。このアプローチにより、ブラウザ上での抽象化層を最小限に抑え、ハードウェア性能を直接引き出す設計となっている。

推論エンジンとハードウェアアクセラレーション

  • CPU実行時はXNNPackライブラリを使用し、マルチスレッドとSIMDによる最適化を行う。
  • GPU実行時はWebGPU上のML Driftを介して、シェーダー処理をJavaScriptから分離している。
  • 実験段階のWebNNを利用することで、NPUをターゲットとした電力効率の高い推論が可能である。

CPU、GPU、NPUの3層構造により、デバイスの性能に合わせた最適な推論環境を構築している。特にWebGPUの活用は性能の飛躍的向上に寄与しており、タスクによっては最大60倍の高速化を達成する。

既存モデルの活用と実運用デモ

  • 既存の.tfliteモデルを直接読み込めるため、レガシーなワークフローからの移行が容易である。
  • ポーズ推定モデルを用いた実証テストでは、CPU推論と比べてWebGPUでのFPSが3倍向上した。
  • Webカメラによる3Dモーションキャプチャを、サーバー通信なしの完全ローカル環境でリアルタイム処理できた。

BlazePoseモデルを用いた検証では、CPUで38 FPSだった処理がWebGPU環境へ切り替えることで120 FPSまで向上した。これにより、サーバーコストをかけずにブラウザ内で高度なAIアプリケーションを完結させる手段として実用性が証明されている。

커뮤니티 글

모든 글 보기