深度學習模型儲存 深度學習分布式模型

2021-10-11 16:59:28 字數 1754 閱讀 1431

背景

隨著各大企業和研究機構在pytorch、tensorflow、keras、mxnet等深度學習框架上面訓練模型越來越多,專案的資料和計算能力需求急劇增加。在大部分的情況下,模型是可以在單個或多個gpu平台的伺服器上執行的,但隨著資料集的增加和訓練時間的增長,有些訓練需要耗費數天甚至數週的時間,我們拿coco和google最近release出來的open image dataset v4來做比較,訓練乙個resnet152的檢測模型,在coco上大概需要40個小時,而在oidv4上大概需要40天,這還是在各種超引數正確的情況下,如果加上除錯的時間,可能乙個模型調完就該過年了吧。單張cpu卡、或者單台伺服器上的多張gpu卡,已經遠遠不能夠滿足內部訓練任務的需求。因此,分布式訓練的效率,即使用多台伺服器協同進行訓練,現在成為了深度學習系統的核心競爭力。

一、分布式訓練系統架構

分布式訓練系統架構主要有兩種:

1.1 parameter server架構

在parameter server架構(ps架構)中,集群中的節點被分為兩類:parameter server和worker。其中parameter server存放模型的引數,而worker負責計算引數的梯度。在每個迭代過程,worker從parameter sever中獲得引數,然後將計算的梯度返回給parameter server,parameter server聚合從worker傳回的梯度,然後更新引數,並將新的引數廣播給worker。見下圖的左邊部分。

1.2 ring-allreduce架構

相比ps架構,ring-allreduce架構有如下優點:

二、通用機器學習框架對分布式模型的支援

2.1 tensorflow原生ps架構

通過tensorflow原生的ps-worker架構可以採用分布式訓練進而提公升我們的訓練效果,但是實際應用起來並不輕鬆:

2.2 pytorch分布式簡介

pytorch用1.0穩定版本開始,torch.distributed軟體包和torch.nn.parallel.distributeddataparallel模組由全新的、重新設計的分布式庫提供支援。 新的庫的主要亮點有:

2.3 分布式horovod介紹

horovod 是一套支援tensorflow, keras, pytorch, and apache mxnet 的分布式訓練框架,由 uber 構建並開源,horovod 的主要主要有兩個優點:

horovod 是乙個相容主流計算框架的分布式機器學習訓練框架,主要基於的演算法是 allreduce。 使用 horovod 有一定的侵入性,**需要一定的修改才能變成適配分布式訓練,但是有乙個好處就是適配的成本不高,並且 horovod 提供的各種框架的支援可以讓 horovod 比較好的在各個框架的基礎上使用,他支援 tensorflow/keras/mxnet/pytorch,mpi 的實現也有很多,比如 openmpi 還有 nvidia 的 nccl,還有 facebook 的 gloo,他們都實現了一種平行計算的通訊和計算方式。而且 horovod 的本身的實現也很簡單。

Horovod 分布式深度學習框架

horovod初始化 程序分配 訓練引數配置 模型引數廣播 分布式optimizer 模型儲存 簡略快速了解 horovod使用說明 四部分詳細 horovod介紹 在單機4卡的機上起訓練,只需執行以下命令 horovodrun np 4 h localhost 4 python train.py在...

Horovod 分布式深度學習框架相關

最近需要 horovod 相關的知識,在這裡記錄一下,進行備忘 horovod 安裝 安裝 cuda 9.0 編譯安裝nccl 根據cuda 9.0 安裝 gcc 4.9 python 版本 python 3.6.9 具體環境請自行適配 安裝 openmpi 4.0 pip 安裝 horovod 框...

深度學習baseline模型 深度學習模型訓練流程

工作中訓練了很多的深度學習模型,目前到了上公升到方 的角度來看了。日常工作中有的人可能已經在遵循方 做事,可能自己沒有注意,有的人可能沒有遵循方 在做事,雖然可能最後的結果差不多,但花費的時間和精力應該會差別很大,當然這是我自己的感受。我們不必完全按照方 來做,但基本流程跟方 應該一致。下面的具體步...