PyTorch

O projeto PyTorch é um pacote Python que fornece computação tensor acelerada por GPU e funcionalidades de alto nível para a construção de redes de aprendizagem profunda. Para obter detalhes de licenciamento, consulte o documento de licença do PyTorch no GitHub.

Para monitorar e depurar seus modelos PyTorch, considere usar o TensorBoard.

O PyTorch está incluído no Databricks Runtime for Machine Learning. Se você estiver usando o Databricks Runtime, consulte Instalar o PyTorch para obter instruções sobre como instalar o PyTorch.

Nota

Este não é um guia abrangente para PyTorch. Para obter mais informações, consulte o site do PyTorch.

Nó único e treinamento distribuído

Para testar e migrar fluxos de trabalho de máquina única, use um cluster de nó único.

Para obter opções de treinamento distribuído para aprendizado profundo, consulte Treinamento distribuído.

Bloco de notas de exemplo

Caderno PyTorch

Obter o bloco de notas

Instalar o PyTorch

Databricks Runtime para ML

O Databricks Runtime for Machine Learning inclui o PyTorch para que você possa criar o cluster e começar a usar o PyTorch. Para a versão do PyTorch instalada na versão do Databricks Runtime ML que você está usando, consulte as notas de versão.

Databricks Runtime

A Databricks recomenda que você use o PyTorch incluído no Databricks Runtime for Machine Learning. No entanto, se você precisar usar o Databricks Runtime padrão, o PyTorch pode ser instalado como uma biblioteca Databricks PyPI. O exemplo a seguir mostra como instalar o PyTorch 1.5.0:

  • Em clusters de GPU, instale pytorch e torchvision especifique o seguinte:

    • torch==1.5.0
    • torchvision==0.6.0
  • Em clusters de CPU, instale pytorch e torchvision usando os seguintes arquivos de roda Python:

    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
    

Erros e solução de problemas para PyTorch distribuído

As seções a seguir descrevem mensagens de erro comuns e orientações de solução de problemas para as classes: PyTorch DataParallel ou PyTorch DistributedDataParallel. A maioria desses erros provavelmente pode ser resolvida com TorchDistributor, que está disponível no Databricks Runtime ML 13.0 e superior. No entanto, se TorchDistributor não for uma solução viável, as soluções recomendadas também são fornecidas em cada seção.

Segue-se um exemplo de como utilizar o 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

Este erro ocorre ao usar notebooks, independentemente do ambiente: Databricks, máquina local, etc. Para evitar esse erro, use torch.multiprocessing.start_processes com start_method=fork em vez de torch.multiprocessing.spawn.

Por exemplo:

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

Este erro aparece quando você reinicia o treinamento distribuído depois de interromper a célula enquanto o treinamento está acontecendo.

Para resolver, reinicie o cluster. Se isso não resolver o problema, pode haver um erro no código da função de treinamento.

Você pode ter problemas adicionais com o CUDA, uma vez que start_method=”fork” não é compatível com CUDA. Usar qualquer .cuda comando em qualquer célula pode levar a falhas. Para evitar esses erros, adicione a seguinte verificação antes de chamar torch.multiprocessing.start_method:

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