Bagikan melalui


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

Dapatkan buku catatan

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 dan torchvision dengan menentukan yang berikut:

    • torch==1.5.0
    • torchvision==0.6.0
  • Pada kluster CPU, instal pytorch dan torchvision 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.

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