Sdílet prostřednictvím


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

Získat poznámkový blok

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 a torchvision zadejte následující:

    • torch==1.5.0
    • torchvision==0.6.0
  • V clusterech procesoru nainstalujte pytorch a torchvision 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_processesstart_method=forktorch.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.

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_methodpřidejte následující kontrolu:

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