大咖專欄|撥雲見月,專注於深度學習本身

文/李三平

作為人工智能大爆炸的核心驅動,深度學習給機器學習領域帶來了前所未有的巨大影響。面對火山噴發般的數據洪流,人們期望從深度學習中獲得處理現實問題的助力。

然而前期準備卻要佔據大量時間精力,往往與簡便解決複雜問題的目的背道而馳,本文從深度學習的統一支持框架入手,一步步幫助我們從繁雜的前期工作中奪回對深度學習本身的專注。

摘要

分佈式深度學習應用往往需要用戶在運行環境的多節點部署和可擴展性上投入大量時間與精力,而基於數據中心集群資源的深度學習工作負載的統一支持框架,主要目的是實現深度學習工作負載在數據中心資源池上的自動化部署與執行從而幫助用戶將更多注意力集中在商業邏輯和深度學習問題本身

大咖專欄|撥雲見月,專注於深度學習本身


  • 作者簡介
大咖專欄|撥雲見月,專注於深度學習本身

李三平

李三平,戴爾易安信中國研究院首席科學家。畢業於美國麻省大學,計算機工程專業博士。目前主要圍繞數據中心基礎架構從事機器學習、深度學習相關的研發工作,包括基於集群資源的深度學習工作負載支撐框架,以支持深度學習模型自動化調參與工作負載的分佈式部署;構建自動化機器學習工作流以提高數據中心基礎架構預測性分析模型的可靠性與可遷移能力;探索元學習、少樣本學習、脈衝神經網絡等機器學習前沿技術在數據中心的應用案例。在國際學術期刊和IEEE Transactions發表論文20多篇,申請美國專利30餘項,譯著三本,參與編著一本。

  • 工作流程概述

基於數據中心集群資源的深度學習工作負載統一支持框架的構成組件與工作流程下圖所示。

大咖專欄|撥雲見月,專注於深度學習本身

▲深度學習工作負載的統一支持框架

Deep Learning Harness

❶ 用戶提交學習任務規範(或深度學習模型)與數據集;

❷ 深度學習後端服務系統按照問題類型與數據特徵生成推薦模型;

❸ 為深度學習模型自動生成TensorFlow代碼;

❹ 基於CPU、GPU集群計算資源池對學習任務進行優化調度;

❺ 啟用深度學習工作負載監控分析工具;

❻ 載入代碼與數據集,在指定資源上執行深度學習工作負載;

❼ 訓練過程的實時可視化監測與檢查點自動保存;

❽ 保存任務執行結果;

❾ 深度學習任務結果的分析與可視化。

接下來,我們就支持框架中的若干關鍵功能與實現方法依次展開討論(如下圖所示)。

大咖專欄|撥雲見月,專注於深度學習本身

▲支持框架的關鍵功能與實現方法

  • CPU-GPU計算資源池

將數據中心服務器集群中的CPU資源和各種不同類型、不同數目的GPU資源整合為邏輯上單一的計算資源池,用戶可以不必花費大量精力去學習、理解不同類型計算資源的性能特點,尤其是在部署分佈式深度學習工作負載時,用戶只需指定期望的計算資源類型和數量即可;甚至用戶可以不指定計算資源,支持框架中的資源控制器能夠根據用戶工作負載的特徵,諸如模型複雜度、訓練數據量等,動態選擇最佳計算資源(我們會在後文中展開討論)。

對計算資源的池化管理可以有效地實現智能調度提高資源利用率保證用戶對深度學習工作負載的SLA要求


  • 深度學習任務的資源預估模型

前文中提到根據用戶工作負載特徵在計算資源池中動態選擇最佳資源,這就意味著在用戶學習任務實際運行之前,支持框架需要對任務的資源佔用做出估計。因此,我們要利用機器學習方法構建針對深度學習任務的資源預估模型

模型構建依據首先是深度神經網絡高度結構化的特徵,因此可以對模型複雜度進行量化描述;

其次是深度學習任務的資源消耗、運行時間與模型複雜度、數據規模、迭代次數等因素存在近似線性的對應關係。

以卷積神經網絡為例,我們可以通過對諸如卷積層數目、卷積濾鏡數目、全連接層數目、全連接層節點數目、輸入圖像大小、批數據大小等變量進行連續改變,從而得到一系列具有定製化結構的卷積神經網絡。然後在特定類型與數量的計算資源上運行這些定製化的卷積網絡學習任務,並對資源消耗、運行時間等數據進行監控記錄。

這時我們就已經獲得了卷積神經網絡學習任務關於模型結構、資源消耗與時間性能的基準數據集,然後利用線性迴歸或者曲線擬合技術來構建機器學習模型。

大咖專欄|撥雲見月,專注於深度學習本身

在對深度學習任務進行資源預估時,輸入信息包括用戶提交或者自動生成的深度學習任務代碼、訓練數據規模、與學習任務相關的參數例如批數據大小、迭代次數等,以及用戶的期望運行時間。

首先,從代碼中提取深度學習模型結構,形成量化特徵描述;

其次,預估模型會按照資源池中可用的計算資源類型與數量進行運行時間估計;

隨後,在滿足用戶關於運行時間的約束下,模型會選擇能耗最小的資源配置方案作為輸出。


  • 深度學習任務的資源配置推薦

基於資源預估模型,我們構建後端web服務以實現完整的面向深度學習任務的數據中心資源配置推薦機制。按照資源池中當前可用的資源類型和數量,利用機器學習模型對特定計算資源下的任務執行時間進行估計,同時將數據中心的服務器配置、網絡連接與帶寬、延遲等作為經驗知識,在滿足用戶關於運行時間的要求下,遵循能耗最小化原則,為用戶提供資源配置的推薦方案。

大咖專欄|撥雲見月,專注於深度學習本身


  • 在異構GPU資源上部署深度學習任務

數據中心的CPU-GPU計算資源池中,往往包含具有不同型號GPU的服務器集群,將用戶的深度學習任務部署在由異構GPU組成的服務器集群上無疑可以更加充分地利用數據中心的當前可用資源。但是,如果只是簡單地遵循通常的分佈式深度學習方法,那麼在模型參數的同步過程中,相同規模的輸入數據會導致性能較差的GPU引起性能更好的GPU的更新速度降低。

因此,在異構GPU資源上部署分佈式深度學習任務我們首先要考慮如何達到不同類型GPU之間的性能同步。簡單來說,通過調整分配至不同GPU的批數據大小可以達到各個GPU之間參數更新的近似同步。基於資源預估模型的輸出,結合自適應的批數據大小調整方法,我們可以很快找到異構GPU資源的批數據大小分配方案。

那麼,當我們將輸入數據的平均分配方法改為不均勻分配以屏蔽異構GPU之間的計算性能差異時,隨之而來的另一個問題就是:理論上我們也改變了各個GPU節點上深度學習過程的收斂性能。所以,我們也需要相應調整深度學習模型的超參數以保證訓練任務的收斂性能不被影響

大咖專欄|撥雲見月,專注於深度學習本身

學習率通常是深度模型超參數微調的首要選項,因此我們針對特定的批數據大小,利用啟發式方法去尋找對當前深度學習模型來說最合適的學習率設置。首先使學習率以指數函數形式進行遞增,觀察訓練階段的精度曲線,並利用高階曲線擬合與對數曲線擬合,以啟發式方法找出學習率的優化區間或優化中值,以此作為梯度優化算法的學習率設置。


  • 分佈式深度學習工作負載的自動部署

在確定了計算資源配置和相應的參數調整方案之後,支持框架還需要實現深度學習負載的自動化分佈式部署,以形成完整的深度學習工作流程。例如,我們可以使用容器化技術,將數據中心的CPU、GPU資源以容器形式進行管理和提供,使用Horovod開源框架實現深度學習負載的多節點部署,編寫可重用自動化腳本以實現訓練數據的多節點預先載入,工作負載的跨節點部署和啟動,同時還包括監控分析工具的啟動,以及對監控數據、檢查點文件和訓練結果的自動保存。

  • 結語

至此,支持框架幫助用戶完成了深度學習工作負載在數據中心計算資源上的自動化部署和運行,用戶就可以將更多的注意力集中在商業邏輯、數據分析與預處理、模型調試等問題上。也就是說,用戶只需關注深度學習任務本身支持框架則負責幫助用戶實現工作負載在計算資源上的調度與執行


本文首發於戴爾科技集團知乎專欄

AIoT時代的數據資產

這是一個由戴爾易安信中國研發中心

技術大咖們所管理的專欄

AI、IoT、大數據和數據存儲...

你想知道的前沿技術趨勢以及深度技術剖析

我們的研發人員將會持續在該專欄分享

歡迎知乎上搜索“戴爾科技集團”關注我們

相關推薦

推薦中...