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.spark
estimator 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
.
- HorovodRunner: pembelajaran mendalam terdistribusi dengan Horovod
- Contoh HorovodRunner
horovod.spark
: pembelajaran mendalam terdistribusi dengan Horovod
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:
- Menghapus instalasi Horovos versi saat ini.
%pip uninstall -y horovod
- 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
- 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
- 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:
- Verifikasi bahwa Anda berada di kluster ML Runtime Databricks.
- Pastikan paket PyTorch atau TensorFlow sudah diinstal.
- Hapus instalan Horovod (
%pip uninstall -y horovod
). - Menginstal
cmake
(%pip install cmake
). - Instal ulang
horovod
.
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk