Horovod
Importante
Horovod e HorovodRunner agora estão obsoletos e não serão pré-instalados em Databricks Runtime 16.0 ML e acima. Para a aprendizagem profunda distribuída, a Databricks recomenda usar o TorchDistributor para treinamento distribuído com o PyTorch ou a API tf.distribute.Strategy
para treinamento distribuído com o TensorFlow.
O Horovod é uma estrutura de treinamento distribuída para TensorFlow, Keras e PyTorch. A Databricks oferece suporte ao treinamento de aprendizagem profunda distribuída usando o HorovodRunner e o pacote horovod.spark
. Para aplicativos Spark ML pipeline que usam Keras ou PyTorch, o senhor pode usar o estimador horovod.spark
API.
Usar o Horovod
Os artigos a seguir fornecem informações gerais sobre aprendizagem profunda distribuída com Horovod e exemplos de Notebook que ilustram como usar HorovodRunner e o pacote horovod.spark
.
Instalar uma versão diferente do Horovod
Para atualizar ou fazer downgrade do Horovod da versão pré-instalada em seus clusters de ML, você deve recompilar o Horovod seguindo estas passos:
Desinstale a versão atual do Horovod.
%pip uninstall -y horovod
Se estiver usando um cluster acelerado por GPU, instale a biblioteca de desenvolvimento CUDA necessária para compilar o Horovod. Para garantir a compatibilidade, deixe as versões do pacote inalteradas.
%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
Faça o download da versão desejada do código-fonte do Horovod e compile com os sinalizadores apropriados. Se o senhor não precisar de nenhuma das extensões (como
HOROVOD_WITH_PYTORCH
), poderá remover esses sinalizadores.
%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
Use
%pip
para reinstalar o site Horovod, especificando o caminho Python wheel da saída do comando anterior.0.21.3
é mostrado neste exemplo.
%pip install --no-cache-dir /databricks/driver/horovod/dist/horovod-0.21.3-cp38-cp38-linux_x86_64.whl
Solucionar problemas de instalação do Horovod
Problema: a importação de horovod.{torch|tensorflow}
aumenta ImportError: Extension horovod.{torch|tensorflow} has not been built
soluções: O Horovod vem pré-instalado no Databricks Runtime ML, então esse erro normalmente ocorre se a atualização de um ambiente der errado. O erro indica que o Horovod foi instalado antes de uma biblioteca necessária (PyTorch ou TensorFlow). Como o Horovod é compilado durante a instalação, horovod.{torch|tensorflow}
não será compilado se esses pacotes não estiverem presentes durante a instalação do Horovod. Para corrigir o problema, siga estas passos:
Verifique se o senhor está em um cluster do Databricks Runtime ML.
Certifique-se de que o pacote PyTorch ou TensorFlow já esteja instalado.
Desinstalar o Horovod (
%pip uninstall -y horovod
).Instale
cmake
(%pip install cmake
).Reinstale
horovod
.