InfoQ专访 :Pranav Rastogi谈.NET的开源机器学习框架ML.NET

本月初,微软发布了ML.NET 1.0版本,它是一个面向.NET生态系统的开源机器学习(ML)框架。

ML.NET最初是作为微软研究院的一项提议进行开发的,它允许使用C#或F#开发自定义的ML模型。这些模型可用于情感分析、欺诈及垃圾邮件侦测、产品或电影推荐、图像分类等场景

微软的客户已经在使用1.0之前版本的ML.NET了。然而,新版本的框架提供了Visual Studio模型构建器和称为自动机器学习(AutoML)的工具。AutoML是为ML初学者而设计的特性,它能根据输入的数据自动决策数据场景(例如:分类和回归)以及ML模型需使用的ML算法。作为此功能的补充,模型构建器提供了一个UI工具(仅限Windows),用于在Visual Studio环境中构建ML模型。目前,这两个工具可在Visual Studio预览版本上获取。

InfoQ采访了ML.NET项目管理团队的成员Pranav Rastogi

InfoQ: 为什么最新版的ML.NET对.NET机器学习社区如此重要?

Pranav Rastogi: 最新版的ML.NET为开发人员使用ML提供了便利。作为一名 .NET开发人员,我们可以使用ML.NET的API来构建不同的场景,比如情感分析、产品推荐、客户细分等等。但是,开发人员面临的主要挑战是ML入门艰难。他们需要了解使用哪个ML训练器,以及如何定制和优化它。AutoML作为我们发布的最新版的一部分,简化了构建自定义ML模型的方式。

我们还引入了其他的工具,方便开发人员入门ML 。此次发布版本提供了基于命令行界面(CLI)的操作支持,因此,开发人员可以使用命令行构建ML模型。

此外,对于Visual Studio用户,我们也提供了基于图形用户界面(GUI)的操作支持,方便用户将ML模型直接添加到他们的项目中。该操作工具名为模型构建器(Model Builder),它允许开发人员直连他们的文件并构建自定义模型。我们可以右键单击项目,选中“添加机器学习”,然后选择一个场景。数据源可以选用文件或SQL Server数据库,AutoML将依据我们选择的场景为我们选择最佳的模型。在此过程中,它会尝试不同的模型和设置,最终返回给我们前五种模型概述,以及推荐的最佳模型。

完成模型选择之后,最后一步是为我们的解决方案开发代码。开发人员通常考虑使用一些工具来生成代码,却不信任它们,因为它们有魔术代码。但是,使用模型构建器,在过程结束时,开发人员将得到用于训练模型的确切代码。如果需要,还能自定义对应的代码。我们可以先在本地运行它,然后放到云上进行长时间的模型训练。我们也能轻松地将其和DevOps工具集成。我们可以对模型进行操作,并为任何处于休眠状态的应用程序构建自定义机器学习模型,因此,可以为Web应用程序、移动应用程序或桌面应用程序构建模型。

InfoQ: ML.NET和其他ML框架如TensorFlow相比如何呢?

Rastogi: ML.NET的主要价值在于,它是利用现有ML库和框架的生态系统。ML.NET与流行框架(如TensorFlow、.NET版ONNX)深度集成。在图像分类、对象检测等场景中,我们可以轻松地获取这些框架构建的模型,也可以在.NET应用程序中使用诸如初始模型、共振模型等模型。

InfoQ: 和其他微软产品,如认知服务、Azure机器学习工具相比,ML.NET的定位是怎样的呢?

Rastogi: 这取决于我们现有技术栈是什么样的:如果你是一位数据科学家,那么你可能会使用基于记事本的环境,并且使用你选择的框架。Azure机器学习提供了该项ML服务,方便开发人员或数据科学家在记事本上运行,然后在云上进行有效的训练。如果你是ML的初学者,认知服务(Cognitive Services)采用开箱即用的方案,提供了一个易用的API。而 ML.NET是一个为.NET开发人员构建自定义ML模型的框架。

InfoQ: 您可以分享下您的团队在开发ML.NET时遇到的一些最具挑战性的任务吗?

Rastogi: 在该项目中,我们面临的最大挑战是如何让开发者更便捷地使用ML。鉴于ML是新生的,而且许多用户对它的概念不熟悉,我们花费了大量的时间来确认API的名称,使其符合.NET开发人员命名习惯,从而帮助它在生态系统中建立信任。我们做了大量的客户调研后,发现如果我们对开发人员说“你能为我建立一个二进制分类算法吗?”,他们通常不知道是什么含义。但是,如果我们从场景优先的角度出发,要求开发人员构建情绪分析,来分析客户评论,他们通常可以做到这一点,因为在ML中,这是一个已知的问题,可以通过将数据分为两类(A和B)来解决。因此,我们花了很多时间确保框架是容易理解的。默认设置是开箱即用,用户无需自定义它。

我们还花了大量时间确保我们的框架可以处理大型数据集(TB级别),以确保整个管道可以像生产环境的应用程序一样部署。这极大地提高了开发人员的工作效率。

InfoQ: AutoML最初是微软研究院(Microsoft Research)的一个项目,您是如何将它与ML.NET集成,并作为一个产品发布的呢?

Rastogi: 这是微软研究院与微软不同产品团队之间一次卓有成效的合作,是他们共同塑造了AutoML。AutoML是我们技术的关键部分,为开发人员提供了构建自定义ML模型的便捷体验。开发人员无需关心要使用哪个学习器、混合参数设置应该是什么、应该设置多少学习器、需要训练多长时间、以及特征化过程应该是什么。因此,微软的很多团队一起致力于这个研究项目,并把它推向市场。

InfoQ: 在未来.NET开发社区可以期待哪些新特性?

Rastogi: 现在我们正在研究的是在Visual Studio中引入ML.NEL预览版功能的支持。目前在预览版中,有深度学习的一些功能和对TensorFlow的支持。我们将会把它们集成,同时也将改进模型构建器层,支持基于时间序列的推荐。想要随时了解最新的路线图,可以查阅我们的GitHub仓库

ML.NET支持Windows、Linux和macOS平台。由于模型构建器以Visual Studio扩展方式提供,故在Windows上使用ML.NET需要安装Visual Studio 2017 15.6版或更高版本。在macOS和Linux系统上,ML.NET模型使用CLI构建,故不需要上述依赖条件。您可以在这里获取更多关于ML.NET的信息。

查看英文原文ML.NET, an Open Source Machine Learning Framework for the .NET Ecosystem: Pranav Rastogi Q&A

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章