PyTorch

Projekt PyTorch to pakiet języka Python, który zapewnia przyspieszone obliczenia tensorowe procesora GPU i funkcje wysokiego poziomu do tworzenia sieci uczenia głębokiego. Aby uzyskać szczegółowe informacje na temat licencjonowania, zobacz dokument licencji PyTorch w witrynie GitHub.

Aby monitorować i debugować modele PyTorch, rozważ użycie narzędzia TensorBoard.

PyTorch jest zawarty w środowisku Databricks Runtime for Machine Edukacja. Jeśli używasz środowiska Databricks Runtime, zobacz Instalowanie rozwiązania PyTorch , aby uzyskać instrukcje dotyczące instalowania rozwiązania PyTorch.

Uwaga

Nie jest to kompleksowy przewodnik po PyTorch. Aby uzyskać więcej informacji, zobacz witrynę internetową PyTorch.

Trenowanie jednowęźle i rozproszone

Aby przetestować i zmigrować przepływy pracy z jednym komputerem, użyj klastra z jednym węzłem.

Aby uzyskać opcje trenowania rozproszonego na potrzeby uczenia głębokiego, zobacz Trenowanie rozproszone.

Przykładowy notes

Notes PyTorch

Pobierz notes

Instalowanie biblioteki PyTorch

Środowisko uruchomieniowe usługi Databricks dla uczenia maszynowego

Środowisko Databricks Runtime for Machine Edukacja zawiera bibliotekę PyTorch, dzięki czemu można utworzyć klaster i rozpocząć korzystanie z narzędzia PyTorch. Aby zapoznać się z wersją rozwiązania PyTorch zainstalowaną w używanej wersji środowiska Databricks Runtime ML, zobacz informacje o wersji.

Databricks Runtime

Usługa Databricks zaleca korzystanie z biblioteki PyTorch zawartej w środowisku Databricks Runtime for Machine Edukacja. Jeśli jednak musisz użyć standardowego środowiska Databricks Runtime, narzędzie PyTorch można zainstalować jako bibliotekę PyPI usługi Databricks. W poniższym przykładzie pokazano, jak zainstalować narzędzie PyTorch 1.5.0:

  • W klastrach gpu zainstaluj program pytorch i torchvision , określając następujące elementy:

    • torch==1.5.0
    • torchvision==0.6.0
  • W klastrach procesora CPU zainstaluj następujące pytorch pliki wheel języka Python i torchvision przy użyciu następujących plików wheel:

    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
    

Błędy i rozwiązywanie problemów z rozproszoną usługą PyTorch

W poniższych sekcjach opisano typowe komunikaty o błędach i wskazówki dotyczące rozwiązywania problemów dla klas: PyTorch DataParallel lub PyTorch DistributedDataParallel. Większość tych błędów prawdopodobnie można rozwiązać za pomocą narzędzia TorchDistributor, który jest dostępny w środowisku Databricks Runtime ML 13.0 lub nowszym. Jeśli jednak TorchDistributor nie jest to możliwe rozwiązanie, zalecane rozwiązania są również udostępniane w każdej sekcji.

Poniżej przedstawiono przykład użycia narzędzia TorchDistributor:


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

Ten błąd występuje podczas korzystania z notesów, niezależnie od środowiska: databricks, komputer lokalny itp. Aby uniknąć tego błędu, użyj polecenia torch.multiprocessing.start_processesstart_method=fork zamiast torch.multiprocessing.spawn.

Na przykład:

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

Ten błąd jest wyświetlany po ponownym uruchomieniu trenowania rozproszonego po przerwaniu komórki podczas trenowania.

Aby rozwiązać ten problem, uruchom ponownie klaster. Jeśli to nie rozwiąże problemu, może wystąpić błąd w kodzie funkcji trenowania.

Możesz napotkać dodatkowe problemy z cuda, ponieważ start_method=”fork” nie jest zgodny z CUDA. Użycie dowolnych .cuda poleceń w dowolnej komórce może prowadzić do błędów. Aby uniknąć tych błędów, przed wywołaniem polecenia torch.multiprocessing.start_methoddodaj następujące sprawdzenie:

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