当前位置: 首页 > 科技观察

有助于你掌握机器学习的十三个框架

时间:2023-03-16 14:47:19 科技观察

十三个框架,将帮助你掌握机器学习打开大门,这里是翻译:机器学习在过去的一年里风靡一时。机器学习的“突然”到来不仅仅是因为廉价的云环境和更强大的GPU硬件。还因为开源框架的爆炸式增长抽象出了机器学习中最难的部分,并使该技术可供更广泛的开发人员使用。这里有十几个新的机器学习框架,包括初学者和重新设计的。这些工具之所以引起公众的注意,要么是因为它们的出处,要么是因为它们以新颖简单的方式解决问题,要么是因为它们解决了机器学习中的特定问题,或者是上述所有原因。ApacheSparkMLlibApacheSpark作为Hadoop家族的一员而广为人知,但这个内存数据处理框架源于Hadoop,并在Hadoop生态系统之外为自己赢得了名声。Hadoop已成为一种随时可用的机器学习工具,这要归功于其不断增长的算法库,这些算法库可以高速应用于内存中的数据。早期版本的Spark增强了对MLib的支持,MLib是一个主要面向数学和统计用户的平台,它允许通过持久管道功能暂停和恢复Spark机器学习作业。2016年发布的Spark2.0改进了Tungsten高速内存管理系统和新的DataFrames流媒体API,两者都将提升机器学习应用的性能。H2OH2O现在是第三版,通过通用开发环境(Python、Java、Scala、R)、大数据系统(Hadoop、Spark)和数据源(HDFS、S3、SQL、NoSQL)方式提供对机器学习算法的访问.H2O是用于数据收集、模型构建和服务预测的端到端解决方案。例如,模型可以导出为Java代码,以便可以在许多平台和环境中进行预测。H2O可以用作本机Python库,或通过JupyterNotebook,或RStudio中的R语言。该平台还包括一个名为FlowinH2O的基于Web的开源环境,它支持在训练期间与数据集进行交互,而不仅仅是在训练之前或之后。ApacheSinga“深度学习”框架为重型任务类型的机器学习提供支持,例如自然语言处理和图像识别。Singa是一个Apache孵化器项目和一个开源框架,可以更轻松地在大型数据集上训练深度学习模型。Singa提供了一个简单的编程模型,用于在机器集群上训练深度学习网络,它支持许多常见类型的训练工作:卷积神经网络、受限玻尔兹曼机和递归神经网络。模型可以同步(一个接一个)训练,也可以异步(一起)训练,允许CPU和GPU集群,很快还会有FPGA。Singa还使用ApacheZookeeper简化了集群设置。Caffe2深度学习框架Caffe是以“表达、速度和模块化”为理念开发的。它最初源于2013年的机器视觉项目。此后,Caffe也被扩展到吸收其他应用程序,例如语音和多媒体。因为速度优先,Caffe完全用C++实现,支持CUDA加速,可以根据需要在CPU和GPU处理之间切换。该发行版包括用于常见分类任务的免费开源参考模型,以及由Caffe用户社区创建和共享的其他模型。由Facebook支持的Caffe的新迭代称为Caffe2,目前正在开发1.0版本。其目标是简化分布式训练和移动部署,为FPGA等新型硬件提供支持,并利用16位浮点数训练等高级功能。与微软的DMTK非常相似,谷歌的TensorFlow是一种机器学习框架,旨在跨多个节点进行扩展。就像谷歌的Kubernetes一样,它是为了解决谷歌内部的问题而设计的,谷歌最终将其作为开源产品发布。TensorFlow实现所谓的数据流图,其中批量数据(“张量”)可以通过图描述的一系列算法进行处理。系统中数据的移动称为“流”——因此得名。这些图可以用C++或Python实现,并且可以在CPU和GPU上进行处理。TensorFlow最近的升级改进了与Python的兼容性,改进了GPU操作,为TensorFlow在更广泛的硬件上运行打开了大门,并扩展了内置的分类和回归工具库。Amazon的机器学习Amazon的云服务方法遵循一种模式:提供基本内容,让您的核心受众感兴趣,让他们在此基础上构建应用程序,弄清楚他们真正需要什么,然后将其交付给他们。亚马逊提供机器学习即服务——AmazonMachineLearning也是如此。该服务可以连接到存储在AmazonS3、Redshift或RDS上的数据,并对数据运行二分类、多分类或回归以构建模型。但值得注意的是,生成的模型不能导入导出,用于训练模型的数据集不能超过100GB。但AmazonMachineLearning展示了机器学习如何变得有用,而不仅仅是一种奢侈。对于那些想要更进一步,或者与亚马逊云保持不太紧密联系的人来说,亚马逊的深度学习机器环境包含许多主要的深度学习框架,包括Caffe2、CNTK、MXNet和TensorFlow。考虑到执行机器学习所需的大量数据和计算能力,Microsoft的AzureMLStudio是机器学习应用程序云的理想环境。微软为Azure配备了自己的按需付费机器学习服务AzureMLStudio,提供按月、按小时和免费版本。(该公司的HowOldRobot项目就是使用该系统创建的。)您甚至不需要帐户即可试用该服务;您可以匿名登录并免费使用AzureMLStudio长达八小时。AzureMLStudio允许用户创建和训练模型,然后将这些模型转换为供其他服务使用的API。免费用户每个帐户最多可以试用10GB的模型数据,您还可以为更大的模型连接自己的Azure存储。感谢Microsoft和第三方,有大量可用的算法。最近的改进包括通过AzureBatch服务对训练作业进行批处理管理、更好的部署管理控制以及详细的Web服务使用统计信息。微软的分布式机器学习工具集在将更多机器投入机器学习问题方面做得更好——但开发在大量计算机上运行良好的机器学习应用程序可能会让人伤脑筋。Microsoft的DMTK(分布式机器学习工具集)框架解决了跨系统集群分布多个机器学习任务的问题。DMTK被认为是一个框架,而不是一个成熟的嵌入式解决方案,因此包含的算法数量很少。但是,您仍然会发现一些关键的机器学习库,例如梯度提升框架(LightGBM),以及对一些深度学习框架(例如Torch和Theano)的支持。DMTK旨在让用户可以用有限的资源构建最高效的集群。例如,集群中的每个节点都会有一个本地缓存,从而减少与为任务提供参数的中央服务器节点的通信流量。Microsoft'sComputationalNetworkToolkit在DMTK发布之后,微软推出了另一个机器学习工具包,即ComputationalNetworkToolkit,简称CNTK。CNTK类似于GoogleTensorFlow,因为它允许用户从有向图创建神经网络。微软也认为CNTK可以与Caffe、Theano和Torch等项目相媲美——此外,CNTK还可以通过利用多个CPU和GPU进行并行处理来实现更快的速度。微软声称,在Azure的GPU集群上运行CNTK将使Cortana的语音识别训练速度提高一个数量级。最新版本的CNTK2.0通过提高准确性、添加用于Spark兼容性的JavaAPI以及支持kera框架(通常用于TensorFlow)的代码,提高了TensorFlow的流行度。早在Spark成为主流之前,ApacheMahout就是为Hadoop上的可扩展机器学习而开发的。但在经历了长时间的相对沉寂之后,Mahout又重新焕发了活力,例如一个名为Samsara的数学新环境,它允许多种算法在分布式Spark集群上运行。并支持CPU和GPU运行。Mahout框架长期以来一直与Hadoop绑定,但它的许多算法也可以在Hadoop之外运行。这对于最终迁移到Hadoop或作为独立应用程序脱离Hadoop的独立应用程序非常有用。Veles(Samsung)[Veles]https://velesnet.ml/)是一个用于深度学习应用程序的分布式平台,如TensorFlow和DMTK,它是用C++编写的,尽管它使用Python来执行节点自动化和协调。在传输到集群之前,数据集会被分析并自动归一化,然后调用RESTAPI以立即使用经过训练的模型(假设您的硬件能够胜任这项任务)。Veles不只是将Python用作Glue代码,因为基于Python的JupyterNotebook可用于可视化和发布Veles集群产生的结果。三星希望通过将Veles开源来刺激进一步的发展,作为通往Windows和MacOS的途径。mlpack2是一个基于C++的机器学习库。mlpack最初是2011年出品的,按照库创始人的想法,mlpack是为“可扩展性、速度和易用性”而设计的。操作由执行程序组成的“黑盒子”,也可以利用C++API完成复杂的工作。mlpack的第2版包含许多新算法,以及对现有算法的重构以使其更快或更苗条。例如,它放弃了Boost库的随机数生成器,转而支持C++11的本机随机数功能。mlpack的问题之一是缺少对C++的语言支持。这意味着其他语言的用户需要第三方库的支持,比如Python的这个。还做了一些工作来增加对MATLAB的支持,但是像mlpack这样的项目在直接进入机器学习的主要环境时往往会获得更多的采用。NeonNervana是一家构建自己的深度学习硬件和软件平台的公司(现在是英特尔的一部分),它提供了一个名为“Neon”的深度学习框架作为开源项目。Neon使用可插拔模块在CPU、GPU或Nervana自己的芯片上完成繁重的任务。Neon主要用Python编写,但也部分用C++和汇编来提高速度。这使得任何使用Python或任何其他具有Python绑定的框架从事数据科学工作的人都可以访问该框架。许多标准的深度学习模型,例如LSTM、AlexNet和GoogLeNet,都可以用作Neon的预训练模型。最新版本Neon2.0添加了Intel数学内核库以提高CPU性能。Marvin的另一个相对较新的产品,即Marvin神经网络框架,是PrincetonVisionGroup的产品。正如其创建者在项目文档中解释的那样,Marvin是“天生被黑客攻击的”,该文档仅依赖于一些用C++和CUDAGPU框架编写的文件。项目虽然代码很少,但还是提供了大量的预训练模型,可以在合适的场合复用,也可以根据用户需求进行共享,就像项目本身的代码一样。