近日, 東京大學機器智慧實驗室(MIL)提出了web流覽器上運行最快的DNN框架。
在Web流覽器上運行經過訓練的DNN模型
現如今, 深度神經網路(DNN)在許多應用中得到越來越多的關注。 然而, 它需要大量的計算資源, 而且設置基於執行環境的硬體加速, 如GPGPU, 也是一項浩大的工程。 因此, 為終端使用者提供DNN應用是非常困難的。 而WebDNN通過使用Web流覽器作為無安裝的DNN執行框架可以解決這個問題。 該框架優化了經過訓練的DNN模型, 從而壓縮模型資料和加快執行速度, 並且它使用新穎的JavaScript API(諸如WebAssembly和WebGPU)來執行, 以實現零開銷(zero-overhead)執行。 而實證評估也顯示,
特定推理階段優化
為了實現更快的執行這一目標, 優化DNN模型的計算圖就顯得非常重要了。 DNN的執行由訓練階段和推理階段兩個階段組成。 訓練階段使用反向傳播技術更新參數。 推理階段對實際任務進行預測(僅僅是正向傳播)。 如果框架僅關注推理階段, 那它就可以更積極地優化計算圖。
WebDNN僅關注終端使用者設備上推理階段的執行, 並支持積極的優化。 這種優化管道可以應用於使用各種DNN框架進行訓練的模型, 而不需要編輯訓練代碼。
下一代JavaScript API
JavaScript是由解譯器執行的。 因此, 它需要計算開銷, 除此之外, 它還不能完全利用CPU的容量。 在GPU中也是如此。 現代Web流覽器是支持WebGL的, WebGL是一個使用GPU的JavaScript API。
而WebDNN使用下一代JavaScript API, 用於GPU執行的WebGPU和用於CPU執行的WebAssembly。 所有這些API都有助於顯示GPU和CPU的全部性能。
流覽器相容性
WebDNN支持3個執行後端實現:WebGPU, WebAssembly和Fallback純JavaScript實現。 通過使用這3個後端實現, WebDNN可以適用於所有主要的流覽器。
WebGPU後端
通過WebGPU API在GPU上進行計算。 這個後端是3個後端中最快的, 但目前WebGPU API僅支持於Safari Technology Preview中。
WebAssembly後端
通過WebAssembly API在CPU上進行計算。 這個後端要比Keras.js的GPU模式快得多。 通過與asm.js一起使用, 這個後端可以適用于大多數現代流覽器。
Fallback後端
通過ECMAScript3在CPU進行計算。 這個後端只是為了向後相容, 所以運行速度並不是那麼快。
流覽器相容性表
示例:在Safari技術預覽中, 預設情況下禁用WebGPUAPI。
基準測試
我們測量了VGG16和ResNet50的執行時間。 下圖顯示了與Keras.js進行對比的結果。 每個圖像的計算時間以垂直軸顯示為對數刻度。 所有的測試都是2015年初在Mac Book Pro運行的, 其配置為:英特爾內核 i5 2.7 GHz CPU、16 GB記憶體、Intel Iris Graphics 6100 GPU、網路流覽器是SafariTechnology Preview 30。
神經風格遷移
這個示例運行神經風格遷移模型。
我們使用的是A(https://github.com/yusuketomoto/chainer-fast-neuralstyle)中提供的chainer(https://github.com/pfnet/chainer)實現和B(https://github.com/gafr/chainer-fast-neuralstyle-models)中提供的預訓練模型。 預訓練模型由GraphTranspiler轉換成圖形描述符,
ResNet50圖像分類
在這個例子中, 你可以運行經ImageNet訓練後的ResNet50分類模型。 這裡(https://github.com/KaimingHe/deep-residual-networks)提供了原始的預訓練模型。 同樣, 所有計算都是通過Web流覽器完成的, 而不是由伺服器完成。
瞭解更多資訊, 請點擊https://mil-tokyo.github.io/webdnn/docs/