ML.NET 3.0 增強了深度學習和資料處理能力

張善友發表於2023-12-05

.NET團隊在 2023.11.28 在部落格上正式釋出了 ML.NET 3.0::https://devblogs.microsoft.com/dotnet/announcing-ml-net-3-0/[1],強調了兩個主要的興趣點,即深度學習和資料處理,使開發人員能夠完全在 .NET 生態系統中建立注入 AI 的應用程式。開源 ML.NET 框架[2]的主要賣點,旨在幫助開發人員能夠使用C#和F#構建自定義ML模型並將其整合到應用程式中。這是透過命令列 (CLI) 和模型生成器等工具完成的,或者建立像大型語言模型 (LLM) 這樣的結構來完成,這些模型為 ChatGPT 和 無處不在的“Copilot”AI 助手提供支援。

image

深度學習

深度學習是機器學習的一個子集,使用鬆散地類似於人腦行為的人工神經網路,以便從大量資料甚至非結構化資料等輸入中“學習”。深度學習場景在v3.0版本中得到了大幅擴充套件,在三個領域具有新功能:物件檢測、命名實體識別和問答。

ML.NET 3.0 中的物件檢測是一種高階形式的影像分類,它不僅可以對影像中的實體進行分類,還可以對它們進行定位,因此非常適合影像包含多個不同型別的物件的場景。在v3.0中,透過與TorchSharp和ONNX模型的整合,物件檢測功能得到了提升,Microsoft特別指出了TorchSharp支援的物件檢測API。這些代表了在 ML.NET 框架內利用深度學習技術的重要一步。

物件檢測API的底層技術包括微軟研究院開發的基於Transformer的神經網路架構技術。這種方法表明了深度學習的現代趨勢,特別是在計算機視覺方面。

TorchSharp 還有助於增強命名實體識別和問答,這兩個常見的 ML 領域是自然語言處理 (NLP)的一部分。在 ML.NET 3.0 中,透過利用之前引入的 TorchSharp RoBERTa 文字分類功能,解鎖了這兩種方案的增強功能。“NER和QA訓練器都包含在 Microsoft.ML.TorchSharp 3.0.0包[3]和名稱空間Microsoft.ML.TorchSharp中。


資料處理


資料處理方面主要是透過對 DataFrame(一種用於儲存和運算元據的結構)以及新的 IDataView 互操作性功能的許多增強功能和 bug 修復,改進了方案。載入、檢查、轉換和視覺化資料的重要步驟要強大得多。

具體注意事項包括:

  • 增強的 <-> 轉化:IDataViewDataFrame 新增了對 ReadOnlyMemory<char>和 VBufferDataFrameColumn<T>列型別的支援,其中的值作為並支援所有支援基元。
  • 增加列資料容量:列現在可以儲存超過 2 GB 的資料,從而消除了以前的限制。
  • Apache Arrow 整合:識別 Apache Arrow 的Date64列資料。
  • 擴充套件的資料載入功能:包括使用 ADO.NET 的 SQL 資料庫的匯入和匯出功能。此外,可以從任何IEnumerable集合載入資料並將其匯出到System.Data.DataTable .
  • 在 DataFrame 之間追加資料:DataFrame列名匹配時,允許將資料從一個追加到另一個,從而放寬了對列順序的約束。
  • 重複列名的處理: DataFrame.LoadCsv增強了管理重複列名的功能,提供了重新命名它們的選項。
  • 改進了算術效能和空值處理:列克隆、二進位制比較方案和算術運算的最佳化。
  • 偵錯程式增強功能:偵錯程式中具有長名稱的列的可讀性更好。

Microsoft還指出了新的張量基元整合,它們不會直接影響開發任務,但確實提供了顯著的效能改進。AutoML 可自動將機器學習應用於資料的過程,也得到了增強,增強了模型生成器和 ML.NET CLI 中的相關體驗。

有關上述所有更改和其他更改的更多資訊,請參見 發行說明[4] .

展望未來,開發團隊現在正在制定 .NET 9 和 ML.NET 4.0 的計劃,模型生成器和 ML.NET CLI 預計將更快地更新,以便使用 ML.NET 3.0 版本。繼續擴充套件深度學習場景和整合,我們將繼續增強DataFrame,


相關連結