InfoQ專訪 :Pranav Rastogi談.NET的開源機器學習框架ML.NET

本月初,微軟發佈了ML.NET 1.0版本,它是一個面向.NET生態系統的開源機器學習(ML)框架。

ML.NET最初是作爲微軟研究院的一項提議進行開發的,它允許使用C#或F#開發自定義的ML模型。這些模型可用於情感分析、欺詐及垃圾郵件偵測、產品或電影推薦、圖像分類等場景

微軟的客戶已經在使用1.0之前版本的ML.NET了。然而,新版本的框架提供了Visual Studio模型構建器和稱爲自動機器學習(AutoML)的工具。AutoML是爲ML初學者而設計的特性,它能根據輸入的數據自動決策數據場景(例如:分類和迴歸)以及ML模型需使用的ML算法。作爲此功能的補充,模型構建器提供了一個UI工具(僅限Windows),用於在Visual Studio環境中構建ML模型。目前,這兩個工具可在Visual Studio預覽版本上獲取。

InfoQ採訪了ML.NET項目管理團隊的成員Pranav Rastogi

InfoQ: 爲什麼最新版的ML.NET對.NET機器學習社區如此重要?

Pranav Rastogi: 最新版的ML.NET爲開發人員使用ML提供了便利。作爲一名 .NET開發人員,我們可以使用ML.NET的API來構建不同的場景,比如情感分析、產品推薦、客戶細分等等。但是,開發人員面臨的主要挑戰是ML入門艱難。他們需要了解使用哪個ML訓練器,以及如何定製和優化它。AutoML作爲我們發佈的最新版的一部分,簡化了構建自定義ML模型的方式。

我們還引入了其他的工具,方便開發人員入門ML 。此次發佈版本提供了基於命令行界面(CLI)的操作支持,因此,開發人員可以使用命令行構建ML模型。

此外,對於Visual Studio用戶,我們也提供了基於圖形用戶界面(GUI)的操作支持,方便用戶將ML模型直接添加到他們的項目中。該操作工具名爲模型構建器(Model Builder),它允許開發人員直連他們的文件並構建自定義模型。我們可以右鍵單擊項目,選中“添加機器學習”,然後選擇一個場景。數據源可以選用文件或SQL Server數據庫,AutoML將依據我們選擇的場景爲我們選擇最佳的模型。在此過程中,它會嘗試不同的模型和設置,最終返回給我們前五種模型概述,以及推薦的最佳模型。

完成模型選擇之後,最後一步是爲我們的解決方案開發代碼。開發人員通常考慮使用一些工具來生成代碼,卻不信任它們,因爲它們有魔術代碼。但是,使用模型構建器,在過程結束時,開發人員將得到用於訓練模型的確切代碼。如果需要,還能自定義對應的代碼。我們可以先在本地運行它,然後放到雲上進行長時間的模型訓練。我們也能輕鬆地將其和DevOps工具集成。我們可以對模型進行操作,併爲任何處於休眠狀態的應用程序構建自定義機器學習模型,因此,可以爲Web應用程序、移動應用程序或桌面應用程序構建模型。

InfoQ: ML.NET和其他ML框架如TensorFlow相比如何呢?

Rastogi: ML.NET的主要價值在於,它是利用現有ML庫和框架的生態系統。ML.NET與流行框架(如TensorFlow、.NET版ONNX)深度集成。在圖像分類、對象檢測等場景中,我們可以輕鬆地獲取這些框架構建的模型,也可以在.NET應用程序中使用諸如初始模型、共振模型等模型。

InfoQ: 和其他微軟產品,如認知服務、Azure機器學習工具相比,ML.NET的定位是怎樣的呢?

Rastogi: 這取決於我們現有技術棧是什麼樣的:如果你是一位數據科學家,那麼你可能會使用基於記事本的環境,並且使用你選擇的框架。Azure機器學習提供了該項ML服務,方便開發人員或數據科學家在記事本上運行,然後在雲上進行有效的訓練。如果你是ML的初學者,認知服務(Cognitive Services)採用開箱即用的方案,提供了一個易用的API。而 ML.NET是一個爲.NET開發人員構建自定義ML模型的框架。

InfoQ: 您可以分享下您的團隊在開發ML.NET時遇到的一些最具挑戰性的任務嗎?

Rastogi: 在該項目中,我們面臨的最大挑戰是如何讓開發者更便捷地使用ML。鑑於ML是新生的,而且許多用戶對它的概念不熟悉,我們花費了大量的時間來確認API的名稱,使其符合.NET開發人員命名習慣,從而幫助它在生態系統中建立信任。我們做了大量的客戶調研後,發現如果我們對開發人員說“你能爲我建立一個二進制分類算法嗎?”,他們通常不知道是什麼含義。但是,如果我們從場景優先的角度出發,要求開發人員構建情緒分析,來分析客戶評論,他們通常可以做到這一點,因爲在ML中,這是一個已知的問題,可以通過將數據分爲兩類(A和B)來解決。因此,我們花了很多時間確保框架是容易理解的。默認設置是開箱即用,用戶無需自定義它。

我們還花了大量時間確保我們的框架可以處理大型數據集(TB級別),以確保整個管道可以像生產環境的應用程序一樣部署。這極大地提高了開發人員的工作效率。

InfoQ: AutoML最初是微軟研究院(Microsoft Research)的一個項目,您是如何將它與ML.NET集成,並作爲一個產品發佈的呢?

Rastogi: 這是微軟研究院與微軟不同產品團隊之間一次卓有成效的合作,是他們共同塑造了AutoML。AutoML是我們技術的關鍵部分,爲開發人員提供了構建自定義ML模型的便捷體驗。開發人員無需關心要使用哪個學習器、混合參數設置應該是什麼、應該設置多少學習器、需要訓練多長時間、以及特徵化過程應該是什麼。因此,微軟的很多團隊一起致力於這個研究項目,並把它推向市場。

InfoQ: 在未來.NET開發社區可以期待哪些新特性?

Rastogi: 現在我們正在研究的是在Visual Studio中引入ML.NEL預覽版功能的支持。目前在預覽版中,有深度學習的一些功能和對TensorFlow的支持。我們將會把它們集成,同時也將改進模型構建器層,支持基於時間序列的推薦。想要隨時瞭解最新的路線圖,可以查閱我們的GitHub倉庫

ML.NET支持Windows、Linux和macOS平臺。由於模型構建器以Visual Studio擴展方式提供,故在Windows上使用ML.NET需要安裝Visual Studio 2017 15.6版或更高版本。在macOS和Linux系統上,ML.NET模型使用CLI構建,故不需要上述依賴條件。您可以在這裏獲取更多關於ML.NET的信息。

查看英文原文ML.NET, an Open Source Machine Learning Framework for the .NET Ecosystem: Pranav Rastogi Q&A

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章