次の方法で共有


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 パッケージの使用方法を示すサンプル ノートブックについて説明しています。

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

ML クラスターにプレインストールされているバージョンから Horovod をアップグレードまたはダウングレードするには、これらの手順に従って 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 など) が不要な場合は、これらのフラグを削除できます。

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
  1. %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} はコンパイルされません。 この問題を修正するには、次の手順に従ってください。

  1. Databricks Runtime ML クラスターを使用していることを確認します。
  2. PyTorch または TensorFlow パッケージが既にインストールされていることを確認します。
  3. Horovod をアンインストールします (%pip uninstall -y horovod)。
  4. cmake をインストールします (%pip install cmake)。
  5. horovod を再インストールします。