天天看點

SysML 2019論文解讀:推理優化

聲明:本文的所有圖檔和公式都來自于原論文。

引言

随着機器學習和人工智能領域的持續發展,神經網絡及其代表性的算法通過提升計算成本而實作了越來越高的準确度。量化(quantization)是一種以準确度為代價旨在降低計算成本的方法。為了在盡可能小地損失準确度的同時盡可能多地減少計算,研究者們已經提出了多種不同的量化方案。

通常來說,量化可用在兩個地方,即神經網絡的權重和激活。在學習機器學習時,這一類工作往往會被忽視,但如果考慮到實用性,這又非常重要。是以,我決定解讀這篇論文。

為了單獨實作各個權重和激活的量化,進而得到整體的

量化神經網絡

(QNN),這篇論文提出了一些新技術。其中用于激活量化的技術為「PArameterized Clipping acTivation(PACT)」,用于權重量化的技術則為「Statistics-Aware Weight Binning(SAWB)」。

這篇論文聲稱,組合使用 PACT 與 SAWB 可以得到一種二位量化神經網絡(2-bit QNN),其分類準确度在一些常見的模型和資料集上能達到目前最佳水準。

量化研究

簡單來說,量化是指降低表示一個數值的位數的過程。在機器學習領域,之前研究主要使用的數值格式是 32 位浮點數,或根據 CPU 不同甚至還會使用 64 位(雖然實際中不會有人用這麼多 bits 來訓練網絡)。

但是,為了實作機器學習模型的實際部署,有必要降低模型所需的帶寬和計算量。這有助于降低計算成本和功耗,并提升速度。很多研究結果已經表明,使用 8 位整型數表示權重和激活不會顯著影響準确度。

參數化截略式激活(PACT)

激活量化

卷積神經網絡(CNN)常使用 ReLU 作為

激活函數

。ReLU 的困難之處在于其輸出沒有限界,這意味着量化需要較大的輸出範圍(即更大的位寬)。當目标位寬有限時,這就成問題了。圖 1 給出了使用

ReLU

的 ResNet10 在 CIFAR10 資料集上的訓練和驗證誤差;當 ReLU 激活被量化為 2 位時,準确度明顯下降。

SysML 2019論文解讀:推理優化

圖 1:當使用 ReLU 或截略函數的 CIFAR10 ResNet10 的激活被量化到 2 位時,模型的訓練誤差(左)和驗證誤差(右)

截略(clipping)是一種為解決大輸出範圍問題而開發的方法。其會在輸出激活的幅度上加一個上界。我們也可以在圖 1 中看到網絡使用了截略方法時的訓練和驗證誤差。這個誤差比沒使用截略時更低,但這是不可接受的。這就引出了這篇論文的貢獻。

PACT 技術基于以上見解,這是一種使用了一個參數化元素的截略方法。現在,激活函數有一個參數化的截略水準 α。α 可在訓練階段通過随機梯度下降(

SGD

)進行動态調整,以最小化準确度下降。PACT ReLU 輸出的形式化定義如下:

SysML 2019論文解讀:推理優化

α 将激活函數的輸出範圍限制到了 [0, α]。本質上講,這隻是為損失函數的優化引入一個新參數 α,并在反向傳播步驟中選出 α 的最優值。圖 2 給出了帶有參數化截略的 PACT 激活函數。随着 α→∞,該函數會向 ReLU 函數收斂。是以,α 讓人可根據實際情況靈活地調整輸出範圍。

SysML 2019論文解讀:推理優化

圖 2:PACT 激活函數及其梯度

如前所述,α 的值可通過 SGD 更新。設 L 為損失函數,y 為網絡的輸出。在每次疊代時,α 遵循以下更新規則:

  1. 如果 x ≤ α,則 PACT 的行為類似正常 ReLU,α 不更新。
  2. 如果 x > α,則 α 通過以下公式使用 SGD 更新。
SysML 2019論文解讀:推理優化

其中 η 是學習率。∂L/∂α = ∂L/∂y 的原因是 ∂L/∂y = 1(參見圖 2)。

注意,這裡一個網絡僅有一個 α。也就是說,PACT 會整體考慮所有輸出神經元并更改 α 參數。所得到的 PACT 的訓練和驗證誤差如圖 3 所示。可以看到,PACT 的誤差會收斂到使用正常 ReLU 的網絡的誤差。

SysML 2019論文解讀:推理優化

圖 3:使用 PACT 的 CIFAR10 ResNet20 的訓練誤差(a)和驗證誤差(b)。注意,PACT 的收斂曲線緊随 ReLU。

截略誤差與量化誤差的平衡

如前所見,參數化截略式 ReLU 函數的表現仍可比肩正常的不限界的 ReLU 函數。較大的 α 可得到較大的輸出範圍,但需要量化的比特也更多。是以,α 和量化位寬之間存在一個權衡。

PACT 可以有效找到截略誤差和量化誤差之間的平衡點,其方法是基于輸出與目标的相近程度來調整輸出的範圍,即如果目标輸出有較大的幅度,PACT 會調整到更高的 α 值。截略誤差和量化誤差都會使輸出偏離目标,PACT 會在訓練期間增大或降低輸出範圍,以盡力最小化這兩個誤差。

在圖 4 中,(a) 當使用 2 位量化時,截略和量化相對于參數 α 的歸一化均方誤差(MSE)之間的權衡。(b) 展示了 PACT 為 QNN 找到截略和量化誤差的平衡的方式。在訓練中,CIFAR10 ResNet20 的截略式激活函數使用了 1 到 16 的不同截略水準。

SysML 2019論文解讀:推理優化

圖 4:(a) 截略和量化相對于 α 的歸一化 MSE。(b) 在一個 2 位量化的模型上,PACT 的最低驗證誤差和截略的驗證誤差在不同 α 上的比較。

可以看到,當激活被量化為 2 位時,使用截略式激活函數的網絡的準确度會随 α 增大而顯著下降。總結一下,PACT 的目标是選出最優的 α,進而同時最小化量化誤差和截略誤差,其結果是能實作相對較低的截略誤差和可能最低的量化誤差。

統計感覺式權重分箱(SAWB)

這篇論文的另一個貢獻是權重的量化。其主要思想是利用權重分布的統計情況,即一階矩和二階矩。量化比例的确定方式是使權重的分散情況能在訓練過程中更好地得到。

這種量化方法是均勻的和對稱的,是以也是對硬體友好的。此外,量化水準可由 α 确定。圖 5 給出了一個 2 位量化的示例,其量化水準參數為 α_w。權重的均值 E(|w|) 應該在 [-α_w, α_w] 範圍内。

SysML 2019論文解讀:推理優化

圖 5:(a) 根據參數α_w 選出量化的 4 個點。(b) 根據 6 個不同的分布執行最優比例的線性回歸。

圖 5(a) 中假設權重統計分布近似一個高斯分布,但通常觀察到的情況是:權重分布的形狀會在訓練過程中随反向傳播通路的集合而變化,進而變得不同于高斯分布。這就使得整個基礎假設無效了,這又反過來會增大量化誤差。

這篇論文提出不僅要考慮 E(|w|),而且還要考慮 E(w^2)。直覺而言,二階矩 E(w^2) 能展現分布的整體形狀,而一階矩 E(|w|) 則會給出有代表性的值。研究者根據經驗推導了一個簡單公式,可為更多不同的分布求取一個通用的最優比例 α_w*;該公式如下:

SysML 2019論文解讀:推理優化

系數 c1 和 c2 是根據在不同分布(即高斯分布、均勻分布、拉普拉斯分布等)上的線性回歸而預先确定的。這可能看起來有些令人質疑,是以我會嘗試概括這裡的研究,并解釋每一個步驟。和這篇論文中所有研究一樣,其量化是 2 位式的(4 級)。

  1. 問題是這樣的:「我們如何設定權重值的 4 個量化層級,使得我們可将權重值映射到其最近的量化層級并且準确度的降低最小?」一種最簡單方法是設定量化層級時使得均值在其中心。(見圖 5(a))
  2. 不隻是使用均值,我們還使用權重值的二階矩來提供有關分布的整體形狀的見解。
  3. α_w* 是一階矩和二階矩的函數,是以作者研究了最優比例與一階矩和二階矩在不同相關分布上的關系。圖 5(b) 給出了 α_w*/E(|w|)(X 軸)與 √ E(w2)/E(|w|)(Y 軸)在六種分布(用不同顔色表示)上的相對情況。每個點都表示通過在 α_w 上掃描而得到的分布的最優比例。
  4. 執行簡單的線性回歸以學習參數 c1 和 c2,本質上就是 6 個點(6 個不同分布假設)的線性拟合,進而找到 c1 和 c2 的最優值。(見圖 5(b))
  5. 一旦确定了 c1 和 c2,在訓練新模型時就可直接使用 c1 和 c2 來計算 α_w*,無需再完整掃描整個 α_w。

表 1 給出了在使用 2 位權重量化時,CIFAR10 ResNet20 的第 11 層在不同 epoch 的最優平方誤差(SE)和 SAWB 估計的比例因子的平方誤差。

SysML 2019論文解讀:推理優化

表 1:最優和 SAWB 的平方誤差(SE)

可以看到,SAWB 的誤差略高于最優 α_w* 的誤差。是以,這能激勵人們使用這個封閉解來計算 α_w,這會比在 α_w 上執行完整掃描快很多,而且準确度損失也很小。

實驗

CIFAR10 實驗

PACT 和 SAWB 都在 TensorFlow(Abadi et al., 2015)中用 Tensorpack (Zhou et al., 2016) 實作,并且論文中也研究了多種著名的 CNN:在 CIFAR10 資料集上的 ResNet20/32/44/56 (He et al., 2016b)。

該論文估計了帶有 (20,32,44,56) 層的 CIFAR10 ResNet 的激活和權重量化方案。表 3 總結了僅進行激活量化、僅進行權重量化、進行激活量化且權重量化後的準确度。

SysML 2019論文解讀:推理優化

表 3:CIFAR10 ResNet20/32/44/56 僅進行激活量化、僅進行權重量化、進行激活量化且權重量化後的驗證誤差。小寫字母 s 和 p 分别表示 SAWB 和 PACT。這兩種量化方案僅會導緻準确度少量下降。當同時部署了 PACT 和 SAWB 時,PACT-SAWB 能在各種變體的 CIFAR10 ResNet 上保證 3% 以内的準确度損失。

ImageNet 實驗

研究者還在 ImageNet 資料集上執行了另一組測試 PACT 和 SAWB 的實驗。研究者也比較了 PACT-SAWB 與其它 2 位量化方案。結果見表 2。

SysML 2019論文解讀:推理優化

表 2:ImageNet:top-1 測試準确度(%)和準确度下降情況比較

可以看到,對于在所有三個網絡(AlexNet、ResNet18 和 ResNet50)上的 2 位 QNN,PACT-SAWB 都實作了較高的準确度,準确度損失也都最低。注意,我們之前讨論的 PACT-SAWB 和 PACT-SAWB-fpsc 之間有些許不同。PACT-SAWB-fpsc 是指帶有全精度快捷連接配接(full-precision shortcut connections)的 PACT-SAWB。

不多說細節,快捷連接配接就是跳過一層或多層的路徑,對 ResNet 等一些神經網絡的架構而言很關鍵。有觀察發現,當使用快捷連接配接進行訓練時,2 位 QNN 的訓練誤差的下降速度更慢。是以,對于這些類型的網絡,快捷連接配接将保持不量化,也由此得名全精度快捷連接配接。這可被視為 PACT-SAWB 的一種變體,其中由于沒有量化,以計算成本為代價能實作準确度的提升。

總結和讨論

這篇論文介紹了兩種分别針對權重量化和激活量化的技術,并且進而能得到整體的量化神經網絡(QNN)。其中,激活量化技術是參數化截略式激活(PACT),這是一種在訓練期間使用 ReLU 函數的參數化截略來确定量化的輸出範圍的方案。權重量化方案名為統計感覺式權重分箱(SAWB),可基于權重分布的統計特性确定能最小化量化誤差的最優比例因子,無需執行窮舉搜尋。

在我看來,PACT 中的動态範圍自動調節是一個很有趣的概念,可以實作大規模量化神經網絡的穩健訓練。但是,我主要擔心的是僅使用二位量化能否有效得到大的輸出範圍。正如之前提到的那樣,量化是降低表示一個數值的位數的過程。這對降低計算成本而言很關鍵,尤其是對于當今的手持裝置而言。

就我所知,目前移動裝置的最小位數是使用 8 位量化執行推理計算(我沒找到任何有關訓練的資料)。如果讀者感興趣,也許可以查找一下是否有任何産品在其機器學習架構中使用了低于 8 位量化的方案(不管是訓練還是推理)。

至于權重量化方案,在我看來,為什麼通過不同分布生成的「最佳」資料點的線性回歸得到的系數 c1 和 c2 是一組優解,這一點沒能說清。我希望讀者也能思考一下這個問題,究竟為什麼我們不能把權重看作高斯分布呢?

我同意作者說的權重分布的形狀會在訓練過程中随反向傳播通路的集合而變化,進而變得不同于高斯分布。但是,如果我們将每次反向傳播通路視為一個「樣本」并計算每個樣本的彙總統計資訊,則可以預見這些彙總統計情況遵循正态分布——即使你不知道你的樣本的分布。這不過就是應用中心極限定理而已。

是以,為什麼作者會無視這在準确度劣化方面所表現出的潛力呢?這個問題很有意思。我讨論這個問題的另一個原因是想問讀者:預先确定 c1 和 c2 并在整個訓練階段使用它們的做法是否合理?使用固定參數似乎有礙「學習」的目的。

總體而言,這兩項新提出的方案是很有趣的,也帶來了一些富有成效的讨論以及一些不錯的結果。我認為這是一篇值得一讀的好論文,因為随着手持式移動裝置變得越來越重要,量化問題必然會成為一個至關重要的研究領域。

深度神經網絡(DNN)已在很多實際問題中取得了進展,比如圖像分類、機器翻譯和遊戲。這些進展往往伴随着 DNN 越來越大、越來越深的代價,也由此帶來了更高的計算成本需求。是以,緩解越來越高的計算需求問題是一個亟需關注的領域。

最簡單形式的 DNN 可被視為由(數學)算子組成的計算圖。TensorFlow、PyTorch 和 TVM 等已有的深度學習軟體全都會将計算表達為有狀态的資料流圖。這些圖會在訓練期間得到優化,并會在整個過程中變換。

在每次疊代(或變換)時,新圖相比于疊代前的圖通常會有嚴格更好的運作時間性能。這種「嚴格更好」會得到深度學習架構的非常受限的搜尋空間,也是高計算成本的一大原因。直覺地說,可以認為優化問題存在諸多限制。限制越多,算法得到解的時間就會越長。

是以為了降低計算成本,這篇論文提出了一種寬松化的圖替代方法,可通過放松每個疊代限制的「嚴格更好」來實作複雜圖優化的探索。這能增大問題的可行空間,并能在每次疊代時更快找到解。此外,研究者還引入了回溯方法(backtracking),可搜尋一組寬松化圖替代來尋找每次疊代的最優解(沒有嚴格更好的限制)。

術語和符号

我們用 G 表示計算圖,I 表示輸入張量,O 表示輸出張量。三者之間的關系可寫為 O = G(I)。如果兩個圖 G 和 G' 在輸入一樣時得到的輸出也一樣,則認為這兩個圖等價,即 G(I) = G'(I)。尋找圖 G 的等價圖 G' 的過程在一個名為 MetaFlow 的系統中實作,其可被用于優化已有的深度學習架構的 DNN 計算圖,即 MetaFlow 是用于 DNN 的寬松化圖替代優化器。

下一個術語是源圖(source graph)。源圖是指定義了可用作替代的可用子圖的結構的圖。

  • 源圖中的每個節點都關聯了一種類型,并且僅可被映射到同種類型的算子,即卷積必須映射到卷積,僅有核、步幅、填充等參數的差異。
  • 源圖中的每條邊都描述了算子之間的資料依賴性。替代要求新圖的資料依賴性與源圖的一樣。

下一個術語是目标圖(target graph)。目标圖描述的是如何建構新的子圖來替換目前的子圖。圖 1 給出了一個示例,其中給出了一組等價的源圖和目标替換圖。

SysML 2019論文解讀:推理優化

圖 1:源圖和目标圖,兩者執行一樣的運算

可以看到,目标圖是将兩個卷積「融合」為了一個運算,之後再分開。注意 op1 和 op2 有同樣的輸出 op1.out,通過拆分 conv3 的結果,我們可以得到 conv1.out 和 conv2.out,它們分别等價于 conv1 和 conv2 的輸出。

在 conv1 和 conv2 上的限制確定它們僅可映射到同樣核大小、步幅和填充的卷積。此外,虛線被稱為外部邊(external edge)。外部邊隻是表示算子的輸出可由外部算子讀取,并且必須被保留。

所有這些可能看起來相當抽象,難以了解,但我認為其類似于以下直覺了解。如果 conv3 是一個 3×3 卷積,其核為 

SysML 2019論文解讀:推理優化

可分解為

SysML 2019論文解讀:推理優化

是以,我們可以不用 3×3 大小的核執行卷積(9 次乘法),而是使用兩個 1×3 核執行卷積(6 次乘法)。結果還是一樣,但從計算角度看,每次卷積的成本更低了。此外,通過将卷積分為兩個可以并行執行的更小卷積,執行整個卷積的速度也可能會更快。

盡管圖 1 是用一個卷積替換兩個卷積,但這個示例是将一個卷積拆分為兩個。我認為這一思路兩個方向都有效,而且這正是圖替換思想背後的基本直覺。如果源圖和目标圖計算出的輸出在外部邊上是數學上等價的,則圖替代就是有效的。

最後說明一點,寬松化的思路可按如下方式展示。考慮以下等價表達式以及從上面的表達式到下面的表達式所采取的步驟。

SysML 2019論文解讀:推理優化

最後的表達式僅有 3 個算子,說明實作了優化。但是,如果系統每次疊代時都有限制——新子圖必須嚴格優于目前子圖;則第二個表達式就不會被允許,是以也就無法得到最終的表達式。這就展現了放松限制條件(寬松化)的重要性。

MetaFlow 搜尋算法

圖替代的難點在于在搜尋空間中找到最優的圖。原因是搜尋空間可能非常大,是以窮舉搜尋空間中的所有圖是不可行的。MetaFlow 搜尋算法的設計目的就是為替代在大搜尋空間中有效找到經過優化的圖(但不必是最優的)。

成本函數

與任何優化一樣,首先必須定義一個成本。這個案例中的成本模型計算的是 FLOPs、記憶體使用量以及核啟動次數等名額。對于圖中的每個算子,都有針對這些名額的關聯成本,而且這些名額可以組合起來得到圖的總成本。

一個關鍵的觀察是,大多數 DNN 算子都涉及到線性代數,如果給定一樣的參數,其在硬體上會有一緻的且可預測的性能表現。這使得成本計算更容易,因為如果我們已經測量并儲存了帶有特定參數的算子的執行時間,我們就可以為圖中其它部分的具有同樣參數的同樣算子使用該執行時間。

回溯搜尋

這篇論文提出了一種回溯搜尋方法,用于尋找一個成本模型下最優的計算圖。算法 1 給出了其僞代碼。

SysML 2019論文解讀:推理優化

可以看到,所有的潛在圖都排列成一個全局優先級隊列,并且按照它們的成本以遞增順序移出隊列。對于每個被移出隊列的圖 G,搜尋算法都會通過在 G 上應用新的潛在圖替代來生成和排列新的圖。參數 α(算法 1 的第 13 行)被用于縮放目前最優 G 的損失。更近一步,我們可以直覺地了解三種情況中的 α:

  • (0< α <1):這可以被認為是「鼓勵」算法保持目前的解。隻有當新圖 G' 的成本有明顯改善時,算法才會更新目前最優的圖。這有希望實作算法加速。
  • (α = 1):這與實作一個貪婪算法一樣,且僅考慮嚴格降低成本的圖替代。
  • (α > 1) :這可被視為「擴充」搜尋空間,因為條件更加寬松。這個算法有希望找到最終能得到更優解的中間解。

回溯到思想出現在算法 1 的第 14 行。假設 α > 1,如果目前圖 G' 有更低的成本,這會被加回到隊列中。這是因為未來的疊代有可能将 G' 替換為另一個解 G'',而 G'' 有可能最終得到更差的解。是以,将 G' 留在隊列中能為算法提供追溯能力,進而防止目前路徑不佳的問題。

基于流的遞歸式圖拆分

很多目前最佳的 DNN 模型都太大了,難以直接使用回溯搜尋來優化。但是,為了解決這個問題,可以使用一個有用的觀察。也即,圖替代可以在少量局部相連的算子上獨立地執行。

是以,将計算圖拆分為更小的單個子圖并單個地檢查它們能讓問題變得更小,同時還能保證所得到的圖替代有效。基于這一見解,作者提出了一種基于流的圖拆分算法,以遞歸式地将計算圖分為更小的可使用回溯搜尋的不相交子圖。

當将一個圖拆分為兩個圖時,目标是這樣的兩個不相交的子圖會有最小數量的圖替代。對于每個算子,将其容量 Cap(o_i) 定義為至少映射到了算子 o_i 的一個内邊(in-edge)和一個外邊(out-edge)的圖替代的數量。

直覺而言,每個算子的容量即是被替代的「潛力」。我們最終得到了一個由節點和邊構成的圖,每個邊都有一個描述其容量的權重。這個圖拆分問題就變成了最小頂點切割問題。

從整數規劃(integer programming)的角度看,圖的最小頂點切割問題是尋找一個頂點的子集(稱為頂點切割),其中移除操作會将圖分成兩個元件。這通常使用标準的 max-flow 算法求解。

可能大部分讀者并不了解 min-cut / max-flow 這些術語,但如果你有興趣,通常可在整數規劃教科書/課程中找到它們。我不會深入這些問題的細節,隻說一下這些類型的問題的目标以及它們與目前問題的關聯。

術語「切割(cut)」用于描述将圖分為兩個集合 (S, S_b) 的操作。切割的表示方法是兩個獨立的集合 (S, S_b)。是以,使用在計算圖上定義好的容量,目标是切割圖以使得被切掉的邊有最小的容量,進而将圖一分為二。

總結一下,該算法首先是将圖分成單個的子圖,然後再運作回溯搜尋算法來優化單個子圖,最後,MetaFlow 将優化後的子圖再組合到一起,組合得到整個計算圖。

實驗結果

這篇論文使用了 MetaFlow 來測試比較一些著名的圖像分類神經網絡。這包括用于圖像分類的 Inception-v3 (Szegedy et al., 2016)、SqueezeNet (Iandola et al., 2016) 和 ResNet50 (He et al., 2016) CNN。這三種不同的神經網絡使用了不同的 DNN 子產品來實作優良的模型準确度,并展現出了不同的圖架構。

除了圖像分類,研究者還評估了在文本分類和機器翻譯上的表現。RNNTC 和 NMT 是兩個來自(Lei et al., 2017)的分别用于文本分類和神經機器翻譯的模型。

RNNTC 使用了一個嵌入層、一個隐藏大小為 1024 的循環層和一個 softmax 層。NMT 包括一個編碼器和一個解碼器,兩者都由一個嵌入層和兩個各有 1024 隐藏大小的循環層構成。表 1 提供了這些網絡的概況。

SysML 2019論文解讀:推理優化

表 1:實驗所用的神經網絡

這些實驗将 MetaFlow 加到了 TensorFlow、TensorFlow XLA 和 TensorRT 上。TensorFlow XLA 是一個用于 TensorFlow 圖的編譯器,可用于加速 TensorFlow ML 模型;TensorRT 是一個用于高性能深度學習推理的平台,由英偉達開發。TensorRT 包含一個深度學習推理優化器和優化時間,能為深度學習推理應用提供低延遲和高吞吐量。

在所有實驗中,所使用的成本模型都是最小化執行時間。此外,參數 α 設定為 1.05,作為回溯搜尋算法的剪枝參數。

推理性能

第一個比較是端到端的性能。MetaFlow 會自動将優化過的計算圖變換成基準架構會接受的标準格式,是以可以與基準比較測試。圖 2 給出了比較的結果。藍線是沒使用 MetaFlow 的優化圖的三個基準架構得到的最佳結果,紅線是 MetaFlow 結果。

SysML 2019論文解讀:推理優化

圖 2:MetaFlow、TensorFlow、TensorFlow XLA 和 TensorRT 的端到端性能比較

可以看到,MetaFlow 速度更快,優于已有的深度學習推理引擎。每條紅線上的數字都是相對于最佳基準的相對提速。注意 MetaFlow 并不能唯一能執行圖替代的架構。事實上,所有已有的系統在執行計算圖之前都會根據自己的規則在内部執行圖變換。

是以,性能表現也可能因為所執行的圖優化而不同。論文沒有明确說明 MetaFlow 是否在準确度表現上也優于其它架構,但我認為推理時間(和其它名額)的結果是在所有架構的準确度表現相對接近的前提下得到的。

額外的名額比較

除了端到端的推理時間外,作者還在成本模型中包含了不同的名額,其中包括記憶體通路、啟動的核、FLOPs 數量和裝置使用率。表 2 給出了 MetaFlow 和 TensorRT 在這些名額上的比較。

SysML 2019論文解讀:推理優化

表 2:MetaFlow 和 TensorRT 在不同名額上的性能比較

相比于 TensorRT,MetaFlow 能夠減少整體的記憶體通路量以及核啟動的數量。但是,在一個計算圖中,MetaFlow 實作的推理性能提升是以 FLOPs 增長為代價的。我相信 FLOPs 的增長可通過以下案例進行解釋。

回想一下之前的章節,我們可用兩個 1×3 核替代一個 3×3 卷積核。反過來也一樣,如果我們有兩個 1×3 核,我們也許可将它們組合(擴大)成一個 3×3 核。這種更大的操作更加複雜,也可能會有更高的 FLOP 量,但可能會減少記憶體通路和核啟動,我相信這能夠解釋表 2 中的資料。

其它一些說明

作者還在子圖性能等其它名額上進行了實驗。子圖性能名額是用于确定 MetaFlow 能否提升 DNN 中單個子圖的性能。實驗中測試比較了不同的裝置,以确定給定一個輸入圖時,MetaFlow 能否在不同裝置上發現不同的優化圖。此外,論文也檢查了搜尋算法的性能。因為這些名額并不與推理優化直接相關,是以這篇解讀不會介紹這些内容。感興趣的讀者請參閱原論文了解全部細節。

總結與結語

這篇論文介紹了寬松化的圖替代,能實作已有深度學習架構(使用的是貪婪方法)中未實作的複雜圖優化的探索。寬松化圖替代在數學形式上被建構成了一個基于成本的搜尋算法,其涉及到一個或多個名額。回溯搜尋的實作方式使得算法可在寬松化圖替代生成的搜尋空間中自動找到經過優化的計算圖。

最後,作者在 MetaFlow 中實作了該方法,這是一種用于 DNN 的寬松化圖替代優化器。通過與幾種标準 DNN 比較,研究表明 MetaFlow 相比于已有架構能在保證相近網絡準确度的同時改善運作時間性能——能實作高達 1.6 倍的提升。

我選擇解讀這兩篇論文的原因是它們都涉及推理優化這一主題。這兩篇論文是從不同角度實作推理優化,而我認為這兩個角度都很重要。Choi et al. 的第一篇論文關注的是用量化來提升推理。這更多是一種面向硬體的方法。

通過使用僅 2 位且準确度損失不太多的優良量化方法,網絡速度相比于 8 位的(目前移動裝置常用的配置)能實作極大的提升。鑒于學術界的大多數研究都着眼于網絡準确度,是以這是一項很重要的研究。在現實世界應用中,硬體尺寸、功耗和速度等因素往往比準确度更重要,在探讨機器學習時我們應始終記得這一點。

第二篇論文來自 Jia et al.,是從算法角度求解推理優化問題。我很喜歡這個架構,因為其涉及到将該問題表達為一個整數規劃(min-cut / max-flow)問題。現如今,人們常常将機器學習作為單個領域來進行思考探索。

但是,機器學習的核心是數學和優化,是以我認為在數學知識投入精力也是很重要的。擁有堅實的數學技能能幫助你更有效地分析機器學習問題,并也許能讓你有能力以可能有更優解決方案的不同數學方式表達你的問題。

http://mp.weixin.qq.com/s?__biz=MzA3MzI4MjgzMw==&mid=2650759375&idx=3&sn=7db75011e9cb5750bd188e893be75ea3&chksm=871aa4b1b06d2da7d8178491bcf2cec283440a68cfb3204bbdb890182d66fb4b9c59123a0450&scene=21#wechat_redirect SysML 2019提前看:神經網絡安全性

SysML 2019論文解讀:視訊分析系統的提升

本文作者為機器之心特邀技術分析師 Joshua Chou,他熱夫妻工智能和計算神經科學領域,樂觀相信深度強化學習能幫助人類更接近實作通用人工智能。目前從事計算機視覺、圖形學相關工作,歡迎交流。

本文為機器之心原創,轉載請聯系本公衆号獲得授權。

繼續閱讀