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
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
pytorch
ange följande i GPU-klustertorchvision
:torch==1.5.0
torchvision==0.6.0
Installera och
pytorch
använd följande Python-hjulfiler i CPU-klustertorchvision
: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 avslutades med slutkod 1
Följande fel kan inträffa när du använder notebook-filer i Databricks eller lokalt:
process 0 terminated with exit code 1
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")
Server-socketen kunde inte binda till porten
Följande fel visas när du startar om den distribuerade träningen efter att ha avbrutit cellen under träningen:
The server socket has failed to bind to [::]:{PORT NUMBER} (errno: 98 - Address already in use).
Du kan åtgärda problemet genom att starta om klustret. Om omstarten inte löser problemet kan det finnas ett fel i träningsfunktionskoden.
CUDA-relaterade fel
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