BAT小米深度学习平台,你会选择哪一家

2020/05/31 10:02
阅读数 150

简介

近日重温了《深度学习在腾讯的平台化和应用实践(全)》,感兴趣可以在这里阅读 https://zhuanlan.zhihu.com/p/21852266 ,里面介绍了腾讯在深度学习平台基础架构上细致的工作,本人在2016 C++及系统软件大会上也分享了小米cloud machine learning平台的细节,在此给大家总结和对比一下。

腾讯Mariana平台

在前面提到的文章中,已经详细介绍了腾讯深度学习平台,也就是Mariana项目的实现细节了,这是一个真正意义上的平台。在参考文献上也体现出来,腾讯大量借鉴了Google DistBelief的设计,研发能力更是没得说,内部实现了DistBelief提出的模型并行和数据并行原理。而在GPU训练上也是参考了Google COTS HPC论文实现的,因此目前在DNN的CPU并行训练和DNN、CNN的GPU并行训练上支持很好,使用接口应该也是类似DistBelief + Parameter server的API。

Mariana架构图,取自《深度学习在腾讯的平台化和应用实践(全)》

腾讯业务部分非常多,机器学习与深度学习应用也非常广,和腾讯一些朋友也了解过,除了Mariana平台,公司内部甚至有多个深度学习的基础架构部门,使用的框架也不局限内部实现的“DistBelief”,目前Caffe、TensorFlow等开源框架也有使用。这样重新开发一套Mariana平台或者拓展Mariana平台,来支持Caffe、TensorFlow接口是非常难的,目前这些基础架构部门主要提供CPU和GPU物理机支持,开发者可以直接登录服务器调试模型,但也带来了服务器维护、应用部署成本高,服务器资源尤其是不可共享的GPU资源利用率低等问题。

小米Cloud-ml平台

小米的cloud machine learning深度学习平台,也叫cloud-ml平台,是基于TensorFlow和Kubernetes等开源技术实现的深度学习平台。我们知道DistBelief是Google第一代深度学习框架,而TensorFlow是在DistBelief的实践经验上开发的第二代深度学习框架,无论是使用接口、算法支持以及分布式实现上都有极大的改进。小米在深度学习上起步较晚,但正好也赶上了TensorFlow项目开源的契机,容器技术经过两年的打磨也逐渐production ready了,因此基于TensorFlow和Kubernetes的平台架构是目前比较state of the art和符合devops思想的理想模型。

cloud-ml架构图

相比腾讯和百度,小米并没有自研一个比肩TensorFlow的深度学习框架,而是在Kubernetes上层实现了授权认证、多租户等功能,通过容器调度集群管理GPU等物理机,提供一个类似CaaS的深度学习服务。这种分层架构充分利用了组件间的可拓展性,甚至在最新版中还增加了MXNet、Theano、Torch、Caffe以及CNTK深度学习框架的支持,开发者也可以自由选择不同的框架以及算法来实现业务的需求。

cloud-ml支持的深度学习框架

cloud-ml的特性远不止这些,它提供提交式接口用户编写好代码直接提交到云端训练,训练的模型可以保存到分布式存储中,然后直接在cloud-ml上一键部署,部署成功后传入JSON或者RPC请求就可以做inference了。TensorFlow支持GPU训练以及分布式训练,在cloud中同样支持,通过传入不同的集群规模就可以创建多个分布式任务开始训练,容器隔离也很好地解决了端口占用、磁盘失败、GPU被占用等问题。类似Hadoop、Spark这样的提交式平台还有一个好处,你可以同时提交几十个训练任务进行超参数调优,而cloud-ml实际上已经实现了automatically hyperparameter tuning,你把想调的超参数组合一次性列出来,用命令行或者API直接提交,云端就可以并发训练,然后给你返回“效果最好”的超参数组合,“效果最好”可以是loss最低、正确率最高或者auc最高等等,这也是用户可以自定义的。使用cloud-ml确实非常好用,极大降低了深度学习科学家、数据科学家的开发时间和压力.

cloud-ml使用接口

其他深度学习平台

阿里内部是否开发过深度学习框架不太了解,和阿里一些朋友了解过,他们业务部门非常多,暂时没有统一的深度学习基础架构部门,目前TensorFlow、Torch也在使用。由于缺乏一个统一的深度学习平台,目前有些部门也是直接使用GPU物理机,灵活性前面也提到了,但运维成本和资源利用率都是一个大问题。

目前阿里和蚂蚁内部也在积极探索,也希望能基于分布式的TensorFlow提供一个更易用和可靠的深度学习平台服务,底层可以直接依赖飞天等基础架构,但也存在一些问题,TensorFlow是Google开源的,在云基础架构上推荐使用Kubernetes,如果对接内部基础架构需要一定的改造,在易用性上可能也有一点影响。

百度近期也开源了内部使用的Paddle项目,Paddle已经支持GPU训练和分布式训练,而且在百度的众多生产业务中验证过,是一个非常不错的深度学习框架。并且在深入了解Paddle时,我们在百度云上也看到了云端托管的Paddle服务,内部实现不得而知,在公司内应该是很不错的深度学习平台,希望有渠道或者了解的人能联系我们多多交流。

总结

最后总结一下,深度学习是目前的潮流,各大企业也有所投入,一个好的平台对于业务的落地也是非常重要的。我大致了解了BAT和小米的深度学习平台,大家看完会选择哪一家呢?

无论你是否承认,“深度学习”都将成为继“云计算”和“大数据”后,IT领域的一个新时代。而只能在本地调用GPU、需要手动管理服务器资源和调整模型参数让我们又回到了旧IT时代,因此随着各个厂商在平台上的努力,下一个时代“云深度学习”也即将到来。

声明:本文系网络转载,版权归原作者所有。如涉及版权,请联系删除!


本文分享自微信公众号 - 智能算法(AI_Algorithm)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部