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 této chybě dochází při použití poznámkových bloků bez ohledu na prostředí: Databricks, místní počítač atd. Chcete-li se této chybě vyhnout, použijte místo torch.multiprocessing.start_processes
start_method=fork
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 [::]:{ČÍSLO PORTU} (errno: 98 – adresa je již používána)."
Tato chyba se zobrazí při restartování distribuovaného trénování po přerušení buňky během trénování.
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