Kurs
Machine-Learning-Praktikerinnen und -Praktiker sowie Softwareentwickler greifen meist auf Frameworks zurück, um beim Programmieren die schwersten Brocken abzufangen.
So ermöglichen ML-Frameworks die Implementierung von Modellen, ohne tief in die mathematischen Grundlagen der Algorithmen einsteigen zu müssen.
Das verschlankt die Entwicklung, weil Programmierer nicht ständig Code neu schreiben müssen, um ihre Anwendungen zu bauen.
Das gilt auch für Deep Learning – einen Teilbereich des Machine Learning. TensorFlow, Keras und PyTorch gehören zu den populärsten Deep-Learning-Frameworks.
In diesem Tutorial schauen wir uns alle drei an und erarbeiten eine grobe Entscheidungshilfe, welches für dein Projekt am besten passt.
Was ist TensorFlow?
TensorFlow ist ein End-to-End-Deep-Learning-Framework. Es wurde vom Google-Brain-Team entwickelt, zunächst intern für Forschung und Produktion bei Google eingesetzt und 2015 unter der Apache-Lizenz als Open Source veröffentlicht. Im September 2019 brachte Google mit TensorFlow 2.0 eine neue Hauptversion heraus. Einen tieferen Einstieg findest du in unserem TensorFlow-Tutorial.
Zu den wichtigsten Features von TensorFlow zählen:
- TensorBoard. Ein Visualisierungstoolset für TensorFlow, das beim Verstehen, Debuggen und Optimieren von TensorFlow-Programmen hilft.
- Feature Columns. High-Level-Abstraktionen, die Rohdaten in Formate für ML-Modelle transformieren und so den Umgang mit unterschiedlichen Datentypen vereinfachen.
- Einfaches Training auf CPU und GPU. TensorFlow kann Modelle auf CPUs und GPUs trainieren und ermöglicht so flexible, effiziente Berechnungen.
- Paralleles Training. TensorFlow unterstützt verteiltes Rechnen, sodass Daten und Modelle parallel über mehrere CPUs oder GPUs verarbeitet werden können – das beschleunigt das Training deutlich.
Vorteile von TensorFlow
Open Source
TensorFlow ist Open Source, also kostenlos verfügbar und ohne Vendor-Lock-in nutzbar.
Debugging
Eines der Kernfeatures ist TensorBoard. Es liefert die Visualisierung und Tools, die du für Experimente im Deep Learning brauchst, und macht das Debuggen deines TensorFlow-Codes deutlich einfacher.
Keras-Kompatibilität
Mit TensorFlow 2.0 hat Google Keras zur offiziellen High-Level-API von TensorFlow erklärt. So lässt sich hohe Abstraktion bequem einbinden – und du profitierst von der Einfachheit von Keras.
Skalierbarkeit
TensorFlow ist nicht auf ein einzelnes Gerät beschränkt. Du kannst Systeme entwickeln, die auf Edge-Geräten ebenso effizient laufen wie auf komplexen Maschinen.
Kompatibilität
Das Framework ist mit mehreren Programmiersprachen kompatibel, sodass du in der Sprache arbeiten kannst, die dir am meisten liegt.
TensorFlow bietet eine zuverlässige API für Python sowie APIs für Javascript, C++ und Java ohne Garantie auf Rückwärtskompatibilität. Zudem gibt es Drittanbieterpakete mit Sprachbindungen für C#, Haskell, Julia, MATLAB, Object Pascal, R, Scala, Rust, OCaml und Crystal.
Parallelität
TensorFlow gilt als Bibliothek für Hardwarebeschleunigung und nutzt unterschiedliche Distributionsstrategien auf GPU- und CPU-Systemen. Du kannst also frei die Architektur wählen. Standardmäßig wird die GPU verwendet, sofern nicht anders angegeben, was den Speicherverbrauch teilweise reduziert.
Nachteile von TensorFlow
Häufige Updates
Durch häufige Aktualisierungen steigt der Aufwand, TensorFlow auf bestehenden Systemen zu installieren und sauber einzubinden.
Inkonsistente Homonyme
TensorFlow bietet gleichnamige Funktionen mit unterschiedlicher Implementierung, was die Nutzung erschwert. Beispiel: tf.nn.conv2d und tf.layers.Conv2d tragen denselben Namen, unterscheiden sich aber in Details der Konfiguration – das kann die Ergebnisse verändern.
Fehlende symbolische Schleifen
TensorFlow ist eine Low-Level-API – und verhält sich auch so. Iterationen, die zu symbolischen Schleifen führen, werden nicht automatisch gehandhabt. Für endliche Sequenzen ist die Nutzung jedoch gut möglich.
Begrenzte GPU-Unterstützung
Für GPU-Programmierung unterstützt das Framework nur NVIDIA und Python. Weitere Optionen gibt es nicht.
Geringe Implementierungsgeschwindigkeit
Unabhängig von der Hardwarekonfiguration benötigt TensorFlow im Vergleich zu seinen Wettbewerbern meist am längsten, um verschiedene neuronale Netze zu trainieren.
Was ist Keras?
Keras ist eine beliebte, offene High-Level-API für neuronale Netze, entwickelt von François Chollet und 2015 veröffentlicht. In der Dokumentation heißt es: „Eine API für Menschen, nicht für Maschinen.“
Mitte 2017 wurde Keras über das Modul tf.keras in TensorFlow integriert. Es lässt sich aber weiterhin unabhängig von TensorFlow betreiben – siehe dieses Keras-Cheat Sheet oder unser ausführliches Keras-Tutorial.
Aus der Dokumentation:
„Keras setzt auf schnelle Fehlersuche, eleganten und kompakten Code, Wartbarkeit und einfache Bereitstellung. Mit Keras ist dein Code schlanker, besser lesbar und schneller iterierbar. Dank XLA-Kompilierung und Autograph-Optimierungen laufen deine Modelle schneller und lassen sich mit TF Serving, TF Lite und TF.js auf Servern, Mobilgeräten, im Browser und auf Embedded-Systemen leicht ausrollen.“
Vorteile von Keras
Einfachheit
Keras hat eine sehr einfache, nutzerfreundliche API und ist dadurch leicht zu lernen – ideal für den schnellen Einstieg ins Deep Learning.
Backend-Unterstützung
Keras führt keine Low-Level-Berechnungen selbst aus, sondern setzt auf Microsoft CNTK, Theano und TensorFlow auf. Backends werden also aktiv genutzt.
Vorgefertigte Modelle
Vortrainierte Modelle, also Modelle, die bereits auf großen Datensätzen gelernt haben, bringt Keras direkt mit.
Schnelles Experimentieren
Als High-Level-API ist Keras stark abstrahiert und generisch. Modelle lassen sich deshalb in wenigen Zeilen Code bauen.
Community-Support
Als Open-Source-Projekt verfügt Keras über eine große Community aus aktiven Forschenden und Entwickelnden, die sich gegenseitig unterstützen.
Klare Dokumentation
Die Keras-Dokumentation ist reich an Codebeispielen – so verstehst du die Konzepte schnell.
Nachteile von Keras
Verbesserungsfähige Features
Viele Praktiker sehen bei Keras Luft nach oben, was den Funktionsumfang angeht. Ein Beispiel: Dynamische Diagrammerstellung wird nicht unterstützt.
Wenig hilfreiche Fehlermeldungen
Die Fehlermeldungen der Keras-Bibliothek sind oft wenig aussagekräftig. Die Ursachenanalyse ist mühsam – umfangreiches Debugging ist häufig nötig.
High-Level-API
Als High-Level-API gibt Keras weniger Kontrolle über feine Funktionsdetails – tiefergehende Manipulationen sind eingeschränkt.
Was ist PyTorch?
PyTorch ist das jüngste der drei Frameworks. Entwickelt von Facebooks (heute Meta) AI Research und 2016 als Open Source veröffentlicht, gehört PyTorch inzwischen zur Linux Foundation.
PyTorch hat sich den Ruf erarbeitet, einfach, flexibel und effizient zu sein. Damit lassen sich schnell komplexe neuronale Netze für Anwendungen wie Computer Vision und Natural Language Processing entwickeln.
Wichtige Features sind unter anderem:
- Tensorberechnungen. PyTorch stellt mit dem Tensor ein mehrdimensionales Array bereit, ähnlich zu NumPys ndarray, das auf GPUs für schnellere Berechnungen laufen kann.
- TorchScript. Ein Verfahren, PyTorch-Modelle zu serialisieren und in anderen Umgebungen wie C++ auszuführen – produktionsreif.
- Dynamische Rechengraphen. PyTorch nutzt dynamische Graphen und erlaubt so flexible Modelländerungen zur Laufzeit – hilfreich für komplexe Architekturen.
- Automatische Differenzierung. Automatische Gradientenberechnung vereinfacht Backpropagation und Training.
- Python-Unterstützung. PyTorch integriert sich nahtlos ins Python-Ökosystem – mit einer sehr pythonischen, nutzerfreundlichen Schnittstelle.
Vorteile von PyTorch
Pythonisch
PyTorch ist von Natur aus pythonisch und fällt Python-Entwicklern daher besonders leicht. Das ist ein großer Pluspunkt, da der Großteil der Deep-Learning-Arbeit in Python stattfindet.
Leicht zu lernen
Die PyTorch-Syntax ist sehr einfach und intuitiv. Viele bescheinigen PyTorch eine flache Lernkurve – oft gilt es als eines der leichtesten Deep-Learning-Pakete.
Einfach zu debuggen
PyTorch kann Pythons pdb und ipdb nutzen. Mit PyCharm lässt sich dank des zur Laufzeit entstehenden Rechengraphen ebenfalls gut debuggen.
Starke Community
Trotz seines jungen Alters hat PyTorch schnell eine engagierte Community aufgebaut, die für gute, gut strukturierte Dokumentation sorgt.
Datenparallelität
Die Datenparallelisierung ist sehr effektiv: Daten werden in Batches auf mehrere GPUs verteilt – ein großer Teil der Last wandert so von der CPU auf die GPU.
Nachteile von PyTorch
Keine integrierte Visualisierung
TensorFlows TensorBoard visualisiert den Trainingsprozess. PyTorch bietet hier nichts Vergleichbares – es braucht ein Drittanbieter-Tool.
API-Server für Produktion nötig
Es gibt kein Framework, um Modelle direkt im Web bereitzustellen. Du benötigst also einen Backend-Server wie Flask oder Django.
Welche Wahl ist die richtige? Vergleich von PyTorch, Keras und TensorFlow
|
TensorFlow |
PyTorch |
Keras |
|
|
API-Ebene |
Beides (High und Low) |
Low |
High |
|
Architektur |
Nicht leicht zu nutzen |
Komplex, weniger lesbar |
Einfach, prägnant, gut lesbar |
|
Datensätze |
Große Datensätze, hohe Performance |
Große Datensätze, hohe Performance |
Kleinere Datensätze |
|
Debugging |
Schwierig zu debuggen |
Gute Debugging-Fähigkeiten |
Einfachere Netze, daher seltener nötig |
|
Vortrainierte Modelle? |
Ja |
Ja |
Ja |
|
Beliebtheit |
Zweitbeliebtestes der drei |
Drittbeliebtestes der drei |
Am beliebtesten der drei |
|
Geschwindigkeit |
Schnell, hohe Performance |
Schnell, hohe Performance |
Langsamer, geringere Performance |
|
Geschrieben in |
C++, CUDA, Python |
Lua |
Python |
Das passende Framework auswählen
Die Frage „Welches Framework ist besser?“ lässt sich nur subjektiv beantworten – wie gesehen hat jedes Stärken und Schwächen. Hier sind Punkte, die dir bei der Wahl helfen.
PyTorch vs. TensorFlow
- Boilerplate-Code. Beide nehmen dir viel Boilerplate ab und vereinfachen den Modellbau.
- Pythonisch und OOP. PyTorch ist „pythonischer“ und stark objektorientiert – für Python-Entwickler sehr intuitiv.
- Beliebtheit. TensorFlow ist älter und von Google unterstützt – die Community ist entsprechend groß.
- Flexibilität. Durch dynamische Rechengraphen ist PyTorch flexibler und erlaubt Änderungen zur Laufzeit.
- Debugging und Tracking. TensorFlows TensorBoard bietet starke Visualisierung für Debugging und Trainings-Tracking.
- Serving-Framework. TensorFlow verfügt über ein reiferes Serving-System für die Bereitstellung von Modellen und ist beim Deployment oft nahtloser als PyTorch.
PyTorch vs. Keras
- Lernkurve. Beide sind nutzerfreundlich und daher leicht zu lernen.
- Forschung vs. Entwicklung. Forschende bevorzugen häufig PyTorch wegen Flexibilität und Kontrolle, Entwicklerinnen und Entwickler schätzen Keras für Einfachheit und Plug-and-Play.
- Geschwindigkeit und Debugging. PyTorch ist meist schneller und bietet besseres Debugging als Keras.
- Tutorials und kleine Datensätze. Keras punktet mit vielen wiederverwendbaren Tutorials und eignet sich besonders gut für kleine Datensätze.
TensorFlow vs. Keras
- High-Level-APIs. Sowohl TensorFlow als auch Keras bieten High-Level-APIs zum Bauen und Trainieren von Modellen.
- Pythonische Natur. Keras ist in Python gebaut und sehr intuitiv in der Nutzung.
- Große Datensätze. TensorFlow wird oft für große Datensätze bevorzugt – robust und skalierbar.
- Wrapper. Keras dient als Wrapper für TensorFlow-Funktionen und vereinfacht so die Nutzung.
Fazit
TensorFlow, PyTorch und Keras gehören zu den beliebtesten Deep-Learning-Frameworks. Jedes bringt eigene Stärken mit und eignet sich für bestimmte Szenarien. Welche Plattform du lernst und einsetzt, hängt von deinem Use Case, deinem technischen Niveau und der verfügbaren Zeit ab.
Unabhängig von deiner Wahl findest du auf DataCamp zahlreiche hilfreiche Kurse für den Einstieg:
