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 Learning 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
A PyTorch telepítése
A Databricks ML-hez készült futtatókörnyezete
A Databricks Runtime for Machine Learning 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 Learningben található 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
éstorchvision
adja meg a következőket:torch==1.5.0
torchvision==0.6.0
Cpu-fürtöken telepítse
pytorch
éstorchvision
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)
"0. folyamat az 1. kilépési kóddal leállított"
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")
"A kiszolgáló szoftvercsatornája nem tudott kapcsolódni a következőhöz: [::]:{PORT NUMBER} (errno: 98 – A cím már használatban van)."
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 során.
A probléma megoldásához indítsa újra a fürtöt. Ha az újraindítás nem oldja meg a problémát, hiba lehet a betanítási függvény kódjában.
CUDA-kkal kapcsolatos hibák
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_method
elő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