Blog >>> News_

Coding.Waterkant: Machine Learning Part 1

Im Juni haben wir uns beim dritten coding.waterkant Hackathon während des Waterkant Festivals in Kiel mit Natural Language Processing beschäftigt. Was es genau damit auf sich hat könnt ihr in diesem ersten Teil lesen.
11.08.2022
Lennart Büttner
Lennart Büttner
Entwickler
Coding.Waterkant: Machine Learning Part 1

Im Rahmen des diesjährigen Waterkant Festivals in Kiel gab es nun nach zwei Jahren der Pandemie auch erstmalig den dritten coding.waterkant Hackathon als Live Event. Jedoch war es dieses Jahr nicht wie ein klassischer Hackathon organisiert, in dem die Teilnehmer versuchen, eine bestimmte Problemstellung zu lösen: Dieses Mal ging es eher wie in einer Inkubator-Woche darum, bereits bestehende Machine Learning Projekte weiterzubringen. Des Weiteren gab es jeden Tag noch zusätzlich Workshops und Vorträge zum Thema KI, von allgemeinen Themen wie dem Deployment von Models bis hin zu sehr konkreten Problemen wie der Vorhersage von Zeitreihen.

Zu Beginn der Woche haben sich alle Projekte kurz vor allen Teilnehmer:innen vorgestellt und konnten so nochmal unter den Teilnehmer:innen ohne eigenes Projekt Unterstützer:innen anwerben. Ich habe so noch Hilfe von Alwin, einem Studenten des opencampus.sh Machine Learning Degrees bekommen können.

Im letzten Crew Hackathon haben wir bereits erste Grundsteine für unser Natural Language Query Vorhaben gelegt und einen Prototypen für einen generativen Datensatz gebaut. Im Rahmen der Inkubator-Woche stand eine Vorevaluation der Implementierung verschiedener Natural Language Processing (NLP) Modelle im Fokus. Durch den Austausch mit den anderen Teilnehmer:innen und Experten, sowie Vorträge und Workshops vor Ort konnte viel Inspiration und Orientierung mitgenommen können.

An dieser Stelle noch einmal ganz herzlichen Dank an die Orginasator:innen und Helfer:innen, die uns während der gesamten Woche mit allem versorgt haben, was zum Entwickeln notwendig ist. Von Strom über diverse Koffeinquellen bis hin zu Monitoren und der Vollverpflegung inklusive täglichem Frühstsbuffet und Snacks blieb wirklich kein Wunsch offen!

Unser Projekt

Bei unserer Arbeit an einer No-Code Datenbanklösung haben wir uns folgende Frage gestellt: Wie soll jemand, der nicht programmieren kann, eigentlich Informationen über seine Daten bekommen? Bei kleinen Datensätzen mag das händische Durchsuchen im UI oder das Bearbeiten von Exporten in Excel zwar noch funktionieren – aber was, wenn das unpraktikabel wird?

Generieren von Code ist ein sehr aktuelles Thema im Bereich NLP. So kam schnell die Idee auf, Deutsch oder Englisch in SQL-Queries zu übersetzen und es so zu ermöglichen, niedrigschwellig und zeiteffizient Fragen über die vorhandenen Daten stellen zu können.

Transformer

In der Woche beim coding.waterkant Hackathon habe ich mich in erster Linie mit einer relativ jungen Architektur Neuronaler Netze im Bereich des Natural Language Processing (NLP) beschäftigt, den sogenannten Transformern. Das Konzept wurde 2017 erstmalig vorgestellt in dem mittlerweile in der Szene schon nahezu legendären Paper (45k+ Zitatationen…) Attention is all you need. Die bekanntesten Vertreter dieser Gattung sind vermutlich die GPT (Generative Pre-trained Transformer) Modelle von Open AI. Auf diesen baut zum Beispiel das DALL·E 2 System auf, dass auf Grundlage eines englischen Satzes Bilder generiert. Ein weiteres darauf aufbauendes Projekt ist der Sprache-in-Code Übersetzer Codex. Anhand dieser beiden Beispiele lässt sich erkennen, wie flexibel diese Transformer eigentlich sind. Die Qualität der Ergebnisse ist gerade bei den GPT-3 basierten Modellen über viele, wenn auch natürlich nicht alle Zweifel erhaben.

Funktionsweise und Beschreibung dieser Neuronalen Netze

Diese Neuronalen Netze haben analog zu ihren Vörgängern eine sogennante Encoder - Decoder Architekur. Dies ermöglicht es, eine Eingabe variabler Länge in einen State mit fester Länge zu bringen (Encoder). Im zweiten Schritt wird mit dem eigentlichen Deep-Learning Model dieser State wieder in eine Ausgabe variabler Länge verwandelt (Decoder).

Ablauf vom Input über Encoder, State und Decoder zum Output.

Bildquelle: https://d2l.ai/chapter_recurrent-modern/encoder-decoder.html

Transformer zeichnen sich dadurch aus, dass sie prinzipiell einfacher strukturiert sind und trotzdem bei vielen NLP Aufgaben bessere Ergebnisse bringen. Ursprünglich waren in diesem Bereich komplexere und leistungshungrigere Modelle im Einsatz. Als State-of-the-Art galten Convolutional Neural Networks (CNN) und Recurrent Neural Networks (RNN) in Verbindung mit einem sogennanten Attention Mechanismus und dem o.g. Encoder - Decoder Prinzip. Durch die Erkenntnisse des “Attention is all you need“-Papers wurde klar, dass alleine ein bestimmter Attention Mechanismus, sowie die Encoder - Decoder Architektur in Verbindung mit einem normalen Feed-Forward Netz ausreicht, um die gleichen und sogar bessere Ergebnisse zu erzielen.

Ein Feed-Forward Netz ist sozusagen die Urform neuronaler Netze. Im Gegensatz zu RNNs werden hier – wie der Name schon sagt – Eingabe-Daten nur in eine Richtung geleitet. Jede Schicht des Netzes ist nur mit der jeweils Nachfolgenden verbunden. Bei RNNs hingegen sind, je nach konkreter Architektur, beliebige Verbindungen über Schichten hinweg und vor allem auch zu Vorgängerschichten möglich. Dadurch entstehen Abhängigkeiten zur Ausgabe der Vorherigen Schicht und es muss ein Zustand erhalten werden, was auch das Kernprinzip von RNNs darstellt. Das Problem der Abhängigkeit von dem Zustand ist, dass beim Trainieren des Netzes eine Parallelisierung nur sehr begrenzt bis gar nicht möglich ist, wodurch das Training verhältnismäßig ineffizient ist.

Durch die prinzipielle Einfachheit und daraus resultierende effizientere Trainierbarkeit der Feed-Forward Struktur von Transformern sind größere Netze handhabbarer bzw. in absehbarer Zeit trainierbar.

Der Trend lässt sich auch an den GPT Versionen erkennen: Hatte GPT-2 noch “nur“ 1,5 Millarden Parameter, so hat der Nachfolger GPT-3 bereits 175 Millarden. Parameter bezeichnen hierbei die gelernten Gewichtungen der einzelnen künstlichen Neuronen. GPT-3 ist mit über 500 Millarden sogenannten Tokens aus mehreren Datensätzen trainiert worden. Ein Token kann sowohl ein Wort, ein Teil eines Wortes oder ein einzelner Buchstabe sein.

Um den Trend in Richtung größere Netze nochmal zu verdeutlichen: Ein gutes Jahr nach dem Release von GPT-3, Mitte 2020, wird in einer Kooperation von Microsoft und NVIDIA Ende 2021 das Megatron-Turing NLG 530B Transformer Model vorgestellt - ein Netz mit über dreimal mehr Parametern als GPT-3.

Trend-Diagramm

Bildquelle: https://www.microsoft.com/en-us/research/blog/using-deepspeed-and-megatron-to-train-megatron-turing-nlg-530b-the-worlds-largest-and-most-powerful-generative-language-model/

Huggingface

Wenn man sich aktuell mit Transformern beschäftigt und vor allem daran interessiert ist, diese auch selbst zu nutzen, kommt man nicht an Huggingface.co vorbei. Eine Firma, welche ursprünglich mal Spiele entwickeln wollte, ist mittlerweile so etwas wie das GitHub der AI geworden. Dort findet man zum Beispiel über 50.000 vortrainierte Models, die man direkt zum Lösen entsprechender Probleme verwenden kann oder durch weiteres Training domänenspezifisch finetunen kann. Des Weiteren hat die Firma einen Abstraktionslayer über die drei populärsten Frameworks für Neuronale Netze (TensorFlow und Jax von Google, sowie PyTorch von Facebook) gelegt. Diese Abstraktion ist tatsächlich sehr gut nutzbar und dokumentiert. Darüber hinaus gibt es einen Kurs auf der Website, der einen sehr leichten Einstieg gibt und sukzessive in die Tiefe des Frameworks und der Plattform geht.

Als Beispiel mit wie wenig Aufwand so ein Huggingface Transformer genutzt werden kann, ist im Folgenden einmal die pipeline()-Funktion des transformers Paketes in Python demonstiert:

from transformers import pipeline

classifier = pipeline("sentiment-analysis")
classifier("I've been waiting for a HuggingFace course my whole life.")

# returns [{'label': 'POSITIVE', 'score': 0.9598047137260437}]

Mit zwei Zeilen Code und einem Import passiert tatsächlich deutlich mehr, als man auf den ersten Blick vermuten würde.

Der Aufruf pipeline("sentiment-analysis") lädt das momentan für die Aufgabe Sentiment Analysis, also Stimmungsanalyse eines Textes hinterlegte Model aus dem Huggingface ModelHub und wickelt es direkt zusammen mit einem passenden Tokenizer in ein classifier-Objekt. Dieses kann anschließend mit einem beliebigen, englischen Input aufgerufen werden. Wenn nun die Stimmung eines deutschen Textes erfasst werden soll, kann genau so einfach ein Model instanziiert werden, das einen beliebige deutschen Text ins Englische übersetzt.

Neben des einfach zu benutzenden Interfaces macht Huggingface auch seinem Slogan Democratizing AI alle Ehre. In der Vergangenheit war es eher großen Firmen und Instituten vorbehalten, aufgrund der hohen Anforderungen an die Rechenleistung derartige Models zu trainieren und zu benutzen. Allein die Kosten zum Training von GPT-3 werden auf rund 5 Millionen US-Dollar geschätzt. Zum Betrieb ist ein System aus Grafikkarten mit insgesamt 350 Gigabyte Grafikspeicher erforderlich. GPT-3 ist dementsprechend nicht nur aus Urheberrechtsgründen nicht auf Huggingface veröffentlicht. Es wäre schlicht für die Allermeisten unbrauchbar. Das mit 1,5 Millarden Parameter über 100 mal kleinere Vorgängernetz GPT-2 hingegen schon.

Neben dem Zugangsaspekt zu derartiger Technologie spielt auch Umweltschutz eine entscheidene Rolle bei der Bedeutung einer Plattform wie Huggingface. 85.000 kg CO2 sollen bei dem Training von GPT-3 ausgestoßen worden sein. Dies entspricht bei einem neuen Auto dem Zurücklegen von ungefähr 700.000 km Strecke. Ein möglichst häufiges Wiederverwenden von einmal trainierten Netzen ist also durchaus Wünschenswert in Zeiten der Klimakrise und steigenden Energiekosten.

Alles in allem haben wir nur an der Oberfläche sowohl von den Transformern als auch von Huggingface gekratzt. Im zweiten Teil dieser der Blogartikel-Serie bauen wir dann auf den Grundlagen auf, zeigen, wie wir beim Testen einiger Huggingface Community Models vorgegangen sind und gehen ins Detail unserer Ergebnisse des Hackathons.

Teilen @
Lust auf was Neues?
Aktuelle Stellenangebote >>>