TensorFlow¶
Wprowadzenie¶
Tensorflow to rozbudowana biblioteka do rozwiązań uczenia głębokiego (deep learning), stworzona przez Google. Podobnie jak Pytorch, pozwala zarówno na wysokopoziomowe, modułowe tworzenie sieci, jak i na niskopoziomowe konfigurowanie sieci krok po kroku. W porównaniu do Pytorcha, niskopoziomowa praca w Tensorflow może być mniej przystępna dla początkującego użytkownika.
Dostępność¶
Tensorflow oferuje przystępne narzędzia do tworzenia modeli uczenia głębokiego i obliczeń tensorowych ze wsparciem akceleracji obliczeń zarówno dla CPU, jak i GPU. Biblioteka jest dostępna dla języków Python, C++, Java, JavaScript. Dodatkowe rozwiązania są dostępne dla innych języków.
Szczegóły¶
Głównym mechanizmem wykorzystywanym przez Tensorflow jest optymalizacja obliczeń za pomocą statycznych grafów obliczeniowych. Podobnie jak w Pytorch, Tensorflow również oferuje mechanizm automatycznego różniczkowania (Automatic Differentiation, odpowiednik autograd w Pytorch).
Tensorflow, dzięki modułowi tensorflow.distribute
pozwala na obliczenia przy użyciu wielu akceleratorów (GPU, TPU) i węzłów obliczeniowych (podobnie jak Pytorch). Konfiguracja treningu rozproszonego w obrębie jednej maszyny (węzła) jest stosunkowo prosta. W przypadku treningu na wielu węzłach, konfiguracja jest bardziej skomplikowana, dlatego dobrym rozwiązaniem może być skorzystanie z biblioteki Horovod.
Tensorflow został zintegrowany z biblioteką Keras – wysokopoziomowym narzędziem stworzonym w języku Python. Jego głównym celem jest dostarczenie gotowych modułów do tworzenia frameworków uczenia głębokiego (deep learning) – warstwy, modele, funkcje itd. Praca wysokopoziomowa, dzięki bibliotece Keras, jest prosta w użyciu i stosunkowo przystępna dla nowego użytkownika.
Tensorflow posiada także dodatkowe, instalowane osobno biblioteki, przeznaczone do specjalnych rozwiązań:
- TensorFlow Extended (TFX) – umożliwia sprawne i wygodne zastosowanie modeli w produkcji (MLOps),
- TensorFlow Lite – umożliwia tworzenie modeli pracujących na ograniczonych zasobach, nadających się na przykład do wykorzystania w urządzeniach mobilnych oraz wszelkiego rodzaju systemach wbudowanych (embedded),
- TensorFlow Federated – ułatwia tworzenie modeli uczonych federacyjnie (federated training).
Informacje o wydaniu¶
Obecna wersja to 2.12.0, wydana w marcu 2023. Określa ona interfejs dla Python, C++ oraz Java. Ten ostatni jest w trakcie zastępowania przez osobne rozwiązanie TensorFlow Java. Interfejs dla JavaScript jest dostępny w formie biblioteki TensorFlow.js. Kod biblioteki jest dostępny publicznie, kolejne wersje pojawiają się zwykle dwa razy w roku, a rozszerzenia obecnej częściej. Wersja dla języka Python jest najbardziej rozwijana oraz stabilna (pozostałe języki nie posiadają gwarancji stabilnego API od twórców). Zwykle kilka kolejnych wersji utrzymuje kompatybilność z funkcjonalnościami przeznaczonymi do usunięcia.
Oprócz oficjalnej biblioteki, istnieją wersje Tensorflow dla innych języków. Za ich utrzymanie oraz wsparcie odpowiadają społeczności i osoby niezwiązane z Google (a co za tym idzie nie mają gwarancji stabilności). Do tych języków należą: C#, Julia, Haskell, Ruby, R, Matlab, Scala oraz Rust. Wersje tych bibliotek i ich kody źródłowe dostępne są w formie osobnych repozytoriów. Linki do nich znajdują się w oficjalnej dokumentacji Tensorflow.