當前位置:
首頁 > 科技 > 沒有依賴庫也能跑機器學習模型!推薦一個強大工具m2cgen

沒有依賴庫也能跑機器學習模型!推薦一個強大工具m2cgen

曉查 發自 凹非寺

量子位 報道 | 公眾號 QbitAI

m2cgen(Model 2 Code Generator)是一個輕量級代碼生成器,它可以將訓練好的機器學習模型轉換成無需依賴庫的本地代碼。目前支持轉化為PythonJavaC三種語言。

比如你用PyTorch訓練了一個機器學習模型,但是需要把它部署在一台沒有安裝或者不兼容PyTorch的設備上,應該怎麼辦?這時候m2cgen能幫你解決問題。

有人說,這不就是另一種形式的ONNX嘛?No!

ONNX能做的是將PyTorch訓練的模型轉換到Caffe2上,代碼只是換了一種依賴庫。而m2cgen生成的代碼不需要在本地安裝任何依賴庫

無需依賴庫

那麼給計算機安裝上依賴庫不就好了嗎,為何還要這麼麻煩?

如果你在實際中遇到以下幾種情況:

生產環境沒有相應的語言,比如缺失Python runtime;

設備性能不夠強大,比如微控制器(MCU),無法安裝框架和依賴庫,而且數據需要在本地計算,不能傳回遠程伺服器;

對預測速度有要求,需要直接調用參數值而不是依賴庫;

這時候m2cgen就能派上用場,只要設備能運行Python、C、Jave當中的任何一種語言,你就能直接部署訓練好的機器學習模型。

運行原理

理論上,訓練好的模型已經有了擬合參數的數值,運行起來也只需要矩陣乘法和一些激活函數。可是為了運行它們,卻要先安裝體積超過GB的框架和依賴庫。

m2cgen項目的實質,是以某種方式將模型的權重、偏置分解為一個額外的依賴或文件,在非常大的模型上實現「代碼」和「數據」之間的分離。

總的來說,替代方法就是使用底層的編程語言庫,來做一些矩陣數學運算。

目前m2cgen支持的模型種類包括:

使用方法

m2cgen的安裝非常方便,直接用pip:

在轉換Python代碼前,需要用import導入m2cgen:

然後在終端用m2cgen命令轉換代碼:

pickle_file是你要轉換的源代碼文件,必填選項—language後面填入你的目標語言,比如上面的Python代碼,你想轉換成Java,就輸入:

然後它就變成了一串Java代碼:

傳送門:

開源地址:

https://github.com/BayesWitnesses/m2cgen/

與m2cgen類似的代碼轉換項目sklearn porter,能將訓練好的scikit-learn模型轉換成Java、C、JavaScript、Go、Ruby代碼:

https://github.com/nok/sklearn-porter


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 量子位 的精彩文章:

吳恩達也帶不動了?Drive.ai被曝作價2億美元尋求出售

TAG:量子位 |