PyTorch
| Оригинални аутор(и) | Gregory Chanan Soumith Chintala Sam Gross Adam Paszke |
|---|---|
| Стабилно издање | 2.11.0
/ 23 март 2026 |
| Репозиторијум | github.com/pytorch/pytorch |
| Написан у | Python, C++, CUDA |
| Оперативни систем | Linux, macOS, Windows |
| Платформа | IA-32, x86-64, ARM64 |
| Доступан на | Енглески |
| Лиценца | BSD-3 |
| Веб-сајт | pytorch.org |
PyTorch је библиотека отвореног кода за дубоко учење, оригинално развијена од стране Meta Platforms, а тренутно развијена уз подршку Linux Фондације. Наследник Torch-а, PyTorch, пружа API високог нивоа који се надовезује на оптимизоване, имплементације алгоритама и архитектура дубоког учења ниског нивоа, као што су Transformer или SGD. Овај API поједностављује обуку модела и инференца на само неколико линија кода. PyTorch омогућава аутоматску паралелизацију обуке и интерно имплементира CUDA повезивања која додатно убрзавају обуку модела коришћењем GPU ресурса.
PyTorch користи тензоре (енгл. tensors) као основни тип података, слично као NumPy. Обуку олакшава обрнути систем аутоматског диференцирања, Autograd, који конструише усмерени ациклични граф операција (и њихових аргумената) које извршава модел током свог пролаза унапред (енгл. forward pass). Након извршавања израчунавања функције губитка, примењује се бекпропагација. [1]
Историја
[уреди | уреди извор]Године 2001, Torch је написан и објављен под GPL лиценцом. То је била библиотека за машинско учење написана у C++ и CUDA, која је подржавала методе укључујући неуронске мреже, машине вектора подршке (SVM), скривене Марковљеве моделе итд. [2] Око 2010. године, написана је поново од стране Ронана Колобер, Клемента Фарабет и Кораја Кавукуоглу као Torch7 или LuaTorch тако да је бекенд био у C-у, а фронтенд у Lua-и. [3] Средином 2016. године, неки програмери су га рефакторисали како би раздвојили фронтенд и бекенд, са снажним утицајем torch-autograd-а и Chainer-а. Заузврат, на torch-autograd је утицао HIPS/autograd. [4] Развој Torch7 је престао 2018. године и обухваћен је пројектом PyTorch. [5]
Мета (раније позната као Фејсбук) користи и PyTorch и Convolutional Architecture for Fast Feature Embedding (Caffe2), али модели дефинисани овим оквирима били су међусобно некомпатибилни. Пројекат Open Neural Network Exchange (ONNX) креирали су Мета и Мајкрософт у септембру 2017. године како би одвојили оквире за дубоко учење од хардверски специфичних времена извршавања, омогућавајући конвертовање модела између оквира и оптимизацију за провајдере извршавања попут NVIDIA-иног TensorRT-а. [6] Caffe2 је спојен са PyTorch-ом крајем марта 2018. [7] У септембру 2022. године, Мета је објавила да ће PyTorch-ом управљати независна PyTorch фондација, новостворена подружница Linux фондације. [8]
PyTorch 2.0 је званично објављена 15. март 2023. године. Увела је ткз. TorchDynamo, компајлер на нивоу Пајтона који убрзава извршавање кода за два пута, са великим унапређењима у обуци модела кроз све значајније cloud платформе.[9] [10]
PyTorch тензори
[уреди | уреди извор]PyTorch библиотека дефинише класу под називом Tensor ( torch.Tensor ) за складиштење и рад на хомогеним вишедимензионалним правоугаоним низовима бројева. PyTorch подржава различите подтипове вишедимензионалних низова, [11] или Тензоре. [12] PyTorch Тензори су слични NumPy Низовима, али се могу користити и помоћу NVIDIA GPU-а који подржава CUDA . PyTorch је такође развијао подршку за друге GPU платформе, на пример, AMD-ов ROCm [13] и Apple-ов Metal Framework. [14]
PyTorch неуронске мреже
[уреди | уреди извор]PyTorch библиотека дефинише модул под називом nn ( torch.nn ) за описивање неуронских мрежа и за подршку обуци. Овај модул нуди свеобухватну колекцију градивних блокова за неуронске мреже, укључујући различите слојеве и функције активације, омогућавајући прављење комплексних модела. Мреже се граде наслеђивањем из модула torch.nn и дефинисањем секвенце операција у функцији forward() .
Пример
[уреди | уреди извор]Следећи програм приказује функционалности ниског нивоа библиотеке помоћу једноставног примера.
import torch
dtype = torch.float
uredjaj = torch.device("cpu") # Извршава сва рачунања на процесору
# uredjaj = torch.device("cuda:0") # За извршавање свих рачунања на GPU
# Направи тензор и попуни га са насумичним бројевима
a = torch.randn(2, 3, device=uredjaj, dtype=dtype)
print(a)
# Излаз на конзоли: tensor([[-1.1884, 0.8498, -1.7129],
# [-0.8816, 0.1944, 0.5847]])
b = torch.randn(2, 3, device=uredjaj, dtype=dtype)
print(b)
# Излаз на конзоли: tensor([[ 0.7178, -0.8453, -1.3403],
# [ 1.3262, 1.1512, -1.7070]])
print(a * b)
# Излаз на конзоли: tensor([[-0.8530, -0.7183, 2.58],
# [-1.1692, 0.2238, -0.9981]])
print(a.sum())
# Излаз на конзоли: tensor(-2.1540)
print(a[1, 2]) # Излаз елемента који се налази у трећој колони другог реда (са почетком од нуле)
# Излаз на конзоли: tensor(0.5847)
print(a.max())
# Излаз на конзоли: tensor(0.8498)
Следећи блок кода дефинише неуронску мрежу са линеарним слојевима користећи nn модул.
from torch import nn # Импортовање nn суб-модула из PyTorch библиотеке
class NeuralNetwork(nn.Module): # Неуронске мреже су дефинисане као класе
def __init__(self): # Слојеви и промењиве су дефинисане у __init__ методи
super().__init__() # Мора се налазити у свакој мрежи.
self.flatten = nn.Flatten() # Креира слој за спљоштавање (flattening layer).
self.linear_relu_stack = nn.Sequential( # Креира секвенцу слојева
nn.Linear(28 * 28, 512), # Линеарни Слојеви имају улазни и излазни облик (димензије)
nn.ReLU(), # ReLU је један од многих активационих функција које nn омогућава
nn.Linear(512, 512),
nn.ReLU(),
nn.Linear(512, 10),
)
def forward(self, x): # Ова метода дефинише пролаз унапред (forward pass)
x = self.flatten(x)
logits = self.linear_relu_stack(x)
return logits
Погледај такође
[уреди | уреди извор]- Python
- Машинско учење
- Дубоко машинско учење
- Неуронске мреже
- Функције губитка
- Активационе функције
- Бекпропагација
- PyTorch Lightning
Референце
[уреди | уреди извор]- ^ „Autograd Mechanics”. PyTorch Documentation. Приступљено 13. 11. 2025.
- ^ „Torch Library”. Архивирано из оригинала 31. 10. 2001. г..
- ^ Collobert, Ronan; Kavukcuoglu, Koray; Farabet, Clément (2012), Montavon, Grégoire; Orr, Geneviève B.; Müller, Klaus-Robert, ур., , „Implementing Neural Networks Efficiently”, Neural Networks: Tricks of the Trade: Second Edition (на језику: енглески), Berlin, Heidelberg: Springer: 537—557, ISBN 978-3-642-35289-8, doi:10.1007/978-3-642-35289-8_28, Приступљено 2025-06-10
- ^ , HIPS/autograd, Formerly: Harvard Intelligent Probabilistic Systems Group -- Now at Princeton, 2026-04-06, Приступљено 2026-04-06
- ^ Chintala, Soumith (2023-12-17). „PyTorch's design origins”. soumith.ch. Приступљено 2026-02-07.
- ^ Quach, K. (7. 9. 2017). „Microsoft, Facebook tie the knot on AI to take on Google”. The Register. „The goal is to create a 'universal translator' for AI... [allowing] developers to move their models between different frameworks and hardware runtimes.”
- ^ „Caffe2 Merges With PyTorch”. 2. 4. 2018. Архивирано из оригинала 30. 3. 2019. г. Приступљено 2. 1. 2019.
- ^ Edwards, Benj (12. 9. 2022). „Meta spins off PyTorch Foundation to make AI framework vendor neutral”. Ars Technica. Архивирано из оригинала 13. 9. 2022. г. Приступљено 13. 9. 2022.
- ^ „Dynamo Overview”.
- ^ „PyTorch 2.0 brings new fire to open-source machine learning”. VentureBeat. 15. 3. 2023. Архивирано из оригинала 16. 3. 2023. г. Приступљено 16. 3. 2023.
- ^ „PyTorch Tensor vs NumPy Array”. GeeksforGeeks (на језику: енглески). 2024-03-01. Приступљено 2026-04-07.
- ^ „An Introduction to PyTorch – A Simple yet Powerful Deep Learning Library”. analyticsvidhya.com. 22. 2. 2018. Архивирано из оригинала 22. 10. 2019. г. Приступљено 11. 6. 2018.
- ^ „Installing PyTorch for ROCm”. rocm.docs.amd.com. 9. 2. 2024.
- ^ „Introducing Accelerated PyTorch Training on Mac”. pytorch.org (на језику: енглески). Архивирано из оригинала 29. 1. 2024. г. Приступљено 4. 6. 2022.