分布式訓練
如果可能的話,Databricks建議你在一台機器上訓練神經網絡;用於訓練和推斷的分布式代碼比單機代碼更複雜,並且由於通信開銷而更慢。但是,如果您的模型或數據太大,無法容納在一台機器上的內存中,則應該考慮分布式訓練和推斷。對於這些工作負載,Databricks Runtime ML包含Horovod和spark-tensorflow- distribution包。
Horovod
Horovod是TensorFlow、Keras和PyTorch的分布式訓練框架。Databricks支持分布式深度學習訓練,使用HorovodRunner和horovod.spark
包中。對於使用Keras或PyTorch的Spark ML管道應用程序,可以使用horovod.spark
估計量的API.
安裝不同版本的Horovod
要從ML集群中的預安裝版本升級或降級Horovod,必須按照以下步驟重新編譯Horovod:
卸載當前版本的Horovod。
%皮普卸載-yhorovod
如果在Databricks Runtime 8.1 ML或以上版本上使用gpu加速集群,請安裝編譯Horovod所需的CUDA開發庫。為了保證兼容性,請保持包版本不變。
%上海wgethttps://開發人員.下載.英偉達.com/計算/cuda/回購/ubuntu1804/x86_64/cuda-ubuntu1804.銷mvcuda-ubuntu1804.銷/等/恰當的/首選項.d/cuda-存儲庫-銷-600恰當的-關鍵阿德--獲取-鍵https://開發人員.下載.英偉達.com/計算/cuda/回購/ubuntu1804/x86_64/7fa2af80.酒吧添加-恰當的-存儲庫"deb 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.7.8-1+cuda11.0\libcusparse-dev-11-0=11.1.1.245-1
下載所需版本的Horovod源代碼,並使用適當的標記進行編譯。如果您不需要任何擴展(例如
HOROVOD_WITH_PYTORCH
),你可以移除這些標誌。
%sh HOROVOD_VERSION=v0.21.3 #根據需要更改git clone——recursive https://github.com/horovod/horovod.git——branch ${HOROVOD_VERSION} cd horovod rm -rf build/ dist/ HOROVOD_WITH_MPI=1 HOROVOD_WITH_TENSORFLOW=1 HOROVOD_WITH_PYTORCH=1 \ #對於Databricks Runtime 8.4 ML及以下,替換為/ Databricks /conda/envs/ Databricks - ML /bin/python sudo / Databricks /python3/bin/python setup.py bdist_wheel readlink -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 setup . 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是在Databricks Runtime ML上預安裝的,因此如果更新環境出錯,通常會出現此錯誤。該錯誤指示Horovod安裝在所需的庫(PyTorch或TensorFlow)之前。由於Horovod是在安裝過程中編譯的,horovod。{火炬| tensorflow}
如果這些包在安裝Horovod期間不存在,則不會被編譯。要解決這個問題,請遵循以下步驟:
驗證您是在Databricks Runtime ML集群上。
確保PyTorch或TensorFlow包已經安裝。
卸載Horovod (
%皮普卸載可能是horovod
).安裝
cmake
(%皮普安裝cmake
).重新安裝
horovod
.
spark-tensorflow-distributor
spark-tensorflow-distributor是TensorFlow中的一個開源原生包,用於在Spark集群上使用TensorFlow進行分布式訓練。