为了缓解这一现状,近日,微软宣布了开源一款简单的、多语言的、大规模并行的机器学习库SynapseML(以前称为MMLSpark),以帮助开发人员简化机器学习管道的创建。微软表示,借助SynapseML,开发人员可以构建“可扩展的智能”系统来解决跨领域的挑战,包括文本分析、翻译和语音处理。
构建可用于生产的分布式ML管道通常困难,即使对于最有经验的开发人员也是如此。而对于初学者来说,组合来自不同生态系统的工具需要大量代码,而且许多框架在设计时并没有考虑到服务器集群。SynapseML通过将多个现有的ML框架和新的Microsoft算法统一到一个可跨Python、R、Scala和Java使用的可扩展API中来解决这一挑战。
借助SynapseML,开发人员可以构建可扩展的智能系统来解决以下领域的挑战:
异常检测
计算机视觉
深度学习
表格识别和人脸识别
梯度提升
微服务编排
模型可解释性
强化学习和个性化
搜索和检索
语音处理
文本分析
翻译
通过统一的API简化分布式机器学习
编写容错分布式程序很复杂,而且是一个容易出错的过程。我们来举个深度网络的分布式评估的例子。第一步是将一个GB量级的模型发送到数百台工作机器上,而不会使网络不堪重负。第二步,必须协调数据读取器以确保所有数据都排队等待处理并且GPU处于满负荷状态。如果新计算机加入或离开集群,新的工作机器必须接收模型的副本,数据读取器需要适应与新机器共享工作并重新计算丢失的工作。最后,必须跟踪进度以确保正确释放资源。
当然,像Horovod这样的框架可以管理这一点,但是如果想要与不同的ML框架(例如LightGBM、XGBoost或SparkML)进行比较,则需要新的环境和集群。此外,这些训练系统并非旨在服务或部署模型,因此需要单独的推理和流媒体架构。
SynapseML通过将许多不同的ML学习框架与一个可扩展、与数据和语言无关且适用于批量处理、流媒体和服务应用程序的API统一起来,简化了这种体验。它旨在帮助开发人员专注于其数据和任务的高级结构上,而无需过多考虑不同ML生态系统和数据库的实现细节和特性。
统一的API标准化了当下许多的工具、框架和算法,从而简化了分布式ML体验。这使开发人员能够为需要多个框架的用例快速组合不同的ML框架,例如网络监督学习、搜索引擎创建等。它还可以在单节点、多节点和可弹性调整大小的计算机集群上训练和评估模型,因此开发人员可以在不浪费资源的情况下扩展他们的工作。
除了在几种不同的编程语言中的可用性之外,该API还对各种数据库、文件系统和云数据存储进行了抽象,以简化实验。
深耕五年,打造高普世化机器学习库
正如微软在项目网站上所解释的那样,SynapseML在几个新方向上扩展了用于大规模数据处理的开源引擎ApacheSpark:“SynapseML中的工具允许用户制作功能强大且高度可扩展的模型,这些模型可以跨多个机器学习生态系统完成工作。SynapseML还为Spark生态系统带来了新的网络功能。通过HTTPonSpark项目,用户可以将任何Web服务嵌入到他们的SparkML模型中,并使用他们的Spark集群进行大规模的网络工作流。”
SynapseML能够让开发者将超过45种不同的先进的机器学习服务直接嵌入到他们的系统和数据库中。最新版本增加了对分布式表单识别、对话转录和翻译的支持。
这些即用型算法可以解析各种文档、实时转录多说话者对话,此外还能翻译100多种不同语言的文本。
使用SynapseML构建负责任的AI系统
SynapseML使开发人员不仅可以使用现有的模型和服务,还可以构建和训练自己的模型和服务。此版本的SynapseML引入了使用VowpalWabbit框架进行个性化推荐和上下文老虎机强化学习的新算法。这种VowpalWabbit集成可以为单个模型分配模型训练和预测,或者跨多个模型并行训练。这对于快速调整策略优化和个性化系统的超参数非常有效。
VowpalWabbit项目地址:
构建模型后,研究人员和工程师需要在部署前了解其局限性和行为。SynapseML通过引入新工具来帮助开发人员和研究人员构建负责任的AI系统,这些工具揭示了模型为什么会做出这样的预测以及如何改进训练数据集以消除偏见。
除了有监督的模型可解释性之外,SynapseML还为无监督的负责任AI引入了几项新功能。借助微软的用于理解数据集不平衡的新工具,研究人员可以检测敏感数据集特征(例如种族或性别)是否被过度或不足表达,并采取措施提高模型公平性。此外,SynapseML的分布式孤立森林使研究人员能够在不需要标记训练数据的情况下检测其数据集中的异常值和异常情况。
“我们的目标是帮助开发人员简化分布式实现细节,并使他们能够将分布式部署到各种数据库、集群和语言中,而无需更改原来的代码,”Hamilton说道。