Bagikan melalui


Pelatihan yang didistribusikan

Jika memungkinkan, Azure Databricks merekomendasikan agar Anda melatih jaringan saraf pada satu mesin; kode terdistribusi untuk pelatihan dan inferensi lebih kompleks daripada kode mesin tunggal dan lebih lambat karena overhead komunikasi. Namun, Anda harus mempertimbangkan pelatihan dan inferensi terdistribusi jika model atau data Anda terlalu besar untuk masuk ke dalam memori pada satu mesin. Untuk beban kerja ini, Databricks Runtime ML mencakup paket TorchDistributor, Horovod, dan spark-tensorflow-distributor.

Azure Databricks juga menawarkan pelatihan terdistribusi untuk model Spark ML dengan pyspark.ml.connect modul, lihat Melatih model Spark ML di Databricks Connect dengan pyspark.ml.connect.

Catatan

Databricks tidak merekomendasikan menjalankan pelatihan terdistribusi multi-node menggunakan VM nc-series karena kinerja jaringan antar-node yang rendah. Sebagai gantinya, gunakan satu node multi-GPU, atau gunakan ukuran VM GPU yang berbeda seperti seri NCasT4_v3, yang mendukung jaringan yang dipercepat.

Distributor DeepSpeed

Distributor DeepSpeed dibangun di atas TorchDistributor dan merupakan solusi yang direkomendasikan untuk pelanggan dengan model yang membutuhkan daya komputasi yang lebih tinggi, tetapi dibatasi oleh batasan memori. DeepSpeed adalah pustaka sumber terbuka yang dikembangkan oleh Microsoft dan menawarkan penggunaan memori yang dioptimalkan, mengurangi overhead komunikasi, dan paralelisme alur tingkat lanjut. Pelajari selengkapnya tentang Pelatihan terdistribusi dengan distributor DeepSpeed

TorchDistributor

TorchDistributor adalah modul sumber terbuka di PySpark yang membantu pengguna melakukan pelatihan terdistribusi dengan PyTorch pada kluster Spark mereka, sehingga memungkinkan Anda meluncurkan pekerjaan pelatihan PyTorch sebagai pekerjaan Spark. Di bawah tenda, ini menginisialisasi lingkungan dan saluran komunikasi antara pekerja dan menggunakan perintah torch.distributed.run CLI untuk menjalankan pelatihan terdistribusi di seluruh simpul pekerja. Pelajari selengkapnya tentang Pelatihan terdistribusi dengan TorchDistributor.

spark-tensorflow-distributor

spark-tensorflow-distributor adalah paket asli open-source di TensorFlow untuk pelatihan terdistribusi dengan TensorFlow pada kluster Spark. Pelajari selengkapnya tentang Pelatihan terdistribusi dengan TensorFlow 2.

Ikan pari

Ray adalah kerangka kerja sumber terbuka yang berspesialisasi dalam pemrosesan komputasi paralel untuk menskalakan alur kerja ML dan aplikasi AI. Lihat Menggunakan Ray di Azure Databricks.

Horovod

Horovod adalah kerangka pelatihan terdistribusi untuk TensorFlow, Keras, dan PyTorch. Azure Databricks mendukung pelatihan pembelajaran mendalam terdistribusi menggunakan HorovodRunner dan paket horovod.spark. Untuk aplikasi alur Spark ML menggunakan Keras atau PyTorch, Anda dapat menggunakan horovod.sparkestimator API.

Persyaratan

Databricks Runtime ML.

Gunakan Horovod

Artikel berikut memberikan informasi umum tentang pembelajaran mendalam terdistribusi dengan Horovod dan contoh notebook yang menggambarkan cara menggunakan HorovodRunner dan paket horovod.spark.

Instal versi Horovod yang berbeda

Untuk meningkatkan atau menurunkan versi Horovod dari versi pra-instal di kluster ML Anda, Anda harus mengkompilasi ulang Horovod dengan mengikuti langkah-langkah berikut:

  1. Menghapus instalasi Horovos versi saat ini.
%pip uninstall -y horovod
  1. Jika menggunakan kluster yang dipercepat GPU, instal pustaka pengembangan CUDA yang diperlukan untuk mengkompilasi Horovod. Untuk memastikan kompatibilitas, biarkan versi paket tidak berubah.
%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. Unduh versi kode sumber Horovod yang diinginkan dan kompilasi dengan bendera yang sesuai. Jika Anda tidak memerlukan ekstensi apa pun (seperti HOROVOD_WITH_PYTORCH), Anda dapat menghapus bendera tersebut.

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. Gunakan %pip untuk menginstal ulang Horovod dengan menentukan jalur roda Python dari output perintah sebelumnya. 0.21.3 ditunjukkan dalam contoh ini.
%pip install --no-cache-dir /databricks/driver/horovod/dist/horovod-0.21.3-cp38-cp38-linux_x86_64.whl

Memecahkan masalah instalasi Horovod

Masalah: Mengimpor horovod.{torch|tensorflow}memunculkan ImportError: Extension horovod.{torch|tensorflow} has not been built

Solusi: Horovod sudah diinstal sebelumnya di Databricks Runtime ML, jadi kesalahan ini biasanya terjadi jika memperbarui lingkungan berjalan salah. Kesalahan menunjukkan bahwa Horovod diinstal sebelum pustaka yang diperlukan (PyTorch atau TensorFlow). Karena Horovod dikompilasi selama instalasi, horovod.{torch|tensorflow} tidak akan dikompilasi jika paket-paket itu tidak ada selama instalasi Horovod. Untuk memperbaiki masalah ini, ikuti langkah-langkah ini:

  1. Verifikasi bahwa Anda berada di kluster ML Runtime Databricks.
  2. Pastikan paket PyTorch atau TensorFlow sudah diinstal.
  3. Hapus instalan Horovod (%pip uninstall -y horovod).
  4. Menginstal cmake (%pip install cmake).
  5. Instal ulang horovod.