深度學習庫 SynapseML for .NET 釋出0.1 版本

2022-09-08 12:06:01

2021年11月 微軟開源一款簡單的、多語言的、大規模並行的機器學習庫 SynapseML(以前稱為 MMLSpark),以幫助開發人員簡化機器學習管道的建立。具體參見[1]微軟深度學習庫 SynapseML:可直接在系統中嵌入 45 種不同機器學習服務、支援 100 多種語言文字翻譯

2022年8月12日 微軟在.NET 部落格上釋出了[2] 用於 .NET 的 SynapseML,建立在其去年 11 月首次亮相的大規模機器學習開源專案SynapseML 的基礎上。作為新 SynapseML v0.10 版本的一部分,微軟宣佈了一組新的 .NET API,用於大規模可延伸的機器學習。 部落格文章中說:「這允許我們通過 .NET for Apache Spark 語言繫結來創作、訓練和使用來自 C#、F# 或 .NET 系列中的其他語言的任何 SynapseML 模型。 」

SynapseML

SynapseML 在 Apache Spark 上執行並且需要安裝 Java,因為 Spark 使用 JVM 來執行 Scala。但是,它具有針對 Python 或 R 等其他語言的繫結。當前的 0.10.0 版本新增了針對 .NET 語言的繫結。該工具可以幫助開發人員在各種 Microsoft 領域構建可延伸的智慧系統,包括:

微軟去年首次開源這個專案時是這麼說的 」統一的 API 標準化了當今的許多工具、框架和演演算法,簡化了分散式 ML 體驗, 這使開發人員能夠為需要多個框架的用例快速構建不同的 ML 框架,例如 Web 監督學習、搜尋引擎建立等。它還可以在單​​節點、多節點上訓練和評估模型,以及可彈性調整大小的計算機叢集,因此開發人員可以在不浪費資源的情況下擴充套件他們的工作。」。 這段話對於熟悉微軟的另一個捐獻給CNCF的 開源專案[3]Dapr 的同學來說是不是很熟悉?

SynapseML for .NET包含在一組 SynapseML NuGet 包中。這些包尚未釋出到主要的 NuGet 源,必須手動新增它們的源。安裝後,即可從 .NET 應用程式呼叫 SynapseML API。

以下程式碼片段說明了如何從 C# 應用程式呼叫 SynapseML API。

// Create LightGBMClassifier
var lightGBMClassifier = new LightGBMClassifier()
     .SetFeaturesCol("features")
     .SetRawPredictionCol("rawPrediction")
     .SetObjective("binary")
     .SetNumLeaves(30)
     .SetNumIterations(200)
     .SetLabelCol("label")
     .SetLeafPredictionCol("leafPrediction")
     .SetFeaturesShapCol("featuresShap");

// Fit the model
var lightGBMClassificationModel = lightGBMClassifier.Fit(trainDf);

// Apply transformation and displayresults
lightGBMClassificationModel.Transform(testDf).Show(50);


SynapseML 允許開發人員呼叫其管道中的其他服務。該庫支援 Microsoft 自己的[4]認知服務,這是一組由 Microsoft 訓練的模型提供支援的通用 AI 服務。此外,當前版本的 SynapseML 允許開發人員在其解決方案中利用預訓練的[5]OpenAI模型,例如用於自然語言理解和生成的[6]GPT-3以及用於程式碼生成的 Codex。目前使用 OpenAI 模型需要存取 Azure OpenAI 服務。

最後,當前版本增加了對[7]MLflow的支援,這是一個管理 ML 生命週期的平臺。開發人員可以使用它來載入和儲存模型,並在模型執行期間記錄訊息。

現在.NET 機器學習社群加入了一新的成員SynapseML:

在 .NET 社群中,開發人員對所有這些庫如何相互比較或它們是否相互替換存在混淆。SynapseML 專案成員在[16]Reddit上積極回答這些問題。

image

SynapseML 構建在Apache Spark for .NET專案之上,該專案為 Apache Spark 分散式計算框架提供 .NET 支援。Apache Spark 是用 Scala(JVM 上的一種語言)編寫的,但具有 Python、R、.NET 和其他語言的語言繫結。此版本為 SynapseML 庫中的所有模型和學習器新增了完整的 .NET 語言支援,因此您可以在 .NET 中創作分散式機器學習管道,以便在 Apache Spark 叢集上執行。

相關連結:

[1]微軟深度學習庫 SynapseML:可直接在系統中嵌入 45 種不同機器學習服務、支援 100 多種語言文字翻譯: https://mp.weixin.qq.com/s/UBoF3wYsf5fqBsbRpHk4pg

[2]用於 .NET 的 SynapseML: https://devblogs.microsoft.com/dotnet/announcing-synapseml-for-dotnet/

[3]Dapr: http://dapr.io/

[4]認知服務 : https://azure.microsoft.com/zh-cn/services/cognitive-services/

[5]OpenAI: https://openai.com/api/

[6]GPT-3: https://en.wikipedia.org/wiki/GPT-3

[7]MLflow: https://mlflow.org/

[8]ML.NET :https://dotnet.microsoft.com/zh-cn/apps/machinelearning-ai/ml-dotnet

[9]TensorFlow.NET:https://github.com/SciSharp/TensorFlow.NET

[10]Keras.NET: https://github.com/SciSharp/Keras.NET

[11]TorchSharp: https://github.com/dotnet/TorchSharp

[12]ONNX RT:https://github.com/microsoft/onnxruntime

[13]Apache Spark for .NET:https://dotnet.microsoft.com/en-us/apps/data/spark

[14]Microsoft Cognitive Toolkit (CNTK):https://docs.microsoft.com/en-us/cognitive-toolkit/using-cntk-with-csharp

[15]Accord.NET: http://accord-framework.net/

[16]Reddit: https://www.reddit.com/r/dotnet/comments/wk7zkq/microsoft_announces_new_scalable_machine_learning/