BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

DMLC:最大开源分布式机器学习项目

| 作者 张天雷 关注 4 他的粉丝 发布于 2015年6月5日. 估计阅读时间: 2 分钟 | Google、Facebook、Pinterest、阿里、腾讯 等顶尖技术团队的上百个可供参考的架构实例!

为了实现分布式机器学习领域中代码的共享与共同开发,分布式机器学习社区(DMLC)近日正式发布。作为一个开源项目,DMLC的相关代码直接托管在GitHub中,并采用Apache2.0协议进行维护。DMLC项目的发起者陈天奇怪(网名)表示,项目最初的想法是减少分布式机器学习开发的成本以及新算法被大家接受测试的时间。目前,该项目已经集成了XGBoost、CXXNET及Minerva等机器学习库与rabit和参数服务器等系统组件。接下来,本文就对这些基础库及组件进行简单介绍。

XGBoost是一个大规模、分布式的通用Gradient Boosting(GBDT、TBRT或者GBM)库。它在Gradient Boosting的框架下实现了GBDT和广义线性模型等机器学习算法。通过采用分布式计算方法,XGBoost能够明显加快算法中迭代运算的速度。而作为一个快速、精确的分布式深度学习框架,CXXNET主要具有轻量、支持多GPU和分布式并行系统、非常好的可扩展性以及与其他语言之间的接口清晰等特性。它使用mshadow库为用户提供了良好的编程体验和高效的工作能力。与CXXNET不同的是,Minerva提供了一个高效灵活的并行深度学习引擎。它提供了一个类似Numpy的NDarray编程接口,并支持Python和C++语言。其天然的并行性保证了其能够高效地利用多GPU进行相关计算。

rabit是一个提供Allreduce和Broadcast容错接口的轻量通信框架。它简化了MPI的设计,在Allreduce和Boradcast操作的基础上加入了容灾的支持。其最大的特点在于可移植、可扩展以及非常可靠。另外一个通信框架——参数服务器(Parameter Server),主要负责对XGBoost等应用提供分布式的系统支持。它支持工作机与服务器之间的异步、零拷贝键值对的通信。异步的参数服务器接口加上同步的Rabit接口基本能够满足各种分布式机器学习算法中的通信需求。


感谢郭蕾对本文的审校。

给InfoQ中文站投稿或者参与内容翻译工作,请邮件至editors@cn.infoq.com。也欢迎大家通过新浪微博(@InfoQ@丁晓昀),微信(微信号:InfoQChina)关注我们,并与我们的编辑和其他读者朋友交流(欢迎加入InfoQ读者交流群InfoQ好读者)。

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我
社区评论

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT