PyTorch
PyTorch projesi , derin öğrenme ağları oluşturmak için GPU hızlandırılmış tensor hesaplaması ve üst düzey işlevler sağlayan bir Python paketidir. Lisanslama ayrıntıları için GitHub'da PyTorch lisans belgesine bakın.
PyTorch modellerinizi izlemek ve hatalarını ayıklamak için TensorBoard kullanmayı göz önünde bulundurun.
PyTorch, Machine Learning için Databricks Runtime'a dahildir. Databricks Runtime kullanıyorsanız PyTorch'u yükleme yönergeleri için bkz. PyTorch'u yükleme.
Not
Bu, PyTorch için kapsamlı bir kılavuz değildir. Daha fazla bilgi için PyTorch web sitesine bakın.
Tek düğüm ve dağıtılmış eğitim
Tek makineli iş akışlarını test etmek ve geçirmek için Tek Düğümlü küme kullanın.
Derin öğrenme için dağıtılmış eğitim seçenekleri için bkz . Dağıtılmış eğitim.
Örnek not defteri
PyTorch not defteri
PyTorch'u yükleme
ML için Databricks Runtime
Machine Learning için Databricks Runtime, kümeyi oluşturup PyTorch kullanmaya başlayabilmeniz için PyTorch içerir. Kullandığınız Databricks Runtime ML sürümünde yüklü PyTorch sürümü için sürüm notlarına bakın.
Databricks Runtime
Databricks, Machine Learning için Databricks Runtime'da bulunan PyTorch'ı kullanmanızı önerir. Ancak standart Databricks Runtime'ı kullanmanız gerekiyorsa PyTorch, Databricks PyPI kitaplığı olarak yüklenebilir. Aşağıdaki örnekte PyTorch 1.5.0'ın nasıl yükleneceği gösterilmektedir:
GPU kümelerinde aşağıdakileri belirterek ve
torchvision
yükleyinpytorch
:torch==1.5.0
torchvision==0.6.0
CPU kümelerinde aşağıdaki Python tekerlek dosyalarını kullanarak ve
torchvision
yükleyinpytorch
: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
Dağıtılmış PyTorch için hatalar ve sorun giderme
Aşağıdaki bölümlerde, sınıflar için yaygın hata iletileri ve sorun giderme yönergeleri açıklanmaktadır: PyTorch DataParallel veya PyTorch DistributedDataParallel. Bu hataların çoğu büyük olasılıkla Databricks Runtime ML 13.0 ve üzerinde bulunan TorchDistributor ile çözülebilir. Ancak, uygun bir çözüm değilse TorchDistributor
, her bölümde önerilen çözümler de sağlanır.
TorchDistributor'ın nasıl kullanılacağına ilişkin bir örnek aşağıda verilmiştir:
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)
process 0 terminated with exit code 1
Bu hata, ortam ne olursa olsun not defterleri kullanılırken oluşur: Databricks, yerel makine vb. Bu hatayı önlemek için yerine torch.multiprocessing.spawn
ile start_method=fork
kullanıntorch.multiprocessing.start_processes
.
Örneğin:
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")
The server socket has failed to bind to [::]:{PORT NUMBER} (errno: 98 - Address already in use).
Bu hata, eğitim sırasında hücreyi kesintiye uğrattıktan sonra dağıtılmış eğitimi yeniden başlattığınızda görüntülenir.
Sorunu çözmek için kümeyi yeniden başlatın. Bu işlem sorunu çözmezse, eğitim işlev kodunda bir hata olabilir.
CUDA ile ilgili hatalar
CUDA uyumlu olmadığından CUDA start_method=”fork”
ile ilgili ek sorunlarla karşılaşabilirsiniz. Herhangi bir hücrede herhangi bir .cuda
komut kullanmak hatalara neden olabilir. Bu hataları önlemek için çağrısından torch.multiprocessing.start_method
önce aşağıdaki denetimi ekleyin:
if torch.cuda.is_initialized():
raise Exception("CUDA was initialized; distributed training will fail.") # or something similar