PyTorch

PyTorch-project is een Python-pakket dat gpu versnelde tensor-berekeningen en functies op hoog niveau biedt voor het bouwen van deep learning-netwerken. Zie het PyTorch-licentie-document op GitHub voor meer informatie over licenties.

Als u uw PyTorch-modellen wilt bewaken en fouten wilt opsporen, kunt u TensorBoard gebruiken.

PyTorch is opgenomen in Databricks Runtime voor Machine Learning. Als u Databricks Runtime gebruikt, raadpleegt u PyTorch installeren voor instructies over het installeren van PyTorch.

Notitie

Dit is geen uitgebreide handleiding voor PyTorch. Zie de PyTorch-website voor meer informatie.

Eén knooppunt en gedistribueerde training

Als u werkstromen met één machine wilt testen en migreren, gebruikt u een cluster met één knooppunt.

Zie Gedistribueerde training voor gedistribueerde trainingsopties voor Deep Learning.

Voorbeeld van notebook

PyTorch-notebook

Notebook downloaden

PyTorch installeren

Databricks Runtime voor ML

Databricks Runtime voor Machine Learning bevat PyTorch, zodat u het cluster kunt maken en PyTorch kunt gaan gebruiken. Zie de releaseopmerkingen voor de versie van PyTorch die is geïnstalleerd in de Databricks Runtime ML-versie die u gebruikt.

Databricks Runtime

Databricks raadt u aan de PyTorch te gebruiken die is opgenomen in Databricks Runtime voor Machine Learning. Als u echter de standaard Databricks Runtime moet gebruiken, kan PyTorch worden geïnstalleerd als een Databricks PyPI-bibliotheek. In het volgende voorbeeld ziet u hoe u PyTorch 1.5.0 installeert:

  • Installeer pytorch op GPU-clusters en torchvision geef het volgende op:

    • torch==1.5.0
    • torchvision==0.6.0
  • Installeer pytorch en torchvision gebruik de volgende Python-wielbestanden op CPU-clusters:

    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
    

Fouten en probleemoplossing voor gedistribueerde PyTorch

In de volgende secties worden veelvoorkomende foutberichten en richtlijnen voor probleemoplossing voor de klassen beschreven: PyTorch DataParallel of PyTorch DistributedDataParallel. De meeste van deze fouten kunnen waarschijnlijk worden opgelost met TorchDistributor, die beschikbaar is op Databricks Runtime ML 13.0 en hoger. Als TorchDistributor dit echter geen haalbare oplossing is, worden er ook aanbevolen oplossingen in elke sectie aangeboden.

Hier volgt een voorbeeld van het gebruik van 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

Deze fout treedt op bij het gebruik van notebooks, ongeacht de omgeving: Databricks, lokale computer, enzovoort. Om deze fout te voorkomen, gebruikt torch.multiprocessing.start_processes u deze in start_method=fork plaats van torch.multiprocessing.spawn.

Voorbeeld:

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

Dit is een fout wanneer u de gedistribueerde training opnieuw start nadat de cel is onderbroken terwijl de training plaatsvindt.

U kunt dit oplossen door het cluster opnieuw op te starten. Als dit het probleem niet oplost, kan er een fout optreden in de code van de trainingsfunctie.

U kunt extra problemen ondervinden met CUDA omdat start_method=”fork” dit niet compatibel is met CUDA. .cuda Als u opdrachten in een cel gebruikt, kan dit leiden tot fouten. Als u deze fouten wilt voorkomen, voegt u de volgende controle toe voordat u aanroept torch.multiprocessing.start_method:

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