原作 Nadav Rotem
Root 編譯自 GitHub
據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命名,包含運行這份編譯模型所需的權重。
最後,想一步步跟著壓縮神經網絡模型的胖友們,請前往:
https://github.com/pytorch/glow/blob/master/docs/AOT.md
想進一步了解Glow架構設計思想的話,可參考原作和他同事們發在arXiv的文章:
https://arxiv.org/pdf/1805.00907
— 完 —