PyTorch

A PyTorch-projekt egy Python-csomag, amely GPU-gyorsított tenzor-számítást és magas szintű funkciókat biztosít a mélytanulási hálózatok létrehozásához. A licencelési részletekért tekintse meg a PyTorch-licenc dokumentumát a GitHubon.

A PyTorch-modellek monitorozásához és hibakereséséhez fontolja meg a TensorBoard használatát.

A PyTorch a Databricks Runtime for Machine Tanulás része. Ha Databricks Runtime-ot használ, a PyTorch telepítésével kapcsolatos útmutatásért lásd a PyTorch telepítését ismertető cikket.

Feljegyzés

Ez nem a PyTorch átfogó útmutatója. További információt a PyTorch webhelyén talál.

Egycsomópontos és elosztott betanítás

Az egygépes munkafolyamatok teszteléséhez és migrálásához használjon egy egycsomópontos fürtöt.

A mély tanulás elosztott betanítási lehetőségeiről az Elosztott betanítás című témakörben olvashat.

Példajegyzetfüzet

PyTorch-jegyzetfüzet

Jegyzetfüzet beszerzése

A PyTorch telepítése

A Databricks ML-hez készült futtatókörnyezete

A Databricks Runtime for Machine Tanulás tartalmazza a PyTorchot, így létrehozhatja a fürtöt, és megkezdheti a PyTorch használatát. A használt Databricks Runtime ML-verzióban telepített PyTorch verzióról a kibocsátási megjegyzésekben olvashat.

A Databricks futtatókörnyezete

A Databricks a Databricks Runtime for Machine Tanulás részét képező PyTorch használatát javasolja. Ha azonban a standard Databricks Runtime-ot kell használnia, a PyTorch telepíthető Databricks PyPI-kódtárként. Az alábbi példa a PyTorch 1.5.0 telepítését mutatja be:

  • GPU-fürtökön telepítse pytorch és torchvision adja meg a következőket:

    • torch==1.5.0
    • torchvision==0.6.0
  • Cpu-fürtöken telepítse pytorch és torchvision használja a következő Python-kerékfájlokat:

    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
    

Az elosztott PyTorch hibái és hibaelhárítása

A következő szakaszok az osztályok gyakori hibaüzeneteit és hibaelhárítási útmutatóját ismertetik: PyTorch DataParallel vagy PyTorch DistributedDataParallel. A legtöbb ilyen hiba valószínűleg megoldható a TorchDistributor használatával, amely a Databricks Runtime ML 13.0-s és újabb verzióiban érhető el. Ha TorchDistributor azonban nem életképes megoldás, az ajánlott megoldásokat az egyes szakaszokban is meg kell adni.

Az alábbiakban egy példa látható a TorchDistributor használatára:


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 terminated with exit code 1

Ez a hiba jegyzetfüzetek használatakor fordul elő, környezettől függetlenül: Databricks, helyi gép stb. A hiba elkerülése érdekében használja torch.multiprocessing.start_processes a start_method=fork következő helyett: torch.multiprocessing.spawn.

Példa:

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")

The server socket has failed to bind to [::]:{PORT NUMBER} (errno: 98 - Address already in use).

Ez a hiba akkor jelenik meg, ha újraindítja az elosztott betanítást, miután megszakította a cellát a betanítás közben.

A probléma megoldásához indítsa újra a fürtöt. Ha ez nem oldja meg a problémát, hiba léphet fel a betanítási függvény kódjában.

A CUDA-val kapcsolatos további problémákat is tapasztalhat, mivel start_method=”fork” nem CUDA-kompatibilis. Ha bármelyik cellában bármilyen .cuda parancsot használ, az hibákhoz vezethet. A hibák elkerülése érdekében a hívás torch.multiprocessing.start_methodelőtt adja hozzá a következő ellenőrzést:

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