Horovod
重要
Horovod 和 HorovodRunner 現在已被取代。 15.4 LTS ML 之後的版本將不會預安裝此套件。 針對分散式深度學習,Databricks 建議搭配使用 TorchDistributor 與 PyTorch 進行分散式訓練,或搭配使用 tf.distribute.Strategy
API 與 TensorFlow 進行分散式訓練。
Horovod 是分散式訓練架構,適用於 TensorFlow、Keras 和 PyTorch。 Azure Databricks 支援使用 HorovodRunner 和 horovod.spark
套件進行分散式深度學習訓練。 對於使用 Keras 或 PyTorch 的 Spark ML 管線應用程式,您可以使用 horovod.spark
估計工具 API。
需求
Databricks Runtime ML。
使用 Horovod
下列文章提供有關使用 Horovod 進行分散式深度學習的一般資訊,以及說明如何使用 HorovodRunner 和 horovod.spark
套件的範例筆記本。
安裝不同版本的 Horovod
若要從 ML 叢集中預先安裝的版本升級或降級 Horovod,您必須遵循下列步驟來重新編譯 Horovod:
- 解除安裝目前版本的 Horovod。
%pip uninstall -y horovod
- 如果使用 GPU 加速的叢集,請安裝編譯 Horovod 所需的 CUDA 開發程式庫。 若要確保相容性,請將套件版本保持不變。
%sh
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/cuda-ubuntu1804.pin
mv cuda-ubuntu1804.pin /etc/apt/preferences.d/cuda-repository-pin-600
apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/7fa2af80.pub
add-apt-repository "deb https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/ /"
wget https://developer.download.nvidia.com/compute/machine-learning/repos/ubuntu1804/x86_64/nvidia-machine-learning-repo-ubuntu1804_1.0.0-1_amd64.deb
dpkg -i ./nvidia-machine-learning-repo-ubuntu1804_1.0.0-1_amd64.deb
apt-get update
apt-get install --allow-downgrades --no-install-recommends -y \
cuda-nvml-dev-11-0=11.0.167-1 \
cuda-nvcc-11-0=11.0.221-1 \
cuda-cudart-dev-11-0=11.0.221-1 \
cuda-libraries-dev-11-0=11.0.3-1 \
libnccl-dev=2.11.4-1+cuda11.5\
libcusparse-dev-11-0=11.1.1.245-1
- 下載所需版本的 Horovod 原始程式碼,並使用適當的旗標進行編譯。 如果不需要任何延伸模組 (例如
HOROVOD_WITH_PYTORCH
),您可以移除這些旗標。
CPU
%sh
HOROVOD_VERSION=v0.21.3 # Change as necessary
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 \
# For Databricks Runtime 8.4 ML and below, replace with /databricks/conda/envs/databricks-ml/bin/python
sudo /databricks/python3/bin/python setup.py bdist_wheel
readlink -f dist/horovod-*.whl
GPU
%sh
HOROVOD_VERSION=v0.21.3 # Change as necessary
git clone --recursive https://github.com/horovod/horovod.git --branch ${HOROVOD_VERSION}
cd horovod
rm -rf build/ dist/
HOROVOD_GPU_ALLREDUCE=NCCL HOROVOD_CUDA_HOME=/usr/local/cuda HOROVOD_WITH_MPI=1 HOROVOD_WITH_TENSORFLOW=1 HOROVOD_WITH_PYTORCH=1 \
# For Databricks Runtime 8.4 ML and below, replace with /databricks/conda/envs/databricks-ml-gpu/bin/python
sudo /databricks/python3/bin/python setup.py bdist_wheel
readlink -f dist/horovod-*.whl
- 透過指定上一個命令輸出中的 Python Wheel 路徑,使用
%pip
重新安裝 Horovod。 本範例中顯示的是0.21.3
。
%pip install --no-cache-dir /databricks/driver/horovod/dist/horovod-0.21.3-cp38-cp38-linux_x86_64.whl
對 Horovod 安裝進行疑難排解
問題:匯入 horovod.{torch|tensorflow}
會引發 ImportError: Extension horovod.{torch|tensorflow} has not been built
解決方案:Horovod 已預先安裝在 Databricks Runtime ML 上,因此,如果未正確更新環境,通常會發生此錯誤。 此錯誤表示 Horovod 是在所需程式庫 (PyTorch 或 TensorFlow) 之前安裝的。 由於 Horovod 是在安裝期間編譯的,因此如果在 Horovod 安裝期間沒有這些套件,則系統不會編譯 horovod.{torch|tensorflow}
。
若要修正問題,請依照下列步驟執行:
- 確認您位於 Databricks Runtime ML 叢集上。
- 確保已安裝 PyTorch 或 TensorFlow 套件。
- 解除安裝 Horovod (
%pip uninstall -y horovod
)。 - 安裝
cmake
(%pip install cmake
)。 - 重新安裝
horovod
。