QCon 广州站2022已开启,三大关键词:数字化、国产化、云原生。戳此了解 了解详情
写点什么

雅虎如何在 Hadoop 集群上实现大规模分布式深度学习

  • 2015 年 10 月 26 日
  • 本文字数:1270 字

    阅读完需:约 4 分钟

过去十年中,雅虎在 Apache Hadoop 集群构建和扩展方面投入了很大的精力。目前,雅虎有 19 个 Hadoop 集群,其中包含 4 万多台服务器和超过 600PB 的存储。他们在这些集群上开发了大规模机器学习算法,将 Hadoop 集群打造成了雅虎首选的大规模机器学习平台。近日,雅虎 Big ML 团队的 Cyprien Noel、Jun Shi 和 Andy Feng 撰文介绍了雅虎在Hadoop 集群上构建大规模分布式深度学习的实践

深度学习(DL)是雅虎的许多产品都需要的功能。比如, Flickr 的场景检测、对象识别、计算审美等功能均依赖于深度学习。为了使更多产品从机器学习中受益,他们最近将 DL 功能引入到了 Hadoop 集群本地。在 Hadoop 上进行深度学习主要有以下好处:

  • 深度学习直接在 Hadoop 集群上执行,可以避免数据在 Hadoop 集群和单独的深度学习集群之间移动;
  • 同 Hadoop 数据处理和 Spark 机器学习管道一样,深度学习也可以定义为 Apache Oozie 工作流中的一个步骤;
  • YARN 可以与深度学习很好地协同,深度学习的多个实验可以在单个集群上同时进行。与传统方法相比,这使得深度学习极其高效。

DL on Hadoop 是一种新型的深度学习方法。为了实现这种方法,雅虎主要做了如下两个方面的工作:

  • 增强 Hadoop 集群:他们向 Hadoop 集群添加了 GPU 节点。每个节点有 4 个 Nvidia Tesla K80 卡,每个卡有 2 个 GK 210 GPU。这些节点的处理能力是传统商用 CPU 节点的 10 倍。GPU 节点有两个独立的网络接口 Ethernet 和 Infiniband。前者作为外部通信接口,后者速度要快 10 倍,用于连接集群中的 GPU 节点以及为通过 RDMA 直接访问 GPU 内存提供支持。借助 YARN 最新推出的节点标记功能,可以在作业中指定容器是在 CPU 上运行还是在 GPU 上运行。
  • 创建 Caffe-on-Spark:这是他们基于开源软件库 Apache Spark Caffe 创建的一个分布式综合解决方案。借助它,通过几条简单的命令就可以将深度学习作业提交到 GPU 节点集群,并且可以指定需要启动的 Spark executor 进程数量、分配给每个 executor 的 GPU 数量、训练数据在 HDFS 上的存储位置以及模型的存储路径。用户可以使用标准的 Caffe 配置文件指定 Caffe solver 和深层网络拓扑。Spark on YARN 会启动指定数量的 executor,每个 executor 会分得一个 HDFS 训练数据分区,并启动多个基于 Caffe 的训练线程。

上述工作完成后,他们在两个数据集上对该方法进行了基准测试。在 ImageNet 2012 数据集上的测试显示,与使用一个 GPU 相比,使用 4 个 GPU 仅需要 35% 的时间就可以达到 50% 的准确度。而在 GoogLeNet 数据集上的测试表明,8 个 GPU 达到 60% top-5 准确度的速度是 1 个 GPU 的 6.8 倍。

这说明他们的方法是有效的。为了使 Hadoop 集群上的分布式深度学习更加高效,他们计划继续在 Hadoop、Spark 和 Caffe 上的投入。

雅虎已经将部分代码发布在 GitHub 上,感兴趣的读者可以进一步了解


感谢郭蕾对本文的审校。

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

2015 年 10 月 26 日 19:003593
用户头像

发布了 1008 篇内容, 共 337.1 次阅读, 收获喜欢 319 次。

关注

评论

发布
暂无评论
发现更多内容

浅谈汽车行业嵌入式软件发布的流程有多复杂

WB

程序员 软件

Flink初体验

数据社

大数据 flink 流计算

写一个开源的 macOS 程序可以赚多少钱?

子骅 luin

node.js redis GitHub 开源 赚钱

OKR实践中的痛点(1):老板的KR我的O,怎么办?

大叔杨

OKR Scrum 敏捷

【数据结构】双向链表插入操作的时间复杂度分析

遇见

数据结构 算法 时间复杂度

近两年影响我的两个重要原则

Selina

毕竟,一生很短,少有圆满

霍太稳@极客邦科技

创业 身心健康 个人成长

WebSphere Application Server运维实践 --从入门到监控

rafe

Java WAS perfservlet visualVM JMX

业务系统开发程序员常用linux知识

Objectivezt

Linux

【Vue3.0 Beta】尝鲜

德育处主任

CSS Java html5 Vue 大前端

从流程、认知上做稳定的系统演进

Skysper

系统设计 质量管理

Linux 性能诊断:负载评估入门

RiboseYim

Linux 性能优化

翻译: Effective Go (1)

申屠鹏会

翻译 Go 语言

2020了,各家小程序发展的怎么样?

崔红保

小程序 uni-app

寻找伴侣最重要的是什么?

二爷

一个创业者的途中思考

非著名程序员

创业 读书笔记 程序员 重新理解创业 思考

走出舒适区最好办法别走了,扩大它

乐少

一文讲清楚 MySQL 事务隔离级别和实现原理,开发人员必备知识点

古时的风筝

MySQL 数据库 事务隔离级别 mysql事务 数据库事务

电子书:《Linux Perf Master》

RiboseYim

Linux 性能优化

测试

Chonge

对话 CTO〡和 PingCAP CTO 黄东旭聊开源数据库新蓝海

ONES 王颖奇

数据库 分布式 开发者

用声音在一起,听荔枝CTO丁宁聊UGC声音互动平台的技术世界

ONES 王颖奇

内容 企业架构 互联网

分享多年积累的 macOS 效率工具

张晓辉

macos

业务代码必须要做的事情

Objectivezt

为什么你的创业公司应该运行在Kubernetes上

云原生

云原生 k8s

uni-app黑魔法:小程序自定义组件运行到H5平台

崔红保

小程序 uni-app

此为开卷

范学雷

【gRPC】Python调用Java的gRPC服务

遇见

Java Python gRPC

人们喜欢彼此制造困难让大家难过

Fenng

芋道 Spring Cloud Alibaba 介绍

艿艿

阿里巴巴 分布式 微服务 Spring Cloud Spring Boot

初入响应式编程(上)

CD826

spring 微服务 Spring Cloud 响应式编程 reactor

雅虎如何在Hadoop集群上实现大规模分布式深度学习_语言 & 开发_谢丽_InfoQ精选文章