Gedistribueerde training
Indien mogelijk wordt door Azure Databricks aanbevolen neurale netwerken op één computer te trainen; gedistribueerde code voor training en deductie is complexer dan code op één machine en langzamer vanwege communicatie-overhead. Overweeg echter gedistribueerde training en deductie als uw model of gegevens te groot zijn voor het geheugen op één computer. Voor deze workloads bevat Databricks Runtime ML de TorchDistributor-, Horovod- en spark-tensorflow-distributor-pakketten.
Azure Databricks biedt ook gedistribueerde training voor Spark ML-modellen met de pyspark.ml.connect
module. Zie Spark ML-modellen trainen op Databricks Verbinding maken met pyspark.ml.connect.
Notitie
Databricks raadt niet aan om gedistribueerde training met meerdere knooppunten uit te voeren met VM's uit de NC-serie vanwege lage netwerkprestaties tussen knooppunten. Gebruik in plaats daarvan één knooppunt met meerdere GPU's of gebruik een andere GPU-VM-grootte, zoals de NCasT4_v3-serie, die versneld netwerken ondersteunt.
DeepSpeed-distributeur
De DeepSpeed-distributeur is gebouwd op TorchDistributor en is een aanbevolen oplossing voor klanten met modellen die een hogere rekenkracht vereisen, maar worden beperkt door geheugenbeperkingen. DeepSpeed is een opensource-bibliotheek die is ontwikkeld door Microsoft en biedt geoptimaliseerd geheugengebruik, verminderde communicatieoverhead en geavanceerde pijplijnparallelisme. Meer informatie over gedistribueerde training met DeepSpeed-distributeur
TorchDistributor
TorchDistributor is een opensource-module in PySpark waarmee gebruikers gedistribueerde training kunnen uitvoeren met PyTorch in hun Spark-clusters, zodat u hiermee PyTorch-trainingstaken kunt starten als Spark-taken. Onder de schermen wordt de omgeving en de communicatiekanalen tussen de werkrollen geïnitialiseerd en wordt de CLI-opdracht torch.distributed.run
gebruikt om gedistribueerde training uit te voeren op de werkknooppunten. Meer informatie over gedistribueerde training met TorchDistributor.
spark-tensorflow-distributor
spark-tensorflow-distributor is een opensource systeemeigen pakket in TensorFlow voor gedistribueerde training met TensorFlow op Spark-clusters. Meer informatie over gedistribueerde training met TensorFlow 2.
Ray
Ray is een opensource-framework dat gespecialiseerd is in parallelle rekenverwerking voor het schalen van ML-werkstromen en AI-toepassingen. Zie Ray gebruiken in Azure Databricks.
Horovod
Horovod is een framework voor gedistribueerde training voor TensorFlow, Keras en PyTorch. Azure Databricks ondersteunt gedistribueerde Deep Learning-training met behulp van HorovodRunner en het pakket horovod.spark
. Voor Spark ML-pijplijntoepassingen met Keras of PyTorch kunt u de horovod.spark
estimator-API gebruiken.
Vereisten
Databricks Runtime ML.
Horovod gebruiken
De volgende artikelen bieden algemene informatie over gedistribueerde Deep Learning met Horovod en voorbeeldnotebooks waarin wordt gedemonstreerd hoe u HorovodRunner en het pakket horovod.spark
gebruikt.
- HorovodRunner: gedistribueerd Deep Learning met Horovod
- HorovodRunner-voorbeelden
horovod.spark
: gedistribueerd Deep Learning met Horovod
Een andere versie van Horovod installeren
Als u Horovod wilt upgraden of downgraden van de vooraf geïnstalleerde versie in uw ML-cluster, moet u Horovod opnieuw compileren door de volgende stappen uit te voeren:
- Verwijder de huidige versie van Horovod.
%pip uninstall -y horovod
- Als u een met GPU versneld cluster gebruikt, installeert u CUDA-ontwikkelbibliotheken die nodig zijn om Horovod te compileren. Laat de pakketversies ongewijzigd om compatibiliteit te garanderen.
%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 de gewenste versie van de broncode van Horovod en compileer met de juiste vlaggen. Als u geen extensies nodig hebt (zoals
HOROVOD_WITH_PYTORCH
), kunt u deze vlaggen verwijderen.
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
- Gebruik
%pip
dit om Horovod opnieuw te installeren door het Python-wielpad op te geven uit de uitvoer van de vorige opdracht.0.21.3
wordt weergegeven in dit voorbeeld.
%pip install --no-cache-dir /databricks/driver/horovod/dist/horovod-0.21.3-cp38-cp38-linux_x86_64.whl
Problemen met de installatie van Horovod oplossen
Probleem: Het importeren horovod.{torch|tensorflow}
treedt op ImportError: Extension horovod.{torch|tensorflow} has not been built
Oplossing: Horovod is vooraf geïnstalleerd op Databricks Runtime ML, dus deze fout treedt meestal op als het bijwerken van een omgeving fout gaat. De fout geeft aan dat Horovod is geïnstalleerd voor een vereiste bibliotheek (PyTorch of TensorFlow). Aangezien Horovod tijdens de installatie wordt gecompileerd, wordt horovod.{torch|tensorflow}
niet gecompileerd als die pakketten niet aanwezig zijn tijdens de installatie van Horovod.
Volg deze stappen om het probleem op te lossen:
- Controleer of u zich in een Databricks Runtime ML-cluster bevindt.
- Zorg ervoor dat het PyTorch- of TensorFlow-project al is geïnstalleerd.
- Verwijder Horovod (
%pip uninstall -y horovod
). - Installeer
cmake
(%pip install cmake
). - Installeer
horovod
opnieuw.