微软开源深度学习库,太强了

机器学习算法与Python实战

共 3494字,需浏览 7分钟

 · 2021-11-27


↓↓↓点击关注,回复资料,10个G的惊喜


整理 | 李冬梅

目前,数据科学团队在使用机器学习模型时正面临着越来越大的压力。虽然 AI 的采用和分析持续上升,但大约有 87% 的数据科学项目从未投入生产。根据 Algorithmia 最近的调查显示,22% 的公司需要一到三个月的时间来部署模型以实现业务价值,而 18% 的公司需要三个月以上的时间。

为了缓解这一现状,近日,微软宣布了开源一款简单的、多语言的、大规模并行的机器学习库 Synap,seML(以前称为 MMLSpark),以帮助开发人员简化机器学习管道的创建。微软表示,借助 SynapseML,开发人员可以构建“可扩展的智能”系统来解决跨领域的挑战,包括文本分析、翻译和语音处理。

构建可用于生产的分布式 ML 管道通常困难,即使对于最有经验的开发人员也是如此。而对于初学者来说,组合来自不同生态系统的工具需要大量代码,而且许多框架在设计时并没有考虑到服务器集群。SynapseML 通过将多个现有的 ML 框架和新的 Microsoft 算法统一到一个可跨 Python、R、Scala 和 Java 使用的可扩展 API 中来解决这一挑战。

借助 SynapseML,开发人员可以构建可扩展的智能系统来解决以下领域的挑战:

• 异常检测

• 计算机视觉

• 深度学习

• 表格识别和人脸识别

• 梯度提升

• 微服务编排

• 模型可解释性

• 强化学习和个性化

• 搜索和检索

• 语音处理

• 文本分析

• 翻译

项目地址:https://github.com/microsoft/SynapseML

通过统一的 API 简化分布式机器学习

编写容错分布式程序很复杂,而且是一个容易出错的过程。我们来举个深度网络的分布式评估的例子。第一步是将一个 GB 量级的模型发送到数百台工作机器上,而不会使网络不堪重负。第二步,必须协调数据读取器以确保所有数据都排队等待处理并且 GPU 处于满负荷状态。如果新计算机加入或离开集群,新的工作机器必须接收模型的副本,数据读取器需要适应与新机器共享工作并重新计算丢失的工作。最后,必须跟踪进度以确保正确释放资源。

当然,像 Horovod 这样的框架可以管理这一点,但是如果想要与不同的 ML 框架(例如 LightGBM、XGBoost 或 SparkML)进行比较,则需要新的环境和集群。此外,这些训练系统并非旨在服务或部署模型,因此需要单独的推理和流媒体架构。

SynapseML 通过将许多不同的 ML 学习框架与一个可扩展、与数据和语言无关且适用于批量处理、流媒体和服务应用程序的 API 统一起来,简化了这种体验。它旨在帮助开发人员专注于其数据和任务的高级结构上,而无需过多考虑不同 ML 生态系统和数据库的实现细节和特性。

统一的 API 标准化了当下许多的工具、框架和算法,从而简化了分布式 ML 体验。这使开发人员能够为需要多个框架的用例快速组合不同的 ML 框架,例如网络监督学习、搜索引擎创建等。它还可以在单节点、多节点和可弹性调整大小的计算机集群上训练和评估模型,因此开发人员可以在不浪费资源的情况下扩展他们的工作。

除了在几种不同的编程语言中的可用性之外,该 API 还对各种数据库、文件系统和云数据存储进行了抽象,以简化实验。

深耕五年,打造高普世化机器学习库

正如微软在项目网站上所解释的那样,SynapseML 在几个新方向上扩展了用于大规模数据处理的开源引擎 Apache Spark:“SynapseML 中的工具允许用户制作功能强大且高度可扩展的模型,这些模型可以跨多个机器学习生态系统完成工作。SynapseML 还为 Spark 生态系统带来了新的网络功能。通过 HTTP on Spark 项目,用户可以将任何 Web 服务嵌入到他们的 SparkML 模型中,并使用他们的 Spark 集群进行大规模的网络工作流。”

SynapseML 中的许多工具不需要大型标记好的训练数据集。相反,SynapseML 为预构建的智能服务(例如 Azure 认知服务)提供简单的 API,以快速解决与业务和研究相关的大规模 AI 挑战。

SynapseML 能够让开发者将超过 45 种不同的先进的机器学习服务直接嵌入到他们的系统和数据库中。最新版本增加了对分布式表单识别、对话转录和翻译的支持。

这些即用型算法可以解析各种文档、实时转录多说话者对话,此外还能翻译 100 多种不同语言的文本。

“在过去的五年中,我们一直致力于改进和稳定用于生产工作负载的 SynapseML 库。使用 Azure Synapse Analytics 的开发人员将很高兴地知晓了 SynapseML 现在在这项服务上普遍可用,并提供企业服务。”微软软件工程师 Mark Hamilton 在一篇博客文章中写道。

使用 SynapseML 构建负责任的AI系统

SynapseML 使开发人员不仅可以使用现有的模型和服务,还可以构建和训练自己的模型和服务。此版本的 SynapseML 引入了使用 Vowpal Wabbit 框架 进行个性化推荐和上下文老虎机强化学习的新算法。这种 Vowpal Wabbit 集成可以为单个模型分配模型训练和预测,或者跨多个模型并行训练。这对于快速调整策略优化和个性化系统的超参数非常有效。

Vowpal Wabbit 项目地址:

https://microsoft.github.io/SynapseML/docs/features/vw/Vowpal%20Wabbit%20-%20Overview/

构建模型后,研究人员和工程师需要在部署前了解其局限性和行为。SynapseML 通过引入新工具来帮助开发人员和研究人员构建负责任的 AI 系统,这些工具揭示了模型为什么会做出这样的预测以及如何改进训练数据集以消除偏见。

更具体地说,SynapseML 包括 Shapley Additive Explanations (SHAP) 和 Locally Interpretable Model-Agnostic Explanations (LIME) 的分布式实现,以解释视觉、文本和表格模型的预测。通常,这些“黑盒”方法通常需要对每个解释进行数千次模型评估,并且解释大型数据集的每个预测可能需要数天时间。SynapseML 使开发人员能够在数百台机器上分配计算,从而显著加快理解用户训练模型的过程。

除了有监督的模型可解释性之外,SynapseML 还为无监督的负责任 AI 引入了几项新功能。借助微软的用于理解数据集不平衡的新工具,研究人员可以检测敏感数据集特征(例如种族或性别)是否被过度或不足表达,并采取措施提高模型公平性。此外,SynapseML 的分布式孤立森林使研究人员能够在不需要标记训练数据的情况下检测其数据集中的异常值和异常情况。

“我们的目标是帮助开发人员简化分布式实现细节,并使他们能够将分布式部署到各种数据库、集群和语言中,而无需更改原来的代码,”Hamilton 说道。

参考链接:

https://www.microsoft.com/en-us/research/blog/synapseml-a-simple-multilingual-and-massively-parallel-machine-learning-library/

https://venturebeat.com/2021/11/17/microsoft-open-sources-synapseml-for-developing-ai-pipelines/

推荐阅读

  1. 用Python学线性代数:自动拟合数据分布
  2. Python 用一行代码搞事情,机器学习通吃
  3. Github 上最大的开源算法库,还能学机器学习!
  4. JupyterLab 这插件太强了,Excel灵魂附体
  5. 终于把 jupyter notebook 玩明白了
  6. 一个超好用的 Python 标准库,666 
  7. 几百本编程中文书籍(含Python)持续更新
  8. 100天搞定机器学习|Day63 彻底掌握 LightGBM
  9. 100天搞定机器学习 番外:使用FastAPI构建机器学习API


你也「在看」吗?👇


浏览 12
点赞
评论
收藏
分享

手机扫一扫分享

举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

举报