2021年11月 微软开源一款简单的、多语言的、大规模并行的机器学习库 SynapseML(以前称为 MMLSpark),以帮助开发人员简化机器学习管道的创建。具体参见微软深度学习库 SynapseML:可直接在系统中嵌入 45 种不同机器学习服务、支持 100 多种语言文本翻译。
2022年8月12日 微软在.NET 博客上发布了用于 .NET 的 SynapseML,建立在其去年 11 月首次亮相的大规模机器学习开源项目SynapseML 的基础上。作为新 SynapseML v0.10 版本的一部分,微软宣布了一组新的 .NET API,用于大规模可扩展的机器学习。博客文章中说:“这允许我们通过 .NET for Apache Spark 语言绑定来创作、训练和使用来自 C#、F# 或 .NET 系列中的其他语言的任何 SynapseML 模型。”
微软MVP实验室研究员
张善友
深圳友浩达CTO&首席架构师,微软最有价值专家,微软SWAT专家,超过20年的软件研发经验,曾在腾讯工作12年,.NET基金会成员,.NET云原生顾问和解决方案专家,运营微信公众号“dotnet跨平台”和“分布式应用运行时”
SynapseML 在 Apache Spark 上运行并且需要安装 Java,因为 Spark 使用 JVM 来运行 Scala。但是,它具有针对 Python 或 R 等其他语言的绑定。当前的 0.10.0 版本添加了针对 .NET 语言的绑定。该工具可以帮助开发人员在各种 Microsoft 领域构建可扩展的智能系统,包括:
- 深度学习
- 模型可解释性
- 计算机视觉
- 强化学习和个性化
- 异常检测
- 搜索和检索
- 形式和人脸识别
- 语音处理
- 梯度提升
- 文本分析
- 微服务编排
- 翻译微软
去年首次开源这个项目时是这么说的 ”统一的 API 标准化了当今的许多工具、框架和算法,简化了分布式 ML 体验, 这使开发人员能够为需要多个框架的用例快速构建不同的 ML 框架,例如 Web 监督学习、搜索引擎创建等。它还可以在单节点、多节点上训练和评估模型,以及可弹性调整大小的计算机集群,因此开发人员可以在不浪费资源的情况下扩展他们的工作。”。这段话对于熟悉微软的另一个捐献给CNCF的 开源项目 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 modelvar lightGBMClassificationModel = lightGBMClassifier.Fit(trainDf);
// Apply transformation and displayresults
lightGBMClassificationModel.Transform(testDf).Show(50);
SynapseML 允许开发人员调用其管道中的其他服务。该库支持 Microsoft 自己的认知服务,这是一组由 Microsoft 训练的模型提供支持的通用 AI 服务。此外,当前版本的 SynapseML 允许开发人员在其解决方案中利用预训练的 OpenAI 模型,例如用于自然语言理解和生成的 GPT-3 以及用于代码生成的 Codex。目前使用 OpenAI 模型需要访问 Azure OpenAI 服务。
最后,当前版本增加了对 MLflow 的支持,这是一个管理 ML 生命周期的平台。开发人员可以使用它来加载和保存模型,并在模型执行期间记录消息。
现在.NET 机器学习社区加入了一新的成员SynapseML:
ML.NET 是一个 .NET 库,用于使用 .NET 语言运行单机工作负载:
- TensorFlow.NET :TensorFlow 绑定
- Keras.NET
- TorchSharp:PyTorch 绑定
- ONNX RT:ONNX 模型支持
- Apache Spark for .NET:为 Apache Spark 分布式计算框架提供 .NET 支持
- Microsoft Cognitive Toolkit (CNTK) 是 Microsoft ML 库。它还有一个.NET API ,他已经停止开发。
- Accord.NET 是一个面向视觉和音频处理的 .NET 机器学习库,已经停止开发。
- .NET 社区中,开发人员对所有这些库如何相互比较或它们是否相互替换存在混淆。SynapseML 项目成员在 Reddit 上积极回答这些问题。
SynapseML 构建在Apache Spark for .NET项目之上,该项目为 Apache Spark 分布式计算框架提供 .NET 支持。Apache Spark 是用 Scala(JVM 上的一种语言)编写的,但具有 Python、R、.NET 和其他语言的语言绑定。此版本为 SynapseML 库中的所有模型和学习器添加了完整的 .NET 语言支持,因此您可以在 .NET 中创作分布式机器学习管道,以便在 Apache Spark 集群上执行。
微软最有价值专家(MVP)
微软最有价值专家是微软公司授予第三方技术专业人士的一个全球奖项。29年来,世界各地的技术社区领导者,因其在线上和线下的技术社区中分享专业知识和经验而获得此奖项。
MVP是经过严格挑选的专家团队,他们代表着技术最精湛且最具智慧的人,是对社区投入极大的热情并乐于助人的专家。MVP致力于通过演讲、论坛问答、创建网站、撰写博客、分享视频、开源项目、组织会议等方式来帮助他人,并最大程度地帮助微软技术社区用户使用 Microsoft 技术。
更多详情请登录官方网站:https://mvp.microsoft.com/zh-cn
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。