O que é PyTorch?
 
Conheça o watsonx.ai
Gráfico representando um fluxo de dados

PyTorch é uma estrutura de deep learning baseada em software, baseada em código aberto, utilizada na construção de redes neurais, combinando a biblioteca de aprendizado de máquina da Torch com uma API de alto nível baseada em Python. Sua flexibilidade e facilidade de uso, entre outros benefícios, a tornaram a estrutura líder de machine learning para comunidades acadêmicas e de pesquisa.

O PyTorch oferece suporte a uma ampla variedade de arquiteturas de rede neural, desde algoritmos de regressão linear simples até redes neurais convolucionais complexas e modelos de transformadores generativos usados para tarefas como visão de computador e processamento de linguagem natural (NLP). Desenvolvido com base na linguagem de programação Python amplamente conhecida e oferecendo extensas bibliotecas de modelos pré-configurados (e até treinados previamente), o PyTorch permite que cientistas de dados construam e executem redes sofisticadas de deep learning, minimizando o tempo e o trabalho em programação e estrutura matemática.

O PyTorch também permite que cientistas de dados executem e testem partes do código em tempo real, em vez de esperar que todo o código seja implementado, o que, para grandes modelos de deep learning, pode exigir muito tempo. Isso torna o PyTorch uma excelente plataforma para prototipagem rápida e ainda acelera muito o processo de depuração.

Originalmente desenvolvido pela Pesquisa de IA do Facebook (agora Meta), o Python tornou-se código aberto em 2017 e está sob a administração da Fundação PyTorch (que faz parte da Fundação Linux maior) desde 2022. A fundação serve um espaço neutro para a comunidade de deep learning colaborar no desenvolvimento adicional do ecossistema PyTorch.

Em 2023, a IBM tornou-se um dos principais membros do PyTorch Foundation, já tendo colaborado em dois grandes projetos: permitindo um treinamento mais eficiente de modelos flexíveis de fundação de IA com bilhões de parâmetros e tornando o checkpointing para treinamento de IA consideravelmente mais econômico. A plataforma watsonx da IBM utiliza o PyTorch para oferecer uma pilha de software de nível corporativo para modelos básicos de inteligência artificial, desde o treinamento de ponta a ponta até o ajuste fino dos modelos.

Código aberto na IBM

De blockchain a contêineres, IA e sistemas operacionais e tudo o que há entre eles, nossos desenvolvedores estão criando projetos emergentes de código aberto e cercando-os com código, documentos e materiais de suporte para você participar da inovação.

Conteúdo relacionado

Assinar boletins informativos da IBM

Como funciona o PyTorch?

A estrutura matemática e de programação do PyTorch simplifica e agiliza os fluxos de trabalho de machine learning, sem limitar a complexidade ou o desempenho de redes neurais profundas.

Python

Python é uma linguagem de programação de alto nível e de uso geral, amplamente utilizada na ciência de dados, o que a torna uma opção intuitiva para cientistas de dados que ampliam seu trabalho para modelar ativamente redes de deep learning. A sintaxe simples do Python é fácil de ler, leva relativamente pouco tempo para ser aprendida e pode ser executada em qualquer sistema operacional, incluindo Windows, macOS, Linux ou Unix. O Python tem sido a segunda linguagem de programação mais usada no GitHub há mais de três anos, tendo ultrapassado o Java em 2019. Sua popularidade continua a crescer, com um aumento de 22,5% em20221.

 Essa flexibilidade e simplicidade ajudaram a promover uma comunidade online robusta de desenvolvedores Python, trabalhando em conjunto em uma ampla variedade de bibliotecas e APIs do Python, como Numerical Python (NumPy) para operações matemáticas, Pandas para manipulação de dados ou matplotlib para visualização de dados e recursos educacionais. Essa comunidade também produziu um grande volume de bibliotecas Pytorch que reduzem a monotonia e a adivinhação da codificação para aprendizado de máquina, liberando desenvolvedores e cientistas de dados para se concentrarem na inovação em vez de escrever tarefas rotineiras.

Tensores

Em qualquer algoritmo de machine learning, mesmo aqueles aplicados a informações não numéricas, como sons ou imagens, os dados devem ser representados na forma numérica. Em PyTorch, isso é alcançado através de tensores, que servem como unidades fundamentais de dados utilizados para computação na plataforma.

No contexto do machine learning, um tensor é uma matriz numérica multidimensional que funciona como um dispositivo matemático de contabilidade. De forma linguística, o "tensor" funciona como um termo genérico, incluindo algumas entidades matemáticas mais conhecidas:

  • Um escalar é um tensor zero-dimensional, contendo um único número.
  • Um vetor é um tensor unidimensional, contendo múltiplas escalares do mesmo tipo. Uma tupla é um tensor unidimensional contendo diversos tipos de dados.
  • Uma matriz é um tensor bidimensional contendo vários vetores do mesmo tipo.
  • Tensores com três ou mais dimensões, como os tensores tridimensionais usados para representar imagens RGB em algoritmos de visão computacional, são coletivamente chamados de tensores N-dimensionais.

Os tensores do PyTorch funcionam de forma semelhante aos ndarrays usados no NumPy, mas ao contrário dos ndarrays, que só podem ser executados em unidades de processamento central (CPUs), os tensores também podem ser executados em unidades de processamento gráfico (GPUs). As GPUs permitem uma computação muito mais rápida do que as CPUs, o que é uma grande vantagem, considerando os grandes volumes de dados e o processamento paralelo típicos do deep learning.

Além de codificar as entradas e saídas de um modelo, os tensores PyTorch também codificam os parâmetros do modelo: os pesos, os vieses e os gradientes que são "aprendidos" no aprendizado de máquina. Esta propriedade de tensores permite a diferenciação automática, uma das características mais importantes do PyTorch.

Módulos

O PyTorch emprega módulos como blocos de construção de modelos de deep learning, o que permite a construção rápida e direta de redes neurais sem o trabalho tedioso de codificação manual de cada algoritmo.

 Os módulos podem conter e geralmente contêm outros módulos aninhados. Além de permitir a criação de redes neurais multicamadas mais elaboradas, isso também permite que esses modelos complexos de deep learning sejam facilmente salvos como um único módulo nomeado e transferidos entre diversas máquinas, CPUs ou GPUs. Os modelos PyTorch podem até ser executados em ambientes diferentes do Python, como C++, usando o Torchscript (link fora do ibm.com), ajudando a preencher a lacuna entre os protótipos de pesquisa e a implantação de produção.

 De um modo geral, há três classes principais de módulos utilizadas para construir e otimizar modelos de deep learning no PyTorch:

  • são implementados módulos nn como camadas de uma rede neural. O pacote torch.nn contém uma grande biblioteca de módulos que executam operações comuns, como convoluções, pool e regressão. Por exemplo, torch.nn.Linear(n,m) chama um algoritmo de regressão linear com n entradas e m saídas (cujas entradas e parâmetros iniciais são então estabelecidos em linhas de código subsequentes).

  • O módulo autograd proporciona uma maneira simples de calcular automaticamente os gradientes, usados para otimizar os parâmetros do modelo por meio de descendência gradiente, para qualquer função operada dentro de uma rede neural. Anexando qualquer tensor com sinais requires_grad=True para o autograd de que todas as operações nesse tensor devem ser rastreadas, o que permite a diferenciação automática.

  • Módulos Optim aplicam algoritmos de otimização a esses gradientes. O Torch.optim oferece módulos para vários métodos de otimização, como descendente de gradiente estocástico (SGD) ou propagação quadrada média raiz (RMSprop), para atender às necessidades específicas de otimização.

Gráficos dinâmicos de computação

Os gráficos dinâmicos de computação (DCGs) são a maneira como os modelos de deep learning são representados no PyTorch. De uma forma abstrata, gráficos de computação associam o fluxo de dados entre as diferentes operações em um sistema matemático: no contexto de deep learning, eles essencialmente traduzem o código de uma rede neural em um fluxograma indicando as operações executadas em cada nó e as dependências entre diferentes camadas na rede, arranjo de etapas e sequências que transformam dados de entrada em dados de saída.

O que diferencia os gráficos dinâmicos de computação (como os usados no PyTorch) dos gráficos de computação estática (como os usados no TensorFlow) é que os DCGs adiam a especificação exata de cálculos e relacionamentos entre eles até o tempo de execução. Em outras palavras, enquanto um gráfico de computação estática exige que a arquitetura de toda a rede neural seja totalmente determinada e compilada para ser executada, os DCGs podem ser iterados e modificados em tempo real.

Isso torna os DCGs particularmente úteis para depuração e prototipagem, pois partes específicas do código de um modelo podem ser alteradas ou executadas isoladamente sem a necessidade de redefinir o modelo inteiro, o que, para os modelos de deep learning muito grandes usados para tarefas sofisticadas de visão computacional e PNL, pode ser um desperdício de tempo e recursos computacionais. Os benefícios dessa flexibilidade se estendem ao treinamento do modelo, pois os gráficos de computação dinâmica são facilmente gerados em sentido inverso durante a retropropagação.

Embora sua estrutura fixa possa capacitar maior eficiência computacional, gráficos computacionais estáticos têm flexibilidade limitada: por exemplo, a construção de um modelo que utiliza um número variável de camadas dependendo dos dados de entrada, como uma rede neural convolucional (CNN) capaz de processar imagens de diferentes tamanhos, é proibitivamente difícil com gráficos estáticos.

Diferenciação automática

Um método amplamente utilizado para treinar redes neurais, especialmente em aprendizado supervisionado, é a backpropagation. Primeiro, em uma passagem adiante, um modelo é alimentado com algumas entradas (x) e prevê algumas saídas (y); trabalhando para trás a partir dessa saída, é utilizada uma função de perda para medir o erro das previsões do modelo em valores diferentes de x. Diferenciando essa função de perda para encontrar sua derivada, a gradiente descendente pode ser utilizada para ajustar os pesos na rede neural, uma camada de cada vez.

O módulo autograd do PyTorch alimenta sua técnica de diferenciação automática com uma fórmula de cálculo chamada regra de cadeia, calculando derivados complexos e dividindo-os em derivados mais simples e combinando-os mais tarde. O Autograd calcula e registra automaticamente gradientes para todas as operações executadas em um gráfico computacional, reduzindo muito o trabalho de legenda de backpropagation. 

Executando um modelo que já foi treinado, o autograd passa a ser um uso desnecessário de recursos computacionais. A anexação de qualquer operação do tensor com requires_grad=False sinalizará PyTorch para parar de rastrear gradientes.

Conjuntos de dados e carregadores de dados

O trabalho com grandes conjuntos de dados necessários para treinar modelos de deep learning pode ser complexo e computacionalmente exigente. O PyTorch oferece duas primitivas de dados, conjuntos de dados e dataloaders para facilitar o carregamento de dados e tornar o código mais legível.

  • torch.utils.data.Dataset armazena amostras de dados e seus rótulos correspondentes
  • torch.utils.data.Dataloader envolve um iterável, objeto que pode ser operado, em torno do conjunto de dados para facilitar o acesso às amostras

 

Ecossistema PyTorch

Os principais recursos do PyTorch são complementados por um ecossistema robusto de ferramentas, bibliotecas e extensões (link fora do ibm.com) desenvolvido por membros da comunidade do PyTorch. Muitas bibliotecas de código aberto adicionais, contendo módulos específicos de propósito, redes neurais pré-configuradas e até modelos treinados previamente, estão disponíveis para complementar a biblioteca torch instalada previamente.

Torchvision

Torchvision é um kit de ferramentas que contém módulos, arquiteturas de rede e conjuntos de dados para várias tarefas de classificação de imagem, detecção de objetos e segmentação de imagem.

Explore o Torchvision
TorchText

O TorchText oferece recursos como conjuntos de dados, transformações básicas de processamento de texto e modelos treinados previamente para uso em NLP.

Conheça o TorchText
Abrir troca de tráfego de rede neural

O Open Neural Network Exchange (ONNX) garante a interoperabilidade entre as estruturas de IA, permitindo que os usuários transfiram facilmente seus modelos PyTorch para outras plataformas.

Explore o ONNX
Tutoriais

Há muitos tutoriais úteis disponíveis em PyTorch.org. Por exemplo, este tutorial intermediário (link fora do ibm.com) ensina os fundamentos do aprendizado de reforço profundo treinando uma IA para jogar um videogame.

Explore os tutoriais do PyTorch
Instalação e execução do PyTorch

O PyTorch pode ser instalado e executado em diversas configurações em sistemas locais e plataformas em nuvem.

A execução local do PyTorch exige a instalação do Python com o gerenciador de pacotes Anaconda, o Homebrew (link fora do ibm.com) ou o site do Python (link fora do ibm.com).

O PyTorch pode ser instalado localmente via Anaconda (link fora do ibm.com)  utilizando o comando conda instalar o pytorch torchvision -c pytorch, ou via pip (link fora do ibm.com) utilizando o comando pip3 instalar torchvision. O Anaconda é o recomendado, pois oferece todas as dependências do PyTorch (inclusive o Python) em uma instalação isolada2.

O PyTorch também pode ser executado em plataformas de nuvem, incluindo Amazon Web Services, Google Cloud e Microsoft Azure.

É recomendado (mas não necessário) trabalhar com GPUs NVIDIA para aproveitar o suporte do PyTorch para CUDA (Compute Unified Device Architecture), que oferece um desempenho e treinamento consideravelmente mais rápidos do que o que o obtido com CPUs. 

Soluções relacionadas
watsonx.ai

Treine, valide, ajuste e implemente IA generativa, modelos de base e recursos de aprendizado de máquina com facilidade, além de criar aplicativos de IA em uma fração do tempo com uma fração dos dados.

Explore o watsonx.ai

Serviços de consultoria de IA

Reinvente sua forma de trabalhar com a IA: nossa equipe global diversificada de mais de 20 mil especialistas em IA pode ajudá-lo a projetar e escalar a IA e a automação de forma rápida e confiável em toda a sua empresa, trabalhando com nossa própria tecnologia IBM watsonx e um ecossistema aberto de parceiros para oferecer qualquer modelo de IA, em qualquer nuvem, guiado ética e confiança.

Explore os serviços de consultoria em IA da IBM

watsonx.data

Escale análises e cargas de trabalho de IA para todos os seus dados, em qualquer lugar, com o watsonx.data, o único armazenamento de dados aberto, híbrido e controlado do setor.

Explore o watsonx.data
Recursos do PyTorch Primeiros passos no aprendizado de máquina

Este caminho de aprendizado é projetado para qualquer pessoa interessada em se atualizar rapidamente com o aprendizado de máquina, apresentando tutoriais passo a passo com demonstrações práticas onde você criará modelos e os usará em aplicativos.

Guia para iniciantes em Python

Apresentaremos os conceitos básicos que você precisa conhecer para começar com esta linguagem de programação simples, desde a execução de cálculos algébricos até a geração de resultados gráficos a partir de seus dados.

PyTorch: recursos e ferramentas

Explore artigos, pesquisas, posts de blog, tutoriais e vídeos para aprofundar seu conhecimento sobre o ecossistema PyTorch.

Dê o próximo passo

Treine, valide, ajuste e implemente recursos generativos de IA, modelos de fundação e machine learning com facilidade e desenvolva aplicativos de IA em uma fração do tempo, com uma fração dos dados com IBM watsonx.ai, a nova geração de estúdio empresarial para construtores de IA.

Inicie sua avaliação sem custo Agende uma demonstração em tempo real
Notas de rodapé

1 Octoverse 2022: The top programming languages (link fora do ibm.com), Github, 17 de novembro de 2022
2 PyTorch: Get Started – Start Locally (link fora do ibm.com)