다음을 통해 공유


Horovod

Important

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 예측 도구 API를 사용할 수 있습니다.

요구 사항

Databricks Runtime ML.

Horovod 사용

다음 문서에서는 Horovod를 사용한 분산형 딥 러닝에 대한 일반적인 정보와 HorovodRunner 및 horovod.spark 패키지를 사용하는 방법을 보여주는 예제 Notebook을 제공합니다.

다른 버전의 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을 사용하여 이전 명령의 출력에서 Python 휠 경로를 지정하고 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에 사전 설치되어 있으므로 일반적으로 환경을 업데이트하지 못할 경우 이 오류가 발생합니다. 이 오류는 Horovod가 필요한 라이브러리(PyTorch 또는 TensorFlow) 전에 설치되었음을 나타냅니다. 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을 다시 설치합니다.