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

十三套框架,助你玩转机器学习技术

时间:2023-03-18 19:11:27 科技观察

【.com快译】这几年,机器学习开始稳步进入主流。这种趋势不仅仅是由低成本的云环境或极其强大的GPU硬件驱动的;此外,可用的机器学习框架也迎来了爆发式增长。这类框架都是开源的,但更重要的是,它们在设计上将机器学习中最复杂的部分抽象出来,以保证相关的技术方案能够服务于更多的开发者。在今天的文章中,我们将一览十三个机器学习框架,其中有一些是去年刚刚发布的,也有一些是不久前才全面升级的。这些框架最值得注意的特点是它们以简单新颖的方式解决了与机器学习相关的挑战。ApacheSparkMLlibApacheSpark可以算是目前Hadoop家族中最耀眼的成员,但是这个内存数据处理框架在Hadoop诞生之初与Hadoop毫无关系。一片天地。由于能够将算法库高速应用于内存数据,Spark已成为一种开箱即用的机器学习工具。Spark还在不断的发展中,Spark中可用的算法也在不断的增加和完善。去年的1.5版本增加了很多新的算法,改进了已有的算法,通过不断的过程进一步还原了MLlib中的SparkML任务。ApacheSinga的“深度学习”框架支持多种高强度机器学习功能,包括自然语言处理和图像识别。Singa最近被纳入Apache孵化器项目,这是一个开源框架,致力于降低在大规模数据上训练深度学习模型的难度。Singa提供了一个简单的编程模型,用于在整个设备集群上训练深度学习网络,同时支持多种常见的训练任务类型;卷积神经网络、受限玻尔兹曼机和循环神经网络。每个模型都可以同步(一对一)或异步(并行)训练,这取决于实际问题的具体需要。Singa还使用ApacheZookeeper简化了集群设置。Caffe深度学习框架Caffe是一套基于表达、速度和模块化的解决方案。它最初诞生于2013年,主要用于机器视觉项目。自成立以来,Caffe一直在将各种其他应用程序整合到自身中,包括语音和多媒体。由于速度需求优先,Caffe全部采用C++编写,支持CUDA加速机制。但它也可以根据需要在CPU和GPU处理之间来回切换。它的发行版包含了一系列免费开源的参考模型,主要针对各种常规的典型任务;Caffe用户社区目前正在积极开发其他模型。MicrosoftAzureMLStudio根据机器学习任务的实际数据规模和计算性能要求,云端往往可以成为机器学习应用的理想运行环境。微软发布了基于Azure的按需计费机器学习服务AzureMLStudio,可提供包月、小时和免费的分级版本。(微软的HowOldRobot项目也是使用该系统创建的。)AzureMLStudio允许用户创建和训练模型,然后将其转换为可供其他服务使用的API。每个用户帐户最多可为模型数据提供10GB的存储容量,但您也可以将自己的Azure存储资源连接到该服务以托管更大的模型。目前可用的算法相当多,由微软自己和其他第三方提供。您甚至不需要帐户即可体验该服务;用户可以匿名登录并使用AzureMLStudio长达八小时。AmazonMachineLearningAmazon的云服务通用解决方案遵循既定模式。提供核心用户最关心的运营基础,帮助核心用户找到并交付最需要的机器学习解决方案。AmazonMachineLearning也是这家云巨头首次尝试推出机器学习即服务解决方案。它可以访问存储在AmazonS3、Redshift或RDS中的数据,并可以运行二元分类、多类分类或数据递归来创建模型。但是,该服务高度依赖于亚马逊本身。除了要求数据必须存储在亚马逊,生成的模型不能导入导出,训练模型的数据库集不能超过100GB。当然,这只是亚马逊机器学习的初步成果,足以证明机器学习是完全可行的——不是科技巨头的奢侈玩物。MicrosoftDistributedMachineLearningToolkit我们用来解决机器学习挑战的设备越多,它实际上就越好——但是将大量设备聚集在一起并开发一个在它们之间平稳运行的机器学习应用程序并不是一件容易的事。微软的DMTK(DistributedMachineLearningToolkit)框架可以轻松解决各种机器学习任务类型跨整套系统集群的分布问题。DMTK的计费机制属于框架而非完整的开箱即用的解决方案,因此实际涉及的算法数量比较少。但是,DMTK的设计目的是让用户可以进行后续的扩展,同时利用现有集群内的有限资源。例如,集群中的每个节点都有一组本地缓存,可以通过中心服务器节点为当前任务提供参数,从而降低实际流量规模。GoogleTensorFlow类似于微软的DMTK。GoogleTensorFlow是一组专为多节点规模设计的机器学习框架。与谷歌的Kubernetes类似,TensorFlow最初是为谷歌内部需求量身定制的,但谷歌最终决定将其作为开源产品发布。TensorFlow支持所谓的数据流图,其中批量数据(又名“张量”,意思是张量)通过图描述的一系列算法进行处理。进出系统的数据称为“流”,可以由CPU或GPU处理。谷歌的长期计划是通过第三方贡献者来推动TensorFlow项目的后续发展。微软的计算网络工具包借助DMTK的推出,微软发布了另一个机器学习工具包,即计算网络工具包,简称CNTK。CNTK与GoogleTensorFlow非常相似,因为它允许用户通过有向图构建神经网络。此外,微软将其视为可与Caffe、Theano、Torch等项目相媲美的技术成就。它的主要亮点是其出色的速度性能,尤其是能够并行利用多个CPU和多个GPU。微软声称,它在Azure上使用CNTK和GPU集群,将Cortana语音识别服务训练的速度提高到一个新的数量级。CNTK最初是作为Microsoft语音识别项目的一部分开发的,最终于2015年4月作为开源项目公开,但后来根据更宽松的MIT类许可证在GitHub上重新发布。Veles(Samsung)Veles是一个用于深度学习应用程序的分布式平台,和TensorFlow和DMTK一样,它也是用C++编写的——但它使用Python来执行不同节点之间的自动化和协作任务。相关数据集可以在被馈送到集群之前进行分析和自动归一化,它还有一个RESTAPI可以让每个训练好的模型立即添加到生产环境中(假设你的硬件已经准备好)。Veles不仅仅使用Python作为它的胶水代码。IPython(现已更名为Jupyter)数据可视化和分析工具可实现Veles集群结果的可视化和发布。三星希望将该项目作为开源发布,以促进其进一步发展——例如针对Windows和MacOSX。Brainstorm是瑞士卢加诺的博士生KlausGreff于2015年开发的一项技术成果。目标Brainstorm项目的宗旨是“帮助深度神经网络实现高速、灵活和有趣”。目前,它已经包含了一系列常见的神经网络模型,例如LSTM。Brainstorm使用Python代码提供两组“处理程序”或数据管理API——一组来自Numpy库用于CPU计算,另一组通过CUDA使用GPU资源。大部分工作是由Python脚本完成的,所以你不能指望它提供丰富的GUI前端——你需要自己访问相关界面。然而,从长期规划的角度来看,它可以利用“从各种早期开源项目中吸取的教训”,同时利用“与多个平台和计算后端兼容的新设计元素”。mlpack2mlpack集是基于C++的机器学习库,最初诞生于2011年,其设计具有“可扩展性、速度和易用性”,库的构建者如是说。用户可以通过命令行可执行缓存运行mlpack以实现快速执行、“黑盒”操作或通过C++API执行其他更复杂的任务。其2.0版本具有一系列重构和新功能,包括各种新算法,以及对现有算法的修改以提高其速度或减小其大小。例如,它可以将Boost库的随机数生成器指向C++11的原生随机函数。mlpack的先天缺点是缺乏对C++以外的任何语言的绑定能力,这意味着从R到Python的其他语言的用户都无法使用mlpack——除非其他开发者发布自己对应语言的软件Bag。目前该项目正在积极增加对MatLab的支持,但此类项目一般更倾向于直接面向承载机器学习任务的主流环境。Marvin是另一个新生的解决方案,Marvin神经网络框架是普林斯顿视觉集团的开发成果。可以说是“为黑客而生”,因为项目开发者直接在文档中做了这样的描述,只需要依靠几个用C++编写的文件和CUDAGPU框架来运行。虽然代码本身很小,但还是有相当多的部分可以复用,pullrequests可以作为项目自己的代码贡献出来。NeonNervana专注于构建自己的深度学习硬件和软件平台。它推出了一套名为Neon的深度学习框架作为开源项目。该项目利用可插拔模块来支持在CPU、GPU或Nervana自己的定制硬件上运行的高强度工作负载。Neon主要是用Python语言编写的,C++为其编写了多个代码片段,带来了可观的运行速度。这些特性使Neon立即成为使用Python或其他绑定Python的框架开发的数据科学场景的理想解决方案。原标题:精通机器学习的13个框架