雅虎如何在Hadoop集群上實現大規模分布式深度學習
過去十年中,雅虎在 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 可以與深度學習很好地協同,深度學習的多個實驗可以在單個集群上同時進行。與傳統方法相比,這使得深度學習極其高效。 </ul>
- 增強 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 的訓練線程。 </ul>
DL on Hadoop 是一種新型的深度學習方法。為了實現這種方法,雅虎主要做了如下兩個方面的工作:
上述工作完成后,他們在兩個數據集上對該方法進行了基準測試。在 ImageNet 2012 數據集上的測試顯示,與使用一個 GPU 相比,使用 4 個 GPU 僅需要 35% 的時間就可以達到 50% 的準確度。而在 GoogLeNet 數據集上的測試表明,8 個 GPU 達到 60% top-5 準確度的速度是 1 個 GPU 的 6.8 倍。
這說明他們的方法是有效的。為了使 Hadoop 集群上的分布式深度學習更加高效,他們計劃繼續在 Hadoop、Spark 和 Caffe 上的投入。
雅虎已經將部分代碼發布在 GitHub 上,感興趣的讀者可以進一步了解。
來自: InfoQ
本文由用戶 vgtr 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!