メインコンテンツまでスキップ

Horovod

important

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

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

必要条件

Databricks Runtime ML。

Horovodを使用する

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

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

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

  1. 現在のバージョンのHorovodをアンインストールします。
%pip uninstall -y horovod
  1. GPU アクセラレーション クラスターを使用している場合は、CUDAHorovod.互換性を確保するため、パッケージのバージョンは変更しないでください。
%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
  1. %pipHorovodPython wheelを使用して、前のコマンドの出力から パスを指定して を再インストールします。この例では、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を再インストールします。