PyTorch
PyTorch adalah paket Python yang menyediakan komputasi tensor yang dipercepat-GPU dan fungsionalitas tingkat tinggi untuk membangun jaringan pembelajaran mendalam. Untuk detail lisensi, lihat dokumen lisensi PyTorch di GitHub.
Untuk memantau dan men-debug model PyTorch Anda, pertimbangkan untuk menggunakan TensorBoard.
PyTorch disertakan dalam Databricks Runtime untuk Pembelajaran Mesin. Jika Anda menggunakan Runtime Databricks, lihat Menginstal PyTorch untuk petunjuk tentang menginstal PyTorch.
Catatan
Ini bukan panduan komprehensif untuk PyTorch. Untuk informasi selengkapnya, lihat situs web PyTorch .
Node tunggal dan pelatihan terdistribusi
Untuk menguji dan memigrasikan alur kerja mesin tunggal, gunakan Kluster Node Tunggal.
Untuk opsi pelatihan terdistribusi untuk pembelajaran mendalam, lihat Pelatihan terdistribusi.
Contoh notebook
Notebook PyTorch
Pasang PyTorch
Databricks Runtime for ML
Databricks Runtime untuk Pembelajaran Mesin menyertakan PyTorch sehingga Anda dapat membuat kluster dan mulai menggunakan PyTorch. Untuk versi PyTorch yang dipasang dalam versi Databricks Runtime ML yang Anda gunakan, lihat catatan rilis.
Runtime databricks
Databricks merekomendasikan agar Anda menggunakan PyTorch yang disertakan dalam Databricks Runtime untuk Pembelajaran Mesin. Namun, jika Anda harus menggunakan Databricks Runtime standar, PyTorch dapat diinstal sebagai pustaka Databricks PyPI. Contoh berikut menunjukkan cara menginstal PyTorch 1.5.0:
Pada kluster GPU, instal
pytorch
dantorchvision
dengan menentukan yang berikut:torch==1.5.0
torchvision==0.6.0
Pada kluster CPU, instal
pytorch
dantorchvision
dengan menggunakan file roda Python berikut:https://download.pytorch.org/whl/cpu/torch-1.5.0%2Bcpu-cp37-cp37m-linux_x86_64.whl https://download.pytorch.org/whl/cpu/torchvision-0.6.0%2Bcpu-cp37-cp37m-linux_x86_64.whl
Kesalahan dan pemecahan masalah untuk PyTorch terdistribusi
Bagian berikut menjelaskan pesan kesalahan umum dan panduan pemecahan masalah untuk kelas: PyTorch DataParallel atau PyTorch DistributedDataParallel. Sebagian besar kesalahan ini kemungkinan dapat diatasi dengan TorchDistributor, yang tersedia di Databricks Runtime ML 13.0 ke atas. Namun, jika TorchDistributor
bukan solusi yang layak, solusi yang direkomendasikan juga disediakan dalam setiap bagian.
Berikut ini adalah contoh cara menggunakan TorchDistributor:
from pyspark.ml.torch.distributor import TorchDistributor
def train_fn(learning_rate):
# ...
num_processes=2
distributor = TorchDistributor(num_processes=num_processes, local_mode=True)
distributor.run(train_fn, 1e-3)
"proses 0 dihentikan dengan kode keluar 1"
Kesalahan ini terjadi saat menggunakan notebook, terlepas dari lingkungan: Databricks, komputer lokal, dll. Untuk menghindari kesalahan ini, gunakan torch.multiprocessing.start_processes
dengan start_method=fork
alih-alih torch.multiprocessing.spawn
.
Contohnya:
import torch
def train_fn(rank, learning_rate):
# required setup, e.g. setup(rank)
# ...
num_processes = 2
torch.multiprocessing.start_processes(train_fn, args=(1e-3,), nprocs=num_processes, start_method="fork")
"Soket server gagal mengikat ke [::]:{PORT NUMBER} (errno: 98 - Alamat sudah digunakan)."
Kesalahan ini muncul saat Anda memulai ulang pelatihan terdistribusi setelah mengganggu sel selama pelatihan.
Untuk memperbaiki masalah, mulai ulang kluster. Jika memulai ulang tidak menyelesaikan masalah, mungkin ada kesalahan dalam kode fungsi pelatihan.
Kesalahan terkait CUDA
Anda dapat mengalami masalah tambahan dengan CUDA karena start_method=”fork”
tidak kompatibel dengan CUDA. Menggunakan perintah apa pun .cuda
di sel apa pun dapat menyebabkan kegagalan. Untuk menghindari kesalahan ini, tambahkan pemeriksaan berikut sebelum Anda memanggil torch.multiprocessing.start_method
:
if torch.cuda.is_initialized():
raise Exception("CUDA was initialized; distributed training will fail.") # or something similar