机器学习和深度学习计算引擎的发展现状

常用的机器学习计算框架Spark、Tensorflow、Caffe、Pytorch,还有一些其他的机器学习引擎,如:Horovod、Paddle、XGBoost 等,各个算法均有各自的特点和优势。

1 Spark

Spark 是一款非常适合机器学习模型训练的计算引擎,主要包括 spark core和在 spark core 的基础上建立的相关应用框架,根据业务需求分为用于交互式查询的 SQL、实时流处理 Streaming、机器学习 MLlib 和图计算 GraphX 四大框架。

内部提供了机器学习相关算法的类库,用户可直接在其基础上扩展使用,常见的有聚类、分类、回归等一系列需要对大量数据进行处理和并需要多步骤迭代的算法。Spark 的运行模式灵活,不仅可以在单机上部署,也可以分布式集群的方式部署。在以分布式方式部署时,也可有多种方式进行选择,目前的实现包括相对稳定的 Mesos 模式,以及 Hadoop YARN 模式。

2 Tensorflow

TensorFlow 是 Google 推出的开源深度学习框架,业界支持力度最高,是目前最被看好的深度学习框架。支持异构计算,可以在 CPU、GPU 下混合计算。其中,由于 CPU 的计算单元较少,并且是顺序执行指令,其主要是进行逻辑控制。而 GPU 有大量的计算单元,适合处理大批量的数据,除此之外,拥有超长的流水线,可并行计算,因此 GPU 适合处理类型统一大批量的数据。TensorBoard 是 TensorFlow 引擎的可视化组件,可监控整个训练过程并可视化网络结构。有利于监控时间长、规模大、网络结构复杂的训练任务。

Tensorflow 是支持分布式的深度学习计算框架,并且效率很高,性能较好。整个集群(cluster)可以看作是作业(Jobs)的集合,作业(Job)可以分为参数作业和工作节点作业。其中,参数作业的运行服务器为参数服务器(Parameter server, PS)。

一个分布式的作业计算可交由参数服务器(PS)和工作节点 (Worker Job, worker)来完成。参数服务器的主要作用是管理参数的存储和更新。工作节点主要从事计算任务。

算法工程师在使用分布式的 Tensorflow 时,需要对 ps 和 worker 所执行的代码分别进行编写,以此来实现 Tensorflow 分布式,加快训练速度。

对于可以支持 CPU 和 GPU 的异构计算,作为算法工程师,可在脚本中指明欲使用 GPU 和 CPU 计算的代码块,明确各资源的特点,结合训练任务的需要,更好地利用资源的优势,进一步加快模型训练的速度。

3 Caffe(Convolutional Architecture for Fast Feature Embedding)

Caffe 是主要用于计算机视觉的深度学习工具。Caffe 拥有大量训练好的经典模型并可快速应用在新的训练任务上,训练快速使其在学术圈和研究领域十分受欢迎。

因其运行的稳定性和代码质量高质量,在对稳定性要求较高的企业级生产环境中也频频被采纳。但由于 Caffe 在设计网络结构时比较受限,不能够像 Tensorflow 一样很好的支持细粒度的网络层。而且,Caffe 目前本身是不支持分布式的计算,需要第三方分布式架构来实现大规模的分布式训练。

4 Pytorch

Pytorch 支持大量的机器学习算法,与 Caffe 类似,拥有大量训练好的经典模型,是一款基于 LuaJIT(一种脚本语言)的高效科学计算库。

在使用 Lua进行数据处理时可以随意使用循环,不必像使用 python 一样需要考虑性能问题。同时因为是命令式编程模式,在实现复杂操作时要方便许多,而这也与其设计之初让算法设计变得敏捷的目标相吻合。在 Facebook 开源了其深度学习框架以后,越来越多的企业开始使用 Pytorch,例如:Twitter、Google。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值