PyTorch¶
Wprowadzenie¶
Pytorch to rozbudowana biblioteka do rozwiązań uczenia głębokiego (deep learning), stworzona oryginalnie przez Meta, a obecnie stanowiąca część Linux Foundation. Powstała na bazie biblioteki Torch, która już nie jest rozwijana. Z założenia, Pytorch jest nastawiony na modułowość i programowanie obiektowe. Udostępnia również rozwiązania niskopoziomowe do pracy z sieciami neuronowymi.
Dostępność¶
Biblioteka jest dostępna dla języków Python, C++ oraz Java. Pytorch oferuje przystępne narzędzia do tworzenia modeli uczenia głębokiego (deep learning) i obliczeń tensorowych ze wsparciem akceleracji obliczeń zarówno dla CPU, jak i GPU.
Szczegóły¶
Pytorch wykorzystuje dwa główne mechanizmy: autograd (automatyczne różniczkowanie) oraz dynamiczne grafy obliczeniowe do wykonywania operacji na tensorach. W porównaniu do innych frameworków, umożliwia dużą swobodę w definiowaniu operacji, jakie zachodzą w trakcie obliczeń w sieciach neuronowych. Dzięki temu użytkownik może krok po kroku kontrolować zachowania modułów i funkcji.
Pytorch zapewnia także API wysokopoziomowe, które pozwala na proste tworzenie warstw i innych powszechnie używanych elementów sieci neuronowych. Pytorch wykorzystuje połączenie nisko- i wysokopoziomowych możliwości oraz łatwości debugowania dynamicznych grafów. Dzięki temu świetnie nadaje się do tworzenia własnych, nieszablonowych rozwiązań (np. w pracy naukowej).
Zrównoleglanie obliczeń na poziomie jednego i wielu węzłów możliwe jest dzięki modułowi torch.distributed
. Moduł wspiera trzy domyślne backendy do obliczeń rozproszonych (gloo, mpi oraz nccl), oraz umożliwia tworzenie własnych. Opis operacji i urządzeń obsługiwanych przez dany backend dostępny jest w dokumentacji. Przy implementacji zrównoleglenia obliczeń w Pytorchu można (i zaleca się) zastosowanie dodatkowej biblioteki, Lightning, która jest wrapperem Pytorcha.
Informacje o wydaniu¶
Obecna wersja to 2.0, wydana w marcu 2023 roku. API jest stabilne, a w przypadku wycofywania funkcjonalności twórcy z reguły utrzymują kompatybilność jeszcze przez kilka następnych wersji. Kod źródłowy jest dostępny publicznie. Kolejne wersje i rozszerzenia obecnych pojawiają się co kilka miesięcy.