研學社·系統組|實時深度學習的推理加速和持續訓練
機器之心原創
作者:Yanchen Wang
參與:蔣思源、李亞洲
作者 Yanchen 畢業於普林斯頓大學機器學習方向,現就職於微軟Redmond總部,從事大規模分布式機器學習和企業級AI研發工作。在該篇文章中,作者介紹了實時深度學習的推理加速和持續性訓練。
引言
深度學習變革了許多計算機視覺和自然語言處理(NLP)領域內的任務,它為越來越多的消費者和工業產品提供更強大的智能,並潛在地影響了人們在日常經驗和工業實踐上的標準流程。從理論上來說,深度學習和其他基於統計機器學習方法的自動化系統十分類似,它們都可以採用兩個過程描述。首先,深度神經網路(DNN)模型明確地指向為問題領域和可用數據而訓練,通常訓練會在 GPU 或高性能 CPU 集群上花費大約十多小時到幾周的時間。然後它才能部署到產品環境中,並持續輸入數據流且產生實時推理,而產生的輸出會直接作為端結果或繼續饋送到下游系統中。無論哪種方式,具有嚴格延遲要求的應用都需要進行輕量且快速的深度學習推理(如自動駕駛汽車或搜索引擎),通常每個樣本數據需要在幾十毫秒內響應。因此,相對於學術上關注於更快地訓練,產業上往往更關注於更快地推理,推動更快的加速成為了很多硬體和軟體解決方案的焦點和核心。
深度學習系統另外一個重要的方面就是需要處理輸入和輸出數據隨時間的分布變化。像任何統計機器學習模型一樣,深度神經網路的有效性極其依賴於假設輸入和輸出數據的分布並不會隨時間地變化而產生明顯的改變,從而最初學習到的複雜模型和模式可以在以後繼續使用。然而,這類假設在現實中是很少成立的,特別是在信息安全等領域,快節奏潛在數據生成機制的變化屬於常態(在信息安全案例中,攻擊和防禦參與雙方都在不斷調整策略而儘力勝過對手,因此它們都在挖掘對手的潛在漏洞)。因此隨著使用深度學習能解決更多以前無法解決的問題,深度神經網路的持續性訓練問題和如何在不損害產品質量前提下訓練,就受到了機器學習服務提供商(Machine-Learning-as-a-Service /MLaaS)和大量應用程序架構師的關注。
在本報告中,我們將介紹深度神經網路推理加速和產品場景下的持續性訓練近期的一些技術、趨勢和研究。我們報告的目標並不是鑽研幾個具體的技術,而是對解決這兩個問題的硬體和軟體解決方案進行調查和概覽。我們希望提供給讀者繼續研究的出發點,並希望能激發更多不同專業的人才參與到我們的討論和知識的交流中。
推理加速
推理加速-硬體
DNN 訓練和推理都是計算密集型過程,只不過方式完全不一樣。訓練需要很高的吞吐量,因此也通常在 GPU 上完成,因為 DNN 模型的訓練通常會涉及大量的並行計算和簡單的控制流與功耗效率。而將訓練分為數百個輸入數據為一批也很常見(如計算機視覺任務中的圖像、NLP 任務中的語句序列和語音識別任務中的語譜圖等),因此將每個批量作為一個單位執行前向傳播和反向傳播,這樣可以通過多個 GPU 存儲器分攤載入神經網路權重的成本。
對於推理來說,最重要的性能目標就是延遲。為了最小化網路的端到端響應時間,推理相比於訓練通常需要更小的批量大小,因為依賴於推理的自動化服務需要實時響應。例如整個 Google Autosuggest 流程的延遲需要控制在 200 毫秒之內,其中就包括了前端、負載平衡(load balancing)、詢問理解和由 DNN 驅動的自動完成建議,同時還需要完整的搜索堆棧遍歷來顯示用戶實際搜索的結果。自動駕駛汽車之類的任務會要求更嚴格的時間延遲限制,因為當用戶安全受到威脅時,DNN 作為在車內嵌入晶元運行的一個組件,需要在極短的時間內做出正確的響應。
模型的訓練主要用的是 GPU,但推理硬體市場有若干選擇。
GPU
英偉達以它的先進 Pascal 架構 Tesla P4、 P40 和 P100 GPU 加速器為特色,其吞吐量峰值比單個 CPU 伺服器要高 33 倍,並且同一時間內可以降低最大達 31 倍的延遲。該性能對比來源於一個英偉達的研究,該研究比較了 AlexNet、GoogleNet、ResNet-152 和 VGG-19 在單塊 CPU 伺服器(單個 Intel Xeon E5-2690 v4 @ 2.6GHz)和 GPU 伺服器(same CPU with 1XP100 PCIe)上的性能。
為了幫助開發者充分利用它的硬體,英偉達 cuDNN 庫為 GPU 提供了一系列的推理優化。在小批量下,cuDNN 改善了卷積演算法不能並行化足夠的線程以充分利用 GPU 的問題。傳統的演算法如預計算的隱式 GEMM(一般矩陣-矩陣乘法)最優化為大規模輸出矩陣,而它的默認並行化策略並不能啟用足夠的線程塊,因此批量大小在輸出矩陣的一個維度中是一個乘法因子。最新版本的 cuDNN 通過分裂出額外的維度而改進了該演算法,這也就減少了每一個線程塊的計算總量,並允許啟用更多的線程塊來提升 GPU 使用率和性能。
另外一個主要的改進就是降低精確度的浮點運算操作。近年來,研究者發現使用更低精度的浮點運算表徵(FP16)儲存層級激勵值,而更高的表徵(FP32)進行計算並不會損失分類精度。即使期間的性能提升會有帶寬限制,但也能在運行 DNN 時減少整體的內存佔用要求。cuDNN 為卷積演算法引進了 FP16,相對於等價的 FP32 實現了兩倍的性能提升。
Intel Processor Graphics
隨著在雲端或通過雲端訓練 AI 系統持續性地增長,工業界正目睹著推理階段從高端專業伺服器轉移到邊緣計算當中。這就趨向於在終端設備中本地執行機器學習和深度學習而不是單單依賴於 MLaaS,這種趨勢由減少網路帶寬瓶頸上的延遲而驅動,以及需要維持超過 99.999% 的服務健康在線時間,和可以向外擴展終端設備而不是增加伺服器來平攤成本,同時這也將解決首當其衝的隱私和合規問題。由這一波智能應用、自動駕駛汽車、自動化製造業和移動平台上的虛擬助手所驅動,Intel Processor Graphics 已經裝備到了其硬體產品陣列中來解決各類 AI 工作負載,包括 Intel HD Graphics、Intel Iris Graphics 和 Intel Iris Pro Graphics 等。
他們旨在設計能在推理加速和編程靈活性上達到均衡的架構,並且該均衡作為 Intel SOC 的組件從廣泛使用的 PC 到伺服器嵌入設備中。通過靈活的指令集架構,我們可以使用豐富的數據表徵,如 16FP、32FP、16Int、32Int 和快速 SIMD 乘積-累和運算(fast SIMD multiply-accumulate operations)。這些設備提供高效的內存塊載入以優化卷積和一般矩陣-矩陣乘法,這些對邊緣設備上快速和高能效的推理都是極其重要的。
為了更好地利用硬體資源進行推理,英特爾的深度學習部署工具包在已訓練的 DNN 模型上執行靜態、編譯時間分析以優化在各端點的執行。模型優化器嘗試融合水平的和垂直的層級並對冗餘網路進行剪枝和層級權重量化,然後將精簡量化的模型輸入到推理引擎中,引擎會進一步強調以降低佔用來為目標硬體優化推理。
正因為端點目標設備和工具包實現了去耦(decoupling),它能優化運行在不同硬體單元的推理,包括 CPU、GPU 和 FPGA。對於 CPU 推理加速,它使用英特爾的 MKL-DNN 插件。而對於 GPU,其利用了 clDNN,即一個為計算機視覺計算構建的 OpenCL 核優化庫。對於 FPGA 來說,它是與英特爾深度學習推理加速器結合,並由 Intel Arria 10 FPGA 支持的 PCIe 插件卡,其可以優化流行的 CNN 拓撲結構,包括 AlexNet、GoogleNet、CaffeNet、LeNet、VGG-16 和 SqueezeNet。
FPGA
通常來說,由於其靈活的硬體配置,在同樣的功率耗能下 FPGA 通常能夠提供比 GPU 更好的性能,特別是對於如卷積和池化(pooling)等滑動窗口(sliding-window)的計算。這使得它們對於企業級用戶特別有吸引力,因為企業級用戶最終更關心降低大規模應用的成本以及其為特定應用定製推理架構(inference architecture)的能力。傳統上,FPGA 的峰值浮點運算性能不如 GPU,因此 FPGA 側重於發展有關 DNN 推理的技術。最新的基於英特爾 14 納米技術開發的 Intel Stratix 10 FPGA 具有超過 5000 個浮點單元,並集成了高帶寬存儲的超過 28MB 的片內 RAM,可與 Nvidia Titan X Pascal GPU 相媲美(報告顯示,對於精度 FP32,Stratix 10 峰值速度為 9.2 TFLOP,而 Pascal Titan X 為 11 TFLOP)。
DNN 的兩個研究趨勢正推動著採用 FPGA 取代 GPU:即更低精確度的數據類型和稀疏性。研究者已經證明了 2-bit 三元的和 1-bit 二元的 DNN 精度有所提升,並提出了通過剪枝、ReLU 和三元樹等技術將神經元和權重稀疏性推高到 90%。這些技術加在一起提升 DNN 演算法的效率高出密集 FP32 架構一個數量級,前提是有合適的硬體實現能夠高效地跳過零的計算。單片和大型並行化 GPU 架構在這些不規則的並行模式和自定義數據類型下並不符合標準,而為極端定製能力而設計的 FPGA 顯得更加耀眼。英特爾最近一個團隊表明 Stratix FPGA 相比於 itan X GPU 在更低精度 6Int GEMM 有 3 倍的 TOP/s 和 4 倍的 GOP/s 每瓦特性能提升,1-bit GEMM 達到了 2 到 10 倍提升,85%-sparse GEMM 達到了 4 倍的提升。
TPU
除了為 DNN 推理進行廣泛目的的硬體重塑和重編程(如 CPU、GPU 和 FPGA)之外,研究者和實業家還專註於 ASIC(Application Specific Integrated Circuits),他們相信專用晶元能為特定的計算工作負載類型帶來最好的性能,谷歌去年發布的 TPU 就是這樣的一個案例。該晶元驅動了谷歌大量的實時服務,包括搜索、街景視圖、翻譯、照片和自動駕駛汽車等。TPU 通常要比 GPU 或 CPU 推理快 15 倍到 30 倍,並且每瓦特的成本還很低。TPU 優秀的推理性能源自四個主要的設計優化:Int8 量化、DNN-inference-specific CISC 指令集、大型並行化矩陣處理器和最低確定性設計。
量化(Quantization)極大地降低了最重要推理計算(矩陣乘法)的硬體佔用和能耗。移動端和嵌入式系統的部署同樣也得益於內存佔用的減少,據谷歌報告其在一般模型(如 Inception)要減少 4 倍多。一塊 TPU 包含 60000 Int8 乘法器,幾乎是在普通 GPU FP32 乘法器的 25 倍。
TPU 的 CISC 指令集關注於直接表徵和優化主要的 DNN 推理數學運算,即矩陣乘法和激活函數。指令集包括優化的 CISC 指令以從內存讀取數據塊和權值塊,同時還優化了矩陣乘法或數據和權重的卷積以累和中間結果,應用硬連接的激活函數和將結果寫入內存。可配置的、可編程的三個硬體單元:矩陣乘法器單元、標準緩存和激活單元驅動了這些特殊設計的指令高效執行。矩陣乘法器單元是一個大規模並行矩陣處理器,它能在單個時鐘周期內進行成百上千次矩陣運算(乘法和加法)。通過為許多不同的運算重用輸入(數據塊和權重塊)而不儲存它們到累加寄存器中,這樣就只需要 24MB 地 SRAM 標準緩存。在大規模矩陣乘法中,所有的中間結果不需要 DRAM 訪問就能在 64K ALU 中通行,因此也就大大降低了能耗和極大地提升了吞吐量。
這些 ASIC 優化能令 TPU 在保證嚴格的延遲保證時還有近乎晶元峰值的吞吐量。谷歌報告說在一般 MLP 架構每個預測 7ms 的延遲情況下,TPU 的吞吐量要比 CPU 和 GPU 高 15 倍到 30 倍,而對於一般的 CNN 架構,TPU 相對於 CPU 實現峰值達 70 倍的性能加速。
推理加速——演算法
演算法上,降低推理延遲和 DRAM 佔用空間的一種有潛力的方法是模型壓縮。壓縮的模型能夠簡單的適配到片上 SRAM 緩存上,而不是 DRAM 存儲上,這樣就能在移動平台或無人駕駛汽車上裝備複雜的 DNN 應用。在這些應用場景中,存儲大小、推理速度和網路帶寬都有極大的限制。
眾所周知,在大部分前沿的 DNN 架構中,全連接層會被過參數化。許多研究專註在全連接層的壓縮,要麼是使用哈希函數隨機地桶分化(bucketizing)連接權重,要麼是通過矢量量化壓縮。Network-in-Network 提出用全局平均池化取代全連接層,然後在頂部加上一個額外的線性層進行更好的遷移學習能力。
在 CPU、台式機 GPU 和移動 GPU 基準上,Deep Compression 產生了 30 倍到 50 倍更緊湊的 AlexNet 和 VGG-16 模型,分層(layerwise) 速度加快了 3 到 4 倍,能效提升了 3 到 7 倍,而且在 ImageNet 準確率上也沒有損失。這種方法是通過一個三階段的壓縮組合完成的:神經網路剪枝、訓練量化和 Huffman 編碼。
剪枝去掉了權重比低於某個閾值的網路連接,然後 DNN 在調整剩餘的稀疏連接的權重時就會受約束。稀疏架構的位置索引,在卷積層中是 8 比特編碼、在全連接層中是 5 比特編碼,都用 CSR 或 CSC 的格式存儲。剪枝平均對 AlexNet 和 VGG-16 降低 10 倍的參數量。
為了進一步減少編碼每個權重的比特量,Deep Compression 利用 一種裝箱技術(binning technique)共享權重。對一個帶有 M 輸入神經元和 M 輸出神經元的層而言,M x M 權重被量化到 M 個箱(bins)中,每個箱中的所有權重共享同樣的值,因此每個權重只有一個索引到需要存儲的共享權重表格中。在反向傳播過程中,梯度已類似的方式分組,裝箱到 M 個桶中,然後統一更新共享的權重矩心。通過權重共享進行量化有效地降低了需要存儲的權重,精調共享的權重降低了需要更新的運算的數量。對一個剪枝過的 AlexNet 而言,卷積層被量化到 8 比特的、全連接層到 5 比特,大小被進一步壓縮了 3 倍。
在剪枝和量化之後,Huffman 編碼可以利用權重分布(表示為稀疏矩陣指數)極為偏倚的事實,通常將一小部分峰值彼此擠在一起。Huffman 編碼平均對 AlexNet 和 VGG -16 壓縮了 20%-30%。
尤其是在移動平台實時運行有極大延遲、能量限制的應用時,Deep Compression 基準測試基本沒有分批(批大小=1)。沒有權重共享的全連接層通常控制著模型的大小,貢獻了超過 90% 的存儲需求。它們是從 Deep Compression 受益最多的。Deep Compression 對全連接層權重的大小有超過 95% 的修剪,使得完整訓練的 DNN 可被裝載到無人駕駛汽車內嵌處理器的 SRAM 中,因此可以低能耗地提供片上存儲推理。一種相關的硬體架構 Efficient Inference Engine 也提出了在深度壓縮模型上完成推理的方法。把壓縮過的 DNN 裝載進 SRAM 為 EIE 節省了 120 倍的能量,還有稀疏性、權重供學習和跳過零函數,峰值為 102 GOPS/s 時要比 GPU 有 15 倍更快的速度。
總結
在此份報告的第一部分,我們介紹了近期一些進行 DNN 推理加速的硬體和演算法技術。在接下來的第二部分,我們會討論 DNN 的持續訓練。
References
[1] Nvidia developer blog https://devblogs.nvidia.com/parallelforall/inference-next-step-gpu-accelerated-deep-learning/
[2] Nvidia whitepaper http://www.nvidia.com/content/tegra/embedded-systems/pdf/jetson_tx1_whitepaper.pdf
[3] Intel clDNN Github repository https://github.com/01org/clDNN
[4] In-Datacenter Performance Analysis of a Tensor Processing Unit, Norman P. Jouppi et al., Apr 2017, https://arxiv.org/ftp/arxiv/papers/1704/1704.04760.pdf
[5] Deep Compression: Compressing Deep Neural Networks with Pruning, Trained Quantization and Huffman Coding, Song Han et al., Feb 2016, https://arxiv.org/pdf/1510.00149.pdf
[6] EIE: Efficient Inference Engine on Compressed Deep Neural Network, Song Han et al., May 2016, https://arxiv.org/pdf/1602.01528.pdf
加入機器之心 ML 系統與架構小組:
近些年人工智慧的突破不僅僅是機器學習演算法的努力,更有包含了其所依賴的系統和架構領域的進步。如果你想更加全面的了解機器學習這個領域,對其依賴的上下游領域的了解會很有幫助。系統和架構就是這樣一個下游領域。這個方向的工作極大方便了其上游演算法的開發,或許你也是現在諸多 ML 系統產品的用戶之一。但面對一個這樣重要的跨領域的方向,你可能會感到這樣一些困境:
1. 找不到合適的學習資料
2. 有學習動力,但無法堅持
3. 學習效果無法評估
4. 遇到問題缺乏討論和解答的途徑
不論你是想要獲得相關跨領域的更全面大局觀,還是你只是想對手中的 ML 系統工具更加了解,你都是機器之心想要幫助和挖掘的對象。基於這個方向現在越來越成為眾多研究人員關注的焦點,機器之心發起了一個互助式學習小組.......(可以 copy 下面的)
因此,為了幫助「強化學習新手」進入這一領域,機器之心發起了一個互助式學習小組——「人工智慧研學社· ML 系統與架構小組」。本小組將通過優質資料分享、教材研習、論文閱讀、群組討論、專家答疑、講座與分享等形式加強參與者對強化學習和深度學習的理解和認知。
面向人群:有一定的機器學習演算法基礎,並且對分布式計算、並行計算等也有所了解,同時想掌握此方向最新成果的人
學習形式:學習資料推薦、統一進度學習(教材或論文)、群組討論、專家答疑、講座等。
加入方式:
1)添加機器之心小助手微信,並註明:加入系統與架構學習組
2)完成小助手發送的入群測試(題目會根據每期內容變化),並提交答案,以及其他相關資料(教育背景 、從事行業和職務 、人工智慧學習經歷等)。
3)小助手將邀請成功通過測試的朋友進入「人工智慧研學社· ML 系統與架構學習組」。
入群測試 QUIZ
1)教育背景 2)從事行業和職務 3)人工智慧經歷 4)人工智慧系統或架構經歷
1. List one or two major differences between DNN training and inference.
2. Why are GPUs widely considered the best hardware for DNN training, but not necessarily inference?
※李飛飛高徒Andrej Karpathy加盟特斯拉,擔任人工智慧與自動駕駛視覺總監
※企業聊天機器人改善業務的六個秘訣
※勝在未來,銀行業必須從移動先行轉向 AI 先行
※斯坦福 CS231n Spring 2017 詳細課程大綱(附完整版課件下載)
TAG:機器之心 |
※深度學習與強化學習相結合,谷歌訓練機械臂的長期推理能力
※程成打造形象力理論體系,深度剖析社會學、管理學、心理學、美學!
※深度學習中訓練參數的調節技巧
※回顧·機器學習/深度學習工程實戰
※十大預訓練模型助你學習深度學習
※深度學習成功應用於引力波實時研究
※簡述深度學習預訓練和正則化
※理解深度學習中的學習率及多種選擇策略
※深度學習研究的新進展:情緒神經元
※人工智慧、機器學習和深度學習
※以深度對話推動大數據與哲學社會科學交叉創新研究
※深度學習教學設計隨筆之克服激勵過敏
※什麼是深度強化學習:人工智慧和深度學習的下一步
※揭秘深度學習的基本理論方法與訓練過程
※基於深度學習的協同過濾電影推薦系統
※【深度學習並非萬能】全方位對比深度學習和經典機器學習
※天津大學、東京大學等研究:用深度強化學習檢測模型缺陷
※AI醫療開創性研究:深度學習進行病變檢索和匹配
※深度學習集群管理平台
※結構化預習:深度學習的開始