We’re excited to release the Alpha of our WebAssembly backend for TensorFlow.js!
WASM has wider device support and better numerical stability while getting competitive with WebGL for smaller models.
Share your feedback here → https://goo.gle/2PGiNBq
WebAssembly版のTensorFlow.jsが登場、Webブラウザでの推論処理を10倍以上高速に実行
Googleがオープンソースで公開している機械学習ライブラリTensorFlowの1つとして、Webブラウザ上で機械学習のモデルの構築、学習、学習済みモデルによる推論の実行などが可能になるJavaScriptライブラリ「TensorFlow.js」があります。
TensorFlow開発チームは、このTensorFlow.jsの内部で行われている処理をWebAssemblyで実装した「WebAssembly backend for TensorFlow.js」のアルファ版を発表しました。
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アプリケーションにおいても機械学習を用いた推論処理が広まっていくのかもしれません。
あわせてお読みください
- 主要ブラウザで実行可能なバイナリ形式「WebAssembly」の開発がスタート。Chrome、WebKit、Firefox、Microsoft Edge、LLVM、Unityらがサポートを相次いで表明
- Go言語がWebAssemblyをサポートへ。GOARCHは「wasm」、GOOSは「js」に
- Rust言語、asm.jsやWebAssemblyをサポートへ。WebブラウザやNode.jsで実行可能に
- WebAssembly対応、主要ブラウザChrome/Firefox/Edge/Safariで整う。Webアプリの開発言語としてJavaScript以外の選択肢は広がるか?
- カテゴリ 開発ツール / 言語 / プログラミング
- タグ JavaScript, TensorFlow, WebAssembly