MIL WebDNN

Fastest DNN Execution Framework on Web Browser

Get Started

About MIL WebDNN

Run Trained DNN Model on Web Browser

近年、ディープニューラルネットワーク(Deep neural network, DNN)が様々なタスクで著しい成果をあげ注目されていますが、 計算負荷の高さがアプリケーション応用の際の問題となっています。 ハードウェアアクセラレーションによる解決方法では、煩雑な計算環境セットアップ手順やハードウェアの価格等が問題となり、 ユーザーエンド端末に同様の環境を構築することは非常に困難です。

WebDNNはこの問題を解決するために作られた、ウェブブラウザを利用したインストールフリーなDNN実行環境です。 WebDNNにより、ウェブブラウザ上での実行を前提とした積極的な最適化が学習済みモデルに行われるため、 パラメータデータの配信サイズを小さく抑え、高速な実行が可能となります。既存のライブラリと比較して最大200倍の高速化が達成できます。

Inference-phase-specialized Optimization

DNNモデル計算グラフの最適化は、高速実行において非常に重要です。DNNの実行は学習フェーズと推論フェーズという、 2種類のフェーズに分けられます。学習フェーズでは学習に必要な中間データを保持しておく必要がありますが、推論フェーズでは これらのデータを保持しておく必要はありません。このように、推論フェーズに特化することでDNNフレームワークはより積極的な 計算グラフ最適化が可能となります。

WebDNNはユーザーエンドデバイスでの推論フェーズ実行に特化しており、学習済みモデルの積極的な最適化をサポートしています。 また、この最適化パイプラインは既存の様々なDNN学習フレームワークに対応しており、 学習に使用したソースコードを一切変更すること無く利用することができます。

Next Generation JavaScript API

JavaScriptで高速演算を行う上で、インタプリタ実行に起因するオーバーヘッドは深刻な問題となります。 この問題を解決するために、WebDNNはWebAssemblyで実装されたCPU演算バックエンドを提供しています。 このバックエンドは従来のJavaScriptと比較し、非常に小さなオーバーヘッドで実行することができます。

また、DNNの高速実行のためにはGPUの汎用目的での利用(GPGPU)が一般的となっていますが、 現状のJavaScript用GPU APIであるWebGLは画像処理用途に特化しており、汎用演算には適していませんでした。 WebDNNでは次世代のGPU API仕様であるWebGPUを利用し、GPUを利用した高速演算が可能となっています。 WebGPUは、GPUの汎用計算目的での利用を前提に設計されており、WebGLと比較してオーバーヘッドの少ない処理実行が可能となります。

Browser Compatibility

WebDNNは3種類の実行環境(バックエンド)を実装しています。 これらのバックエンドを組み合わせて用いることで、WebDNNは主要ブラウザのすべてで動作します。

WebGPU backend
すべての演算をGPUで行います。GPU APIにはWebGPUを使用しており、3種類の中で最も高速に動作します。ただし、 現在WebGPUをサポートしているブラウザはSafari Technology Preview版しかありません。
WebAssembly backend
すべての演算をCPUで行います。実装にはWebAssemblyを使用し、オーバーヘッドの少ない処理を可能にしています。 このバックエンドはKeras.js[1]の GPUモードと同等の速度で動作します。また、asm.jsと組み合わせることで、ほぼすべてのモダンなウェブブラウザで動作することができます。
Fallback backend
すべての演算をCPUで行います。実装はECMAScript3に準拠しており、今日の主要なウェブブラウザのほぼすべてで動作します。 ただし、このバックエンドは後方互換性のためだけに存在しており、速度面の考慮はされていません。

各ブラウザで利用可能なバックエンド一覧

Internet ExplorerEdgeSafariChromeFireFox
10 - 11WebAssembly/asm.js - 15WebAssembly/asm.jsTechnology PreviewWebGPU - 58WebAssembly/asm.js - 53WebAssembly/asm.js
- 10.1WebAssembly/asm.js
- 9Fallback

このブラウザで利用可能なバックエンド

WebGPUWebAssembly/asm.jsFallback
Not supportedSupportedSupported

Safari Technology PreviewのWebGPU APIはデフォルトでは無効化されています。有効化するには、メニューバーから「"Develop" > "Experimental Features" > "WebGPU"」を確認してください。

Benchmark

画像識別モデルのVGG16[2], Inception-v3[10], 及びResNet50[3]の実行速度を、Keras.jsと比較した結果を示します。 縦軸は画像一枚あたりの処理時間(対数スケール)を表しています。 すべての実行はMac Book Pro early 2015, Intel Core i5 2.7 GHz CPU, 16 GB Memory, Intel Iris Graphics 6100 GPUで行い、ウェブブラウザはSafari Technology Preview 30を使用しました。

Neural Style Transfer

このサンプルでは、DNNによる画風変換を行います。Neural Style Transfer[4]と呼ばれるこのモデルは、コンテンツ画像とスタイル画像という2種類の画像を入力とし、 スタイル画像の画風をコンテンツ画像へ適用した、新しい画像を生成します。

このサンプルで使用したモデルは、Chainer[5]で実装されており、[6]で配布されています。また、学習済みモデルのデータは[7]で配布されています。学習済みモデルはGraphTranspilerによってGraphDescriptorへとトランスパイルされ、DescriptorRunnerによって実行されています。すべての演算はウェブブラウザ上で行われており、画像の外部への送信等は一切行っていません。

ResNet50 Image Classification

このサンプルでは、画像識別モデルのResNet50を実行します。モデルはImageNet[8]データセットで学習されており、オリジナルの学習済みモデルは[9]で配布されています。すべての演算はウェブブラウザ上で行われており、画像の外部への送信等は一切行っていません。

References

  1. https://github.com/transcranial/keras-js
  2. K. Simonyan, and A. Zisserman, "Very Deep Convolutional Networks for Large-Scale Image Recognition", the International Conference on Learning Representations (ICLR), 2014.
  3. K. He, X. Zhang, S. Ren, and J. Sun, "Deep Residual Learning for Image Recognition", IEEE Conference on Computer Vision and Pattern Recognition (CVPR), 2015.
  4. J. Johnson, A. Alahi, and L. Fei-Fei, "Perceptual Losses for Real-time Style Transfer and Single Image Super-Resolution", International Conference on Machine Learning (ICML), 2015.
  5. https://github.com/pfnet/chainer
  6. https://github.com/yusuketomoto/chainer-fast-neuralstyle
  7. https://github.com/gafr/chainer-fast-neuralstyle-models
  8. J. Deng, W. Dong, R. Socher, L. Li, K. Li and L. Fei-Fei, "ImageNet: A Large-Scale Hierarchical Image Database", IEEE Conference on Computer Vision and Pattern Recognition (CVPR), 2009.
  9. https://github.com/KaimingHe/deep-residual-networks
  10. C. Szegedy, V. Vanhoucke, S. Ioffe, J. Shlens, Z and Wojna, "The IEEE Conference on Computer Vision and Pattern Recognition (CVPR)", The IEEE Conference on Computer Vision and Pattern Recognition (CVPR), 2016.