Horovod
Horovod et HorovodRunner sont désormais obsolètes. Les versions après 15.4 LTS ML n’auront pas ce package préinstallé. Pour le deep learning distribué, Databricks recommande d'utiliser TorchDistributor pour l'entraînement distribué avec PyTorch ou l'API tf.distribute.Strategy pour l'entraînement distribué avec TensorFlow.
Horovod est un framework d'entraînement distribué pour TensorFlow, Keras et PyTorch. Databricks prend en charge l'entraînement de deep learning distribué à l'aide de HorovodRunner et du package horovod.spark. Pour les applications de pipelines de ML Spark utilisant Keras ou PyTorch, vous pouvez utiliser l'API horovod.spark d'estimateur.
Exigences
Databricks Runtime ML.
Utiliser Horovod
Les articles suivants fournissent des informations générales sur le deep learning distribué avec Horovod et des notebooks d'exemples illustrant comment utiliser HorovodRunner et le package horovod.spark.
- HorovodRunner : deep learning distribué avec Horovod
- Exemples de HorovodRunner
horovod.spark: apprentissage profond distribué avec Horovod
Installer une version différente de Horovod
Pour mettre à niveau ou rétrograder Horovod à partir de la version préinstallée dans votre cluster ML, vous devez recompiler Horovod en suivant ces étapes :
- Désinstaller la version actuelle de Horovod.
%pip uninstall -y horovod
- Si vous utilisez un cluster accéléré par GPU, installez les bibliothèques de développement CUDA requises pour compiler Horovod. Pour garantir la compatibilité, laissez les versions des packages inchangées.
%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
- download la version souhaitée du code source d'Horovod et compilez avec les indicateurs appropriés. Si vous n'avez pas besoin d'aucune des extensions (telles que
HOROVOD_WITH_PYTORCH), vous pouvez supprimer ces indicateurs.
- CPU
- 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_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
- Utilisez
%pippour réinstaller Horovod en spécifiant le chemin d'accès au Python wheel à partir de la sortie de la commande précédente.0.21.3est affiché dans cet exemple.
%pip install --no-cache-dir /databricks/driver/horovod/dist/horovod-0.21.3-cp38-cp38-linux_x86_64.whl
Dépanner l'installation de Horovod
Problème : L'importation de horovod.{torch|tensorflow} provoque ImportError: Extension horovod.{torch|tensorflow} has not been built
Solution : Horovod est préinstallé sur Databricks Runtime ML, cette erreur se produit donc généralement si la mise à jour d'un environnement échoue. L'erreur indique que Horovod a été installé avant une bibliothèque requise (PyTorch ou TensorFlow). Puisque Horovod est compilé lors de l'installation, horovod.{torch|tensorflow} ne sera pas compilé si ces packages ne sont pas présents lors de l'installation de Horovod.
Pour résoudre le problème, suivez ces étapes :
- Vérifiez que vous utilisez un cluster ML de Databricks Runtime.
- Assurez-vous que le package PyTorch ou TensorFlow est déjà installé.
- Désinstaller Horovod (
%pip uninstall -y horovod). - Installez
cmake(%pip install cmake). - Réinstallez
horovod.