PyTorch is a
machine learning
Machine learning (ML) is a field of study in artificial intelligence concerned with the development and study of Computational statistics, statistical algorithms that can learn from data and generalise to unseen data, and thus perform Task ( ...
library
A library is a collection of Book, books, and possibly other Document, materials and Media (communication), media, that is accessible for use by its members and members of allied institutions. Libraries provide physical (hard copies) or electron ...
based on the
Torch
A torch is a stick with combustible material at one end which can be used as a light source or to set something on fire. Torches have been used throughout history and are still used in processions, symbolic and religious events, and in juggl ...
library, used for applications such as
computer vision
Computer vision tasks include methods for image sensor, acquiring, Image processing, processing, Image analysis, analyzing, and understanding digital images, and extraction of high-dimensional data from the real world in order to produce numerical ...
and
natural language processing
Natural language processing (NLP) is a subfield of computer science and especially artificial intelligence. It is primarily concerned with providing computers with the ability to process data encoded in natural language and is thus closely related ...
, originally developed by
Meta AI and now part of the
Linux Foundation
The Linux Foundation (LF) is a non-profit organization established in 2000 to support Linux development and open-source software projects.
Background
The Linux Foundation started as Open Source Development Labs in 2000 to standardize and prom ...
umbrella. It is one of the most popular
deep learning
Deep learning is a subset of machine learning that focuses on utilizing multilayered neural networks to perform tasks such as classification, regression, and representation learning. The field takes inspiration from biological neuroscience a ...
frameworks, alongside others such as
TensorFlow
TensorFlow is a Library (computing), software library for machine learning and artificial intelligence. It can be used across a range of tasks, but is used mainly for Types of artificial neural networks#Training, training and Statistical infer ...
, offering
free and open-source software
Free and open-source software (FOSS) is software available under a license that grants users the right to use, modify, and distribute the software modified or not to everyone free of charge. FOSS is an inclusive umbrella term encompassing free ...
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.
A number of pieces of
deep learning
Deep learning is a subset of machine learning that focuses on utilizing multilayered neural networks to perform tasks such as classification, regression, and representation learning. The field takes inspiration from biological neuroscience a ...
software are built on top of PyTorch, including
Tesla Autopilot,
Uber
Uber Technologies, Inc. is an American multinational transportation company that provides Ridesharing company, ride-hailing services, courier services, food delivery, and freight transport. It is headquartered in San Francisco, California, a ...
's Pyro,
Hugging Face's Transformers, and Catalyst.
PyTorch provides two high-level features:
* Tensor computing (like
NumPy) with strong acceleration via
graphics processing unit
A graphics processing unit (GPU) is a specialized electronic circuit designed for digital image processing and to accelerate computer graphics, being present either as a discrete video card or embedded on motherboards, mobile phones, personal ...
s (GPU)
*
Deep neural networks
Deep learning is a subset of machine learning that focuses on utilizing multilayered neural networks to perform tasks such as classification, regression, and representation learning. The field takes inspiration from biological neuroscience a ...
built on a tape-based
automatic differentiation system
History
In 2001, Torch was written and released under a
GPL license
The GNU General Public Licenses (GNU GPL or simply GPL) are a series of widely used free software licenses, or ''copyleft'' licenses, that guarantee end users the freedom to run, study, share, or modify the software. The GPL was the first ...
. It was a machine-learning library written in C++, supporting methods including neural networks,
SVM,
hidden Markov models, etc. It was improved to Torch7 in 2012. Development on Torch ceased in 2018 and was subsumed by the PyTorch project.
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
Microsoft Corporation is an American multinational corporation and technology company, technology conglomerate headquartered in Redmond, Washington. Founded in 1975, the company became influential in the History of personal computers#The ear ...
in September 2017 for converting models between frameworks. Caffe2 was merged into PyTorch at the end of March 2018. In September 2022, Meta announced that PyTorch would be governed by the independent PyTorch Foundation, a newly created subsidiary of the
Linux Foundation
The Linux Foundation (LF) is a non-profit organization established in 2000 to support Linux development and open-source software projects.
Background
The Linux Foundation started as Open Source Development Labs in 2000 to standardize and prom ...
.
PyTorch 2.0 was released on 15 March 2023, introducing
TorchDynamo, a Python-level
compiler
In computing, a compiler is a computer program that Translator (computing), translates computer code written in one programming language (the ''source'' language) into another language (the ''target'' language). The name "compiler" is primaril ...
that makes code run up to 2x faster, along with significant improvements in training and inference performance across major
cloud platforms.
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 a
CUDA
In computing, CUDA (Compute Unified Device Architecture) is a proprietary parallel computing platform and application programming interface (API) that allows software to use certain types of graphics processing units (GPUs) for accelerated gene ...
-capable
NVIDIA
Nvidia Corporation ( ) is an American multinational corporation and technology company headquartered in Santa Clara, California, and incorporated in Delaware. Founded in 1993 by Jensen Huang (president and CEO), Chris Malachowsky, and Curti ...
GPU. PyTorch has also been developing support for other GPU platforms, for example, AMD's
ROCm and Apple's
Metal Framework.
PyTorch supports various sub-types of Tensors.
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
Linear algebra is the branch of mathematics concerning linear equations such as
:a_1x_1+\cdots +a_nx_n=b,
linear maps such as
:(x_1, \ldots, x_n) \mapsto a_1x_1+\cdots +a_nx_n,
and their representations in vector spaces and through matrix (mathemat ...
. 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 , 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
*
Comparison of deep learning software
The following tables compare notable software frameworks, libraries, and computer programs for deep learning applications.
Deep learning software by name
Comparison of machine learning model compatibility
See also
* Comparison of numeri ...
*
Differentiable programming
*
DeepSpeed
References
External links
*
{{Differentiable computing
Deep learning software
Facebook software
Free science software
Free software programmed in C
Free software programmed in Python
Open-source artificial intelligence
Python (programming language) scientific libraries
Software using the BSD license