Najlepsze frameworki do uczenia maszynowego i głębokiego uczenia

TensorFlow

TensorFlow, czyli przenośna biblioteka sztucznej inteligencji i sieci neuronowych od Google, cechuje się dobrą wydajnością i skalowalnością, mimo że nieco wolno się uczy. TensorFlow dysponuje szeregiem różnych modeli i algorytmów, które stanowią poważne obciążenie dla głębokiego uczenia się.

Framework cechuje się doskonałą wydajnością podczas pracy na urządzeniach z układami GPU (w przypadku treningu) lub układami TPU od Google (w przypadku prognozowania na skalę produkcyjną). Ponadto framework zapewnia doskonałą obsługę języka Python, dobrej jakości dokumentację i skuteczne narzędzie TensorBoard do wyświetlania i analizowania diagramów przepływu danych opisujących wykonywane obliczenia.

Zobacz również:

  • AI na poziomie człowieka już blisko - przekonuje DeepMind
  • Red Hat OpenShift dodaje obsługę Nvidia, Arm i AI
  • Najpopularniejszą dystrybucją Javy jest Oracle

Głównym językiem niezbędnym do używania TensorFlow jest Python, chociaż framework oferuje również obsługę języka C++ w ograniczonym zakresie. Samouczki udostępniane wraz z frameworkiem TensorFlow obejmują aplikacje do cyfrowej klasyfikacji pisma odręcznego, rozpoznawania obrazów, osadzania słów, rekurencyjne sieci neuronowe, modele sekwencyjne do tłumaczenia maszynowego, przetwarzania języka naturalnego i symulacje oparte o równanie różniczkowe cząstkowe.

Najlepsze w swojej klasie

Który framework do implementacji uczenia maszynowego lub uczenia głębokiego warto wybrać na potrzeby danego zadania prognostycznego zależy od wymaganego stopnia skomplikowania procesu uczenia maszynowego, objętości i formatu danych przeznaczonych na potrzeby treningu, zasobów obliczeniowych, a także preferencji co do języka programowania i umiejętności programisty. Może również zależeć od tego, czy preferowane jest definiowanie modeli za pomocą kodu lub plików konfiguracyjnych.

Przed rozpoczęciem własnych działań w zakresie trenowania modeli warto jednak sprawdzić, czy którakolwiek ze wstępnie przeszkolonych, stosowanych usług uczenia maszynowego od Google, HPE lub chmur Microsoft Azure skutecznie przetworzy dane, niezależnie od ich formatu: dźwiękowego, tekstowego lub graficznego. Jeśli nie sprawdzają się one w przypadku wybranych danych, można również przetestować, na co pozwalają proste metody statystyczne przed wypróbowaniem podstawowego treningu uczenia maszynowego i (ostatecznie, jeśli nic innego nie działa) treningu uczenia głębokiego. W tym przypadku zasadą jest maksymalne uproszczenie analizy, ale nie większe niż zasadne.

Z dwóch omówionych przeze mnie podstawowych frameworków uczenia maszynowego Spark MLlib poleciłbym miłośnikom języka Scala i tym, którzy przechowują swoje dane na platformie Hadoop. Natomiast framework Scikit-learn poleciłbym wielbicielom języka Python.

Warto również wspomnieć, że kolejną opcją dla tych, którzy wolą język Scala (i Java) oraz osób przechowujących swoje dane na platformie Hadoop jest narzędzie DeepLearning4j. Nie zajmowałem się recenzją tego programu, ale jak sama nazwa wskazuje jest to pakiet głębokiego uczenia.

Wybór frameworku do implementacji głębokiego uczenia spośród Caffe, Microsoft Cognitive Toolkit, MXNet i TensorFlow to dużo trudniejsza decyzja. Nie polecam już więcej narzędzia Caffe ze względu na stagnację w jego rozwoju. Ograniczenie pola wyboru do trzech pozostałych programów nie ułatwia jednak sprawy, bo wszystkie te frameworki to dobre wyjście oferujące podobne możliwości.

Microsoft Cognitive Toolkit dysponuje obecnie API dla języków Python i C++, jak również języka konfiguracji sieci BrainScript. Jeśli preferowane jest korzystanie z plików konfiguracyjnych od programowania topologii sieciowej, wówczas dobrym rozwiązaniem może być narzędzie Microsoft Cognitive Toolkit. Z drugiej jednak strony, framework ten nie wydaje się być równie dojrzały co TensorFlow i nie obsługuje systemu operacyjnego MacOS.

MXNet zapewnia obsługę języków Python, R, Scala, Julia i C++, ale najlepsze API dotyczy tylko języka Python. Framework MXNet zademonstrował dobrą skalowalność (na poziomie 85% wydajności liniowej) w wielu różnych układach GPU na wielu różnych hostach. Gdy przygotowywałem recenzję MXNet, dokumentacja i przykłady tego programu były dość skąpe, ale od tamtego czasu sytuacja poprawiła się.

TensorFlow jest prawdopodobnie najbardziej dojrzałym spośród trzech wymienionych frameworków. Jest dobrym wyborem, jeśli odpowiada komuś pisanie kodu w języku Python i nauczenie się tego języka nie stanowi wyzwania. TensorFlow oferuje podstawowe elementy szkieletowe, z których można skorzystać i które zapewniają precyzyjną kontrolę, chociaż wymagają również napisania sporego kodu opisującego sieć neuronową. Istnieją trzy uproszczone API, które współpracują z programem TensorFlow w tym zakresie: tf.contrib.learn, TF-Slim i Keras. Ostatnią cechą przemawiająca na korzyść TensorFlow jest TensorBoard, który przydaje się do wizualizacji i analizy diagramów przepływu danych.

Najlepsze frameworki do uczenia maszynowego i głębokiego uczenia

Martin Heller jest redaktorem współpracującym i recenzentem InfoWorld. Wcześniej pracował jako konsultant ds. programowania sieciowego i systemu Windows. W latach 1986-2010 zajmował się także tworzeniem baz danych, oprogramowania i stron internetowych. Ostatnio pełnił funkcję wiceprezesa ds. technologii i edukacji w firmie Alpha Software oraz szefa rady dyrektorów i dyrektora zarządzającego w firmie Tubifi.


TOP 200