ML.NET 更新

微軟技術棧發表於2022-07-17

ML.NET是一款面向.NET開發人員的開源,跨平臺機器學習框架,可以將自定義機器學習整合到.NET應用中。我們很開心地向您介紹我們在過去幾個月中所做的工作。

AutoML更新

自動化機器學習(AutoML)通過更容易地為您適合的場景和資料集找到最佳演算法,從而使該過程自動化。AutoML是支援模型生成器和ML.NET CLI訓練經驗的後端。去年,我們宣佈在我們的模型生成器和基於神經網路智慧 (NNI) 的 ML.NET CLI 工具以及 Microsoft Research 的快速輕量級 AutoML (FLAML) 技術中對 AutoML 實施進行了更新。與之前的解決方案相比,這些更新提供了一些好處和改進,包括:

  • 探索的模型數量增加。
  • 提高了超時錯誤率。
  • 改進的效能指標(例如,準確性和r平方)。

直到最近,您還只能在我們的工具中利用這些AutoML改進。

我們很興奮地宣佈,我們已經將AutoML的NNI / FLAML實現整合到ML.NET框架中,這樣你就可以從程式碼優先的體驗中使用它們。

要開始使用AutoML API,請使用ML.NET daily feed安裝Microsoft.ML和Microsoft.ML.Auto NuGet包的微軟最新的預釋出版本。

實驗的API

實驗是訓練或試驗的集合。每次試驗都會產生關於自身的資訊,例如:

  • 評估指標:用於評估模型的預測能力的指標。
  • 流水線:用於訓練模型的演算法和超引數。
    實驗API為AutoML提供了一組預設值,使您更容易將其新增到訓練管道中。

    // 配置AutoML管道
    var experimentPipeline =    
      dataPrepPipeline
          .Append(mlContext.Auto().Regression(labelColumnName: "fare_amount"));
    // 配置實驗
    var experiment = mlContext.Auto().CreateExperiment()
                     .SetPipeline(experimentPipeline)
                     .SetTrainingTimeInSeconds(50)
                     .SetDataset(trainTestSplit.TrainSet, validateTestSplit.TrainSet)
                     .SetEvaluateMetric(RegressionMetric.RSquared, "fare_amount", "Score");
    // 執行實驗
    var result = await experiment.Run();

    在這個程式碼片段中,dataprepipeline是一系列轉換,用於將資料轉換為適合訓練的格式。訓練迴歸模型的AutoML元件被附加到該管道上。同樣的概念也適用於其他受支援的場景,比如分類。

當您使用已定義的訓練管道建立實驗時,您可以自定義的設定包括訓練時間、訓練和驗證集以及優化的評估指標。

定義了管道和實驗之後,呼叫Run方法開始訓練。

▌搜尋空間和可清除估計器

如果需要對超引數搜尋空間有更多的控制,可以定義搜尋空間,並使用可清除的估計器將其新增到訓練管道中。

// 配置搜尋空間
var searchSpace = new SearchSpace<LgbmOption>();


// 初始化估計器管道
var sweepingEstimatorPipeline =
    dataPrepPipeline
        .Append(mlContext.Auto().CreateSweepableEstimator((context, param) =>
                 {
                     var option = new LightGbmRegressionTrainer.Options()
                     {
                         NumberOfLeaves = param.NumberOfLeaves,
                         NumberOfIterations = param.NumberOfTrees,
                         MinimumExampleCountPerLeaf = param.MinimumExampleCountPerLeaf,
                         LearningRate = param.LearningRate,
                         LabelColumnName = "fare_amount",
                         FeatureColumnName = "Features",
                         HandleMissingValue = true
                     };


                     return context.Regression.Trainers.LightGbm(option);
                 }, searchSpace));

搜尋空間定義了用於搜尋的超引數範圍。

可清理評估器使您能夠像使用其他評估器一樣使用ML.NET管道中的搜尋空間。

要建立和執行實驗,您需要使用CreateExperiment和run方法的相同過程。

模型生成器和ML.NET CLI更新

我們已經對模型生成器和ML.NET CLI做了幾個更新。其中我想強調的兩個是:

  • 時間序列預測場景的模型生成器
  • .NET CLI的新版本

▌時間序列預測場景(預覽)

時間序列預測是在與時間相關的觀測中確定模式,並對未來幾個時期作出預測的過程。現實世界的用例有:

  • 預測產品需求
  • 能源消費預測

在ML.NET中,選擇時間序列預測的訓練師並不太難,因為你只有一個選擇,ForecastBySsa。困難的部分在於找到引數,如分析的時間視窗和預測未來的距離。找到正確的引數是一個實驗過程,這是AutoML的一項出色工作。對我們的AutoML實現的更新使通過超引數進行智慧搜尋成為可能,從而簡化了訓練時間序列預測模型的過程。

作為這些努力的結果,我們很高興地與大家分享,您現在可以在模型生成器中訓練時間序列預測模型。

下載或更新到模型生成器的最新版本,開始訓練您的時間序列預測模型。

▌ML.NET CLI的新版本

ML.NET CLI是我們的跨平臺.NET全域性工具,它利用AutoML在執行Windows、MacOS和Linux的x64和ARM64裝置上訓練機器學習模型。幾個月前,我們釋出了ML.NET CLI的新版本,它帶來了:

  • .NET 6 支援
  • 支援 ARM64 架構
  • 新場景
    影像分類(針對 x64 架構)
    建議
    預測

安裝 ML.NET CLI 並從命令列開始訓練模型。

Notebooks的鍵盤快捷鍵

Interactive Notebooks廣泛應用於資料科學和機器學習。它們對於資料探索和準備、實驗、模型解釋和教育都很有用。

去年10月,我們釋出了基於.NET InteractiveVisual Studio Notebook Editor擴充套件。在過去的幾個月裡,我們一直在改進效能和穩定性。

在我們的最新版本中,我們通過啟用鍵盤快捷鍵讓您無需離開鍵盤就能更輕鬆地工作。如果你以前使用過notebooks,你應該對其中的許多快捷方式很熟悉。

image.png

執行/執行單元格,並將焦點向下移動

表中的鍵是大寫的,但大寫不是必需的。

安裝最新版本的Notebook編輯器,並開始在Visual Studio中建立Notebook。

ML.NET的下一個目標是什麼?

我們正積極朝著路線圖中所概述的領域努力。

▌深度學習

幾個月前,我們分享了深度學習的計劃。該計劃的很大一部分圍繞著改善ONNX的消費體驗,並通過TorchSharp(一個提供對驅動PyTorch的庫的訪問的.NET庫)實現新的場景。我們在實現這一計劃方面取得的一些進展包括:

為ONNX推斷啟用全域性GPU標誌。在此更新之前,當你想使用GPU對ONNX模型進行推斷時,ApplyOnnxModel轉換中的FallbackToCpu和GpuDeviceId標誌沒有被儲存為管道的一部分。因此,每次都必須安裝管道。我們已經使這些標誌可作為MLContext的一部分訪問,因此您可以將它們儲存為模型的一部分。

TorchSharp 面向 .NET 標準。TorchSharp最初的目標是.NET 5。作為我們將TorchSharp整合到ML.NET的工作的一部分,我們更新為TorchSharp面向.NET標準。
在接下來的幾周裡,我們很高興與大家分享我們在TorchSharp與ML.NET整合方面取得的進展。

.NET DataFrame

清晰且具有代表性的資料有助於提高模型的效能。因此,理解、清理和準備訓練資料的過程是機器學習工作流中的關鍵步驟。幾年前,我們在.NET中引入了DataFrame型別,作為Microsoft.Data.Analysis NuGet包的預覽。DataFrame仍處於預覽階段。我們理解使用工具來執行資料清理和處理任務是多麼重要,並且已經開始組織和優先考慮反饋,因此我們解決了現有的穩定性和開發人員經驗痛點。這些反饋被組織成GitHub問題的一部分。

我們建立這個跟蹤問題是為了跟蹤和組織反饋。如果您有任何想要與我們分享的反饋,請在描述中為個別問題投票或在跟蹤問題中直接評論。

MLOps

機器學習操作(MLOps)就像機器學習生命週期的DevOps。這包括模型部署和管理以及資料跟蹤,這有助於機器學習模型的產品化。我們一直在評估用ML.NET改善這種體驗的方法。

最近我們發表了一篇部落格文章,指導你完成設定Azure機器學習資料集、使用ML.NET CLI訓練ML.NET模型以及使用Azure Devops配置再訓練管道的過程。要了解更多細節,請參閱《在Azure ML中訓練ML.NET模型》一文。

入門和資源

微軟文件中詳細瞭解 ML.NET、模型生成器和 ML.NET CLI。

如果您遇到任何問題,功能請求或反饋,請在GitHub上的ML.NET回購或ML.NET工具(Model Builder & ML.NET CLI)回購中提交問題。



長按識別二維碼
關注微軟中國MSDN

點選瞭解更多ML.NET資訊~

相關文章