Horovod
重要
Horovod と HorovodRunner は非推奨になりました。 15.4 LTS ML 以降のリリースでは、このパッケージはプレインストールされません。 分散ディープ ラーニングの場合、Databricks では、PyTorch での分散トレーニングに TorchDistributor を使用するか、TensorFlow を使用した分散トレーニング用の tf.distribute.Strategy
API を使用することをお勧めします。
Horovod は、TensorFlow、Keras、および PyTorch 向けの分散トレーニング フレームワークです。 Azure Databricks では、HorovodRunner および horovod.spark
パッケージを使用した分散型ディープ ラーニング トレーニングをサポートしています。 Keras または PyTorch を使用する Spark ML パイプライン アプリケーションの場合は、horovod.spark
estimator API を使用できます。
必要条件
Databricks Runtime ML。
Horovod を使用する
次の記事では、Horovod を使用した分散型ディープ ラーニングに関する一般的な情報と、HorovodRunner と horovod.spark
パッケージの使用方法を示すサンプル ノートブックについて説明しています。
- HorovodRunner: Horovod を使用した分散型ディープ ラーニング
- HorovodRunner の例
horovod.spark
: Horovod を使用した分散型ディープ ラーニング
別のバージョンの 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
%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 にプレインストールされているため、このエラーは通常、環境の更新に問題が生じた場合に発生します。 このエラーは、必要なライブラリ (PyTorch または TensorFlow) の前に、Horovod がインストールされたことを示しています。 Horovod はインストール時にコンパイルされるため、Horovod のインストール中にこれらのパッケージが存在しない場合、horovod.{torch|tensorflow}
はコンパイルされません。
この問題を修正するには、次の手順に従ってください。
- Databricks Runtime ML クラスターを使用していることを確認します。
- PyTorch または TensorFlow パッケージが既にインストールされていることを確認します。
- Horovod をアンインストールします (
%pip uninstall -y horovod
)。 cmake
をインストールします (%pip install cmake
)。horovod
を再インストールします。