写点什么

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

  • 2019-05-29
  • 本文字数:2445 字

    阅读完需:约 8 分钟

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


2019-05-29 08:007222
用户头像

发布了 342 篇内容, 共 245.3 次阅读, 收获喜欢 630 次。

关注

评论

发布
暂无评论
发现更多内容

GitHub狂飙30K+star面试现场,专为程序员面试打造,现已开源可下载

钟奕礼

Java 程序员 java面试 java编程

降价背后,函数计算规格自主选配功能揭秘

Serverless Devs

Serverless 前端 函数计算FC

基于分发与计算的GRTN全球实时传输网络

阿里云CloudImagine

互联网 科技 GRTN 全球实时网络传播 分发与计算

拿到8000元的火焰杯比赛奖金,感谢霍格沃兹测试开发学社

测吧(北京)科技有限公司

软件测试比赛

Redis之String类型和Hash类型的介绍和案例应用

C++后台开发

redis 数据结构 hash 后端开发 C++开发

SAP MM 为UB类型的STO执行VL10B,报错-没有项目类别表存在(表T184L NL 0002 V)-之对策

SAP虾客

SAP MM UB类型STO VL10B T184L

Ansible最佳实践之 AWX 构建高级作业工作流的创建和调度

山河已无恙

12月月更

Ansible最佳实践之AWK VS Anssible Tower 界面介绍

山河已无恙

12月月更

阿里P8面试官总结的《2023最新java面试题》,搞定90%以上的技术面

钟奕礼

Java 程序员 java面试 java编程

PGL图学习项目合集&数据集分享&技术归纳业务落地技巧[系列十]

汀丶人工智能

神经网络 图神经网络 12月日更 11月月更 12月月更

MySQL从入门到实战讲解,京东T5大牛学习笔记分享,看完我哭了!

钟奕礼

Java 程序员 java面试 java编程

Ansible最佳实践之 AWX 使用 Ansible 与 API 通信tags

山河已无恙

12月月更

预告|2022 星策 Summit MLOps 分论坛议程公布!

星策开源社区

人工智能 机器学习 开源 AI MLOps

裸辞不慌!入职蚂蚁金服P6,掌握并发编程我是这样吊打面试官的

钟奕礼

Java java面试 java编程 程序员‘

更改 HIVE 表字段数据类型有哪些注意事项?

明哥的IT随笔

hadoop hive

Ansible最佳实践之 AWX 创建管理项目的一些笔记

山河已无恙

12月月更

【python小脚本】监听日志文件异常数据发送告警短信

山河已无恙

12月月更

GaussDB(for Cassandra)新特性发布:支持Lucene二级索引,让复杂查询更智能

秃头也爱科技

iOS SIGKILL 信号量崩溃抓取以及优化实践

百度Geek说

ios 12 月 PK 榜 崩溃日志

如何通过C#/VB.NET将PDF转为Word

在下毛毛雨

C# PDF word 转换

广西移动圆满完成区运会通信保障任务

极客天地

腾讯云数据库SaaS服务2022再升级 全面助力企业提升数据库运维能力

科技热闻

低代码领域:发展路径、市场规模及未来趋势洞察!

优秀

低代码

并发编程详解:十三个工具类,十大设计模式,从理论基础到案例实战

钟奕礼

Java 程序员 java面试 java编程

非结构化数据暴增,企业如何稳定高效的支撑日均百亿级访问

秃头也爱科技

Serverless Devs 重大更新,基于 Serverless 架构的 CI/CD 框架:Serverless-cd

Serverless Devs

Serverless Serverless Devs

多引擎可视化数据流实现方案

元年技术洞察

数据中台 数字化转型 专利解析 方舟企业数字化 PaaS 平台 #方舟平台

动不动问原理,面试官你来讲讲Spring的原理?讲出来我给你开25K

钟奕礼

Java 程序员 java面试 java编程

Java jar 如何防止被反编译?代码写的太烂,害怕被人发现

小小怪下士

Java 程序员 反编译

Ansible之 AWX 管理清单和凭据的一些笔记

山河已无恙

12月月更

教你用JavaScript实现乘法游戏

小院里的霍大侠

JavaScript 前端开发 编程实战 实战案例 初学者

InfoQ专访 :Pranav Rastogi谈.NET的开源机器学习框架ML.NET_语言 & 开发_Arthur Casals_InfoQ精选文章