由微軟研究院開發的機器學習框架ML.NET,持續釋出每月更新,這次最重要的更新是棄用LearningPipeline API,使用全新的學習API,支援的機器學習框架也越來越豐富,除了上一個版本的TensorFlow,現在也支援ONNX模型。而在整體效能上,這個版本的模型預測速度提升了超過100倍。

在9月的ML.NET 0.5更新中,微軟開始支援TensorFlow模型,並且預告將會使用新的API,棄用LearningPipeline API,而這也成為ML.NET 0.6中最重要的更新,加入了用於建構和使用機器學習模型的API,在ML.NET 0.1中開始提供的LearningPipeline API,雖然很容易上手,但是因為存在諸多限制,為了讓整個框架可以繼續往下發展,微軟只好把這部分砍掉重練,現在LearningPipeline API移到Microsoft.ML.Legacy命名空間。

新的API目的是要支援更廣泛的使用情境,並且遵循來自相關熱門框架如Apache Spark和Scikit-Learn等的機器學習原則和命名規則。現在ML.NET機器學習模型流程分為明確的三個階段,非別是準備資料、建置和訓練,最後則是執行階段。準備資料又分成兩個步驟,載入資料和萃取特徵,而建置和訓練階段又包含了訓練模型和評估模型步驟。

在機器學習生態系互通性上,ML.NET 0.6多支援了ONNX格式的模型。ONNX是一種開放而且具互通操作性的模型格式,可以使用Scikit-learn、TensorFlow和Xgboost等框架訓練模型後,輸出為ONNX模型於其他的框架中使用。在ML.NET 0.3中支援輸出ONNX-ML格式功能,因此開發者可以將ML.NET獲得的結果,輸出到其他框架中使用,而在這個新的ML.NET 0.6版本中,ML.NET可以接受來自其框架的ONNX模型進行預測。

微軟在ML.NET 0.6中加入了全新的轉換器以及Runtime來使用ONNX模型,目前市面上有不少框架可以訓練出各式類型的ONNX模型,用於圖像分類、情感識別和物件偵測等任務。ML.NET中的ONNX轉換器會向ONNX模型輸入資料並進行預測,而ML.NET Runtime目前僅支援x64 CPU,作業系統也只僅支援Windows,未來會增加對Linux和macOS的支援。

ML.NET 0.6不只是在功能上的更新,微軟也為模型預測時進行了兩項效能主要改進。第一項改進是將原本的LearningPipeline API改為新的Estimators API,第二項改進則為最佳化新API中PredictionFunction的效能。這些改進為ML.NET預測速度帶來大幅度提升,在Iris資料預測上,提升了3,272倍,乳腺癌資料預測加速達6,541倍,情緒預測也有198倍的加速。

而微軟用於Office、Xbox和Azure等服務背後的機器學習引擎Infer.NET,最近也在.NET基金會下開源,並且擴充ML.NET用於進行統計建模和線上學習,並可在Microsoft.ML.Probabilistic命名空間中使用。

熱門新聞

Advertisement