Software:PyTorch
| Original author(s) |
|
|---|---|
| Developer(s) | Meta AI |
| Initial release | September 2016[1] |
| Repository | github |
| Written in | |
| Operating system | |
| Platform | IA-32, x86-64, ARM64 |
| Available in | English |
| Type | Library for machine learning and deep learning |
| License | BSD-3[2] |
| Website | pytorch |
| Machine learning and data mining |
|---|
PyTorch is an open-source machine learning library based on the Torch library,[3][4][5] used for applications such as computer vision, deep learning research[6] and natural language processing,[6] originally developed by Meta AI and now part of the Linux Foundation umbrella.[7][8][9][10] It is one of the most popular deep learning frameworks, alongside others such as TensorFlow,[11] offering free and open-source software released under the modified BSD license. Although the Python interface is more polished and the primary focus of development, PyTorch also has a C++ interface.[12]
PyTorch utilises tensors as a intrinsic datatype, very similar to NumPy. Model training is handled by an automatic differentiation system, Autograd, which constructs a directed acyclic graph of a forward pass of a model for a given input, for which automatic differentiation utilising the chain rule, computes model-wide gradients.[13] PyTorch is capable of transparent leveraging of SIMD units, such as GPGPUs.
A number of commercial deep learning architectures are built on top of PyTorch, including Tesla Autopilot,[14] Uber's Pyro,[15] Hugging Face's Transformers,[16][17] and Catalyst.[18][19]
History
In 2001, Torch was written and released under a GPL license. It was a machine-learning library written in C++ and CUDA, supporting methods including neural networks, support vector machines (SVM), hidden Markov models, etc.[20][21][22] It was improved to Torch7 in 2012.[23] Development on Torch ceased in 2018 and was subsumed by the PyTorch project.[24]
Meta (formerly known as Facebook) operates both PyTorch and Convolutional Architecture for Fast Feature Embedding (Caffe2), but models defined by the two frameworks were mutually incompatible. The Open Neural Network Exchange (ONNX) project was created by Meta and Microsoft in September 2017 for converting models between frameworks. Caffe2 was merged into PyTorch at the end of March 2018.[25] In September 2022, Meta announced that PyTorch would be governed by the independent PyTorch Foundation, a newly created subsidiary of the Linux Foundation.[26]
PyTorch 2.0 was released on 15 March 2023, introducing TorchDynamo, a Python-level compiler that makes code run up to 2x faster, along with significant improvements in training and inference performance across major cloud platforms.[27][28]
PyTorch tensors
PyTorch defines a class called Tensor (torch.Tensor) to store and operate on homogeneous multidimensional rectangular arrays of numbers. PyTorch Tensors are similar to NumPy Arrays, but can also be operated on by a CUDA-capable NVIDIA GPU. PyTorch has also been developing support for other GPU platforms, for example, AMD's ROCm[29] and Apple's Metal Framework.[30]
PyTorch supports various sub-types of Tensors.[31]
Note that the term "tensor" here does not carry the same meaning as tensor in mathematics or physics. The meaning of the word in machine learning is only superficially related to its original meaning as a certain kind of object in linear algebra. Tensors in PyTorch are simply multi-dimensional arrays.
PyTorch neural networks
PyTorch defines a module called nn (torch.nn) to describe neural networks and to support training. This module offers a comprehensive collection of building blocks for neural networks, including various layers and activation functions, enabling the construction of complex models. Networks are built by inheriting from the torch.nn module and defining the sequence of operations in the forward() function.
Example
The following program shows the low-level functionality of the library with a simple example.
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)
The following code-block defines a neural network with linear layers using the nn module.
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
See also
References
- ↑ Chintala, Soumith (1 September 2016). "PyTorch Alpha-1 release". https://github.com/pytorch/pytorch/releases/tag/v0.1.1.
- ↑ Claburn, Thomas (12 September 2022). "PyTorch gets lit under The Linux Foundation". The Register. https://www.theregister.com/2022/09/12/pytorch_meta_linux_foundation/.
- ↑ Yegulalp, Serdar (19 January 2017). "Facebook brings GPU-powered machine learning to Python". InfoWorld. https://www.infoworld.com/article/3159120/artificial-intelligence/facebook-brings-gpu-powered-machine-learning-to-python.html.
- ↑ Lorica, Ben (3 August 2017). "Why AI and machine learning researchers are beginning to embrace PyTorch". O'Reilly Media. https://www.oreilly.com/ideas/why-ai-and-machine-learning-researchers-are-beginning-to-embrace-pytorch.
- ↑ Ketkar, Nikhil (2017). "Introduction to PyTorch" (in en). Deep Learning with Python. Apress, Berkeley, CA. pp. 195–208. doi:10.1007/978-1-4842-2766-4_12. ISBN 9781484227657.
- ↑ 6.0 6.1 Moez Ali (Jun 2023). "NLP with PyTorch: A Comprehensive Guide" (in en). https://www.datacamp.com/tutorial/nlp-with-pytorch-a-comprehensive-guide.
- ↑ Patel, Mo (7 December 2017). "When two trends fuse: PyTorch and recommender systems" (in en). O'Reilly Media. https://www.oreilly.com/ideas/when-two-trends-fuse-pytorch-and-recommender-systems.
- ↑ Mannes, John. "Facebook and Microsoft collaborate to simplify conversions from PyTorch to Caffe2" (in en). TechCrunch. https://techcrunch.com/2017/09/07/facebook-and-microsoft-collaborate-to-simplify-conversions-from-pytorch-to-caffe2/. "FAIR is accustomed to working with PyTorch – a deep learning framework optimized for achieving state of the art results in research, regardless of resource constraints. Unfortunately in the real world, most of us are limited by the computational capabilities of our smartphones and computers."
- ↑ Arakelyan, Sophia (29 November 2017). "Tech giants are using open source frameworks to dominate the AI community" (in en-US). https://venturebeat.com/2017/11/29/tech-giants-are-using-open-source-frameworks-to-dominate-the-ai-community/.
- ↑ "PyTorch strengthens its governance by joining the Linux Foundation" (in en). https://pytorch.org/blog/PyTorchfoundation/.
- ↑ "Top 30 Open Source Projects.". https://github.com/cncf/velocity.
- ↑ "The C++ Frontend". https://pytorch.org/cppdocs/frontend.html.
- ↑ "Overview of PyTorch Autograd Engine". 8 June 2021. https://pytorch.org/blog/overview-of-pytorch-autograd-engine.
- ↑ Karpathy, Andrej (6 November 2019). "PyTorch at Tesla - Andrej Karpathy, Tesla". https://www.youtube.com/watch?v=oBklltKXtDE.
- ↑ "Uber AI Labs Open Sources Pyro, a Deep Probabilistic Programming Language" (in en-US). Uber Engineering Blog. 3 November 2017. https://eng.uber.com/pyro/.
- ↑ PYTORCH-TRANSFORMERS: PyTorch implementations of popular NLP Transformers, PyTorch Hub, 1 December 2019, https://pytorch.org/hub/huggingface_pytorch-transformers/, retrieved 1 December 2019
- ↑ "Ecosystem Tools" (in en). https://pytorch.org/ecosystem/.
- ↑ GitHub - catalyst-team/catalyst: Accelerated DL & RL, Catalyst-Team, 5 December 2019, https://github.com/catalyst-team/catalyst, retrieved 5 December 2019
- ↑ "Ecosystem Tools" (in en). https://pytorch.org/ecosystem/.
- ↑ "Torch Tutorial", Ronan Collobert, IDIAP, 2002-10-02
- ↑ R. Collobert, S. Bengio and J. Mariéthoz. Torch: a modular machine learning software library. Technical Report IDIAP-RR 02-46, IDIAP, 2002.
- ↑ "Torch Library". http://www.torch.ch/.
- ↑ Collobert, Ronan; Kavukcuoglu, Koray; Farabet, Clément (2012), Montavon, Grégoire; Orr, Geneviève B.; Müller, Klaus-Robert, eds., "Implementing Neural Networks Efficiently" (in en), Neural Networks: Tricks of the Trade: Second Edition (Berlin, Heidelberg: Springer): pp. 537–557, doi:10.1007/978-3-642-35289-8_28, ISBN 978-3-642-35289-8, https://doi.org/10.1007/978-3-642-35289-8_28, retrieved 2025-06-10
- ↑ torch/torch7, Commit fd0ee3b, 2018-07-02
- ↑ "Caffe2 Merges With PyTorch". 2 April 2018. https://medium.com/@Synced/caffe2-merges-with-pytorch-a89c70ad9eb7.
- ↑ Edwards, Benj (12 September 2022). "Meta spins off PyTorch Foundation to make AI framework vendor neutral". https://arstechnica.com/information-technology/2022/09/meta-spins-off-pytorch-foundation-to-make-ai-framework-vendor-neutral/.
- ↑ "Dynamo Overview". https://pytorch.org/docs/stable/torch.compiler_dynamo_overview.html.
- ↑ "PyTorch 2.0 brings new fire to open-source machine learning". VentureBeat. 15 March 2023. https://venturebeat.com/ai/pytorch-2-0-brings-new-fire-to-open-source-machine-learning/.
- ↑ "Installing PyTorch for ROCm". 9 February 2024. https://rocm.docs.amd.com/projects/install-on-linux/en/latest/how-to/3rd-party/pytorch-install.html.
- ↑ "Introducing Accelerated PyTorch Training on Mac" (in en). https://pytorch.org/blog/introducing-accelerated-pytorch-training-on-mac/.
- ↑ "An Introduction to PyTorch – A Simple yet Powerful Deep Learning Library". 22 February 2018. https://www.analyticsvidhya.com/blog/2018/02/pytorch-tutorial/.
External links

