[發明專利]一種基于容器的并行深度學習調度訓練方法及系統有效
| 申請號: | 201910122127.3 | 申請日: | 2019-02-19 |
| 公開(公告)號: | CN109885389B | 公開(公告)日: | 2021-07-16 |
| 發明(設計)人: | 竇洋;楊繼偉;方亞東 | 申請(專利權)人: | 浪潮云信息技術股份公司 |
| 主分類號: | G06F9/48 | 分類號: | G06F9/48;G06F9/50;G06F9/455 |
| 代理公司: | 濟南信達專利事務所有限公司 37100 | 代理人: | 孫園園 |
| 地址: | 250100 山東省濟南市高*** | 國省代碼: | 山東;37 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 基于 容器 并行 深度 學習 調度 訓練 方法 系統 | ||
1.一種基于容器的并行深度學習調度訓練方法,其特征在于,該方法是利用Kubernetes容器實現對任務的計算資源的配置和調度,提供ResourceQuota、LimitRanger多種資源管理機制,在容器集群中通過pod節點之間的通信,實現任務之間的資源隔離;同一訓練節點同時啟動訓練pod和生命周期管理pod,并由LCM統一進行資源作業調度,微服務架構本身作為POD部署,依賴Kubernetes最新版本特性,有效地調動GPU的使用,當K8S作業因OS、docker或機器故障中的任何故障原因崩潰時,重新啟動微服務架構,并報告微服務架構的健康;訓練工作默認是按FIFO順序安排,LCM支持作業優先級,對于每個訓練任務,LCM使用按需來請求所需資源集,提高了訓練的可靠性和計算資源的利用率;具體步驟如下:
S1、在宿主機上預裝Kubernetes容器,指定一個pod為調度節點,一個pod為監控節點,n個pod為task節點;
S2、調度節點負責提交作業任務,通過調度算法指定某個task節點進行一輪迭代;其中,調度算法具體如下:
(1)、超閾值時,新分配計算節點將會轉移計算任務,此時便出現了空余的task節點;
(2)、基于空余的task節點所占有的資源大小,設置權重,
(3)、所占資源越大,權重越大;
(4)、當再出現超閾值需要新分配節點時,優先從空余節點中選擇;
(5)、在開啟新節點的過程中,訓練進度完成度越高的,越優先分配;訓練進度完成度越低的,需要排在隊列后面,等待資源分配;
S3、Task節點接到調度任務之后,運行TensorFlow的一輪迭代運算,完成一次反向傳播過程;
S4、Task節點把運算結果和迭代次數發送給監控節點,并匯總到調度節點;
S5、Task節點訓練過程中,在程序里預先開啟一條線程,定時保存臨時結果和進度到HDFS中;
S6、監控節點負責感知GPU資源伸縮,監控task節點的健康狀態;具體步驟如下:
(1)、每隔一段時間,pod中控制器根據每個Pod定義中指定的指標進行查詢;
(2)、通過查詢到的指標與設定的指標進行比較,獲得需要容器資源縮放的比例,并發送給調度節點;
其中,監控task節點的健康狀態時,若發現某task節點宕機或資源不足或計算超過閾值時間,立即通知調度節點啟動新的task節點繼續剩余訓練任務,新分配的pod節點所占GPU資源更大;閥值時間的計算方法如下:
(1)、通過api查詢TensorFlow計算節點每一次運行時所消耗的時間;
(2)、該節點此前n-1輪計算消耗的時間分別記為t1、t2、…、tn,下一次計算的時間最大的閾值為2n×(t1+t2+…+tn)(即之前的時間求和再乘以2n);
(3)、若task節點超過閾值,由監控節點通知調度節點,開啟資源更大的task節點進行訓練;
S7、所有task節點的job完成,調度節點感知完成收斂,釋放所有的GPU和cpu資源,銷毀所有計算容器,把結果寫入持久化卷或者輸出為數據流。
2.根據權利要求1所述的基于容器的并行深度學習調度訓練方法,其特征在于,所述訓練過程中,若訓練節點失敗,守護進程檢測到故障,并指示LCM終止自身和學習節點,用戶檢查日志以診斷失敗的原因:
①、若為訓練監控節點失敗,則將被從Kubernetes中重新啟動,從etcd中獲取狀態,并且恢復正常運作;其中,故障信息可從MongoDB或者ELK中查看;
②、若為LCM崩潰并重新啟動,則正在運行的作業將具有由重新啟動的LCM重新部署,但現有作業不受影響;其中,該情況的前提是系統有多個LCM的副本以及etcd本身也被復制,并且對etcd節點的所有更新都是可序列化的。
3.一種基于容器的并行深度學習調度訓練系統,其特征在于,該系統包括微服務架構、學習訓練、容器集群管理和生命周期管理;
其中,微服務架構用于減少組件之間的耦合,保持每個組件的單一性和盡可能無狀態,相互隔離,并允許每個組件獨立開發、測試、部署、伸縮和升級;并通過動態注冊REST API服務實例來實現負載平衡;
學習訓練是由使用GPU的kubernetes容器中的單個學習節點組成,用戶代碼實例化框架kubernetes服務;通常,學習訓練作業使用幾個GPU/CPU或者由幾個學習節點同步在MPI上使用集中式參數服務;用戶提交訓練任務,并使用REST API管理;其中,學習訓練作業的參數包括訓練數據的來源、訪問訓練數據的憑據、框架、學習節點的數量、結果和日志被存儲的位置以及學習速率,學習訓練作業的參數均使用配置文件來指定;
容器集群管理用于使用Kubernetes進行容器編排和群集管理;Kubernetes節點是一個或多個容器的集合、共享存儲和網絡以及管理生命周期;Kubernetes節點的內容總是位于同一位置并協同調度,并在上下文中共享運行狀態;所有容器化的核心服務都是作為K8S執行的,通過K8S將服務抽象化,部署DL作業和狀態;
生命周期管理用于部署DL作業,LCM只需使用DL作業的所有元數據實例化一個守護進程,守護進程通過與K8S進一步交互來執行實際部署DL作業的多步驟過程,需要實例化K8S容器,通過用戶代碼和訓練參數,設置共享NFS卷來監控訓練進度,K8S策略限制多租戶環境中學習者的網絡訪問;若監護進程在作業部署的中間崩潰,由K8S保證重新啟動,重新啟動的守護進程回滾之前部署的DL作業,并啟動新的部署過程;在持續失敗的情況下,在守護進程放棄之前,該過程將重復多次,并且在MongoDB中標記的DL作業失?。灰坏〥L作業成功部署,守護進程就始終負責監控進度;
該系統還包括分布式文件存儲系統、持久化卷、時序數據庫、文檔數據庫、共享配置和服務發現以及日志處理一體化;
分布式文件存儲系統用于存儲訓練過成功中的臨時數據,當節點宕機時,新節點可以快速讀取上一次臨時數據;
持久化卷用于保存訓練模型和原始數據;
時序數據庫用于記錄每一輪訓練實時結果;
文檔數據庫用于存儲訓練過成功中的臨時數據,當節點宕機時,新節點可以快速讀取上一次臨時數據,用于代替分布式文件存儲系統;
共享配置和服務發現用于節點之間的RPC通信;
日志處理一體化用于存儲和展示系統運行日志。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于浪潮云信息技術股份公司,未經浪潮云信息技術股份公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201910122127.3/1.html,轉載請聲明來源鉆瓜專利網。
- 上一篇:一種適用于異構系統的數據處理方法和裝置
- 下一篇:分子對接云計算流程控制方法





