PyTorch

PyTorch-projektet är ett Python-paket som tillhandahåller GPU-accelererad tensorberäkning och funktioner på hög nivå för att skapa djupinlärningsnätverk. Mer information om licensiering finns i Licensdokumentet för PyTorch på GitHub.

Överväg att använda TensorBoard för att övervaka och felsöka dina PyTorch-modeller.

PyTorch ingår i Databricks Runtime for Machine Learning. Om du använder Databricks Runtime kan du läsa Mer information om hur du installerar PyTorch finns i Installera PyTorch .

Kommentar

Detta är inte en omfattande guide till PyTorch. Mer information finns på PyTorchs webbplats.

Enskild nod och distribuerad träning

Om du vill testa och migrera arbetsflöden för en enda dator använder du ett kluster med en nod.

Distribuerade utbildningsalternativ för djupinlärning finns i Distribuerad utbildning.

Exempelnotebook-fil

PyTorch Notebook

Hämta notebook-fil

Installera PyTorch

Databricks Runtime för ML

Databricks Runtime for Machine Learning innehåller PyTorch så att du kan skapa klustret och börja använda PyTorch. Den version av PyTorch som är installerad i Den Databricks Runtime ML-version som du använder finns i viktig information.

Databricks Runtime

Databricks rekommenderar att du använder PyTorch som ingår i Databricks Runtime for Machine Learning. Men om du måste använda Standard Databricks Runtime kan PyTorch installeras som ett Databricks PyPI-bibliotek. I följande exempel visas hur du installerar PyTorch 1.5.0:

  • Installera och torchvision ange följande i GPU-klusterpytorch:

    • torch==1.5.0
    • torchvision==0.6.0
  • Installera och torchvision använd följande Python-hjulfiler i CPU-klusterpytorch:

    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
    

Fel och felsökning för distribuerad PyTorch

I följande avsnitt beskrivs vanliga felmeddelanden och felsökningsvägledning för klasserna: PyTorch DataParallel eller PyTorch DistributedDataParallel. De flesta av dessa fel kan troligen lösas med TorchDistributor, som är tillgängligt på Databricks Runtime ML 13.0 och senare. Men om TorchDistributor det inte är en fungerande lösning tillhandahålls rekommenderade lösningar i varje avsnitt.

Följande är ett exempel på hur du använder 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)

process 0 terminated with exit code 1

Det här felet uppstår när du använder notebook-filer, oavsett miljö: Databricks, lokal dator osv. Undvik det här felet genom att använda torch.multiprocessing.start_processes med start_method=fork i stället för torch.multiprocessing.spawn.

Till exempel:

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

Det här felet visas när du startar om den distribuerade träningen efter att ha avbrutit cellen medan träningen pågår.

Lös problemet genom att starta om klustret. Om det inte löser problemet kan det finnas ett fel i träningsfunktionskoden.

Du kan stöta på ytterligare problem med CUDA eftersom start_method=”fork” det inte är CUDA-kompatibelt. Om du använder kommandon .cuda i valfri cell kan det leda till fel. Undvik dessa fel genom att lägga till följande kontroll innan du anropar torch.multiprocessing.start_method:

if torch.cuda.is_initialized():
    raise Exception("CUDA was initialized; distributed training will fail.") # or something similar