MobileDets: FLOPs不等於Latency,考量不同硬體的高效架構

Jia-Yau Shiau
AI Blog TW
Published in
20 min readOct 26, 2020

--

關於深度學習模型可以說有兩個大方向:一個是不考慮運算量,追求最好的結果;另一個是在有限的運算量,追求足夠好的結果。明顯地,在應用端上後者尤其重要。

在這方面,2019年EfficientNet的推出可以說是移動端 (mobile or edge computing) 的一大突破。EfficientNet在MobileNet的基礎上,套用了MnasNet的NAS設計,推理了一系列可大可小的網路架構。而本文的主角MobileDets,可以說是延續著EfficientNet,全面且廣泛的研究成果。論文明確地指出了separable convolution在DSP與TPU上可能存在的FLOPs少不等於Latency低的問題,並且在實務上考量了DSP與TPU硬體邏輯的不同,推理了在不同硬體上真正可以帶來低latency的高效率網路架構。

Article cover with Canva (圖片來源1, 2, 3)

文章難度:★★★☆☆
閱讀建議: 本篇文章主要介紹 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

--

--