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

简介: 在今天的文章中,我们将共同了解十三款机器学习框架,这些框架中最值得关注的特性,在于它们正致力于通过简单而新颖的方式应对与机器学习相关的种种挑战。过去几年以来,机器学习已经开始以前所未有的方式步入主流层面。

在今天的文章中,我们将共同了解十三款机器学习框架,这些框架中最值得关注的特性,在于它们正致力于通过简单而新颖的方式应对与机器学习相关的种种挑战。

过去几年以来,机器学习已经开始以前所未有的方式步入主流层面。这种趋势并非单纯由低成本云环境乃至极为强大的GPU硬件所推动; 除此之外,面向机器学习的可用框架也迎来了爆发式增长。此类框架全部为开源成果,但更重要的是它们在设计方面将最为复杂的部分从机器学习中抽象了出来,从而保证相关技术方案能够为更多开发人员服务。

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

在今天的文章中,我们将共同了解十三款机器学习框架,一部分去年刚刚发布、另一部分则在不久前进行了全部升级。而这些框架中最值得关注的特性,在于它们正致力于通过简单而新颖的方式应对与机器学习相关的种种挑战。

Apache Spark MLlib

Apache Spark可能算得上当前Hadoop家族当中最为耀眼的成员,但这套内存内数据处理框架在诞生之初实际与Hadoop并无关系,且凭借着自身出色的特性在Hadoop生态系统之外闯出一片天地。Spark目前已经成为一款即时可用的机器学习工具,这主要归功于其能够以高速将算法库应用至内存内数据当中。

Spark仍处于不断发展当中,而Spark当中的可用算法亦在持续增加及改进。去年的1.5版本添加了众多新算法,对现有算法做出改进,同时进一步通过持续流程恢复了MLlib中的Spark ML任务。

Apache Singa

这套“深层学习”框架能够支持多种高强度机器学习功能,具体包括自然语言处理与图像识别。Singa最近被纳入Apache孵化器项目,这套开源框架致力于降低大规模数据的深层学习模型训练难度。

Singa提供一套简单的编程模式,用于跨越一整套设备集群进行深层学习网络训练,同时支持多种常规训练任务类型; 卷积神经网络、受限玻尔兹曼机与复发性神经网络。各模型能够进行同步(一一)或者异步(并行)训练,具体取决于实际问题的具体需求。Singa还利用Apache Zookeeper对集群设置进行了简化。

Caffe

深层学习框架Caffe是一套“立足于表达、速度与模块化”的解决方案。其最初诞生于2013年,主要用于机器视觉项目。Caffe自出现之后就一直将多种其它应用囊括入自身,包括语音与多媒体。

由于优先考量速度需求,因此Caffe全部利用C++编写而成,同时支持CUDA加速机制。不过它也能够根据需要在CPU与GPU处理流程间往来切换。其发行版中包含一系列免费与开源参考模型,主要面向各类常规典型任务; 目前Caffe用户社区亦在积极开发其它模型。

微软Azure ML Studio

根据机器学习任务的实际数据规模与计算性能需求,云往往能够成为机器学习应用的一大理想运行环境。微软公司已经立足于Azure发布了其按需计费机器学习服务,即Azure ML Studio,其能够提供按月、按小时以及免费等分层版本。(微软公司的HowOldRobot项目亦利用这套系统创建而成。)

Azure ML Studio允许用户创建并训练模型,而后将其转化为能够由其它服务消费的API。每个用户账户能够为模型数据提供最高10 GB存储容量,不过大家也可以将自己的Azure存储资源连接至服务当中以承载规模更大的模型。目前可用算法已经相当可观,其分别由微软自身以及其它第三方所提供。大家甚至不需要账户即可体验这项服务; 用户可以匿名登录并最多使用八小时Azure ML Studio。

Amazon Machine Learning

Amazon的这套面向云服务的通用型方案遵循既定模式。其提供核心用户最为关注的运行基础,帮助他们立足于此寻求自身最需要的机器学习方案并加以交付。

Amazon Machine Learning同时也是云巨头首次尝试推出机器学习即服务方案。它能够接入被保存在Amazon S3、Redshift或者RDS当中的数据,并能够运行二进制分类、多类分类或者数据递归以创建模型。然而,该服务高度依赖于Amazon本身。除了要求数据必须被存储于Amazon之内之外,其结果模型也无法进行导入与导出,另外训练模型的数据库集亦不可超过100 GB。当然,这只是Amazon Machine Learning的起步成效,其也足以证明机器学习完全具备可行性——而非技术巨头的奢侈玩物。

微软分布式机器学习工具包

我们用于解决机器学习难题的设备数量越多,实际效果就越好——但将大量设备汇聚起来并开发出能够顺利跨越各设备运行的机器学习应用绝非易事。微软的DMTK(即分布式机器学习工具包)框架则能够轻松跨越一整套系统集群解决多种机器学习任务类型的分发难题。

DMTK的计费机制归属于框架而非完整的开箱即用解决方案,因此其中实际涉及的算法数量相对较小。不过DMTK在设计上允许用户进行后续扩展,同时发挥现有集群之内的有限资源。举例来说,集群中的每个节点都拥有一套本地缓存,其能够由中央服务器节点为当前任务提供参数,从而降低实际流量规模。

谷歌TensorFlow

与微软的DMTK类似,谷歌TensorFlow是一套专门面向多节点规模设计而成的机器学习框架。与谷歌的Kubernetes类似,TensorFlow最初也是为谷歌内部需求所量身打造,但谷歌公司最终决定将其以开源产品进行发布。

TensorFlow能够实现所谓数据流图谱,其中批量数据(即‘tensor’,意为张量)可通过一系列由图谱描述的算法进行处理。系统之内往来移动的数据被称为“流”,可由CPU或者GPU负责处理。谷歌公司的长期规划在于通过第三方贡献者推动TensorFlow项目的后续发展。

微软计算网络工具包

趁着DMTK的推出良机,微软公司还发布了另一套机器学习工具包,即计算网络工具包——或者简称CNTK。

CNTK与谷歌TensorFlow非常类似,因为它允许用户通过有向图的方式建立神经网络。另外,微软还将其视为可与Caffe、Theano以及Torch等项目相媲美的技术成果。它的主要亮点在于出色的速度表现,特别是以并行方式利用多CPU与多GPU的能力。微软公司宣称,其利用CNTK与Azure之上的GPU集群共同将Cortana语音识别服务训练的速度提升到了新的数量级。

最初作为微软语音识别项目组成部分开发而成的CNTK,最终于2015年4月以开源项目形式走向公众视野——但其随后以更为宽松的MIT类别许可在GitHub进行了重新发布。

Veles (三星)

Veles是一套面向深层学习应用程序的分布式平台,而且与TensorFlow与DMTK一样,它也由C++编写而成——不过它利用Python在不同节点之间执行自动化与协作任务。相关数据集可在被供给至该集群之前经过分析与自动标准化调整,另外其还具备REST API以允许将各已训练模型立即添加至生产环境当中(假设大家的硬件已经准备就绪)。

Veles并非单纯利用Python作为其粘合代码。IPython(如今已被更名为Jupyter)数据可视化与分析工具能够对来自Veles集群的结果进行可视化处理与发布。三星公司希望能够将该项目以开源形式发布,从而推进其进一步发展——例如面向Windows与Mac OS X。

Brainstorm

作为瑞士卢加诺博士生Klaus Greff于2015年开发的技术成果,Brainstorm项目的目标在于“帮助深层神经网络实现高速、灵活与趣味性。”目前其已经包含有一系列常见神经网络模型,例如LSTM。

Brainstorm采用Python代码以提供两套“hander”,或者称之为数据管理API——其一来自Numpy库以实现CPU计算,其二通过CUDA使用GPU资源。大部分工作由Python脚本完成,所以各位没办法指望其提供丰富的GUI前端——大家需要自己动手接入相关界面。不过从长期规划角度看,其能够使用“源自多种早期开源项目的学习经验”,同时利用“能够与多种平台及计算后端相兼容的新的设计元素。”

mlpack 2

mlpack这套基于C++的机器学习库最初诞生于2011年,其设计倾向为“可扩展性、速度性与易用性,”该库构建者们指出。用户可以通过命令行可执行缓存运行mlpack以实现快速运行、“黑盒”操作或者通过C++ API完成其它更为复杂的任务。

其2.0版本则拥有一系列重构与新特性,其中包括多种新算法,并对现有算法加以修改以提升运行速度或者缩小其体积。举例来说,它能够将Boost库的随机数生成器指向C++ 11的原生随机功能。

mlpack的固有劣势在于其缺乏除C++之外的任何其它语言绑定能力,这意味着从R语言到Python语言的各类其他用户都无法使用mlpack——除非其他开发者推出了自己的对应语言软件包。目前该项目正积极添加对MatLab的支持能力,不过此类项目一般更倾向于直接面向各承载机器学习任务的主流环境。

Marvin

作为另一套刚刚诞生的方案,Marvin神经网络框架为Princeton Vision集团的开发成果。它可谓“为hack而生”,因为项目开发者们在其说明文档当中直接做出这样的描述,且仅仅依赖于C++编写的数个文件及CUDA GPU框架即可运行。尽管其代码本身的体积非常小巧,但其中仍然存在相当一部分能够复用的部分,并可以将pull请求作为项目自身代码进行贡献。

Neon

Nervana公司专门构建自己的深层学习硬件与软件平台,其推出了一套名为Neon的深层学习框架,并将其作为开源项目。该项目利用可插拔模块以支持高强度负载在CPU、GPU或者Nervana自有定制化硬件上运行。

Neon主要由Python语言编写而成,C++为其编写了多条代码片段并带来可观的运行速度。这样的特性让Neon立即成为各Python开发之数据科学场景或者其它绑定Python之框架的理想解决方案。

相关实践学习
部署Stable Diffusion玩转AI绘画(GPU云服务器)
本实验通过在ECS上从零开始部署Stable Diffusion来进行AI绘画创作,开启AIGC盲盒。
目录
相关文章
|
2月前
|
机器学习/深度学习 数据采集 数据可视化
基于爬虫和机器学习的招聘数据分析与可视化系统,python django框架,前端bootstrap,机器学习有八种带有可视化大屏和后台
本文介绍了一个基于Python Django框架和Bootstrap前端技术,集成了机器学习算法和数据可视化的招聘数据分析与可视化系统,该系统通过爬虫技术获取职位信息,并使用多种机器学习模型进行薪资预测、职位匹配和趋势分析,提供了一个直观的可视化大屏和后台管理系统,以优化招聘策略并提升决策质量。
127 4
|
21天前
|
机器学习/深度学习 数据可视化 JavaScript
探索机器学习模型的可视化技术
【9月更文挑战第23天】在数据科学中,理解和解释机器学习模型的决策过程是至关重要的。本文将介绍几种流行的可视化工具和库,如TensorBoard、D3.js等,帮助读者更好地理解模型内部工作原理及其预测结果。通过实例演示如何使用这些工具进行模型可视化,增强模型的可解释性。
|
2月前
|
人工智能 Anolis
展示全栈式AI平台,探讨软硬件技术!英特尔分论坛议程来啦 | 2024 龙蜥大会
英特尔分论坛将依托英特尔云到端的全面产品组合,围绕至强可扩展处理器、AI 加速器、以及 oneAPI、OpenVINO 等软硬件技术展开探讨。
展示全栈式AI平台,探讨软硬件技术!英特尔分论坛议程来啦 | 2024 龙蜥大会
|
1月前
|
机器学习/深度学习 人工智能 算法
ML.NET:一个.NET开源、免费、跨平台的机器学习框架
ML.NET:一个.NET开源、免费、跨平台的机器学习框架
|
2月前
|
机器学习/深度学习 人工智能 自然语言处理
【机器学习】python之人工智能应用篇--代码生成技术
代码生成技术是人工智能与软件工程交叉领域的一项重要技术,它利用机器学习、自然语言处理和其他AI算法自动编写或辅助编写计算机程序代码。这一技术旨在提高编程效率、降低错误率,并帮助非专业开发者快速实现功能。以下是代码生成技术的概述及其典型应用场景。
41 6
|
2月前
|
机器学习/深度学习 PyTorch TensorFlow
机器学习框架调研
机器学习框架调研
33 1
|
2月前
|
机器学习/深度学习 数据采集 人工智能
揭秘大型机器学习模型背后的秘密:如何在技术深度与广度之间找到完美平衡点,探索那些鲜为人知的设计、训练与部署技巧,让你的作品脱颖而出!
【8月更文挑战第21天】大型机器学习模型是人工智能的关键方向,借助不断增强的计算力和海量数据,已实现在学术与产业上的重大突破。本文深入探讨大型模型从设计到部署的全过程,涉及数据预处理、模型架构(如Transformer)、训练技巧及模型压缩技术,旨在面对挑战时提供解决方案,促进AI技术的实用化进程。
47 1
|
2月前
|
机器学习/深度学习 数据挖掘
机器学习模型的选择与评估:技术深度解析
【8月更文挑战第21天】机器学习模型的选择与评估是一个复杂而重要的过程。通过深入理解问题、选择合适的评估指标和交叉验证方法,我们可以更准确地评估模型的性能,并选择出最适合当前问题的模型。然而,机器学习领域的发展日新月异,新的模型和评估方法不断涌现。因此,我们需要保持对新技术的学习和关注,不断优化和改进我们的模型选择与评估策略。
|
2月前
|
机器学习/深度学习 人工智能 自然语言处理
【机器学习】python之人工智能应用篇——3D生成技术
在Python中,人工智能(AI)与3D生成技术的结合可以体现在多个方面,比如使用AI算法来优化3D模型的生成、通过机器学习来预测3D模型的属性,或者利用深度学习来生成全新的3D内容。然而,直接通过AI生成完整的3D模型(如从文本描述中生成)仍然是一个活跃的研究领域。 3D生成技术是一种通过计算机程序从二维图像或文本描述自动创建三维模型的过程。这一技术在近年来得到了飞速的发展,不仅为游戏、动画和影视行业带来了革命性的变革,还在虚拟现实、增强现实以及工业设计等多个领域展现出了巨大的应用潜力
46 2
|
2月前
|
机器学习/深度学习 人工智能 自然语言处理
【机器学习】python之人工智能应用篇--游戏生成技术
游戏生成技术,特别是生成式人工智能(Generative Artificial Intelligence, 简称Generative AI),正逐步革新游戏开发的多个层面,从内容创作到体验设计。这些技术主要利用机器学习、深度学习以及程序化内容生成(Procedural Content Generation, PCG)来自动创造游戏内的各种元素,显著提高了开发效率、丰富了游戏内容并增强了玩家体验。以下是生成式AI在游戏开发中的几个关键应用场景概述
39 2