Saltar para o conteúdo

PyTorch

Origem: Wikipédia, a enciclopédia livre.
PyTorch
Logótipo
PyTorch
Autor
  • Adam Paszke
  • Sam Gross
  • Soumith Chintala
  • Gregory Chanan
Desenvolvedor Meta AI
Plataforma IA-32, x86-64, ARM64
Lançamento setembro de 2016 (7 anos)[1]
Versão estável 2.3.0[2] (24 de abril de 2024; há 57 dias)
Idioma(s) Inglês
Escrito em
Sistema operacional
Gênero(s) Biblioteca para aprendizado de máquina e aprendizagem profunda
Licença BSD-3[3]
Estado do desenvolvimento Ativo
Página oficial pytorch.org
Repositório github.com/pytorch/pytorch

PyTorch é uma biblioteca de aprendizado de máquina baseada na biblioteca Torch,[4][5][6] usada para aplicações como visão computacional e processamento de linguagem natural,[7] originalmente desenvolvida pela Meta AI e agora parte da Linux Foundation.[8][9][10][11] Ela é reconhecida como uma das duas bibliotecas de aprendizado de máquina mais populares, juntamente com a TensorFlow, oferecendo software livre e de código aberto lançado sob a licença BSD modificada. Embora a interface Python seja mais refinada e seja o foco principal do desenvolvimento, o PyTorch também tem uma interface C++.[12]

Vários softwares de aprendizagem profunda foram desenvolvidos com base no PyTorch, incluindo o Tesla Autopilot,[13] o Pyro da Uber,[14] os transformadores da Hugging Face,[15] o PyTorch Lightning,[16][17] e o Catalyst.[18][19]

O PyTorch oferece dois recursos de alto nível:[20]

Histórico[editar | editar código-fonte]

O Meta (anteriormente conhecido como Facebook) opera tanto o PyTorch quanto o Convolutional Architecture for Fast Feature Embedding (Caffe2), mas os modelos definidos pelas duas estruturas eram incompatíveis entre si. O projeto Open Neural Network Exchange (ONNX) foi criado pela Meta e pela Microsoft em setembro de 2017 para converter modelos entre estruturas. O Caffe2 foi incorporado ao PyTorch no final de março de 2018.[21] Em setembro de 2022, a Meta anunciou que o PyTorch seria governado pela PyTorch Foundation, uma organização independente recém-criada - uma subsidiária da Linux Foundation.[22]

O PyTorch 2.0 foi lançado em 15 de março de 2023.[23]

Tensores PyTorch[editar | editar código-fonte]

O PyTorch define uma classe chamada Tensor (torch.Tensor) para armazenar e operar em matrizes retangulares multidimensionais homogêneas de números. Os Tensores do PyTorch são semelhantes aos Arrays do NumPy, mas também podem ser operados em uma GPU NVIDIA compatível com CUDA. O PyTorch também está desenvolvendo suporte para outras plataformas de GPU, por exemplo, o ROCm da AMD[24] e o Metal Framework da Apple.[25]

O PyTorch oferece suporte a vários subtipos de Tensores.[26]

Observe que o termo "tensor" aqui não tem o mesmo significado que tensor em matemática ou física. O significado da palavra em aprendizado de máquina está apenas superficialmente relacionado ao seu significado original como um certo tipo de objeto em álgebra linear. Os tensores no PyTorch são simplesmente matrizes multidimensionais.

Redes neurais PyTorch[editar | editar código-fonte]

Ver artigo principal: Rede neural artificial

O PyTorch define um módulo chamado nn (torch.nn) para descrever redes neurais e dar suporte ao treinamento. Esse módulo oferece uma coleção abrangente de blocos de construção para redes neurais, incluindo várias camadas e funções de ativação, permitindo a construção de modelos complexos. As redes são criadas herdando o módulo torch.nn e definindo a sequência de operações na função forward().

Exemplo[editar | editar código-fonte]

O programa a seguir mostra a funcionalidade de baixo nível da biblioteca com um exemplo simples:

import torch
dtype = torch.float
device = torch.device("cpu")  # Execute all calculations on the CPU
# device = torch.device("cuda:0")  # Executes all calculations on the GPU

# Create a tensor and fill it with random numbers
a = torch.randn(2, 3, device=device, dtype=dtype)
print(a)
# Output: tensor([[-1.1884,  0.8498, -1.7129],
#                  [-0.8816,  0.1944,  0.5847]])

b = torch.randn(2, 3, device=device, dtype=dtype)
print(b)
# Output: tensor([[ 0.7178, -0.8453, -1.3403],
#                  [ 1.3262,  1.1512, -1.7070]])

print(a * b)
# Output: tensor([[-0.8530, -0.7183,  2.58],
#                  [-1.1692,  0.2238, -0.9981]])

print(a.sum()) 
# Output: tensor(-2.1540)

print(a[1,2]) # Output of the element in the third column of the second row (zero based)
# Output: tensor(0.5847)

print(a.max())
# Output: tensor(0.8498)

O bloco de código a seguir mostra um exemplo da funcionalidade de nível superior fornecida pelo módulo nn. Uma rede neural com camadas lineares é definida no exemplo.

import torch
from torch import nn # Import the nn sub-module from PyTorch

class NeuralNetwork(nn.Module):  # Neural networks are defined as classes
    def __init__(self):  # Layers and variables are defined in the __init__ method
        super().__init__()  # Must be in every network.
        self.flatten = nn.Flatten()   # Construct a flattening layer.
        self.linear_relu_stack = nn.Sequential(  # Construct a stack of layers.
            nn.Linear(28*28, 512),  # Linear Layers have an input and output shape
            nn.ReLU(),  # ReLU is one of many activation functions provided by nn
            nn.Linear(512, 512),
            nn.ReLU(),
            nn.Linear(512, 10), 
        )

    def forward(self, x):  # This function defines the forward pass.
        x = self.flatten(x)
        logits = self.linear_relu_stack(x)
        return logits

Referências[editar | editar código-fonte]

  1. Chintala, Soumith (1 de setembro de 2016). «PyTorch Alpha-1 release» 
  2. «Release 2.3.0» (em inglês). 24 de abril de 2024 
  3. Claburn, Thomas (12 de setembro de 2022). «PyTorch gets lit under The Linux Foundation». The Register 
  4. Yegulalp, Serdar (19 de janeiro de 2017). «Facebook brings GPU-powered machine learning to Python». InfoWorld (em inglês). Consultado em 11 de dezembro de 2017 
  5. Lorica, Ben (3 de agosto de 2017). «Why AI and machine learning researchers are beginning to embrace PyTorch» (em inglês). O'Reilly Media. Consultado em 11 de dezembro de 2017 
  6. Ketkar, Nikhil (2017). «Introduction to PyTorch». Deep Learning with Python (em inglês). [S.l.]: Apress, Berkeley, CA. pp. 195–208. ISBN 9781484227657. doi:10.1007/978-1-4842-2766-4_12 
  7. Moez Ali (Jun 2023). «NLP with PyTorch: A Comprehensive Guide». datacamp.com (em inglês). Consultado em 1 de abril de 2024 
  8. Patel, Mo (7 de dezembro de 2017). «When two trends fuse: PyTorch and recommender systems». O'Reilly Media (em inglês). Consultado em 18 de dezembro de 2017 
  9. Mannes, John. «Facebook and Microsoft collaborate to simplify conversions from PyTorch to Caffe2». TechCrunch (em inglês). Consultado em 18 de dezembro de 2017. A FAIR está acostumada a trabalhar com o PyTorch, uma estrutura de aprendizagem profunda otimizada para obter resultados de última geração em pesquisa, independentemente das restrições de recursos. Infelizmente, no mundo real, a maioria de nós é limitada pelos recursos computacionais de nossos smartphones e computadores. 
  10. Arakelyan, Sophia (29 de novembro de 2017). «Tech giants are using open source frameworks to dominate the AI community». VentureBeat (em inglês). Consultado em 18 de dezembro de 2017 
  11. «PyTorch strengthens its governance by joining the Linux Foundation». pytorch.org (em inglês). Consultado em 13 de setembro de 2022 
  12. «The C++ Frontend». PyTorch Master Documentation. Consultado em 29 de julho de 2019 
  13. Karpathy, Andrej. «PyTorch at Tesla - Andrej Karpathy, Tesla» 
  14. «Uber AI Labs Open Sources Pyro, a Deep Probabilistic Programming Language». Uber Engineering Blog (em inglês). 3 de novembro de 2017. Consultado em 18 de dezembro de 2017 
  15. PYTORCH-TRANSFORMERS: PyTorch implementations of popular NLP Transformers, PyTorch Hub, 1 de dezembro de 2019, consultado em 1 de dezembro de 2019 
  16. PYTORCH-Lightning: The lightweight PyTorch wrapper for ML researchers. Scale your models. Write less boilerplate (em inglês), Lightning-Team, 18 de junho de 2020, consultado em 18 de junho de 2020 
  17. «Ecosystem Tools». pytorch.org (em inglês). Consultado em 18 de junho de 2020 
  18. GitHub - catalyst-team/catalyst: Accelerated DL & RL, Catalyst-Team, 5 de dezembro de 2019, consultado em 5 de dezembro de 2019 
  19. «Ecosystem Tools». pytorch.org (em inglês). Consultado em 4 de abril de 2020 
  20. «PyTorch – About». pytorch.org (em inglês). Consultado em 11 de junho de 2018. Cópia arquivada em 15 de junho de 2018 
  21. «Caffe2 Merges With PyTorch» (em inglês). 2 de abril de 2018 
  22. Edwards, Benj (12 de setembro de 2022). «Meta spins off PyTorch Foundation to make AI framework vendor neutral». Ars Technica (em inglês) 
  23. «PyTorch 2.0 brings new fire to open-source machine learning». VentureBeat (em inglês). 15 de março de 2023. Consultado em 16 de março de 2023 
  24. «Installing PyTorch for ROCm». rocm.docs.amd.com (em inglês). 9 de fevereiro de 2024 
  25. «Introducing Accelerated PyTorch Training on Mac». pytorch.org (em inglês). Consultado em 4 de junho de 2022 
  26. «An Introduction to PyTorch – A Simple yet Powerful Deep Learning Library». analyticsvidhya.com (em inglês). 22 de fevereiro de 2018. Consultado em 11 de junho de 2018 

Ligações externas[editar | editar código-fonte]