PyTorch

PyTorch
Logo PyTorch
Logo programu
Autor Facebook AI Research (FAIR) i współtwórcy
Pierwsze wydanie 19 stycznia 2017 (publiczne udostępnienie)
Aktualna wersja stabilna 2.15.0
(28 października 2026) [±]
Język programowania Python, C++, CUDA
System operacyjny Linux, macOS, Windows
Rodzaj biblioteka programistyczna do uczenia maszynowego
Licencja BSD, wariant trzyklauzulowy
Strona internetowa

PyTorch – wolna i otwarta biblioteka programistyczna oraz zestaw narzędzi do uczenia maszynowego, w szczególności uczenia głębokiego. Łączy obliczenia na tensorach z automatycznym wyznaczaniem pochodnych, umożliwiając konstruowanie, uczenie i wykonywanie sieci neuronowych. Obsługuje obliczenia na procesorach centralnych oraz procesorach graficznych i innych akceleratorach sprzętowych.

Podstawowy interfejs biblioteki jest przeznaczony dla języka Python; dostępny jest również interfejs C++. PyTorch wykorzystuje imperatywny model programowania, w którym przebieg obliczeń opisuje się za pomocą zwykłych instrukcji programu. Rozwiązanie to pozwala łączyć definiowanie modeli z narzędziami do diagnozowania błędów i pozostałymi bibliotekami środowiska Pythona.

Projekt powstał przy udziale zespołu Facebook AI Research, należącego do przedsiębiorstwa Facebook, późniejszej Meta. W 2022 roku objęto go strukturą organizacyjną PyTorch Foundation, działającej w ramach Linux Foundation.

Historia

Prace nad PyTorch rozpoczęto w 2016 roku z udziałem programistów związanych ze społecznością biblioteki Torch, w tym pracowników Facebooka oraz innych przedsiębiorstw i instytucji. Publiczne udostępnienie nastąpiło w styczniu 2017 roku. Datę 19 stycznia potwierdza opublikowane rok później podsumowanie, w którym twórcy wskazali ten dzień jako pierwszą rocznicę publicznego wydania biblioteki.

W pierwszym roku rozwoju wokół projektu powstały biblioteki dziedzinowe i implementacje metod opisanych w publikacjach naukowych. Obejmowały one między innymi przetwarzanie obrazów, przetwarzanie języka naturalnego oraz programowanie probabilistyczne.

15 marca 2023 roku wydano PyTorch 2.0. Jedną z głównych zmian było wprowadzenie interfejsu torch.compile, udostępniającego mechanizmy kompilacji i optymalizacji obliczeń przy zachowaniu dotychczasowego sposobu definiowania modeli.

Architektura i zasada działania

Tensory

Podstawową strukturą danych jest torch.Tensor, reprezentujący wartości skalarne oraz tablice jedno- i wielowymiarowe. Tensory służą do przechowywania danych wejściowych, wyników obliczeń i parametrów modeli. Ich właściwości określają między innymi rozmiary poszczególnych osi, typ danych oraz urządzenie, w którego pamięci znajdują się dane.

Biblioteka udostępnia operacje arytmetyczne, mnożenie macierzy, zmianę kształtu tablic i inne procedury algebry liniowej. Zapewnia także współpracę z NumPy; w odpowiednich warunkach tablica NumPy i tensor przechowywany w pamięci procesora centralnego mogą współdzielić ten sam obszar pamięci.

Różniczkowanie automatyczne

Mechanizm torch.autograd wyznacza gradienty obliczeń złożonych z obsługiwanych operacji. W trybie różniczkowania odwrotnego rejestruje zależności między operacjami, a następnie przechodzi przez utworzony graf w kierunku przeciwnym do przebiegu obliczeń. Pochodne poszczególnych operacji są składane zgodnie z regułą łańcuchową.

W standardowym trybie wykonania, określanym jako eager execution, graf różniczkowania jest odtwarzany podczas kolejnych przebiegów programu. Dzięki temu instrukcje warunkowe i pętle Pythona mogą zmieniać strukturę wykonywanych obliczeń zależnie od danych.

Interfejs C++

Biblioteka ATen stanowi podstawę operacji tensorowych. Interfejs C++ uzupełnia ją o różniczkowanie automatyczne, moduły sieci neuronowych, algorytmy optymalizacji i obsługę danych. PyTorch umożliwia również tworzenie własnych operacji w C++ i z wykorzystaniem CUDA, a następnie udostępnianie ich programom napisanym w Pythonie.

Budowa i uczenie modeli

Modele sieci neuronowych definiuje się zazwyczaj za pomocą klas dziedziczących po torch.nn.Module. Moduł może zawierać warstwy i parametry modelu, natomiast metoda forward określa przebieg obliczeń. Podczas uczenia funkcja straty służy do oceny wyniku, mechanizm różniczkowania wyznacza gradienty, a algorytm optymalizacji aktualizuje parametry.

Wybrane składniki PyTorch
SkładnikZastosowanie
torchTensory i podstawowe operacje numeryczne.
torch.autogradAutomatyczne wyznaczanie pochodnych.
torch.nnModuły i warstwy sieci neuronowych oraz funkcje straty.
torch.optimAlgorytmy aktualizacji parametrów modelu.
torch.utils.data.DatasetInterfejs udostępniający przykłady ze zbioru danych.
torch.utils.data.DataLoaderOdczyt danych, grupowanie przykładów i obsługa ich dostarczania do modelu.

Kompilacja i optymalizacja

Interfejs torch.compile umożliwia przekazanie obliczeń modelu do mechanizmów optymalizacji i generowania kodu. W architekturze przedstawionej wraz z PyTorch 2.0 TorchDynamo wyodrębnia grafy obliczeń z programu Pythona, AOTAutograd przygotowuje obliczenia różniczkowania do kompilacji, a TorchInductor generuje kod dla wybranego środowiska wykonawczego. Kompilacja jest funkcją opcjonalną; uzyskiwane przyspieszenie zależy od modelu i sprzętu.

Obliczenia rozproszone

PyTorch udostępnia mechanizmy uczenia rozproszonego. W rozwiązaniu DistributedDataParallel poszczególne procesy wykorzystują lokalne kopie modelu. Gradienty są agregowane za pomocą operacji komunikacji zbiorowej, co pozwala aktualizować parametry poszczególnych kopii w sposób zgodny.

Przesyłanie gradientów może częściowo nakładać się w czasie na pozostałe obliczenia przebiegu wstecznego. Wydajność tej metody zależy między innymi od struktury modelu, ilości przesyłanych danych i możliwości komunikacyjnych infrastruktury.

Biblioteki powiązane i zastosowania

TorchVision udostępnia zbiory danych, architektury modeli, wytrenowane wagi i przekształcenia wykorzystywane w analizie obrazów. Obsługiwane zadania obejmują między innymi klasyfikację obrazów, wykrywanie obiektów i segmentację.

Przykładem projektu wykorzystującego PyTorch do programowania probabilistycznego jest Pyro, opracowane w Uber AI Labs, jednostce badawczej przedsiębiorstwa Uber. Pyro łączy opis modeli probabilistycznych z obliczeniami tensorowymi i automatycznym różniczkowaniem zapewnianymi przez PyTorch.

Obsługiwane środowiska i odtwarzalność

PyTorch jest dostępny dla systemów Linux, macOS i Windows. Zakres obsługi akceleratorów zależy od systemu operacyjnego, wersji biblioteki oraz konfiguracji sprzętu i oprogramowania.

Dokumentacja projektu wskazuje, że pełna zgodność wyników numerycznych między wersjami biblioteki i platformami sprzętowymi nie jest gwarantowana. Ustalenie stanów początkowych generatorów liczb pseudolosowych oraz wybór algorytmów deterministycznych ograniczają zmienność w określonym środowisku, lecz mogą zwiększać koszt obliczeń. Identyczna inicjalizacja generatora nie zapewnia sama w sobie jednakowych wyników na CPU i GPU.

Zarządzanie projektem i licencja

12 września 2022 roku ogłoszono utworzenie PyTorch Foundation w ramach Linux Foundation. Do jej członków założycieli należały AMD, Amazon Web Services, Google Cloud, Meta, Microsoft Azure i NVIDIA. Fundacja zapewnia projektowi wsparcie organizacyjne i strukturę współpracy między uczestniczącymi podmiotami. Zgodnie z ogłoszonym modelem zarządzania decyzje techniczne pozostają w gestii opiekunów poszczególnych części projektu.

Kod źródłowy jest publikowany w serwisie GitHub na trzyklauzulowej licencji BSD, dopuszczającej użytkowanie, modyfikowanie i rozpowszechnianie oprogramowania na określonych w niej warunkach.

Zobacz też

Przypisy

  1. 1 2 3 The PyTorch Team, PyTorch, a year in… [online], pytorch.org, 19 stycznia 2018 [dostęp 2026-09-10] (ang.).
  2. 1 2 3 4 PyTorch: Tensors and Dynamic neural networks in Python with strong GPU acceleration [online], GitHub [dostęp 2026-09-10] (ang.).
  3. ↑ Adam Paszke, Sam Gross, Francisco Massa i inni, PyTorch: An Imperative Style, High-Performance Deep Learning Library, „Advances in Neural Information Processing Systems”, t. 32, 2019.
  4. 1 2 PyTorch C++ API [online], docs.pytorch.org [dostęp 2026-09-10] (ang.).
  5. 1 2 3 Soumith Chintala, PyTorch strengthens its governance by joining the Linux Foundation [online], pytorch.org, 12 września 2022 [dostęp 2026-09-10] (ang.).
  6. 1 2 PyTorch 2.0: Our next generation release that is faster, more Pythonic and Dynamic as ever [online], pytorch.org, 15 marca 2023 [dostęp 2026-09-10] (ang.).
  7. 1 2 Tensors [online], PyTorch Tutorials [dostęp 2026-09-10] (ang.).
  8. 1 2 Autograd mechanics [online], PyTorch 2.9 documentation [dostęp 2026-09-10] (ang.).
  9. 1 2 3 4 Quickstart [online], PyTorch Tutorials [dostęp 2026-09-10] (ang.).
  10. 1 2 Distributed Data Parallel [online], PyTorch 2.9 documentation [dostęp 2026-09-10] (ang.).
  11. ↑ TorchVision [online], docs.pytorch.org [dostęp 2026-09-10] (ang.).
  12. ↑ Uber AI Labs Open Sources Pyro, a Deep Probabilistic Programming Language [online], Uber Blog [dostęp 2026-09-10] (ang.).
  13. ↑ Start Locally [online], pytorch.org [dostęp 2026-09-10] (ang.).
  14. ↑ Reproducibility [online], PyTorch 2.9 documentation [dostęp 2026-09-10] (ang.).
  15. ↑ Meta Transitions PyTorch to the Linux Foundation, Further Accelerating AI/ML Open Source Collaboration [online], Linux Foundation, 12 września 2022 [dostęp 2026-09-10] (ang.).
  16. ↑ PyTorch — LICENSE [online], GitHub [dostęp 2026-09-10] (ang.).

Bibliografia

Linki zewnętrzne