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
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 entorchvision
geef het volgende op:torch==1.5.0
torchvision==0.6.0
Installeer
pytorch
entorchvision
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)
"proces 0 beëindigd met afsluitcode 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")
"De serversocket kan niet worden verbonden met [::]:{POORTNUMMER} (errno: 98 - Adres dat al in gebruik is)."
Deze fout wordt weergegeven wanneer u de gedistribueerde training opnieuw start nadat u de cel tijdens de training hebt onderbroken.
Start het cluster opnieuw om het probleem op te lossen. Als opnieuw opstarten het probleem niet oplost, kan er een fout optreden in de code van de trainingsfunctie.
CUDA-gerelateerde fouten
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