NVIDIA 初创加速计划,免费加速您的创业启动 了解详情
写点什么

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


公众号推荐:

跳进 AI 的奇妙世界,一起探索未来工作的新风貌!想要深入了解 AI 如何成为产业创新的新引擎?好奇哪些城市正成为 AI 人才的新磁场?《中国生成式 AI 开发者洞察 2024》由 InfoQ 研究中心精心打造,为你深度解锁生成式 AI 领域的最新开发者动态。无论你是资深研发者,还是对生成式 AI 充满好奇的新手,这份报告都是你不可错过的知识宝典。欢迎大家扫码关注「AI前线」公众号,回复「开发者洞察」领取。

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

发布了 259 篇内容, 共 149.3 次阅读, 收获喜欢 577 次。

关注

评论

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

架构实战总结

Geek_fc100d

「架构实战营」

31 K8S之StatefulSet控制器

穿过生命散发芬芳

k8s 28天写作 12月日更

微服务架构细节

卢卡多多

28天写作 12月日更

工业区块链与关键关联技术融合创新

CECBC

新公司安排的工作做不来怎么办?是不是该离职了?

石云升

28天写作 职场经验 12月日更

「阿里云可观测系列公开课」正式发布,多维度助力企业强化可观测能力

阿里巴巴云原生

阿里云 云原生 直播 可观测 公开课

SpringCloudAliBaba组件之Nacos精讲【注册、配置中心】

XiaoLin_Java

微服务 nacos 配置中心 springcloudAlibaba 签约计划第二季

SpringCloudAliBaba 组件之 Ribbon精讲【负载均衡】

XiaoLin_Java

负载均衡 微服务 Ribbon springcloudAlibaba 签约计划第二季

由《组织行为学》讲义想到的两个问题(1/28)

赵新龙

TGO鲲鹏会 28天写作

SpringCloudAliBaba之微服务常识扫盲

XiaoLin_Java

架构 微服务 springcloudAlibaba 签约计划第二季

反脆弱漫谈

木风

质量管理 技术管理 28天写作

Java基础系列:反射

正向成长

Java 反射

TypeScript 之常见类型(上)

冴羽

JavaScript typescript 翻译 大前端

10个问题解答火热的元宇宙概念

CECBC

Java 项目中使用 Resilience4j 框架实现隔断机制/断路器

码语者

Java circuit break 断路器 Resilience4j 隔断机制

王者荣耀商城异地多活架构设计

胡颖

架构实战营

微博系统中“微博评论”的高可用高性能架构

AHUI

「架构实战营」

模块五作业 ”微博评论“的高性能高可用计算架构

小朱

架构实战营

坚持不下去,你缺的可能不是意志力

Justin

个人成长 心理学 28天写作

12.01碎碎念

穿过生命散发芬芳

28天写作

Java问题排查分享

捉虫大师

Java 问题排查

毕业设计-电商秒杀系统

小智

「架构实战营」

Android C++系列:Linux信号(三)

轻口味

c++ android 28天写作 12月日更

手把手搭建微服务项目,他到底有什么不一样?

XiaoLin_Java

架构 微服务 springcloudAlibaba 签约计划第二季 单体项目

深度参与,亲身体验,谨慎接受

mtfelix

28天写作 必然 未来趋势 2022开年学习

模块五作业

ks

架构实战营

历经 7 年双 11 实战,阿里巴巴是如何定义云原生混部调度优先级及服务质量的?

阿里巴巴云原生

阿里云 云原生 混部 CNStack

基于云的技术架构设计实践-第0篇

hackstoic

云计算 架构 云原生 创业公司 签约计划第二季

模块九作业

Geek_fc100d

「架构实战营」

Mysql探索(一):B-Tree索引

程序员历小冰

MySQL 索引 28天写作

继续跑步

wood

创业 跑步

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