Którego frameworka do głębokiego uczenia się użyć?

Jeśli jesteś zaznajomiony z głębokim uczeniem, prawdopodobnie słyszałeś zwrot PyTorch vs. TensorFlow więcej niż raz.

PyTorch i TensorFlow to dwa najpopularniejsze frameworki do głębokiego uczenia. Ten przewodnik przedstawia kompleksowy przegląd najistotniejszych funkcji tych dwóch platform — aby pomóc Ci zdecydować, której struktury użyć — w następnym projekcie głębokiego uczenia się.

W tym artykule najpierw przedstawimy dwie platformy: PyTorch i TensorFlow. A następnie podsumuj funkcje, które oferują.

Zaczynajmy!

Co to jest PyTorch?

PyTorch to platforma typu open source do budowania modeli uczenia maszynowego i uczenia głębokiego dla różnych aplikacji, w tym przetwarzania języka naturalnego i uczenia maszynowego.

Jest to framework Pythonic opracowany przez Meta AI (niż Facebook AI) w 2016 roku, oparty na Torch, pakiecie napisanym w Lua.

Niedawno Meta AI wydało PyTorch 2.0. Nowa wersja oferuje między innymi lepszą obsługę uczenia rozproszonego, kompilacji modeli i grafowych sieci neuronowych (GNN).

Co to jest TensorFlow?

Wprowadzony w 2014 r. TensorFlow to kompleksowa platforma uczenia maszynowego o otwartym kodzie źródłowym firmy Google. Jest wyposażony w funkcje do przygotowywania danych, wdrażania modeli i MLOps.

Dzięki TensorFlow otrzymujesz wieloplatformowe wsparcie programistyczne i gotowe wsparcie na wszystkich etapach cyklu życia uczenia maszynowego.

PyTorch kontra TensorFlow

Zarówno PyTorch, jak i TensorFlow są bardzo popularnymi frameworkami w społeczności głębokiego uczenia się. W przypadku większości aplikacji, nad którymi chcesz pracować, obie te platformy zapewniają wbudowaną obsługę.

Źródło obrazu: star-history.com

Tutaj podsumujemy kluczowe funkcje zarówno PyTorch, jak i TensorFlow, a także zidentyfikujemy przypadki użycia, w których możesz preferować jedną platformę od drugiej.

# 1. Biblioteka zestawów danych i wstępnie wytrenowanych modeli

Ramy głębokiego uczenia powinny być dostarczane z bateriami. Często nie chcesz kodować modelu od zera. Zamiast tego możesz wykorzystać wstępnie wytrenowane modele i dostosować je do swojego przypadku użycia.

Podobnie chcielibyśmy, aby często używane zestawy danych były łatwo dostępne. Umożliwiłoby nam to szybkie tworzenie modeli eksperymentalnych bez konieczności konfigurowania potoku gromadzenia danych lub importowania i czyszczenia danych z innych źródeł.

W tym celu chcielibyśmy, aby te struktury były dostarczane zarówno z zestawami danych, jak i wstępnie wytrenowanymi modelami, abyśmy mogli znacznie szybciej uzyskać model bazowy.

Zestawy danych i modele PyTorch

PyTorch ma biblioteki, takie jak torchtext, torchaudio i torchvision, odpowiednio do zadań przetwarzania NLP, audio i obrazu. Kiedy więc pracujesz z PyTorch, możesz wykorzystać zestawy danych i modele dostarczane przez te biblioteki, w tym:

  • torchtext.datasets i torchtext.models dla zbiorów danych i przetwarzania dla zadań związanych z przetwarzaniem języka naturalnego
  • torchvision.datasets i torchvision.models zapewniają zestawy danych obrazu i wstępnie wytrenowane modele do zadań związanych z wizją komputerową
  • torchaudio.datasets i torchaudio.models dla zestawów danych i wstępnie wytrenowanych wag modeli i narzędzi do uczenia maszynowego na audio

Zestawy danych i modele TensorFlow

Dodatkowo możesz szukać zarówno modeli PyTorch, jak i TensorFlow w HuggingFace Model Hub.

#2. Wsparcie dla wdrożenia

W debacie PyTorch vs. TensorFlow wsparcie dla wdrożenia często zajmuje centralne miejsce.

Dobrym punktem wyjścia jest model uczenia maszynowego, który doskonale sprawdza się w lokalnym środowisku programistycznym. Aby jednak czerpać wartość z modeli uczenia maszynowego, ważne jest wdrożenie ich w środowisku produkcyjnym i ciągłe monitorowanie.

W tej sekcji przyjrzymy się funkcjom, które zarówno PyTorch, jak i TensorFlow oferują do wdrażania modeli uczenia maszynowego w środowisku produkcyjnym.

Rozszerzony TensorFlow (TFX)

TensorFlow Extended, w skrócie tfx, to platforma wdrażania oparta na TensorFlow. Zapewnia funkcjonalność, która pomaga organizować i utrzymywać potoki uczenia maszynowego. Zapewnia między innymi funkcje sprawdzania poprawności danych i transformacji danych.

Dzięki TensorFlow Serving możesz wdrażać modele uczenia maszynowego w środowiskach produkcyjnych.

TorchServe

Istnieje powszechna opinia, że ​​PyTorch jest popularny w społeczności badawczej, podczas gdy TensorFlow jest popularny w branży. Jednak ostatnio oba te frameworki znalazły szerokie zastosowanie.

Podobnie jak TensorFlow Serving, PyTorch zapewnia TorchServe, łatwą w użyciu platformę, która ułatwia obsługę modeli PyTorch w środowisku produkcyjnym. Ponadto możesz również używać TensorFlow Lite do wdrażania modeli uczenia maszynowego na urządzeniach mobilnych i innych urządzeniach brzegowych.

Pomimo tego, że obie platformy zapewniają wsparcie wdrażania, TensorFlow natywnie obsługuje wdrażanie modeli. Jest to zatem preferowany wybór w środowiskach produkcyjnych.

#3. Funkcje umożliwiające interpretację modelu

Możesz tworzyć modele uczenia głębokiego dla aplikacji używanych w takich dziedzinach, jak opieka zdrowotna i finanse. Ale jeśli modele są czarnymi skrzynkami, które generują określoną etykietę lub prognozę, interpretacja prognoz modelu stanowi wyzwanie.

Doprowadziło to do interpretowalnego uczenia maszynowego (lub wytłumaczalnego uczenia maszynowego) w celu opracowania podejść do wyjaśnienia działania sieci neuronowych i innych modeli uczenia maszynowego.

Dlatego interpretowalność jest bardzo ważna dla głębokiego uczenia się i lepszego zrozumienia działania sieci neuronowych. Zobaczymy, jakie funkcje oferują PyTorch i TensorFlow za to samo.

Kapituła PyTorch

PyTorch Captum, biblioteka interpretacji modelu dla PyTorch, zapewnia kilka funkcji umożliwiających interpretację modelu.

Te funkcje obejmują metody atrybucji, takie jak:

  • Zintegrowane gradienty
  • LIMONKA, SHAP
  • DeepLIFT
  • GradCAM i warianty
  • Metody atrybucji warstw

Wyjaśnienie TensorFlow (tf-explain)

Tensorflow Explain (tf-explain) to biblioteka zapewniająca funkcjonalność umożliwiającą interpretację sieci neuronowej, w tym:

  • Zintegrowane gradienty
  • GradCAM
  • SmoothGrad
  • Gradienty waniliowe i nie tylko.

Do tej pory widzieliśmy funkcje umożliwiające interpretację. Przejdźmy do kolejnego ważnego aspektu – prywatności.

#4. Obsługa uczenia maszynowego chroniącego prywatność

Przydatność modeli uczenia maszynowego zależy od dostępu do rzeczywistych danych. Ma to jednak wadę polegającą na utracie prywatności danych. Ostatnio poczyniono znaczne postępy w zakresie technik uczenia maszynowego chroniących prywatność, takich jak prywatność różnicowa i uczenie federacyjne.

PyTorch Opacus

Zróżnicowane prywatne szkolenie modeli zapewnia, że ​​poszczególne rekordy wciąż uczą się przydatnych informacji o zbiorze danych jako całości.

A PyTorch Opacus pozwala trenować modele z różnicową prywatnością. Aby dowiedzieć się, jak zaimplementować szkolenie w modelu różnicowo prywatnym, zapoznaj się ze wstępem do Opacus.

Federacja TensorFlow

Federacyjne uczenie się eliminuje potrzebę scentralizowanego gromadzenia i przetwarzania danych. W środowisku federacyjnym dane nigdy nie opuszczają właściciela ani lokalu. Dlatego federacyjne uczenie się ułatwia lepsze zarządzanie danymi.

TensorFlow Federated zapewnia funkcjonalność uczenia modeli uczenia maszynowego na zdecentralizowanych danych.

#5. Łatwość uczenia się

PyTorch to framework do głębokiego uczenia w języku Python. Wygodne kodowanie w PyTorch wymaga średniozaawansowanej znajomości języka Python, w tym dobrej znajomości koncepcji programowania obiektowego, takich jak dziedziczenie.

Z drugiej strony, dzięki TensorFlow możesz korzystać z API Keras. Ten interfejs API wysokiego poziomu usuwa niektóre szczegóły implementacji niskiego poziomu. W rezultacie, jeśli dopiero zaczynasz budowanie modeli głębokiego uczenia się, Keras może okazać się łatwiejszy w użyciu.

PyTorch kontra TensorFlow: przegląd

Do tej pory omówiliśmy funkcje PyTorch i TensorFlow. Oto obszerne porównanie:

FunkcjaPyTorchTensorFlowZestawy danych i wstępnie wytrenowane modele w tekście pochodni, dźwięk dotykowy i wizja pochodniBiblioteka zestawów danych i wstępnie wytrenowane modeleZestawy danych i wstępnie wytrenowane modele w tekście pochodni, torchaudio i torchvisionWdrożenieTorchServe do obsługi modeli uczenia maszynowego TensorFlow Serving i TensorFlow Lite do wdrożeń modeli Interpretacja modeliPyTorch Captumtf-explain Privacy- Zachowanie uczenia maszynowegoPyTorch Opacus do różnicowego szkolenia modeli prywatnychTensorFlow Federacja do federacyjnego uczenia maszynowegoŁatwość uczenia sięWymaga średniozaawansowanej znajomości języka Python Stosunkowo łatwiejsze do nauczenia się i używania

Zasoby edukacyjne

Na koniec zakończmy naszą dyskusję, przeglądając przydatne zasoby do nauki PyTorch i TensorFlow. To nie jest wyczerpująca lista, ale lista wyselekcjonowanych zasobów, dzięki którym szybko zapoznasz się z tymi platformami.

# 1. Głębokie uczenie się z PyTorch: 60-minutowy Blitz

60-minutowy samouczek błyskawicy na oficjalnej stronie PyTorch to doskonałe, przyjazne dla początkujących źródło do nauki PyTorch.

Ten samouczek pomoże Ci rozpocząć pracę z podstawami Pytorch, takimi jak tensory i autografy, oraz zbudować podstawową sieć neuronową do klasyfikacji obrazów za pomocą PyTorch.

#2. Głębokie uczenie się z PyTorch: od zera do sieci GAN

Deep Learning with PyTorch: Zero to GANs autorstwa Jovian.ai to kolejne kompleksowe źródło do nauki głębokiego uczenia się z PyTorch. W ciągu około sześciu tygodni możesz nauczyć się:

  • Podstawy PyTorch: tensory i gradienty
  • Regresja liniowa w PyTorch
  • Budowanie głębokich sieci neuronowych, ConvNet i ResNet w PyTorch
  • Budowanie generatywnych sieci kontradyktoryjnych (GAN)

#3. Kompletny kurs TensorFlow 2.0

Jeśli chcesz poznać TensorFlow, pomocny będzie kompletny kurs TensorFlow 2.0 na kanale społeczności freeCodeCamp.

#4. TensorFlow – interfejs API sieci neuronowej głębokiego uczenia Pythona firmy DeepLizard

Kolejny świetny kurs TensorFlow dla początkujących pochodzi od DeepLizard. Na tym przyjaznym dla początkujących kursie TensorFlow poznasz podstawy głębokiego uczenia, w tym:

  • Ładowanie i wstępne przetwarzanie zestawów danych
  • Budowanie waniliowych sieci neuronowych
  • Budowa konwolucyjnych sieci neuronowych (CNN)

Wniosek

Podsumowując, ten artykuł pomógł Ci uzyskać ogólny przegląd PyTorch i TensorFlow. Wybór optymalnej struktury będzie zależał od projektu, nad którym pracujesz. Ponadto wymagałoby to uwzględnienia obsługi wdrażania, możliwości wyjaśnienia i nie tylko.

Czy jesteś programistą Pythona i chcesz poznać te frameworki? Jeśli tak, możesz rozważyć zapoznanie się z jednym lub kilkoma zasobami udostępnionymi powyżej.

A jeśli interesuje Cię NLP, sprawdź tę listę kursów przetwarzania języka naturalnego. Miłej nauki!