PyTorch
Projekt PyTorch je balíček Pythonu, který poskytuje akcelerované výpočty tensoru GPU a funkce vysoké úrovně pro vytváření sítí hlubokého učení. Podrobnosti o licencování najdete v dokumentaci k licencím PyTorch na GitHubu.
Pokud chcete monitorovat a ladit modely PyTorch, zvažte použití TensorBoardu.
PyTorch je součástí Modulu runtime Databricks pro Machine Learning. Pokud používáte Databricks Runtime, pokyny k instalaci PyTorch najdete v tématu Instalace PyTorchu .
Poznámka:
Nejedná se o komplexního průvodce PyTorchem. Další informace najdete na webu PyTorch.
Jeden uzel a distribuované trénování
K otestování a migraci pracovních postupů s jedním počítačem použijte cluster s jedním uzlem.
Možnosti distribuovaného trénování pro hluboké učení najdete v tématu Distribuované trénování.
Příklad poznámkového bloku
Poznámkový blok PyTorch
Instalace knihovny PyTorch
Databricks Runtime pro ML
Databricks Runtime pro Machine Learning zahrnuje PyTorch, abyste mohli cluster vytvořit a začít používat PyTorch. Informace o verzi PyTorch nainstalované ve verzi ML Databricks Runtime, kterou používáte, najdete v poznámkách k verzi.
Databricks Runtime
Databricks doporučuje používat PyTorch, který je součástí Databricks Runtime pro Machine Learning. Pokud ale musíte použít standardní databricks Runtime, dá se PyTorch nainstalovat jako knihovna PyPI Databricks. Následující příklad ukazuje, jak nainstalovat PyTorch 1.5.0:
V clusterech GPU nainstalujte
pytorch
atorchvision
zadejte následující:torch==1.5.0
torchvision==0.6.0
V clusterech procesoru nainstalujte
pytorch
atorchvision
použijte následující soubory kolečka Pythonu: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
Chyby a řešení potíží s distribuovaným PyTorchem
Následující části popisují běžné chybové zprávy a pokyny pro řešení potíží pro třídy: PyTorch DataParallel nebo PyTorch DistributedDataParallel. Většinu těchto chyb je pravděpodobně možné vyřešit pomocí torchDistributorutoru, který je k dispozici pro Databricks Runtime ML 13.0 a vyšší. Pokud TorchDistributor
se ale nejedná o realizovatelné řešení, v každé části jsou k dispozici také doporučená řešení.
Následuje příklad použití torchDistributorutoru:
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 ukončen s ukončovacím kódem 1
K následující chybě může dojít při použití poznámkových bloků v Databricks nebo místně:
process 0 terminated with exit code 1
Chcete-li se této chybě vyhnout, použijte místo torch.multiprocessing.start_processes
start_method=fork
s torch.multiprocessing.spawn
.
Příklad:
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")
serverový soket se nepodařilo vytvořit vazbu na port
Při restartování distribuovaného trénování po přerušení buňky během trénování se zobrazí následující chyba.
The server socket has failed to bind to [::]:{PORT NUMBER} (errno: 98 - Address already in use).
Pokud chcete tento problém vyřešit, restartujte cluster. Pokud restartování problém nevyřeší, může dojít k chybě v kódu trénovací funkce.
Chyby související s CUDA
Můžete narazit na další problémy s CUDA, protože start_method=”fork”
není kompatibilní s CUDA. Použití libovolných .cuda
příkazů v jakékoli buňce může vést k selháním. Pokud se chcete těmto chybám vyhnout, před voláním torch.multiprocessing.start_method
přidejte následující kontrolu:
if torch.cuda.is_initialized():
raise Exception("CUDA was initialized; distributed training will fail.") # or something similar