在这篇文章中,我们将介绍为什么您应该使用 Microsoft 的开源机器学习和 AI 框架 ML.NET。
ML .NET 可用于生产
当组织想要开始将机器学习或 AI 添加到其技术堆栈中时,对话通常会转向其他语言,如 Python 或 R。通常,第一次转向 AI / ML 的组织不确定如何开始,因此他们会查看流行的库和语言,例如 SciKit-Learn 和 Python。
虽然这些库和语言功能强大,并且肯定有许多资源可供他们使用,但组织用于支持其现有应用程序的编程语言和框架与用于训练模型的语言之间的差异可能会使模型部署和维护变得困难。
Python 作为您的团队需要担心的独立技术堆栈和技能集
ML .NET 允许您将 .NET 用于所需的任意数量的数据科学堆栈,从数据分析到模型训练和评估,再到模型部署、推理和 MLOps 维护。
使用 ML .NET,您可以分析数据集、训练模型、评估模型性能、生成新的预测、构建生成式 AI 应用程序等 - 所有这些都在您已经使用的相同技术中完成。
将 ML .NET 集成到工作流中的不同方法
大部分 ML .NET 的功能可以使用本地数据或本地存储的模型在与 Internet 完全断开连接的情况下工作,这意味着 ML .NET 可以成为设备上机器学习方案或涉及关键安全或成本因素的方案的理想选择。
例如,如果需要在脱机或偶尔连接的场景中在设备上进行预测,则可以使用 ML .NET 托管预先训练的模型并在本地运行它,而不管 Internet 连接如何。
或者,如果您已经拥有一套 ASP .NET 应用程序或 API 服务器,并且想要添加机器学习,则可以使用资源在现有 ASP .NET 应用程序中托管模型。将模型推理捆绑到 API 中,既可以降低需要运行单独服务器的成本,又可以消除网络调用及其相关延迟,从而提高整体性能。PredictionEnginePool
ML .NET 的工作速度也非常快,并且每个版本都越来越快,正如 Microsoft 最近发布的 ML .NET 3.0 公告所说明的那样。
最后,ML .NET 已经成熟,它于 2019 年初首次发布,在此之前由 Microsoft 内部开发了十多年。Microsoft 已经审查了这些技术,并专门为在常见 .NET 应用程序方案(如 ASP .NET 应用程序内部)中运行的 ML .NET 开发了扩展。
ML .NET 是开发人员就绪的
ML .NET 不仅为您的组织做好准备,而且非常适合您的开发团队。
我是一名具有强大 .NET 背景的软件工程师。五年前,我开始更加关注 AI 和机器学习。由于 ML .NET,我不必放弃现有的 .NET 技能集 — 尽管我已经在 Python 和 R 方面做了很多工作,并且现在对这些领域感到满意。我仍然最舒适地使用 C# 或 F# 和 ML .NET 让我继续使用我熟悉和喜爱的语言和工具,同时执行新类型的任务。
由于 ML .NET 是为 .NET 开发人员构建的,因此 .NET 开发人员将熟悉其语法和约定。这意味着那些走上与我相同的旅程并开始将 AI 和机器学习添加到他们的技能集中的人不需要放弃他们的 .NET 技能。
虽然_我可以_在新的数据科学项目中使用 Python,但我不必_这样做_。如果我知道我有很多 C# 或 F# 逻辑要集成到我的模型训练或模型部署过程中,那么 ML .NET 非常适合我。此外,我可以继续使用 Visual Studio、VS Code 或 Rider,并继续有效地使用我现有的 IDE。
学习数据科学是一段旅程,具有基本数据科学素养的 .NET 开发人员可能还无法确定最适合其机器学习任务的模型训练器或超参数。
值得庆幸的是,ML .NET 牢记这一点,并提供了许多有用的工具来帮助开发人员轻松进入机器学习方案,包括:
Visual Studio Model Builder,一种基于向导的机器学习方法,专注于开发人员想要执行的任务
**命令行界面 (CLI),**其工作方式与模型生成器类似
AutoML 库,允许开发人员编写最少的代码,并让 AutoML 评估各种模型训练器和超参数以确定最佳模型。
在另一个极端,经验丰富的开发人员/数据科学家可以完全自定义模型训练管道,并利用可配置的超参数优化和广泛的指标集和标准机器学习工具。
我可以亲自证明 ML .NET 能够在开发人员/数据科学家所在的地方与他们会面,并推动他们在数据科学技能发展方面取得进展,以至于我写了一本关于它的书!
ML .NET 用途广泛
最后,为了避免您认为 ML .NET 是一个缺少关键功能的淡化框架,我建议您查看内置算法和训练程序以及支持的机器学习任务的列表。
在传统机器学习中,ML .NET 支持以下机器学习任务:
数据分析(通过DataFrame)
回归(预测数值)
预测(预测某个时间区域内的数值)
二元分类和**多类分类(**预测某物属于哪个类别)
异常检测(查找非典型的单个数据行或数据行组)
聚类(识别具有相似特征的行集群 — 对营销和数据分析很有用)
排名(预测行的排名顺序 — 用于显示搜索结果)
推荐(根据用户过去的偏好推荐新项目)
图像分类(根据图像的内容将图像分类到已知类别中)
对象检测(识别图像内的已知对象以及区域)
如您所见,ML .NET 可以做很多事情。这些任务中的每一个都有多个特定的模型训练器和内部的指标集,专为特定的机器学习场景而设计。
对于那些对 AI 比 ML 更感兴趣的人,ML .NET 支持许多 AI 场景,从使用 Infer.NET 的概率预测到使用 LLM 和其他形式的生成式 AI。
ML .NET 还与 Open Neural Network Exchange (ONNX) 模型集成,因此您可以使用 SciKit-Learn、TensorFlow 或其他框架训练模型,将训练后的模型导出到 ONNX,在 ML.NET 中导入模型,并将 ML.NET 仅用于模型推理。
关于使用 ML .NET 的原因的最终想法
最重要的是,ML .NET 是 Microsoft 和社区年复一年地继续投资的令人难以置信的主力。事实上,ML .NET 与 .NET 本身的新版本一起发布,并且不断推出更多功能。
ML .NET 不是 Python,它可能永远不会看到与 Python 在机器学习中享有的相同规模的社区和丰富的资源。此外,还有一些差距领域 — 特别是如果您想更多地关注 ML 。NET 的数据分析功能。这些是我将在以后的文章中倡导的领域,并且可能会通过我自己的代码提交来解决。
如果你喜欢我的文章,请给我一个赞!谢谢