機器學習編譯MLC
- 1. 引言
- 2. 機器學習編譯--概述
- 2.1 什么是機器學習編譯
1. 引言
??陳天奇目前任教于CMU,研究方向為機器學習系統。他是TVM、MXNET、XGBoost的主要作者。2022年夏天,陳天奇在B站開設了《機器學習編譯》的課程。
??《機器學習編譯》課程共分為7個章節:概述、張量程序抽象、端到端模型執行、自動程序優化、與機器學習框架的整合、GPU硬件加速、計算圖優化。
??機器學習系列文章是對該課程學習的總結,本篇文章對應于《機器學習編譯》課程的第一章節:概述。
2. 機器學習編譯–概述
2.1 什么是機器學習編譯
??機器學習編譯的英文名稱為machine learning compilation,該課題是隨著機器學習近十年的流行而出現的一個新事物。對于“編譯”可以理解為“轉換”,即在某些情形下,需要通過“編譯”操作,將一個事物從形式A轉換為形式B。
??在“轉換”這一宏觀概念層面,機器學習編譯和傳統軟件領域的編譯可以理解為一體;但是具體的實現細節和技術,兩者有著極大的差異,是兩個完全不同的事物。
??作者雖然將名字命名為機器學習編譯,但隱含地,特指機器學習中的深度學習這一紫領域。
??對于機器學習領域,編譯前的形式A指的是開發形式(Development Form),編譯后的形式B指的是部署形式(Deployment Form)。
??具體地,目前最流行的開發模式是基于Python語言利用Pytorch深度學習框架進行模型的訓練,生成的模型以.pth作為后綴。開發形式通用、靈活。獲得.pth模型后,通過export操作獲得pt和onnx模型等,對應上圖中的weights,完整的部署形式還包含底層依賴庫(libraries)、調用邏輯(Description for execution engine)和接口(API Interface)。
??作者設想了機器學習編譯的三個目標:
(1)通用優化: 從pth“編譯”至pt/onnx時,通過一些等價操作來最小化內存或者提高運行效率。例如,在上一家公司,還是caffe時代,部署模型的時候常見的一個操作是做bn和conv層的merge。
(2)集成和最小化依賴:最常見的部署設備一般為手機、(監控)攝像頭等。此類設備上,資源有限,因此運行模型的依賴庫需要最小化。
(3)利用硬件加速:硬件公司一般都會為其配套原生的加速庫。基于此背景,execution engine部分也有很大的發揮空間。
??明白了這三個目標也就明白了機器學習編譯工程師的工作職責和職責。并且也理清了算法工程師、機器學習編譯工程師和AI芯片工程師之間的關系。