Horovod

重要

Horovod と HorovodRunner は非推奨となり、Databricks Runtime 16.0 ML 以降ではプリインストールされません。 分散ディープラーニングの場合、Databricks では、PyTorch を使用した分散トレーニングにはTorchDistributorを使用するか、TensorFlow を使用した分散トレーニングにはtf.distribute.Strategy API を使用することをお勧めします。

Horovod は、TensorFlow、Keras、PyTorch 用の分散トレーニング フレームワークです。 Databricks は、HorovodRunner とhorovod.sparkパッケージを使用した分散ディープラーニング トレーニングをサポートしています。 または Sparkを使用する 機械学習パイプラインKerasPyTorch アプリケーションの場合は、horovod.spark 推定API を使用できます。

要件

Databricks Runtime ML 。

Horovodを使用する

以下の記事では、Horovod を使用した分散ディープラーニングに関する一般的な情報と、HorovodRunner とhorovod.sparkパッケージの使用方法を示すサンプルノートブックを紹介します。

別のバージョンのHorovodをインストールする

HorovodMLクラスターにプレインストールされているバージョンからHorovod アップグレードまたはダウングレードするには、次の手順に従って を再コンパイルする必要があります。

  1. Horovod の現在のバージョンをアンインストールします。

%pip uninstall -y horovod
  1. 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
  1. Horovod のソース コードの必要なバージョンをダウンロードし、適切なフラグを使用してコンパイルします。 拡張機能( HOROVOD_WITH_PYTORCHなど)が必要ない場合は、これらのフラグを削除できます。

%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
%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
  1. 前のコマンドの出力から パスを指定して、 を使用して %pipを再インストールします。HorovodPython wheel0.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にプリインストールされているため、環境の更新がうまくいかなかった場合にこのエラーが発生することがよくあります。 このエラーは、必要なライブラリ (PyTorch または TensorFlow) の前に Horovod がインストールされたことを示します。 Horovod はインストール中にコンパイルされるため、Horovod のインストール中にこれらのパッケージが存在しない場合は、 horovod.{torch|tensorflow}コンパイルされません。 この問題を解決するには、次の手順に従ってください。

  1. Databricks Runtime ML クラスター上にいることを確認します。

  2. PyTorch または TensorFlow パッケージがすでにインストールされていることを確認します。

  3. Horovod ( %pip uninstall -y horovod ) をアンインストールします。

  4. cmake (%pip install cmake) をインストールします。

  5. horovodを再インストールします。