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 を使用できます。
Horovodを使用する
以下の記事では、Horovod を使用した分散ディープラーニングに関する一般的な情報と、HorovodRunner とhorovod.spark
パッケージの使用方法を示すサンプルノートブックを紹介します。
別のバージョンのHorovodをインストールする
HorovodMLクラスターにプレインストールされているバージョンから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
など)が必要ない場合は、これらのフラグを削除できます。
%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
前のコマンドの出力から パスを指定して、 を使用して
%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}
コンパイルされません。 この問題を解決するには、次の手順に従ってください。
Databricks Runtime ML クラスター上にいることを確認します。
PyTorch または TensorFlow パッケージがすでにインストールされていることを確認します。
Horovod (
%pip uninstall -y horovod
) をアンインストールします。cmake
(%pip install cmake
) をインストールします。horovod
を再インストールします。