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를 다시 컴파일해야 합니다.
- 현재 버전의 Horovod를 제거합니다.
%pip uninstall -y horovod
- 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
- 원하는 버전의 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
%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}
는 컴파일되지 않습니다.
이 문제를 해결하려면 다음 단계를 따르세요.
- Databricks Runtime ML 클러스터에 있는지 확인합니다.
- PyTorch 또는 TensorFlow 패키지가 이미 설치되어 있는지 확인합니다.
- Horovod(
%pip uninstall -y horovod
)를 제거합니다. cmake
(%pip install cmake
)를 설치합니다.horovod
을 다시 설치합니다.