Vergleich von Deep-Learning-Frameworks: TensorFlow, PyTorch, Keras, MXNet, Microsoft Cognitive Toolkit, Caffe usw.

Hallo an alle. Diesen Freitag teilen wir Ihnen die erste Veröffentlichung zum Start des Data Scientist- Kurses mit. Gute Lektüre.

Sehr viele Unternehmen haben versucht, künstliche Intelligenz bei ihren Entscheidungen zu verwenden, um den Umfang der Aktivitäten zu erweitern oder ihr Start-up zu entwickeln. Eines ist jedoch wichtig zu verstehen: Die gewählte Entwicklungstechnologie muss mit einem guten Rahmen für tiefes Lernen einhergehen, insbesondere weil jeder Rahmen dazu dient eine Art separates Ziel. Die Suche nach dem perfekten Tandem ist in diesem Fall eine Voraussetzung für die reibungslose und schnelle Entwicklung des Geschäfts und die erfolgreiche Umsetzung von Projekten.



Die folgende Liste von Frameworks für Deep Learning kann bei der Auswahl des richtigen Tools zur Lösung spezifischer Probleme hilfreich sein, mit denen Sie bei der Arbeit an einem Projekt konfrontiert sind. Sie können die Vor- und Nachteile verschiedener Lösungen vergleichen, ihre Grenzen bewerten und die besten Anwendungsfälle für jede Lösung kennenlernen!

1. Tensorflow

TensorFlow wurde von Google erstellt und in Python und C ++ geschrieben. Es ist eine der besten Open-Source-Bibliotheken für numerisches Rechnen. Es muss einfach gut sein, denn selbst Giganten wie DeepMind, Uber, AirBnB oder Dropbox haben dieses Framework für ihre Bedürfnisse ausgewählt.

TensorFlow eignet sich für komplexe Projekte wie mehrschichtige neuronale Netze. Es wird für die Spracherkennung oder für Bild- und Textanwendungen wie beispielsweise Google Translate verwendet.

Experten nannten natürlich viele seiner Vorteile:

  • Eine große Anzahl von Handbüchern und Dokumentationen wurde für sie geschrieben;
  • Es bietet leistungsstarke Tools zur Überwachung des Lernprozesses von Modellen und zur Visualisierung (Tensorboard).
  • Es wird von einer großen Community von Entwicklern und Technologieunternehmen unterstützt.
  • Es bietet Servicemodelle;
  • Es unterstützt verteiltes Lernen;
  • TensorFlow Lite bietet Ausgabe an Geräte mit geringer Latenz für mobile Geräte.

Und Nachteile:

Bei Benchmarks verliert es an Geschwindigkeit, beispielsweise im Vergleich zu CNTK und MXNet.
Es hat eine höhere Einstiegsschwelle für Anfänger als PyTorch oder Keras. Naked Tensorflow ist ziemlich niedrig und erfordert viel Boilerplate-Code. Der "Detect and Run" -Modus für Tensorflow verkompliziert den Debugging-Prozess erheblich.

Es gibt noch eine weitere wichtige Einschränkung: Die einzige vollständig unterstützte Sprache ist Python.

2. PyTorch

PyTorch ist Pythons Nachfolger der Lua Torch-Bibliothek und ein großer Konkurrent von TensorFlow. Es wurde von Facebook entwickelt und von Twitter, Salesforce, der Universität Oxford und vielen anderen Unternehmen verwendet.

PyTorch wird hauptsächlich verwendet, um Modelle schnell und effizient zu trainieren. Daher haben eine große Anzahl von Entwicklern die Wahl .

Es hat viele wichtige Vorteile:

  • Dank der Architektur des Frameworks ist der Prozess der Erstellung eines Modells recht einfach und transparent.
  • Der Standardmodus "Define-by-Run" bezieht sich auf die herkömmliche Programmierung. Das Framework unterstützt gängige Debugging-Tools wie pdb, ipdb oder PyCharm-Debugger.
  • Es unterstützt die deklarative Parallelität von Daten .
  • Es verfügt über viele vorgefertigte Modelle und vorgefertigte modulare Teile, die einfach zu kombinieren sind.

Verteiltes Training ist seit Version 0.4 verfügbar.

Dieser Rahmen hat jedoch einige unbestreitbare Nachteile:

  • Mangel an Modellunterstützung;
  • Er ist noch nicht bereit für eine vollständige Veröffentlichung in der Produktion, aber die Roadmap zu Version 1.0 sieht wirklich beeindruckend aus.
  • Es fehlen Schnittstellen für die Überwachung und Visualisierung wie beim TensorBoard, es besteht jedoch eine externe Verbindung zum Tensorboard.


3. Keras

Keras ist eine minimale Python-basierte Bibliothek, die auf TensoFlow, Theano oder CNTK ausgeführt werden kann. Es wurde von einem Google-Ingenieur, François Schollet, entwickelt, um Experimente zu beschleunigen. Keras unterstützt eine Vielzahl von neuronalen Netzwerkschichten, z. B. wiederkehrende oder dichte Faltungsschichten.

Dieser Rahmen eignet sich in Fällen für Übersetzung, Bilderkennung, Sprache usw.

Vorteile:

  • Prototyping ist sehr schnell und einfach.
  • Es ist klein genug, um Deep-Learning-Modelle für viele Ebenen zu erstellen.
  • Hat vollständig konfigurierbare Module;
  • Es verfügt über eine einfache bzw. intuitive Benutzeroberfläche, die sich gut für Anfänger eignet.
  • Integrierte Unterstützung für Schulungen auf mehreren GPUs;
  • Es kann als Evaluator für TensorFlow konfiguriert und in GPU-Clustern auf der Google Cloud-Plattform geschult werden.
  • Läuft auf Spark;
  • Unterstützt NVIDIA-GPUs, Google TPUs und Open-CL-GPUs wie AMD.

Und ein paar Nachteile:

  • Es kann sich als zu hoch herausstellen und ist nicht immer einfach anzupassen.
  • Es ist auf Tensorflow-, CNTK- und Theano-Backends beschränkt.

Keras ist nicht so funktionsfähig wie TensorFlow und bietet weniger Optionen für die Verwaltung einer Netzwerkverbindung. Dies kann eine schwerwiegende Einschränkung sein, wenn Sie ein spezielles Deep-Learning-Modell erstellen.

4. MXNet


Dies ist ein von Apache erstelltes Deep-Learning-Framework, das eine Vielzahl von Sprachen wie Python, Julia, C ++, R oder JavaScript unterstützt. Es wird von Microsoft, Intel und Amazon Web Services verwendet.

Das MXNet-Framework ist für seine hohe Skalierbarkeit bekannt, weshalb es von großen Unternehmen hauptsächlich für Spracherkennung und Handschrift, NLP und Prognose verwendet wird.
Es hat viele Vorteile:

  • Es ist schnell genug, flexibel und effektiv bei der Arbeit mit Deep-Learning-Algorithmen.
  • Es bietet erweiterte GPU-Unterstützung.
  • Es kann auf jedem Gerät ausgeführt werden.
  • Es verfügt über eine leistungsstarke Imperative-API.
  • Es bietet einfache Modellunterstützung;
  • Es ist extrem skalierbar;
  • Es bietet gute Unterstützung für viele Programmiersprachen wie Python, R, Scala, JavaScript und C ++ und viele andere.

Nun zu den Nachteilen von MXNet:

  • Um ihn herum gibt es keine Gemeinschaft mehr wie um TensorFlow;
  • In der wissenschaftlichen Gemeinschaft nicht so beliebt.

Basierend auf den oben genannten Argumenten ist MXNet ein guter Rahmen für große Industrieprojekte, aber es ist noch recht jung. Denken Sie also daran, dass Sie möglicherweise nicht so schnell technische Unterstützung erhalten, um Ihr Problem zu lösen, wie Sie möchten.

5. CNTK

Dieses Framework wird jetzt als Microsoft Cognitive Toolkit bezeichnet. Es ist ein offenes Deep-Learning-Framework, das für die Arbeit mit wirklich großen Datenmengen mit Unterstützung für Python, C ++, C # und Java entwickelt wurde.

CNTK bietet ein effektives Modelltraining für Sprach-, Handschrift- und Bilderkennung und unterstützt auch CNN und RNN. Es wird auf Skype, Xbox und Cortana verwendet.

Wie immer haben Experten die Vorteile bereits erkannt:

  • Zeigt gute Leistung und Skalierbarkeit;
  • Bietet viele gut optimierte Komponenten;
  • Bietet Unterstützung für Apache Spark;
  • Effektiv im Umgang mit Ressourcen;
  • Einfache Integration in Azure Cloud;

Und ein einziger Nachteil:

  • Begrenzte Community-Unterstützung.

6. Caffe und Caffe2

Caffe ist ein C ++ - Framework mit einer sehr benutzerfreundlichen Python-Oberfläche. Es unterstützt CNN- und Direktverteilungsnetze und eignet sich auch zum Trainieren von Modellen (ohne zusätzliche Codezeilen zu schreiben), zum Verarbeiten von Bildern und zum Verbessern vorhandener neuronaler Netze. Andererseits ist es nicht so gut dokumentiert und schwer zu kompilieren. Es gibt keine Informationen über die Verwendung von Caffe durch große Unternehmen. Im Jahr 2017 veröffentlichte Facebook Caffe 2, das zum eigentlichen Nachfolger von Caffe wurde und sowohl für die mobile als auch für die groß angelegte Entwicklung in der Produktionsumgebung entwickelt wurde.

Auf Facebook ist er bekannt als "Eine produktionsbereite Plattform (...), die auf mehr als 1 Milliarde Smartphones läuft und 8 Generationen des iPhone und sechs Generationen von Android-Prozessorarchitekturen umfasst."

Dieser Rahmen ist aus mehreren Gründen gut:

  • Es bietet vorgefertigte Modelle zum Erstellen von Demoanwendungen.
  • Es ist schnell, skalierbar und nimmt wenig Platz ein.
  • Es funktioniert gut mit anderen Frameworks wie PyTorch und wird schließlich in PyTorch 1.0 integriert.
  • Es bietet eine optimierte Arbeit mit dem Server.

Und wieder der Hauptnachteil:

  • Begrenzte Community-Unterstützung.

Trotz der Tatsache, dass Caffe2 Tests in Bezug auf Geschwindigkeit und belegten Speicher gut besteht, ist es relativ neu und in Bezug auf die Bereitstellung komplexer Netzwerke, die zumindest bequeme Tools für das Debuggen und den technischen Support erfordern, recht begrenzt.

7. Deeplearning4j

Wenn Ihre Hauptprogrammiersprache Java ist, sollten Sie sich DL4J auf jeden Fall genauer ansehen. Es handelt sich um eine kommerzielle Open-Source-Plattform, die hauptsächlich für Java und Scala geschrieben wurde und eine gute Unterstützung für verschiedene Arten neuronaler Netze bietet (z. B. CNN, RNN, RNTN oder LTSM).

Dieses Framework ist eine gute Wahl, da es ein großes Potenzial in den Bereichen Bilderkennung, Verarbeitung natürlicher Sprache, Schwachstellensuche und Textanalyse bietet.

Vorteile:

  • Zuverlässig, flexibel und effizient;
  • Es kann große Datenmengen ohne Geschwindigkeitsverlust verarbeiten.
  • Funktioniert mit Apache Hadoop und Spark auf verteilten CPUs oder GPUs.
  • Hat eine gute Dokumentation;
  • Hat eine Community- und Enterprise-Version.

Was überrascht, wenn man über dieses Framework spricht, konzentrieren sich Experten nicht auf bestimmte Mängel, wie beispielsweise eine allgemeine Debatte über die Eignung von Java für maschinelles Lernen im Allgemeinen. Da Java in maschinellen Lernprojekten nicht so häufig verwendet wird, kann sich das Framework nicht auf wachsende Datenbanken mit vorgefertigtem Code verlassen, um bestimmte Probleme zu lösen. Infolgedessen können die Kosten Ihres Projekts viel höher werden und die Lösung eines Problems kann den Gesamtfortschritt des Projekts erheblich verlangsamen.

8. Chainer

Ein weiteres Python-Deep-Learning-Framework, das von Giganten wie Intel, IBM, NVIDIA und AWS unterstützt wird. Es können problemlos mehrere GPUs verwendet werden.

Chainer wird hauptsächlich zur Spracherkennung, maschinellen Übersetzung und Schlüsselanalyse verwendet. Es unterstützt verschiedene Netzwerkarchitekturen wie CNN, Fast-Forward und RNN und bietet gegenüber seinen Mitbewerbern mehrere wichtige Vorteile:

  • Es ist viel schneller als jedes andere Python-Framework.
  • Es ist unglaublich flexibel und intuitiv;
  • Bestehende Netzwerke können direkt zur Laufzeit geändert werden.

Andererseits:

  • Sehr schwierig in Bezug auf das Debuggen;
  • Um ihn herum ist eine relativ kleine Gemeinde;

Da andere Python-basierte Frameworks viel beliebter sind, erhalten Sie möglicherweise nicht so schnelle Hilfe wie bei anderen Frameworks wie TensorFlow oder PyTorch.

Zusammenfassend

Die Auswahl des besten Rahmens für ein Deep-Learning-Projekt kann äußerst schwierig sein. Sie müssen die folgenden Faktoren berücksichtigen:

  • Die Art der neuronalen Netze, die Sie entwickeln werden;
  • Die von Ihnen verwendete Programmiersprache;
  • Die Anzahl der Tools und zusätzlichen Optionen, die Sie möglicherweise benötigen.
  • Projektbudget;
  • Die Art und die Ziele, die das Projekt verfolgt.

Ich hoffe, dass dieser Vergleich der Frameworks etwas Licht in dieses Problem bringt und Ihnen hilft, die am besten geeignete Lösung für Ihr Projekt auszuwählen.

Schreiben Sie Kommentare und sehen Sie sich am Tag der offenen Tür , der am 19. März von Alexander Nikitin stattfinden wird .

Source: https://habr.com/ru/post/de443874/


All Articles