神經網路模型的可執行軟體包,可以壓縮到多小?

神經網路模型的可執行軟體包,可以壓縮到多小?

來自專欄 量子位

原作 Nadav Rotem

Root 編譯自 GitHub

量子位 出品 | 公眾號 QbitAI

據Reddit上圍觀用戶說,用機器學習編譯器及執行引擎Glow可以做到小几兆。

昨天,有一個Facebook研究人員Nadav Rotem在Reddit上放出了極簡版的教程Compile neural networks into small executables,跟著這份教程,你也可以將神經網路編譯出獨立的可執行軟體包。

也在蘋果、英特爾工作過兩三年的Nadav Rotem

這樣,不僅能把編譯時間最小化,還能方便Glow用戶提前編譯成軟體包。

美滋滋。

編譯前你要知道的事

軟體包(Bundle)可以獨立執行,是已經編譯好的神經網路模型。下面以Makefile為例,向大家演示如何一步步把卷積神經網路編譯成極小的可執行文件。舉個栗子:

造個軟體包

可以用Glow庫創建軟體包。

在CPU上,軟體包是可以和某些可執行文件關聯的目標文件。在其他架構體系上,軟體包完全是另外一回事。

這份文檔講的主要是怎麼用圖像分類器工具,給主CPU創建軟體包。

用-emit-bundle標籤標出輸出目錄。

以上的指令按network_model_directory_name把神經網路模型編譯好,然後生成一份軟體包,其中包含兩個文件,在output_directory_name目錄里。

第一份文件以network_model_name.o命名,包含編譯好的網路模型代碼。這是個常規的目標文件,可導向項目的其他文件。

第二份文件是以network_model_name.weights命名,包含運行這份編譯模型所需的權重。

最後,想一步步跟著壓縮神經網路模型的胖友們,請前往:

github.com/pytorch/glow

想進一步了解Glow架構設計思想的話,可參考原作和他同事們發在arXiv的文章:

arxiv.org/pdf/1805.0090

歡迎大家關注我們的專欄:量子位 - 知乎專欄

誠摯招聘

量子位正在招募編輯/記者,工作地點在北京中關村。期待有才氣、有熱情的同學加入我們!相關細節,請在量子位公眾號(QbitAI)對話界面,回復「招聘」兩個字。

量子位 QbitAI · 頭條號簽約作者

?? ? 追蹤AI技術和產品新動態


推薦閱讀:

Michael Nielsen對交叉熵的解釋(三)
受限制玻爾茲曼機(RBM)的能量函數及其梯度求解
RNN Part 3-Back Propagation Through Time and Vanishing Gradients(BPTT演算法和梯度消失)
Improving Deep Neural Networks 第二周
Recognant創始人:神經網路其實很簡單,所以,別假裝你是個天才

TAG:神經網路 | 機器學習 | 編譯器後端 |