WebAssembly版のTensorFlow.jsが登場、Webブラウザでの推論処理を10倍以上高速に実行
Googleがオープンソースで公開している機械学習ライブラリTensorFlowの1つとして、Webブラウザ上で機械学習のモデルの構築、学習、学習済みモデルによる推論の実行などが可能になるJavaScriptライブラリ「TensorFlow.js」があります。
TensorFlow開発チームは、このTensorFlow.jsの内部で行われている処理をWebAssemblyで実装した「WebAssembly backend for TensorFlow.js」のアルファ版を発表しました。
We’re excited to release the Alpha of our WebAssembly backend for TensorFlow.js!
— TensorFlow (@TensorFlow) December 20, 2019
WASM has wider device support and better numerical stability while getting competitive with WebGL for smaller models.
Share your feedback here → https://t.co/PqwNOGDRKZ pic.twitter.com/f5NthyUcHe
WebAssemblyは、Webブラウザ上でネイティブコードに近い実行速度で実行されるバイナリフォーマット。すでにChromeやFirefoxなど主要なWebブラウザでサポートされています。
ベンチマークを見ると、WebAssemblyによる実装の効果は劇的ともいえます。上記ツイートに含まれる画像は、学習済みモデルを用いた顔認識の推論処理にかかる時間を示したもの。
黄色いマーカーが示すJavaScriptの実行時間に対して、青いマーカーが示すWebAssembly版の実行時間はほとんどのケースで10分の1以下に収まっています。
赤いマーカーが示すWebGLを用いた推論処理と比較すると、モバイルデバイスではWebAssembly版の方が遅い結果にはなっていますが、PCやMacではWebAssembly版の方が高速になっています。それぞれの速度差はそれほど大きくなく、一方で必ずしもWebGLが使えるデバイスばかりではないことを考えると、幅広いデバイスで利用可能なWebAssembly版の高速な実行結果は大いに意味があるといえるでしょう。
GitHubのドキュメントに記されたFAQでも、WebAssembly版はJavaScript版と比べてすべてのデバイスでの実行においてあらゆるモデルで高速であり、しかもWebGL版と比較して安定した数値計算の実現と幅広いデバイスをサポートするため、あらゆる場面でWebAssembly版の実行を優先するべきだろうと説明しています。
現時点で開発チームは学習処理の実装よりも推論処理の高速化にフォーカスしているとのこと。Webブラウザでの推論処理が高速になっていくのであれば、今後はWebアプリケーションにおいても機械学習を用いた推論処理が広まっていくのかもしれません。
あわせて読みたい
- Webブラウザ版VSCode、WebAssembly版PythonによるWeb上でのPythonコードの実行やデバッグが可能に
- WebAssemblyとWebGPUを用い、Webブラウザ上でStable Diffusion Turbo全体を高速実行可能な推論エンジン「ONNX Runtime Web 1.17」マイクロソフトから登場
- Web版VSCodeがDockerコンテナをWASM環境で起動、Webブラウザ内ローカルマシンとして利用可能に。拡張機能「vscode-container-wasm」登場
- Webアプリ版Photoshopを実現させた最新Web技術をGoogleが紹介。WebAssemblyのスレッドによる高速化、ストリーミングコンパイル、Web Componentsなど
この1年、Publickeyのどの記事がたくさん読まれたのか? 2019年総合ランキング発表
≪前の記事
AWS、オープンソースベンダのライセンス変更による商用サービスの制限は「顧客を見ていない」と反論