Osoby obeznane z tematyką głębokiego uczenia z pewnością nie raz natknęły się na porównanie PyTorch i TensorFlow.
PyTorch i TensorFlow to dwa najczęściej wykorzystywane środowiska do tworzenia modeli głębokiego uczenia. Niniejszy artykuł przedstawia dogłębne omówienie najważniejszych cech obu platform, aby ułatwić wybór odpowiedniego narzędzia do kolejnego projektu związanego z głębokim uczeniem.
W dalszej części artykułu najpierw przybliżymy obie platformy: PyTorch i TensorFlow, a następnie omówimy oferowane przez nie funkcje.
Zacznijmy!
Czym jest PyTorch?
PyTorch to otwarta platforma do tworzenia modeli uczenia maszynowego i głębokiego uczenia, znajdująca zastosowanie w rozmaitych obszarach, w tym w przetwarzaniu języka naturalnego i uczeniu maszynowym.
Jest to framework napisany w Pythonie, stworzony przez Meta AI (wcześniej Facebook AI) w 2016 roku. Jego bazą był pakiet Torch, napisany w języku Lua.
Niedawno Meta AI udostępniła PyTorch 2.0. Nowa wersja przynosi między innymi ulepszoną obsługę uczenia rozproszonego, kompilacji modeli oraz grafowych sieci neuronowych (GNN).
Czym jest TensorFlow?
TensorFlow, wprowadzony w 2014 roku przez Google, to rozbudowana i otwarta platforma do uczenia maszynowego. Oferuje narzędzia do przygotowania danych, wdrażania modeli oraz MLOps.
Dzięki TensorFlow zyskujemy wsparcie programistyczne na wielu platformach oraz kompleksowe wsparcie na wszystkich etapach cyklu życia uczenia maszynowego.
PyTorch kontra TensorFlow
Zarówno PyTorch, jak i TensorFlow cieszą się ogromną popularnością w społeczności zajmującej się głębokim uczeniem. Obie platformy zapewniają wbudowaną obsługę dla większości zastosowań, z którymi przyjdzie nam pracować.
Źródło obrazu: star-history.com
Poniżej przedstawiamy podsumowanie kluczowych cech PyTorch i TensorFlow, a także wskazujemy sytuacje, w których wybór jednej platformy może być bardziej korzystny od drugiej.
#1. Biblioteka zbiorów danych i wstępnie wytrenowanych modeli
Frameworki do głębokiego uczenia powinny oferować szeroki zakres zasobów. Często nie chcemy tworzyć modelu od podstaw. Zamiast tego możemy skorzystać z gotowych, wstępnie wytrenowanych modeli i dostosować je do naszych potrzeb.
Podobnie, często używane zbiory danych powinny być łatwo dostępne. Umożliwi to szybkie tworzenie modeli eksperymentalnych bez konieczności konfiguracji procesu pozyskiwania danych lub importowania i oczyszczania danych z innych źródeł.
W związku z tym pożądane jest, aby frameworki te oferowały zarówno zbiory danych, jak i wstępnie wytrenowane modele, co znacznie przyspieszy proces tworzenia modelu bazowego.
Zbiory danych i modele PyTorch
PyTorch udostępnia biblioteki takie jak torchtext, torchaudio i torchvision, przeznaczone odpowiednio do zadań przetwarzania NLP, audio i obrazów. Korzystając z PyTorch, możemy wykorzystać zestawy danych i modele oferowane przez te biblioteki, w tym:
- torchtext.datasets i torchtext.models do zbiorów danych i przetwarzania dla zadań związanych z przetwarzaniem języka naturalnego
- torchvision.datasets i torchvision.models, które oferują zbiory danych obrazów i wstępnie wytrenowane modele do zadań związanych z widzeniem komputerowym
- torchaudio.datasets i torchaudio.models do zbiorów danych, wstępnie wytrenowanych wag modeli i narzędzi do uczenia maszynowego na danych audio
Zbiory danych i modele TensorFlow
Ponadto modele PyTorch i TensorFlow można znaleźć w HuggingFace Model Hub.
#2. Wsparcie dla wdrożenia
W dyskusji PyTorch kontra TensorFlow kwestia wsparcia wdrożeniowego często odgrywa kluczową rolę.
Dobrym punktem wyjścia jest model uczenia maszynowego, który dobrze sprawdza się w lokalnym środowisku programistycznym. Jednak, aby w pełni wykorzystać potencjał modeli uczenia maszynowego, niezbędne jest ich wdrożenie w środowisku produkcyjnym i stałe monitorowanie.
W tym rozdziale przyjrzymy się funkcjom, które zarówno PyTorch, jak i TensorFlow oferują w zakresie wdrażania modeli uczenia maszynowego w środowisku produkcyjnym.
TensorFlow Extended (TFX)
TensorFlow Extended, w skrócie TFX, to platforma do wdrażania oparta na TensorFlow. Zapewnia funkcjonalności pomocne w organizacji i utrzymaniu procesów uczenia maszynowego. Oferuje między innymi funkcje weryfikacji poprawności danych i ich transformacji.
Dzięki TensorFlow Serving można wdrażać modele uczenia maszynowego w środowiskach produkcyjnych.
TorchServe
Powszechnie uważa się, że PyTorch jest popularny w środowisku badawczym, podczas gdy TensorFlow dominuje w branży. Jednak w ostatnim czasie obie platformy zyskały szerokie zastosowanie w obu tych obszarach.
Podobnie jak TensorFlow Serving, PyTorch oferuje TorchServe, łatwą w obsłudze platformę, która ułatwia wdrażanie modeli PyTorch w środowisku produkcyjnym. Dodatkowo, TensorFlow Lite umożliwia wdrażanie modeli uczenia maszynowego na urządzeniach mobilnych i innych urządzeniach brzegowych.
Mimo że obie platformy zapewniają wsparcie wdrożeniowe, TensorFlow oferuje natywną obsługę wdrażania modeli. To sprawia, że jest on często wybierany do zastosowań produkcyjnych.
#3. Funkcje ułatwiające interpretację modelu
Modele głębokiego uczenia są wykorzystywane w obszarach takich jak medycyna i finanse. Jeśli jednak modele te są „czarnymi skrzynkami”, których wyniki są trudne do interpretacji, staje się to wyzwaniem.
Dlatego też rozwinął się obszar interpretowalnego uczenia maszynowego (lub wyjaśnialnego uczenia maszynowego), który ma na celu opracowanie metod wyjaśniania działania sieci neuronowych i innych modeli uczenia maszynowego.
Interpretowalność jest kluczowa dla lepszego zrozumienia działania sieci neuronowych. Sprawdźmy, jakie funkcje oferują PyTorch i TensorFlow w tym zakresie.
PyTorch Captum
PyTorch Captum, biblioteka do interpretacji modeli dla PyTorch, udostępnia szereg funkcji ułatwiających interpretację modeli.
Funkcje te obejmują metody atrybucji, takie jak:
- Zintegrowane gradienty
- LIME, SHAP
- DeepLIFT
- GradCAM i jego warianty
- Metody atrybucji warstw
TensorFlow Explain (tf-explain)
Tensorflow Explain (tf-explain) to biblioteka, która umożliwia interpretację działania sieci neuronowych, oferując takie funkcje jak:
- Zintegrowane gradienty
- GradCAM
- SmoothGrad
- Gradienty waniliowe i inne.
Do tej pory omówiliśmy funkcje ułatwiające interpretację. Przejdźmy teraz do kolejnego ważnego aspektu – prywatności.
#4. Obsługa uczenia maszynowego z zachowaniem prywatności
Użyteczność modeli uczenia maszynowego zależy od dostępu do rzeczywistych danych. Ma to jednak swoją wadę: potencjalną utratę prywatności danych. W ostatnim czasie poczyniono znaczne postępy w dziedzinie technik uczenia maszynowego chroniących prywatność, takich jak prywatność różnicowa i uczenie federacyjne.
PyTorch Opacus
Szkolenie modeli z zastosowaniem prywatności różnicowej zapewnia, że poszczególne rekordy nadal przekazują przydatne informacje o zbiorze danych jako całości.
PyTorch Opacus umożliwia trenowanie modeli z uwzględnieniem prywatności różnicowej. Aby dowiedzieć się, jak wdrożyć szkolenie modelu z zachowaniem prywatności różnicowej, zapoznaj się z wprowadzeniem do Opacus.
TensorFlow Federated
Uczenie federacyjne eliminuje konieczność centralnego gromadzenia i przetwarzania danych. W środowisku federacyjnym dane nigdy nie opuszczają właściciela ani lokalizacji. W związku z tym uczenie federacyjne ułatwia lepsze zarządzanie danymi.
TensorFlow Federated oferuje funkcjonalność do uczenia modeli maszynowego na zdecentralizowanych danych.
#5. Łatwość nauki
PyTorch to framework do głębokiego uczenia napisany w Pythonie. Do wygodnego kodowania w PyTorch wymagana jest średniozaawansowana znajomość Pythona, w tym dobra znajomość koncepcji programowania obiektowego, takich jak dziedziczenie.
Z drugiej strony, w TensorFlow można korzystać z API Keras. Ten interfejs API wysokiego poziomu ukrywa niektóre szczegóły implementacji niskiego poziomu. W efekcie, osoby rozpoczynające swoją przygodę z budowaniem modeli głębokiego uczenia, mogą uznać Keras za łatwiejszy w użyciu.
PyTorch kontra TensorFlow: przegląd
Do tej pory omówiliśmy funkcje PyTorch i TensorFlow. Oto zbiorcze porównanie:
FunkcjaPyTorchTensorFlowZbiory danych i wstępnie wytrenowane modeleBiblioteki torchtext, torchaudio i torchvisionBiblioteka zestawów danych i wstępnie wytrenowanych modeliZbiory danych i wstępnie wytrenowane modele w torchtext, torchaudio i torchvisionWdrożenieTorchServe do obsługi modeli uczenia maszynowegoTensorFlow Serving i TensorFlow Lite do wdrożeń modeliInterpretacja modeliPyTorch Captumtf-explainUczenie maszynowe z zachowaniem prywatnościPyTorch Opacus do szkolenia modeli z prywatnością różnicowąTensorFlow Federated do uczenia federacyjnegoŁatwość naukiWymaga średniozaawansowanej znajomości PythonaStosunkowo łatwiejszy do nauczenia się i użytkowania
Zasoby edukacyjne
Na koniec, przedstawiamy kilka przydatnych źródeł do nauki PyTorch i TensorFlow. To nie jest pełna lista, a raczej starannie wyselekcjonowany zbiór zasobów, które pozwolą Ci szybko zapoznać się z tymi platformami.
#1. Głębokie uczenie z PyTorch: 60-minutowy Blitz
60-minutowy samouczek błyskawiczny na oficjalnej stronie PyTorch to doskonałe źródło do nauki PyTorch dla początkujących.
Ten samouczek pomoże Ci rozpocząć pracę z podstawami PyTorch, takimi jak tensory i autografy, oraz zbudować prostą sieć neuronową do klasyfikacji obrazów za pomocą PyTorch.
#2. Głębokie uczenie z PyTorch: od zera do sieci GAN
„Deep Learning with PyTorch: Zero to GANs” od Jovian.ai to kolejne kompleksowe źródło do nauki głębokiego uczenia z wykorzystaniem PyTorch. W ciągu około sześciu tygodni można nauczyć się:
- Podstaw PyTorch: tensorów i gradientów
- Regresji liniowej w PyTorch
- Budowania głębokich sieci neuronowych, ConvNet i ResNet w PyTorch
- Budowania generatywnych sieci kontradyktoryjnych (GAN)
#3. Kompletny kurs TensorFlow 2.0
Osobom zainteresowanym TensorFlow polecamy kompletny kurs TensorFlow 2.0 na kanale społeczności freeCodeCamp.
#4. TensorFlow – interfejs API sieci neuronowej głębokiego uczenia Pythona firmy DeepLizard
Inny świetny kurs TensorFlow dla początkujących pochodzi od DeepLizard. W tym kursie poznasz podstawy głębokiego uczenia, w tym:
- Ładowanie i wstępne przetwarzanie zestawów danych
- Budowanie waniliowych sieci neuronowych
- Budowę konwolucyjnych sieci neuronowych (CNN)
Podsumowanie
Podsumowując, ten artykuł dostarczył ogólnego przeglądu PyTorch i TensorFlow. Wybór optymalnego frameworku zależy od projektu, nad którym pracujesz. Należy wziąć pod uwagę takie aspekty jak obsługa wdrażania, możliwości wyjaśniania i inne.
Czy jesteś programistą Pythona i chcesz poznać te frameworki? Jeśli tak, rozważ zapoznanie się z jednym lub kilkoma zasobami udostępnionymi powyżej.
A jeśli interesuje Cię NLP, koniecznie sprawdź tę listę kursów przetwarzania języka naturalnego. Miłej nauki!
newsblog.pl
Maciej – redaktor, pasjonat technologii i samozwańczy pogromca błędów w systemie Windows. Zna Linuxa lepiej niż własną lodówkę, a kawa to jego główne źródło zasilania. Pisze, testuje, naprawia – i czasem nawet wyłącza i włącza ponownie. W wolnych chwilach udaje, że odpoczywa, ale i tak kończy z laptopem na kolanach.