跨平臺Caffe及I/O模型與並行方案(一)

原文地址:http://blog.csdn.net/solomon1558/article/details/52273843
摘要
Caffe(Convolutional Architecture for Fast Feature Embedding)是一個清晰,模塊化,速度快的深度學習框架。“跨平臺Caffe及I/O模型與並行方案”系列文章針對Caffe依賴包繁雜,可移植性差的缺點,介紹一種採用第三方庫的跨平臺Caffe方案,該方案通具有量身裁剪,安裝快速,跨Windows/Linux平臺等優點。系列文章還分析了深度學習系統的可並行性,研究了Caffe的多線程IO系統與單機多GPU並行方案,調研了目前主流的大規模分佈式深度學習系統。針對Caffe源生並行方案同步延遲時間長,不支持多機多GPU並行訓練等缺點,提出了採用參數服務器(Parameter
Server)的分佈式訓練方案改進方案。
1.引言
Caffe(Convolutional Architecture for FastFeature Embedding)是由伯克利視覺和學習中心(Berkeley Vision and LearningCenter,BVLC)開發的基於C++/CUDA/Python實現的深度學習開源框架,它具有表達性強,速度快,社區成熟等優勢,是深度學習研究領域非常受歡迎的一個框架。如圖1-1所示,Caffe的總體框架由Blob,Layer, Net, Solver構成。Blob是基礎的數據結構,是用來保存學習到的參數以及網絡傳輸過程中產生數據的類;Layer是網絡的基本單元,由此派生出了各種層類。修改這部分的人主要是研究特徵表達方向的;Net是網絡的搭建,將Layer所派生出層類組合成網絡。Solver是Net的求解,修改這部分人主要會是研究DL求解方向的。
這裏寫圖片描述
圖 1-1 Caffe的整體框架圖
深度學習框架發展迅速,Facebook AI實驗室的Torch,分佈式機器學習社區(DMLC) 發佈的MxNet,Google推出的第二代人工智能學習系統TensorFlow等,微軟推出的深度學習框架CNTK(ComputationalNetwork ToolKit)等框架層出不窮。每種框架實現是都會關注某些方面,而忽視了另一方面,Caffe框架在發展的過程中暴露了如下缺點:
(1)不支持任意數據類型
Caffe大部分數據結構(如Blob、Layer、Net、Solver及其派生類)都是模板類,通過實例化模板參數來支持多種數據類型。事實上,Caffe只支持float和double兩種類型網絡。此外,Caffe創建網絡時一旦使用某種類型,整個網絡中各層就都是相同的類型,限制了同一個網絡中多種不同數據類型支持的需求。
(2)不夠靈活的高級接口
Caffe支持3種高級接口:命令行、Python和Matlab,三者在功能上幾乎雷同,定義一個模型仍需要用ProtoBuf文件描述,然後調用Net構造函數創建網絡。
(3)繁雜的依賴包
Caffe依賴包過於繁雜,不利於快速安裝部署。同時,大量的依賴包使得移植到其他平臺(如windows、嵌入式平臺)變得困難且不經濟。
(4)網絡架構缺陷
深度學習新網絡架構、新方法層出不窮,Caffe在支持這些新特性時由於歷史包袱,動作變得遲緩。不利因素如下[1]:
· 使用C++設計並實現新的Layer,而模型定義仍需要用ProtoBuf描述,二者必須手動實現匹配。
· 新增一個層,需要手動實現forward、backward、gradientupdate三種算法。
· 只支持單機多卡並行計算,不支持多機多卡分佈式計算。
· 只支持數據級別並行,不支持模型級別並行。
針對Caffe框架依賴包繁雜的缺點,本文介紹了一種採用第三方庫的跨平臺方案。該方案首先抽取、裁剪必要的第三方庫,針對不同平臺(windows/Linux)預先編譯好庫;然後移除簡單的庫,重寫並融入到工程中;對於冗餘的庫則直接移除。針對深度學習並行訓練加速問題,本文首先分析了深度學習系統的可並行性,研究了Caffe框架的多線程IO系統和單機多卡數據並行方案。針對Caffe框架源生並行方案的不足,通過調研發現參數服務器(ParameterServer)方案是解決大規模分佈式深度學習的有力武器,進而提出移除Caffe源生並行方案,採用參數服務器的分佈式Caffe框架。
本文通過原理探究與框架分析相結合的方式,介紹了Caffe的移植方法,揭示了多線程IO系統和Caffe源生並行方案。這些工作對於今後的Caffe移植、分佈式並行Caffe擴展等非常有幫助,具有實際意義。
第2章主要涉及跨平臺Caffe的設計,第3章分析了Caffe的多線程IO系統,第4章分析了Café的並行方案,第5章介紹了參數服務器在大規模深度學習系統的應用,第6章對全文進行總結。
Reference
[1] 主流深度學習工具評估,https://github.com/zer0n/deepframeworks

發佈了43 篇原創文章 · 獲贊 24 · 訪問量 15萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章