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

Not defterini alma

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.spawnile 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 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