分布式訓練
如果可能,磚建議你訓練的神經網絡在單個機器上;分布式代碼培訓和推理是更複雜的比單機代碼和慢由於通信開銷。然而,您應該考慮分布式訓練和推理如果你的模型或數據太大在單個機器上裝入內存。對於這些工作負載,磚運行時毫升包括Horovod和spark-tensorflow-distributor包。
Horovod
Horovod是一個分布式TensorFlow培訓框架,Keras, PyTorch。磚使用HorovodRunner和支持分布式深度學習培訓horovod.spark
包中。火花毫升管道應用程序使用Keras或PyTorch,您可以使用horovod.spark
估計量的API。
安裝一個不同版本的Horovod
從預裝版本升級或降級Horovod毫升集群,您必須重新編譯Horovod通過以下步驟:
Horovod卸載當前版本。
%皮普卸載- - - - - -yhorovod
如果使用GPU-accelerated集群,安裝編譯Horovod所需CUDA開發庫。以確保兼容性,離開包版本不變。
%上海wgethttps:/ /開發人員。下載。英偉達。com/計算/cuda/回購/ubuntu1804/x86_64/cuda- - - - - -ubuntu1804。銷mvcuda- - - - - -ubuntu1804。銷/等/恰當的/首選項。d/cuda- - - - - -存儲庫- - - - - -銷- - - - - -600年恰當的- - - - - -關鍵阿德- - -獲取- - - - - -鍵https:/ /開發人員。下載。英偉達。com/計算/cuda/回購/ubuntu1804/x86_64/7fa2af80。酒吧添加- - - - - -恰當的- - - - - -存儲庫“黛比https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/”wgethttps:/ /開發人員。下載。英偉達。com/計算/機- - - - - -學習/回購/ubuntu1804/x86_64/英偉達- - - - - -機- - - - - -學習- - - - - -回購- - - - - -ubuntu1804_1.0.0- - - - - -1_amd64。黛比dpkg- - - - - -我。/英偉達- - - - - -機- - - - - -學習- - - - - -回購- - - - - -ubuntu1804_1.0.0- - - - - -1_amd64。黛比恰當的- - - - - -得到更新恰當的- - - - - -得到安裝- - -允許- - - - - -降級- - -沒有- - - - - -安裝- - - - - -建議- - - - - -y\cuda- - - - - -nvml- - - - - -dev- - - - - -11- - - - - -0=11.0.167- - - - - -1\cuda- - - - - -學校網站- - - - - -11- - - - - -0=11.0.221- - - - - -1\cuda- - - - - -cudart- - - - - -dev- - - - - -11- - - - - -0=11.0.221- - - - - -1\cuda- - - - - -庫- - - - - -dev- - - - - -11- - - - - -0=11.0.3- - - - - -1\libnccl- - - - - -dev=2.11.4- - - - - -1+cuda115\libcusparse- - - - - -dev- - - - - -11- - - - - -0=11.1.1.245- - - - - -1
Horovod下載所需的版本的源代碼和編譯與適當的旗幟。如果你不需要任何的擴展(如
HOROVOD_WITH_PYTORCH
),您可以刪除這些旗幟。
% sh HOROVOD_VERSION = v0.21.3 #在必要時改變git克隆——遞歸https://github.com/horovod/horovod.git分支$ {HOROVOD_VERSION} cd horovod rm射頻構建/ dist / HOROVOD_WITH_MPI = 1 HOROVOD_WITH_TENSORFLOW = 1 HOROVOD_WITH_PYTORCH = 1 \ #磚運行時的8.4毫升和下麵,替換為/磚/ conda / env / databricks-ml / bin / python sudo /磚/ python3 / bin / python設置。py bdist_wheel指向- f dist / horovod - * .whl
% sh HOROVOD_VERSION = v0.21.3 #在必要時改變git克隆——遞歸https://github.com/horovod/horovod.git分支$ {HOROVOD_VERSION} cd horovod rm射頻構建/ dist / HOROVOD_GPU_ALLREDUCE = NCCL HOROVOD_CUDA_HOME = / usr /地方/ cuda HOROVOD_WITH_MPI = 1 HOROVOD_WITH_TENSORFLOW = 1 HOROVOD_WITH_PYTORCH = 1 \ #磚運行時的8.4毫升和下麵,替換為/磚/ conda / env / databricks-ml-gpu / bin / python sudo /磚/ python3 / bin / python設置。py bdist_wheel指向- f dist / horovod - * .whl
使用
%皮普
重新安裝Horovod通過指定輪路徑從前麵的命令的輸出。0.21.3
這個示例中所示。
%皮普安裝- - -沒有- - - - - -緩存- - - - - -dir/磚/司機/horovod/經銷/horovod- - - - - -0.21.3- - - - - -cp38- - - - - -cp38- - - - - -linux_x86_64。whl
排除Horovod安裝
問題:進口horovod。{火炬| tensorflow}
提出了ImportError:擴展horovod。{火炬| tensorflow}有不被建
解決方案:預裝Horovod磚運行時毫升,所以常常會發生這種錯誤如果更新出現問題的環境。錯誤表明Horovod安裝之前需要圖書館(PyTorch或TensorFlow)。由於Horovod編譯安裝期間,horovod。{火炬| tensorflow}
不會得到編譯期間如果這些包不存在Horovod的安裝。要修複這些問題,遵循這些步驟:
確認你磚集群運行時毫升。
確保PyTorch或者TensorFlow包已經安裝。
卸載Horovod (
%皮普卸載可能是horovod
)。安裝
cmake
(%皮普安裝cmake
)。重新安裝
horovod
。
spark-tensorflow-distributor
spark-tensorflow-distributor是一個開源本地包TensorFlow分布式訓練與TensorFlow火花集群。了解更多關於分布式訓練TensorFlow 2。
TorchDistributor
TorchDistributor是一個開源的模塊在PySpark幫助用戶做分布式訓練PyTorch火花集群,這允許您啟動PyTorch培訓工作引發的工作。底層,它初始化環境和員工之間的溝通渠道,充分利用了CLI命令torch.distributed.run
工作者節點運行分布式訓練。了解更多關於分布式訓練TorchDistributor。