Data Science, Machine Learning und KI
Kontakt

Management Summary

Mit Kubernetes steht uns eine Technologie zur Verfügung, welche in vielerlei Hinsicht die Bereitstellung und Wartung von Anwendungen und Rechenlasten, insbesondere das Training und Hosten von Machine Learning Modellen, enorm vereinfacht. Gleichzeitig ermöglicht sie uns, die benötigten Hardware-Ressourcen dazu an den Bedarf anzupassen, und bietet damit eine skalierbare und kostentransparente Lösung.

Dieser Artikel behandelt zuerst den Weg vom Server hin zu dem Management und der Orchestrierung von Containern: isolierte Anwendungen oder Modelle, welche mit all ihren Anforderungen einmal verpackt werden und im Anschluss fast überall ausgeführt werden können. Unabhängig vom Server können diese mit Kubernetes beliebig repliziert werden und ermöglichen somit aufwandslos und schier nahtlos eine durchgehende Erreichbarkeit ihrer Dienste auch unter hoher Last. Ebenfalls kann ihre Anzahl bis auf einen Mindeststand reduziert werden, wenn die Nachfrage vorübergehend oder periodisch schwindet, um Rechenressourcen anderweitig zu nutzen oder unnötige Kosten zu vermeiden.

Aus den Möglichkeiten dieser Infrastruktur geht ein nützliches Architektur-Paradigma hervor, die Microservices. Ehemals zentralisierte Anwendungen werden so in ihre Funktionalitäten heruntergebrochen, welche ein hohes Maß an Wiederverwendbarkeit bieten. Diese können von unterschiedlichen Diensten angesprochen und verwendet werden und skalieren einzeln je nach internem Bedarf. Ein Beispiel hierfür sind große und komplexe Sprachmodelle im Natural Language Processing, welche den Kontext eines Textes unabhängig von dessen weiterer Verwendung erfassen können, und damit vielen downstream Zwecken zugrunde liegen. Andere Microservices (Modelle), wie zur Text-Klassifikation oder Zusammenfassung, können diese aufrufen und die Teilergebnisse weiterverarbeiten.

Nach einer kurzen Einführung der allgemeinen Begrifflichkeiten und Funktionsweise von Kubernetes, sowie mögliche Anwendungsfälle, richtet sich das Augenmerk auf die am weitesten verbreitete Form Kubernetes zu nutzen: mit Cloud Anbietern wie Google GCP, Amazon AWS oder Microsoft Azure. Diese erlauben sog. Kubernetes Clustern, dynamisch mehr oder weniger Ressourcen zu beanspruchen, wenn gleich die entstehenden Kosten auf pay-per-use Basis absehbar bleiben. Auch weitere gängige Dienste wie Datenspeicher, Versionierung und Networking können von den Anbietern einfach eingebunden werden. Letztlich gibt der Beitrag noch einen Ausblick über Tools und Weiterentwicklungen, welche entweder die Nutzung von Kubernetes noch effizienter machen oder das Verfahren hin zu Serverless Architekturen weiter abstrahieren und vereinfachen.

Inhalt

Einleitung

Über die letzten 20 Jahre sind Unmengen neuer Technologien in der Softwareentwicklung und -Bereitstellung zu Tage gekommen, welche nicht nur die Auswahl an Diensten, Programmiersprachen, Bibliotheken oder ähnliches vervielfacht und diversifiziert haben, sondern gar auch bei vielen Anwendungsfällen oder -Gebieten bis hin zu einem Paradigmenwechsel geführt haben.

Abb. 1: Google Trends Chart, die den zuvor genannten Paradigmenwechsel verdeutlicht.

Betrachtet man so auch die Art und Weise der Bereitstellung von Softwarelösungen, Modellen oder Rechen- und Arbeitslasten über die Jahre, lässt sich erkennen wie auch in diesem Bereich die Neuerungen u.a. zu mehr Flexibilität, Skalierbarkeit und Ressourceneffizienz geführt haben.

Zu Beginn wurden diese als lokale Prozesse direkt auf einem (von mehreren Anwendungen geteilten) Server betrieben, was einige Einschränkungen und Probleme aufwarf: zum einen ist man bei der Auswahl der technischen Werkzeuge an die Begebenheiten der Server und deren Betriebssystem gebunden, zum anderen sind alle Anwendungen, welche auf dem Server gehostet werden, durch dessen Speicher- und Prozessorkapazitäten begrenzt. Somit teilen sie sich nicht nur in Summe die Ressourcen, sondern auch eine eventuelle Prozess-übergreifende Fehleranfälligkeit.

Als erste Weiterentwicklung können Virtuelle Maschinen daraufhin eine weitere Abstraktionsebene bieten: durch das auf dem Server aufgesetzte Emulieren („Virtualisieren“) einer eigenständigen Maschine entsteht für die Entwicklung und das Deployment Modularität und damit größere Freiheit: zum Beispiel in der Wahl des Betriebssystems oder der verwendeten Programmiersprachen und -Bibliotheken. Aus Sicht des „echten“ Servers können die Ressourcen, welche der Anwendung zustehen sollen, besser beschränkt bzw. garantiert werden. Jedoch sind deren Anforderungen auch bedeutend höher, da die Virtuelle Maschine auch das virtuelle Betriebssystem unterhalten muss.

Letztendlich wurde dieses Prinzip durch die Verbreitung von Containern, vor allem Docker, wesentlich verschlankt und vereinfacht. Vereinfacht gesagt baut/konfiguriert man für eine Anwendung oder ein Machine Learning Modell einen eigenen virtuellen, abgegrenzten Server. So enthält jeder Container sein eigenes Dateisystem und gewisse Systembibliotheken, aber nicht das Betriebssystem. Damit wird er technisch zu einem Sandkasten, dessen andere Konfiguration, Code-Abhängigkeiten oder Fehler sich nicht auf den Host-Server auswirken, aber gleichzeitig als relativ „leichtgewichtige“ Prozesse direkt auf diesem laufen können.

_Vergleich virtuelle Maschine und Docker Container Architektur
Abb. 2: Vergleich zwischen Virtueller Maschine und Docker Container Systemarchitektur, Quelle: https://i1.wp.com/www.docker.com/blog/wp-content/uploads/Blog.-Are-containers-..VM-Image-1-1024×435.png?ssl=1

Es besteht also die Möglichkeit, alles für die gewünschte Anwendung zu kopieren, installieren, usw., und dies in einem verpackten Container überall in einem einheitlichen Format bereitzustellen. Dies ist nicht nur für das Produktionsumfeld extrem nützlich, sondern findet bei STATWORX auch gerne in der Entwicklung von komplizierteren Projekten oder der Proof-of-Concept Phase Gebrauch. Zwischenschritte oder -Ergebnisse, wie beispielsweise die Extraktion von Text aus Bildern, können als Container wie ein kleiner Webserver von denjenigen verwendet werden, die an der Weiterverarbeitung des Textes interessiert sind, etwa die Extraktion gewisser zentraler Informationen, oder die Bestimmung von dessen Stimmung oder Absicht.

Diese Unterteilung in sogenannte „Microservices“ mit Hilfe von Containern hilft ungemein bei der Wiederverwendbarkeit der einzelnen Module, bei der Planung und Entwicklung der Architektur komplexer Systeme; sie befreit gleichzeitig die einzelnen Arbeitsschritte von technischen Abhängigkeiten gegenübereinander und erleichtert die Wartungs- und Update-Prozeduren.

Nach diesem kleinen Überblick über die mächtigen und vielseitigen Möglichkeiten der Bereitstellung von Software wird sich der folgende Text damit beschäftigen, wie man diese Container (sprich Anwendungen oder Modelle) verlässlich und skalierbar für Kunden, andere Anwendungen, interne Dienste oder Berechnungen mit Kubernetes bereitstellen kann.

Kubernetes – 8 wesentliche Komponenten

Kubernetes wurde 2014 von Google als open-source Container-Management Software (auch Container-Orchestrierung genannt) vorgestellt. Intern benutzte man bereits seit Jahren eigens entwickelte Tools, um Arbeitslasten und Anwendungen zu verwalten, und sah in der Entwicklung von Kubernetes nicht nur das Zusammenkommen von best practises und lessons learned, sondern auch die Möglichkeit damit ein neues Geschäftsfeld im Cloud Computing zu erschließen.

Der Name Kubernetes (griechisch für Steuermann) wurde angeblich in Bezug auf ein symbolisches Containerschiff ausgewählt, für dessen optimalen Betrieb jener verantwortlich ist.

1.    Nodes

Spricht man von einer Kubernetes-Instanz, wird sie als (Kubernetes) Cluster bezeichnet: dieses besteht aus mehreren Servern, genannt Nodes. Eine davon, die sogenannte Master-Node, ist komplett für den administrativen Betrieb zuständig, und ist die Schnittstelle, welche vom Entwickler angesprochen wird. Alle weiteren, genannt Worker-Nodes, sind zu Beginn unbelegt und damit flexibel einsetzbar. Während Nodes tatsächlich physische Instanzen sind, meist in Rechenzentren, sind die nun folgenden Begrifflichkeiten Konzepte von Kubernetes.

2.    Pods

Soll eine Anwendung auf dem Cluster bereitgestellt werden, wird im einfachsten Fall der gewünschte Container angegeben, und daraufhin (automatisch) ein sogenannter Pod erstellt und einer Node zugewiesen. Der Pod ähnelt hier einfach einem laufenden Container. Sollen gleich mehrere Instanzen der gleichen Anwendung parallel laufen, etwa um bessere Verfügbarkeit zu bieten, kann die Anzahl der Replicas angegeben werden. Hierbei wird die spezifizierte Anzahl an Pods mit jeweils derselben Anwendung auf die Nodes verteilt. Sollte der Bedarf nach der Anwendung trotz Replicas die Kapazitäten übersteigen, können mit dem Horizontal Autoscaler automatisch noch mehr Pods erstellt werden. Besonders bei Deep Learning Modellen mit verhältnismäßig langer Inferenzzeit können hier Metriken wie CPU- oder GPU-Auslastung überwacht werden, und die Anzahl der Pods vergrößert oder verringert werden, um sowohl Kapazitäten als auch Kosten zu optimieren.

Illustration des Autoscaling und der Belegung der Nodes
Abb. 3: Illustration des Autoscaling und der Belegung der Nodes. Die Breite der Balken entspricht dem Ressourcenbedarf der Pods bzw. der Kapazität der Nodes.

Um nicht zu verwirren: Letztlich ist jeder laufende Container, also jede Arbeitslast, ein Pod. Im Falle der Bereitstellung einer Anwendung geschieht das technisch über ein Deployment, zeitlich begrenzte Rechenlasten sind hingegen Jobs. Persistente Speicher wie Datenbanken werden mit StatefulSets verwaltet. Die folgende Abbildung gibt einen Überblick über die Begriffe:

Deployment-Controller
Abb. 4: Was ist was in Kubernetes? Im Deployment wird angegeben was gewünscht ist; der Deployment-Controller kümmert sich um das Erstellen, den Erhalt und das Skalieren der Modell-Container, welche denn als einzelne Pods auf den Nodes laufen. Jobs und StatefulSets funktionieren analog mit ihrem eigenen Controller.

3.    Jobs

Mit Kubernetes Jobs können sowohl einmalige als auch wiederkehrende Jobs (sog. CronJobs) in Form eines Container-Deployment auf dem Cluster ausgeführt werden.

Im einfachsten Fall können diese wie ein Skript gesehen werden, welches für Wartungs- oder Aufbereitungsarbeiten von beispielsweise Datenbanken genutzt werden kann. Des Weiteren verwendet man diese auch zum Batch-Processing, wenn zum Beispiel Deep Learning Modelle auf größere Datenmengen angewandt werden sollen und es sich aber nicht lohnt das Modell durchgehend auf dem Cluster zu halten. Der Modell-Container wird hier eigens hochgefahren, erhält Zugriff auf das gewünschte Dataset, führt seine Inferenz darüber aus, speichert die Ergebnisse und fährt sich herunter. Auch für die Herkunft und anschließende Speicherung der Daten ist man hier flexibel, so können eigene oder Cloud Datenbanken, Bucket/Objekt-Speicher oder auch lokale Daten und Logging-Frameworks angebunden werden.

Für wiederkehrende CronJobs kann ein einfaches Zeitschema spezifiziert werden, sodass beispielsweise nachts bestimmte Kundendaten, -transaktionen oder ähnliches verarbeitet werden. Mit Natural Language Processing können so zum Beispiel nachts automatisch Pressespiegel erstellt werden, welche am folgenden Morgen ausgewertet bereitstehen: Nachrichten zu einem Unternehmen, dessen Branche, Wirtschaftsstandorte, Kunden, usw. können aggregiert oder bezogen werden, mit NLP ausgewertet, zusammengefasst, und mit Stimmungsbildern präsentiert oder nach Themen/Inhalten geordnet werden.

Auch arbeitsintensive ETL (Extract Transform Load) Prozesse können so außerhalb der Geschäftszeiten durchgeführt oder vorbereitet werden.

4.    Rolling Updates

Soll ein Deployment auf die neuste Version gebracht werden, oder muss ein Rollback auf eine ältere Version vollzogen werden, können in Kubernetes Rolling Updates angestoßen werden. Diese garantieren durchgehende Erreichbarkeit der Anwendungen und Modelle innerhalb einer Continuous Integration/Continuous Deployment Pipeline.

Ein solches Rollout kann reibungslos in einem oder wenigen Schritten angestoßen und überwacht werden. Durch eine Rollout-History besteht auch die Möglichkeit, nicht nur auf eine vorherige Containerversion zurückzuspringen, sondern auch die vorherigen Deployment-Parameter wiederhergestellt werden, sprich Mindest- und Höchstanzahl der Nodes, welche Ressourcengruppe (GPU Nodes, CPU Nodes mit wenig/viel RAM,…), Health-Checks usw.

Wird ein Rolling Update angestoßen, werden die jeweiligen bestehenden Pods so lange am Laufen und erreichbar gehalten, bis dieselbe Anzahl an neuen Pods hochgefahren und zugänglich sind. Hier gibt es sowohl Methoden, um zu garantieren, dass keine Requests verloren gehen, wie auch Parameter, die für den Wechsel eine Mindesterreichbarkeit oder einen maximalen Überschuss an Pods regeln.

Illustration eines Rolling Updates
Abb. 5: Illustration eines Rolling Updates.

Die Abbildung 5 veranschaulicht das Rolling Update.

1) Die bisher aktuelle Version einer Anwendung liegt mit 2 Replicas auf dem Kubernetes Cluster und ist gewohnt ansprechbar.

2) Ein Rolling Update auf Version V2 wird gestartet, dieselbe Anzahl an Pods wie für V1 werden erstellt.

3) Sobald die neuen Pods den Zustand „Running“ haben und ggf. Health-Checks absolviert wurden, damit also funktional sind, werden die Container der älteren Version heruntergefahren.

4) Die älteren Pods sind entfernt und die Ressourcen wieder freigegeben.

Der DevOps- und Zeitaufwand ist hierbei marginal, intern ändern sich keine Hostnamen oder ähnliches, während der Dienst aus Sicht der Konsumierenden wie bisher in gewohnter Weise ansprechbar ist (gleiche IP, URL, …) und lediglich auf die neuste Version gebracht wurde.

5.    Platform/Infrastructure as a Service

Natürlich lässt sich ein Kubernetes Cluster auch lokal auf eigener Hardware on-premises einrichten sowie auf teilweise vorgefertigten Lösungen wie DGX Workbenches.

Einige unserer Kunden haben strikte Richtlinien oder Auflagen bezüglich (Data-) Compliance oder Informationssicherheit, und möchten nicht, dass möglicherweise sensible Daten das Unternehmen verlassen. Weiterhin kann so vermieden werden, dass der Datenverkehr über nicht-europäische Knotenpunkte fließt oder generell in ausländischen Rechenzentren landet.

Erfahrungsgemäß ist dies aber nur in einem sehr geringen Anteil der Fall. Durch Verschlüsselung, Rechtemanagement und SLAs der Betreiber erachten wir die Verwendung von Cloud-Diensten und -Rechenzentren als allgemein sicher und verwenden diese auch für größere Projekte. Diesbezüglich sind auch Deployment, Wartung, CI/CD Pipelines dank Methoden der Containerization (Docker) und Abstraktion (Kubernetes) größtenteils identisch und einfach zu verwenden.

Alle großen Cloud-Betreiber wie Google (GCP), Amazon (AWS) und Microsoft (Azure), aber auch kleinere Anbieter und bald sogar spannende neue deutsche Projekte, bieten sehr ähnliche Kubernetes Dienste an. Dadurch wird es noch einfacher, ein Projekt oder Modell bereitzustellen und vor allem zu skalieren, da durch auto-scaling das Cluster je nach Ressourcenbedarf erweitert oder verkleinert werden kann. Dies entbindet uns aus technischer Sicht größtenteils davon die Nachfrage eines Dienstes abschätzen zu müssen, während die Rentabilität und Kostenstruktur gleichbleiben. Weiterhin können die Dienste auch in unterschiedlichen (geographischen) Zonen gehostet und betrieben werden, um schnellste Erreichbarkeit und Redundanz zu garantieren.

6.    Node-Vielfalt

Die Cloud-Betreiber bieten eine große Anzahl unterschiedlicher Node-Typen an, um für alle Anwendungsfälle vom einfacheren Webservice bis hin zu High Performance Computing alle Ressourcenanforderungen zu befriedigen. Besonders im Anwendungsfeld Deep Learning lassen sich so die immer größer werdenden Modelle stets auf der benötigten neuesten Hardware trainieren und bereitstellen.

Während wir beispielsweise für kleinere NLP Zwecke Nodes mit einer durchschnittlichen CPU und geringem Arbeitsspeicher verwenden, lassen sich große Transformer-Modelle im gleichen Cluster auf GPU-Nodes deployen, was deren Verwendung effektiv erst ermöglicht und gleichzeitig die Inferenz (Anwendung des Modells) um Faktor 20 beschleunigen kann. Da neuerdings die Bedeutung dedizierter Hardware für Neuronale Netze stetig zunimmt, bietet Google auch Zugriff auf die eigens entwickelten, für Tensorflow optimierten TPUs an.

Die Organisation und Gruppierung all dieser unterschiedlichen Nodes erfolgt in Kubernetes in sog. Node Pools. Diese können im Deployment ausgewählt bzw. angegeben werden, sodass den Pods der Modelle die richtigen Ressourcen zugeteilt werden.

7.    Cluster Autoscaling

Das Ausmaß der Nutzung von Modellen oder Diensten, intern oder durch Kunden, ist oftmals nicht absehbar oder schwankt zeitlich stark. Mit einem Cluster Autoscaler können automatisch neue Nodes erstellt werden, oder nicht benötigte „leerstehende“ Nodes entfernt werden. Auch hier kann ein Minimum an Nodes angegeben werden, welche immer bereitstehen sollen sowie, wenn gewünscht, auch eine maximale Anzahl, die nicht überschritten werden kann, um ggf. die Kosten zu deckeln.

8.    Anbindung anderer Dienste

Prinzipiell können Cloud Dienste verschiedener Anbieter kombiniert werden, komfortabler und einfacher ist jedoch die Nutzung eines Anbieters (Beispiel Google GCP). Somit können Dienste wie Datenbuckets, Container-Registry, Lambda Funktionen Cloud-intern ohne große Authentifizierungsprozesse eingebunden und verwendet werden. Des Weiteren ist gerade in einer Microservice-Architektur die Netzwerkkommunikation unter den einzelnen Hosts (Anwendungen, Modelle) wichtig und innerhalb eines Anbieters erleichtert. Hier kann auch Zugangskontrolle/RBAC implementiert werden, sowie mehrere Cluster oder Projekte mit einem Virtuellen Netzwerk überbrückt werden, um die Zuständigkeits- und Kompetenzbereiche besser zu trennen.

Umfeld und zukünftige Entwicklungen

Die steigende Nutzung und Verbreitung von Kubernetes haben ein ganzes Umfeld an nützlichen Tools, wie auch Weiterentwicklungen und weitere Abstraktionen mit sich gebracht, welche dessen Verwendung weiter erleichtern.

Tools und Pipelines basierend auf Kubernetes

Mit Kubeflow lässt sich beispielsweise das Training von Machine Learning Modellen als TensorFlow Training Job anstoßen und fertige Modelle mit TensorFlow Serving bereitstellen.

Der ganze Prozess kann auch in eine Pipeline verpackt werden, welche dann mit Verweis auf Trainings-, Validation- und Testdaten in Speicherbuckets das Training verschiedener Modelle durchführt, überwacht, deren Metriken loggt und die Modell-Performance vergleicht. Der Workflow beinhaltet auch die Aufbereitung der Inputdaten, sodass nach erstmaligem Aufbau der Pipeline einfach Experimente zur Exploration von Modellarchitekturen und Hyperparameter-Tuning angestellt werden können

Serverless

Durch Serverless Deployment Verfahren wie Cloud Run oder Amazon Fargate wird ein weiterer Abstraktionsschritt weg von den technischen Anforderungen unternommen. Hiermit können Container binnen Sekunden deployed werden, und skalieren wie Pods auf einem Kubernetes Cluster, ohne dass man dieses überhaupt erstellen oder warten muss. Dieselbe Infrastruktur wurde also noch einmal in ihrer Benutzung vereinfacht. Nach dem Prinzip pay-per-use wird nur die Zeit berechnet, in welcher der Code wirklich aufgerufen und ausgeführt wird.

Fazit

Kubernetes ist heute zu einer zentralen Säule im Machine Learning Deployment geworden. Der Weg von der Daten- und Modellexploration zum Prototyp und schließlich in die Produktion ist durch Bibliotheken wie PyTorch, TensorFlow und Keras zum einen enorm verschlankt und vereinfacht worden. Gleichzeitig können diese Methoden bei Bedarf aber auch enorm detailliert verwendet werden, um maßgeschneiderte Komponenten zu entwickeln oder mittels Transfer Learning bestehende Modelle einzubinden und anzupassen. Container Technologien wie Docker erlauben im Anschluss, das Ergebnis mit all dessen Anforderungen und Abhängigkeiten zu bündeln und ohne weiteren Aufwand fast überall blitzschnell auszuführen. Im letzten Schritt ist deren Bereitstellung, Wartung und Skalierung mit Kubernetes ebenfalls ungemein vereinfacht und leistungsfähig geworden.

All dies erlaubt uns eigene Produkte sowie Lösungen für Kunden strukturiert zu entwickeln:

  • Die Komponenten und die Rahmeninfrastruktur haben eine hohe Wiederverwendbarkeit
  • Mit verhältnismäßig geringem Zeit- und Kostenaufwand kann ein erster Meilenstein oder Proof-of-Concept erreicht werden
  • Die weiterführende Entwicklungsarbeit folgt auf natürliche Weise weiter diesem Prozess
  • Fertige Deployments skalieren ohne zusätzlichen Aufwand, mit Kosten proportional zum Bedarf
  • Daraus folgt eine verlässliche Plattform mit planbarer Kostenstruktur

Wenn Sie sich im Anschluss an diesen Artikel weiter über einige zentrale Komponenten informieren möchten, haben wir hier noch einige interessante Beiträge über:

Quellen

 

Jonas Braun

Der Anfang der Adventszeit brachte dieses Jahr nicht nur den ersten Schnee in der Rhein-Main Region (Abb. 1), sondern leitete auch bei vielen nach einem Jahr voller turbulenter Ereignisse und endlosen Stunden im Homeoffice die alljährliche Zeit der Besinnlichkeit ein. Obgleich sich die angesprochene Besinnung bei vielen eher euphemistisch äußert, in Form von Geschenk- und Planungsstress oder der alljährlichen Jahresendrallye bei STATWORX, dürfen gerne auch Erinnerungen an gutes Essen, kitschige Musik und gemütliche Abende heraufbeschworen werden.

Abb. 1: Schnee in Rhein-Main
Abb. 1: Für einen kurzen Moment scheint der Weltenbrand durch unsere Lieblingsniederschlagsform erloschen, und die Welt wirkt restlos in unschuldiges und reines Weiß getaucht.
Anm. der Redaktion: Der Autor hatte eine schwierige Woche. Nichtsdestotrotz gestehen wir ein, dass seine Worte ein positives Stimmungsbild inspirieren könnten.

Mit dem Advent bricht bekanntlich auch die Zeit der Weihnachtsplätzchen an. Eine exzellente Gelegenheit, bei meinen STATWORX-Kolleg*innen unter dem Vorwand der Nächstenliebe Sympathie und professionelles Ansehen durch unschuldig wirkende, zuckerhaltige Kalorienbomben inklusive Deep-Learning-Kniff zu erlangen. In Ergänzung zu meinem vorangegangenen Artikel zum Thema Kochen mit Deep Learning, möchte ich in diesem Beitrag eine kleine Web-App vorstellen, mit der sich alternative Zutaten für Rezepte vorschlagen lassen, untermalt von KI-generierten Weihnachtsliedern. Ziel dieser Artikel (und anderer, wie zum Beispiel unsere Super Mario spielende KI) ist es, die Grundlagen hinter den oftmals etwas mystisch wirkenden Deep Learning Methoden anschaulich zu vermitteln. In vielen Gesprächen entstand bei uns der Eindruck, dass durch solch einen Überblick spannende Anwendungs- und Geschäftsfälle wesentlich besser erschlossen werden können, indem man sich zunächst bewusst macht, welche grundsätzlichen Anwendungen mittels Deep Learning erschlossen werden können.

Alternative Zutaten für Rezepte finden mittels Word Embeddings

Schon länger dominieren Anwendungen und Publikationen zum Thema Natural Language Processing die Deep Learning Forschung. Regelmäßig ermöglichen bahnbrechende Ergebnisse neue Anwendungsfälle. Eines der Schlagworte war hier zunächst Word Embeddings mittels Word2Vec und nun brandaktuell Transformer-Modelle und ihr Attention-Mechanismus, wie beispielsweise BERT oder GPT-3.

Zur genaueren Veranschaulichung dieser Methode werden im Folgenden zunächst die Grundlagen von Word Embeddings erläutert. Anschließend wird aufgezeigt, wie diese Methode genutzt wurde, um Zutaten in Rezepten durch andere, möglichst ähnlich-verwendete Lebensmittel auszutauschen. Dabei werden nicht einfach „blind“ Vorschläge gemacht sondern aus ähnlichen, kontextuell verwandten Rezepten Vorschläge erkannt und abgeleitet. Somit kann (hoffentlich) sichergestellt werden, dass das alternative Rezept zur kulinarischen Freude wird und nicht unmittelbar im Mülleimer landet.

Grundlagen von Word Embeddings

Word2Vec ist ein ausgezeichnetes Beispiel, um eine der zentralen Konzepte des Deep Learnings zu veranschaulichen: das Representation Learning. Sehr vereinfacht dem Gehirn nachempfunden, durchlaufen Daten auch in künstlichen neuronalen Netzen mehrere Schichten. Jede Schicht verändert und kombiniert die Daten vorhergehender Schichten dahingehend, dass eine dichtere und abstraktere Repräsentation der Daten entsteht. Diese Ansammlungen an Zahlen, die aus menschlicher Sicht keine intuitive Bedeutung mehr haben, enthalten nicht mehr alle Informationen der Ursprungsdaten sondern nur noch jene, die für das Modell zur Lösung der jeweiligen Aufgabe als relevant eingestuft werden. Beim Training der Modelle wird die Repräsentationen also dahingehend optimiert, die Fehler der Modell-Vorhersage zu minimieren.

Möchte man also Word Embeddings nutzen, um Worte hinsichtlich ihrer Bedeutung zu vergleichen oder Ähnlichkeiten zu erkennen, wird ein Deep Learning Modell zum allgemeinen Sprachverständnis trainiert. Dies beinhaltet meistens Aufgaben, wie die Vorhersage benachbarter Worte oder des nächsten Satzes. Um diese Aufgaben lösen zu können, muss das Modell also die grundsätzliche Verwendung von Worten, insb. im Kontext von anderen Worten erlernen. Da man im Falle unserer Word Embeddings aber nur an den internen Repräsentierung der einzelnen Worte interessiert ist, ist dieses Vorgehen (Abb. 2) eigentlich nur Mittel zum Zweck.

Abb.2: Word2Vec Verfahren zur Vorhersage von benachbarten Worten

Beim Word2Vec Verfahren wird im Training versucht, ausgehend vom mittleren Wort die links und rechts benachbarten Worte vorherzusagen. Wichtig ist, dass die Repräsentierung des mittleren Wortes durch das Umfeld bzw. den Kontext geprägt wird. Treten Worte in ähnlichen Kontexten auf, ähnelt sich ihre numerische Repräsentierung. Daraus erwarten wir beispielsweise, dass die Embeddings von Feldsalat und Radicchio sich wesentlich näher sind (häufiger Kontext: Öl, Zwiebeln, Essig, Schüssel…), als die von Feldsalat und Dosenananas (seltener Kontext: trauriger verkaterter Sonntag im Studium).

Anwendung auf ein konkretes Beispiel: Pätzchen-Rezepte mit Bake2Vec

Wie auch im vorangegangenen Artikel zu diesem Beitrag wurden die Embeddings auf einer großen Ansammlung an Texten, genannt Corpus, trainiert. In diesem Fall ca. eine Million Rezepte aus Büchern und vor allem bekannten (englischen) Rezept-Webseiten, wie von der BBC oder Epicurious.

Hierbei prägen zwei verschiedene Kontexte die Embeddings:

  1. Die Auflistung aller Zutaten eines Gerichts
  2. Die Fließtext-Anleitung zur Zubereitung, also die angeleiteten Schritte im Kochrezept selbst

Nach dem Training entsteht eine Datenbank an Wort- und Embedding-Paaren, die mittels bestimmter Metriken verglichen werden können. Für gewöhnlich wird die Kosinus-Ähnlichkeit zwischen den Embeddings berechnet, womit man einen normierten Wert zwischen 0 und 1 enthält, der sozusagen die Güte einer Zutat als Ersatz einer anderen abbildet.  (Abb. 3)

Abb.3: Screenshot Web-App
Abb. 3: Screenshot aus der Web-App zur Recherche von Alternativzutaten

Für jede Zutat lassen sich Alternativen anzeigen. Beurteilen Sie die Vorschläge im Vergleich zu Ihren eigenen Ideen! Auch können Sie die Zutaten im Textfeld ändern/überschreiben, und sich Vorschläge für diese anzeigen lassen. Hier gehts zur Web-App.

Mit Generativen Modellen Weihnachtslieder generieren

Generative Modelle beweisen schon länger, zu welchen eindrucksvollen Resultaten Deep Learning abseits klassischer Machine Learning Anwendungen, wie Klassifikation und Regression, fähig sind. Anwendungsfälle wie das Generieren von fehlenden Datenpunkten oder das Ausfüllen von verdeckten Flächen in Bildern finden in der Geschäftswelt Anwendung. Künstler*innen und Enthusiasten erstellen dagegen Kunstwerke, Gedichte oder Fotos von nicht-existierenden Gesichtern. Vor 2 Jahren erzielte sogar das erste KI-generierte Porträtgemälde über $400.000 bei einer Auktion.

Neben der bildenden Kunst haben generative Modelle auch in der Musikszene ersten Anklang gefunden. Im folgenden Abschnitt betrachten wir die Generierung von Weihnachtsliedern am Beispiel einfacher Jingles und Ausschnitte wie „Oh Tannenbaum oder „Alle Jahre wieder. Damit schaffen wir zum Wohle der Lesenden und Hörenden einen Mariah Carey- und Michael Bublé-freien Safe Space, dem aber leider auch die George Michaels, Crosbys und Sinatras zum Opfer fallen.

Tensorflow Magenta

Das Magenta Projekt möchte „die Rolle von Machine Learning in kreativen Prozessen“ erforschen und bietet dabei eine Vielzahl an Veröffentlichungen, Programmier-Bibliotheken und Tools zur Generierung von Musik. Die Dance-Punk Band YACHT arbeitete daraufhin mit Google zusammen und erstellte einen Katalog aus den MIDI Tonspuren ihrer bisherigen Lieder, die dann einzeln oder gepaart (z.B. Gitarren- und Bass-Riff zusammen) verwendet wurden, um neue Musik im Stil des bisherigen Songs der Band zu generieren. Ähnlich wurde auch mit den Liedtexten verfahren. Selbst das Album Cover und die Videos im Hintergrund der Konzerte wurden mit Deep Learning Modellen generiert und verfeinert.

Die im nächsten Abschnitt beschriebenen Rekurrenten Neuronale Netze bieten eine etablierte Methode im Umgang mit einspurigen Riffs oder Jingles. Verschiedene Ausführungen und Varianten davon sind im „Magenta-Werkzeugkasten“ als MelodyRNN enthalten.

Rekurrente Modelle

Vor der Einführung von Transformer-Modellen wurden im Bereich NLP größtenteils Rekurrente Neuronale Netze (RNNs) verwendet, die von Natur aus besonders geeignet sind, sequenziellen Daten zu verarbeiten. Dies bedeutet, dass Rekurrente Netze es ermöglichen, Entscheidungen oder Vorhersagen bezüglich aufeinander folgender, abhängiger Datenpunkte zu treffen. Hierzu zählen bspw. aufeinanderfolgende Worte in einem Satz, Werte aus Sensoren im Zeitverlauf, oder eben Noten einer Partitur, die im Zeitverlauf betrachtet eine Melodie ergeben. Am Beispiel einer Wortsequenz ist es also wichtig, dass ein Machine Learning Modell einordnen kann, welche Worte in welcher Abfolge im Text erscheinen.

Um diese Informationen aus den Daten ableiten zu können, pflegen RNNs einen internen Zustand, der zusätzlich zur oben beschriebenen Repräsentation nicht nur vom aktuell betrachteten Wort, sondern auch vom internen Zustand des RNNs bei vorherigen Worten abhängt. (Abb. 4)

Abb. 4: RNN
Abb. 4: RNN Beispiel

Das RNN pflegt einen internen Zustand vorangegangener Inputs. Der neue Zustand ergibt sich aus einer Gewichtung des alten Zustands und des aktuellen Inputs.

Als Output wird in diesem Fall versucht, das folgende Wort vorherzusagen. Das RNN sollte erkennen, dass im Kontext des Wortes Weihnachten eher das Wort „backen“ vorhergesagt werden muss, und nicht etwa „kaufen“.

Um ein generatives Modell zu entwickeln, trainiert man das RNN darauf, für eine gegebene Sequenz an Worten stets das nächste, passende Wort vorherzusagen. Wendet man das Modell anschließend an, präsentiert man eben eine solche Sequenz an Worten als vorgegebenen Input, nimmt den vorhergesagten Output des Modells hinzu, füttert diesen als folgenden Input wieder in das Modell und wiederholt diesen Vorgang beliebig oft. So macht das Modell Vorhersagen auf dessen eigene Vorhersagen und generiert somit einen Text.

Musik generieren

Da es sich bei Noten von Volks- und Weihnachtsliedern auch um eine sequenzielle Abfolge von Daten handelt, lässt sich die zuvor beschriebene Methodik anschaulich auf musikalische Daten übertragen.

Möchte man ein Lied in einem bestimmten Stil oder Genre eines anderen Liedes weiterführen oder generieren, kann man im einfachsten Falle ein von Magenta publiziertes (und vortrainiertes) MelodyRNN verwenden. Dort gibt man die gewünschte Anfangsmelodie als MIDI Datei vor und definiert ggf. noch weitere Parameter wie Länge oder Freiheitsgrade in der Generierung. Anschließend wird das Lied, analog zum Text-Beispiel, Ton für Ton synthetisiert.

Abb. 5: Generierte Musik "oh Tannenbaum"
Abb.5: Kein Vivaldi, dafür aber eine Flasche Primitivo; der musikalisch gänzlich untalentierte Autor schafft es eines Nachts, Noten in einspurige MIDI Dateien ohne Taktwechsel zu exportieren, um sie mit Magenta verarbeiten zu können.

Für den interessierten Lesenden gibt es an dieser Stelle noch einiges zu entdecken! Um den Bogen zum Thema Representation Learning zu schlagen, empfehlen wir einen Blick auf MusicVAE [https://magenta.tensorflow.org/music-vae]. Mit einem Variational Autoencoder lassen sich Embeddings (merke: nicht nur auf Worte beschränkt, sondern auch ganze Texte, Bilder, Lieder,…) erlernen, welche einfach und strukturiert manipulierbar sind. Somit lässt sich beispielsweise eine Komponente eines Embeddings ändern, die das Musikgenre darstellt, aber nicht die Melodie. (Re)konstruiert man anschließend das Embedding, erhält man ein Lied mit der gleichen Melodie, jedoch im Stil einer anderen Musikrichtung.

Beispiele für State-of-the-Art Musikgenerierung finden sich auch in der OpenAI Jukebox, welche sich auch eines VAE-Modells bedient.

Fazit

Bei den in diesem Artikel beschriebenen Methoden muss natürlich meist etwas Auslese oder Feinabstimmung betrieben werden, um die gewünschten Ergebnissen zu erzielen. Im Falle der kreativen Anwendung, wie bei der Band YACHT, wurden tausende, wenn nicht zehntausend Melodien generiert und durchsucht, um zufriedenstellende Resultate zu erhalten. Bei den Plätzchenzutaten hingegen ging es eher um die Exploration von Modell-Varianten und -Parametern, welche dann zu beständig guten Ergebnissen führen.

Der Autor hofft, dass Ihnen der kleine Einblick in Methoden des Natural Language Processing gefallen hat und möchte Sie animieren, die Plätzchen Web-App auszuprobieren, oder diese zu missbrauchen, um sich Alternativen zu deftigen Zutaten oder Gemüse auszugeben.

Bleiben Sie so artig, wie nötig! Frohe Weihnachten! J.

Anmerkungen & Quellen

A) Hallo und danke Mama!

Abb. 6: Plaetzchen
Abb. 6: Eine unvollständige Auswahl der Plätzchen der Familie des Autors.

Während mütterlicherseits jährlich über 20 Sorten gebacken werden, schafft es die Tante nur auf mickrige acht. Die Begeisterung und das Interesse am Kochen und Backen ist im Kindesalter bereits auf den Autor übergesprungen. Im Gegenzug jedoch wundert sich dessen Familie des Öfteren, „was dieses Deep Learning denn genau ist“ und was der Junge auf der Arbeit eigentlich macht. Anwendungsbeispiele wie diese Web-App sind dabei wunderbare Gelegenheiten, Methoden des Deep Learning anschaulich zu erklären, Alltagsbezug zu schaffen und sich für die vielen kommenden fachlichen Herausforderungen zu motivieren!

B) Die Rezepte dieser kleinen Exkursion wurden Chefkoch.de entnommen, zu den Originalen gelangen Sie über die folgenden Links:

 

Deep-Fake Videos bekannter Politiker, lernende Super Marios, übersetzte Webseiten und automatisierte Landwirtschaft: Kaum ein anderes Feld hat in so kurzer Zeit einen solch rasanten Aufstieg erfahren und Einzug in alle Ausprägungen dieser Welt erreicht, wie das Thema Deep Learning.

Akademisch interessant, wie auch direkt praktisch anwendbar, scheint die heutige Vermarktung und Berichterstattung sich auf die neue Allzweckwaffe eingeschossen zu haben. Aber was ist dran an dem Ding? Was ermöglicht uns dieser moderne Forschungsbereich, welcher schon Turing-Preisträger, aber noch keinen bestandenen Turing-Test hervorgebracht hat? Und wo fange ich überhaupt an?

Mit diesem Blogbeitrag möchte ich einen kleinen Überblick darüber verschaffen, was verschiedene Deep Learning Modelle und Ansätze heutzutage leisten können und wie der Einstieg auch auf technischer Ebene gelingt.

Schritt für Schritt zum Optimum

Nach dem ersten erwartungsvollen „AI Boom“ in den 1950er Jahren und dem resultierenden „AI Winter“ der 60er und 70er Jahre, sind es vor allem einige Schlüsselpublikationen, Fortschritte im Bereich GPUs (Grafikkarten) und eine schiere Flut an Daten, welche das heutige Deep Learning ermöglicht haben. Unabhängig von der Modellart und -architektur bilden diese das Fundament aller Neuronalen Netze, sei es zur Bildverarbeitung, Text- und Zeitreihenanalyse oder das selbstständige Lernen via Deep Reinforcement Learning.

Sind die Grundkonzepte, welche nicht über angewandte Schulmathematik hinausgehen, einmal verstanden, so wird einem diese Arbeit auch prompt durch extrem mächtige Programmier-Frameworks wie TensorFlow und Keras abgenommen. Diese abstrahieren den Entwurf und das Training Neuronaler Netze so sehr, dass der ganze Prozess trügerisch einfach wirkt. Die Anzahl an Einstellungen und Stellschrauben, Hyperparameter genannt, ist bei Neuronalen Netzen jedoch enorm, besonders wenn man bereits in 10-12 Zeilen Code ein anwendbares Deep Learning Modell erstellen kann. Somit konzentriert sich die Hauptaufgabe eines Data Scientists auf den Entwurf der Modelle und die Suche nach den optimalen Hyperparametern; ein Vorgang, der geprägt ist von theoretischem Wissen, aber vor allem von Erfahrungswerten.

Ein Workshop für alle Fälle

Zum Thema Deep Learning gibt es online unzählige Ressourcen, wie Medium Artikel, Reddit Diskussionen und MOOCs. Obwohl hier viele Aspekte des Themas behandelt werden, sind diese Ressourcen oftmals nicht ausreichend, um für die Anwendung von Deep Learning auf reale Daten und Probleme gewappnet zu sein. Daher haben wir bei STATWORX uns dazu entschlossen, unsere Erfahrung und unser Wissen in einem umfassenden Grundlagen-Workshop zu bündeln: dem Deep Learning Bootcamp.

deep learning slide

Hierbei war es uns überaus wichtig, das komplexe Thema zugänglich zu gestalten, einen roten Faden zu haben und dabei trotzdem alles Aufregende abzudecken. Keine leichte Aufgabe, bei dem spannenden Überangebot an Deep Learning Anwendungen. Möchte ich den Inhalt von Texten schneller bestimmen als es ein Mensch könnte, einem Bild meines Lieblingspromis einen Bart wachsen lassen oder doch eher einen Zahlungsdienstleister beim Erkennen von Kreditkartenbetrug unterstützen? All das ist theoretisch mit Deep Learning möglich. Da sich viele Anwendungsfälle und Vorgehensweisen sehr ähneln ist es für das eigene Verständnis und das Identifizieren von Geschäftsfällen entscheidend, solides Grundlagenwissen sowie einen guten Überblick zu bekommen. Im Workshop beschäftigen wir uns mit einer Vielzahl an Fragen, damit unsere Teilnehmenden die verschiedenen Teilbereiche des Deep Learning kennenlernen können. Dazu gehören folgende Fragestellungen:

  • Wie verwende ich ‚normale‘ Neuronale Netze (Multilayer Perceptrons), um den Preis eines Hauses vorherzusagen oder Anomalien in meinen Daten zu erkennen? Egal ob in der Finanzbranche, beim Bereinigen von Sensordaten oder für den Einzelhandel.
  • Was ermöglichen mir Convolutional Neural Networks in der Bilderkennung? Wenn ich beim Klassifizieren von Bildern Hunde, Katzen, Flugzeuge usw. erkennen kann, wie übertrage ich das Ganze auf mein Geschäftsfeld. Zum Beispiel könnten Fehler in der Fertigung erkannt oder der Zustand von Feldern überwacht werden?
  • Wie wende ich rekurrente neuronale Modelle an, um mit sequenziellen Daten umzugehen? Wie unterscheidet sich die Analyse von Finanzmarkt- oder Maschinendaten vom Umgang mit Texten, um ein gutes Bewerbungsanschreiben von einer Spamnachricht zu unterscheiden?
  • Wie kann ich mit den gleichen Reinforcement Learning Algorithmen, die den Computer ein Videospiel meistern lassen, mittels Deep Q-Learning Prozesse in Echtzeit optimieren, wie zum Beispiel in einem chemischen Reaktor?

Erfahrungswerte & Best Practices

Aus technischer und theoretischer Sicht sind die Unterschiede zwischen den jeweiligen Anwendungsfällen der einzelnen Modellarten teilweise erschreckend gering. Im Umkehrschluss ist der Lerneffekt und die Übertragbarkeit jedoch enorm. Der einzige Haken ist, dass es selten Faustregeln oder einen Leitfaden gibt, welche einem das beste Modell oder die besten Hyperparameter liefern.

Hier offenbart sich die Komplexität der Deep Learning Modelle. Aufgrund des hohen Berechnungsaufwands ist das Ausprobieren aller oder vieler Einstellungen nicht plausibel. Somit rücken persönliche Erfahrungswerte, Best Practices und empirische Erkenntnisse in den Vordergrund. Während diese in einigen Online-Ressourcen zwar implizit enthalten sind, sind wir (und das Feedback der Teilnehmer) der Meinung, in unserem Kurs einen wesentlichen Mehrwert bieten zu können. Als Data Scientists, die jährlich an einer Vielzahl an Projekten arbeiten, übermitteln wir zu den Grundlagen auch gerne unsere eigenen Erfahrungen und (schmerzlichen) Lessons Learned.

Interesse am Deep Learning Bootcamp?

Falls wir Euer Interesse wecken konnten, dann schaut Euch doch mal unseren detaillierten Kurs Plan an oder schreibt uns eine Nachricht, falls ihr in einem Workshop gemeinsam mit uns einen Prototypen entwickeln möchtet! Ansonsten wünschen wir jedem einen spannenden und guten Einstieg in die Welt des Deep Learning, man sieht sich auf Stack Overflow. Mehrmals. Täglich…

Deep-Fake Videos bekannter Politiker, lernende Super Marios, übersetzte Webseiten und automatisierte Landwirtschaft: Kaum ein anderes Feld hat in so kurzer Zeit einen solch rasanten Aufstieg erfahren und Einzug in alle Ausprägungen dieser Welt erreicht, wie das Thema Deep Learning.

Akademisch interessant, wie auch direkt praktisch anwendbar, scheint die heutige Vermarktung und Berichterstattung sich auf die neue Allzweckwaffe eingeschossen zu haben. Aber was ist dran an dem Ding? Was ermöglicht uns dieser moderne Forschungsbereich, welcher schon Turing-Preisträger, aber noch keinen bestandenen Turing-Test hervorgebracht hat? Und wo fange ich überhaupt an?

Mit diesem Blogbeitrag möchte ich einen kleinen Überblick darüber verschaffen, was verschiedene Deep Learning Modelle und Ansätze heutzutage leisten können und wie der Einstieg auch auf technischer Ebene gelingt.

Schritt für Schritt zum Optimum

Nach dem ersten erwartungsvollen „AI Boom“ in den 1950er Jahren und dem resultierenden „AI Winter“ der 60er und 70er Jahre, sind es vor allem einige Schlüsselpublikationen, Fortschritte im Bereich GPUs (Grafikkarten) und eine schiere Flut an Daten, welche das heutige Deep Learning ermöglicht haben. Unabhängig von der Modellart und -architektur bilden diese das Fundament aller Neuronalen Netze, sei es zur Bildverarbeitung, Text- und Zeitreihenanalyse oder das selbstständige Lernen via Deep Reinforcement Learning.

Sind die Grundkonzepte, welche nicht über angewandte Schulmathematik hinausgehen, einmal verstanden, so wird einem diese Arbeit auch prompt durch extrem mächtige Programmier-Frameworks wie TensorFlow und Keras abgenommen. Diese abstrahieren den Entwurf und das Training Neuronaler Netze so sehr, dass der ganze Prozess trügerisch einfach wirkt. Die Anzahl an Einstellungen und Stellschrauben, Hyperparameter genannt, ist bei Neuronalen Netzen jedoch enorm, besonders wenn man bereits in 10-12 Zeilen Code ein anwendbares Deep Learning Modell erstellen kann. Somit konzentriert sich die Hauptaufgabe eines Data Scientists auf den Entwurf der Modelle und die Suche nach den optimalen Hyperparametern; ein Vorgang, der geprägt ist von theoretischem Wissen, aber vor allem von Erfahrungswerten.

Ein Workshop für alle Fälle

Zum Thema Deep Learning gibt es online unzählige Ressourcen, wie Medium Artikel, Reddit Diskussionen und MOOCs. Obwohl hier viele Aspekte des Themas behandelt werden, sind diese Ressourcen oftmals nicht ausreichend, um für die Anwendung von Deep Learning auf reale Daten und Probleme gewappnet zu sein. Daher haben wir bei STATWORX uns dazu entschlossen, unsere Erfahrung und unser Wissen in einem umfassenden Grundlagen-Workshop zu bündeln: dem Deep Learning Bootcamp.

deep learning slide

Hierbei war es uns überaus wichtig, das komplexe Thema zugänglich zu gestalten, einen roten Faden zu haben und dabei trotzdem alles Aufregende abzudecken. Keine leichte Aufgabe, bei dem spannenden Überangebot an Deep Learning Anwendungen. Möchte ich den Inhalt von Texten schneller bestimmen als es ein Mensch könnte, einem Bild meines Lieblingspromis einen Bart wachsen lassen oder doch eher einen Zahlungsdienstleister beim Erkennen von Kreditkartenbetrug unterstützen? All das ist theoretisch mit Deep Learning möglich. Da sich viele Anwendungsfälle und Vorgehensweisen sehr ähneln ist es für das eigene Verständnis und das Identifizieren von Geschäftsfällen entscheidend, solides Grundlagenwissen sowie einen guten Überblick zu bekommen. Im Workshop beschäftigen wir uns mit einer Vielzahl an Fragen, damit unsere Teilnehmenden die verschiedenen Teilbereiche des Deep Learning kennenlernen können. Dazu gehören folgende Fragestellungen:

Erfahrungswerte & Best Practices

Aus technischer und theoretischer Sicht sind die Unterschiede zwischen den jeweiligen Anwendungsfällen der einzelnen Modellarten teilweise erschreckend gering. Im Umkehrschluss ist der Lerneffekt und die Übertragbarkeit jedoch enorm. Der einzige Haken ist, dass es selten Faustregeln oder einen Leitfaden gibt, welche einem das beste Modell oder die besten Hyperparameter liefern.

Hier offenbart sich die Komplexität der Deep Learning Modelle. Aufgrund des hohen Berechnungsaufwands ist das Ausprobieren aller oder vieler Einstellungen nicht plausibel. Somit rücken persönliche Erfahrungswerte, Best Practices und empirische Erkenntnisse in den Vordergrund. Während diese in einigen Online-Ressourcen zwar implizit enthalten sind, sind wir (und das Feedback der Teilnehmer) der Meinung, in unserem Kurs einen wesentlichen Mehrwert bieten zu können. Als Data Scientists, die jährlich an einer Vielzahl an Projekten arbeiten, übermitteln wir zu den Grundlagen auch gerne unsere eigenen Erfahrungen und (schmerzlichen) Lessons Learned.

Interesse am Deep Learning Bootcamp?

Falls wir Euer Interesse wecken konnten, dann schaut Euch doch mal unseren detaillierten Kurs Plan an oder schreibt uns eine Nachricht, falls ihr in einem Workshop gemeinsam mit uns einen Prototypen entwickeln möchtet! Ansonsten wünschen wir jedem einen spannenden und guten Einstieg in die Welt des Deep Learning, man sieht sich auf Stack Overflow. Mehrmals. Täglich…