MobileDets: FLOPs不等於Latency,考量不同硬體的高效架構
關於深度學習模型可以說有兩個大方向:一個是不考慮運算量,追求最好的結果;另一個是在有限的運算量,追求足夠好的結果。明顯地,在應用端上後者尤其重要。
在這方面,2019年EfficientNet的推出可以說是移動端 (mobile or edge computing) 的一大突破。EfficientNet在MobileNet的基礎上,套用了MnasNet的NAS設計,推理了一系列可大可小的網路架構。而本文的主角MobileDets,可以說是延續著EfficientNet,全面且廣泛的研究成果。論文明確地指出了separable convolution在DSP與TPU上可能存在的FLOPs少不等於Latency低的問題,並且在實務上考量了DSP與TPU硬體邏輯的不同,推理了在不同硬體上真正可以帶來低latency的高效率網路架構。
文章難度:★★★☆☆
閱讀建議: 本篇文章主要介紹 MobileDets,一種考量硬體設計差異,以 NAS搜尋的網路設計。文章內會先討論 FLOPs的計算與 latency的關係。再介紹 mobile computing的網路設計方法與MobileDets。本篇主角 MobileDets帶有經典的 Google研究風格,簡單卻又精神,十分推薦閱讀。
推薦背景知識:object detection, MobileNet, residual network, depthwise separable convolution, inverted bottleneck, NAS, EfficientNet.
FLOPs與Latency的關係
FLOPs是floating point operations的縮寫,也就是浮點數運算的量。在追求移動端 (mobile or edge computing) 網路時,透過FLOPs數估算網路運算量是一個常見的做法。然而,我們實際在乎的並不是FLOPs數,而是網路在硬體上運行的時間 (inference time or latency)。
計算FLOPs
不論如何,還是來看一下FLOPs的計算。稍後談在討論FLOPs與latency是否是完全正相關。
最簡單也是最常見計算FLOPs的方法是:
- 計算乘法與加法的數量總和。
- 忽略batch normalization與activation function的運算量。
假設今天要計算一個標準的convolution layer的FLOPs數,convolution kernel大小為K
,strides為1
,輸入的解析度 (H_1, W_1)
、channel (filter) 數 C_1
,輸出的解析度(H_2, W_2)
、channel數C_2
…