Da Du diesen Text hier liest, bist Du offensichtlich genau so ein Nerd wie wir. Komm zu uns und bewerbe Dich bei ///\/ DevBoost: https://devboost.com/karriere (https://api.devboost.com)

Build your own ChatGPT – Ein Erfahrungsbericht

Wie wir einen ChatGPT-Klon erstellt haben: Unsere Erfahrungen, gewonnene Erkenntnisse und erzielte Ergebnisse auf dem Weg dahin, haben wir hier für Dich zusammengefasst.

von David Baldin, Lesezeit: 6 Min.
Drei DevBoost Kollegen diskutieren über ein Thema

AI ist derzeit das Gesprächsthema unserer Branche. Welche Auswirkungen wird AI auf unsere Arbeit als Softwareentwickler haben? Ist AI der große Produktivitätsschub für die Entwicklung oder wird sie uns Entwickler in naher Zukunft möglicherweise überflüssig machen?

Einige IT-Unternehmen experimentieren bereits mit ChatGPT und GitHub CoPilot in ihrer Produktentwicklung oder in Kundenprojekten, um genau diese Fragen zu beantworten. Bei aller Begeisterung bleibt jedoch die Unsicherheit, ob wir die meist von amerikanischen Unternehmen gehaltenen AI-Plattformen mit unserem Code oder dem unserer Kunden füttern sollten.

Eine mögliche Alternative ist ein eigenes, unternehmensinternes ChatGPT, das selbst gehostet wird, mit eigenen Daten trainiert wird und für die eigene Entwicklung verwendet wird. Um zu prüfen, ob und wie dies funktionieren könnte, haben wir im Juni 2023 einen AI Hackathon organisiert.

Wir haben es uns zur Aufgabe gemacht, einen eigenen ChatGPT-Klon aufzubauen, wobei wir verfügbare Open-Source-Projekte und -Modelle wie PrivateGPT, LocalAI oder GPT4ALL nutzten. Wir wollten verstehen, wie viel Aufwand dafür erforderlich ist, welche Ressourcen ein solches System benötigt und welche Ergebnisse wir damit erzielen können.

Kollaboration

Um die unterschiedlichen Fragestellungen zu beantworten, bildeten wir mehrere Teams. Eine Gruppe arbeitete mit handelsüblicher Hardware, während eine andere gemietete AWS-Server nutzte. Beide Teams sollten verschiedene Open-Source Modelle auszuprobieren, eigene Daten in die aufgesetzten Systeme einzuspeisen und die Ergebnisse quantitativ (Leistung) und qualitativ (Nützlichkeit) zu bewerten.

Ein weiteres Team fokussierte sich auf einen vertiefenden Einblick in das Modell Finetuning & Training mithilfe von Google Colab. Dabei ging es uns um die Bewertung qualitativer Aspekte von angepassten und vortrainierten Modellen (zensiert und unzensiert). Dieses Team befasste sich insbesondere mit dem Thema Jailbreaking, bekannten Schwachstellen und Strategien des Prompt-Engineering.

Unser Ziel für den Tag war es, einen ChatGPT-Klon aufzusetzen. Haben wir das Ziel erreicht? Im Prinzip ja, aber es gab einige Herausforderungen:

1. Benötigte Ressourcen

Wie erwartet, sind die Anforderungen an die zu verwendende Hardware sehr hoch, um akzeptable Performance zu erzielen. 

Projekte wie LocalAI und PrivateGPT bieten neben CPU-Implementierungen auch Implementierungen mittels NVIDIA CUDA, welche die effiziente Ausführung entsprechender Modelle auf GPUs erlaubt.

Vor diesem Hintergrund wollten wir einerseits die Möglichkeiten von GPU beschleunigten Cloud-Instanzen untersuchen, andererseits aber auch den Unterschied in der Performance bei der Ausführung der Modelle auf CPUs und GPUs vergleichen.

Dabei sind wir von den offensichtlichen Kandidaten der AWS EC2 Instanzen mit Grafikbeschleunigung sowie Gaming-PCs mit dedizierten Grafikkarten der Kollegen ausgegangen. Theoretisch wären noch äquivalente Google Cloud oder Azure Instanzen infrage gekommen. Hier haben wir uns aus pragmatischen Gründen jedoch auf AWS und dedizierte Hardware beschränkt.

Überraschend war, dass trotz eines intensiv genutzten kommerziellen AWS Accounts, initial keine AWS GPU Instanzen zur Verfügung standen. Wir konnten nur nach hartnäckigem Nachfragen und mit schlüssiger Begründung beim AWS Support eine Erhöhung der GPU Quotas bewirken.

Als kurzfristig verfügbare Alternative bot sich jedoch eine üppig ausgestattete EC2 Instanz mit 96 GB RAM und 48 CPUs an. Zu unserer Überraschung war auch diese Instanz für viele der Aufgaben an diesem Tag nicht performant genug.

Eine kurze Analyse der Systemressourcen während der Ausführung einiger Modelle auf diesen Instanzen hat gezeigt, dass die Maschine sämtliche CPUs ausgelastet hat. Allerdings muss man bedenken, dass Projekte wie LocalAI und PrivateGPT unter aktiver Entwicklung stehen und quasi täglich verbessert werden. Weiterhin stehen diese Open-Source Initiativen in direkter Konkurrenz zu OpenAI, deren kommerzielles Interesse gerade darin besteht, KI-Modelle möglichst effizient zu betreiben und als Dienstleistung zu verkaufen.

2. Manuelle Aufwände

Das Training großer Sprachmodelle erfolgt in mehreren Stufen, wobei jede Stufe andere Anforderungen an Qualität und Quantität der Daten stellt. Initial werden vor allem sehr viele Daten in nur geringer Qualität benötigt. Jeder weitere Schritt erfordert eher qualitative Daten.

Das sogenannte Document Ingestion erlaubt es, auf Basis existierender Modelle, nachträglich Dokumente aufzunehmen und zu verarbeiten. Die Daten sollten dabei vor allem qualitativ hochwertig sein, d. h.:

  • Auf ein Anwendungsszenario zugeschnitten sein
  • Frei von Fehlern sein
  • Einer homogenen Struktur folgen
  • Den Kontext beschreiben (Quellcode, Briefe, etc.)
  • Innerhalb des Szenarios vielfältig und repräsentativ sein

Liegen also nicht schon ausreichend Daten mit diesen Eigenschaften vor, wird die Aufarbeitung dieser Daten also entsprechend sehr ressourcen- und zeitintensiv.

Hier sehen wir die größte Schwachstelle selbst aufgesetzter Lösungen. Dieser Aufwand wurde in kommerzielle Systeme wie ChatGPT investiert. Eine ähnliche Investition wäre für die eigenen Modelle nötig, was für die meisten Anwendungsfälle nicht im Verhältnis zum Nutzen steht.

3. Limitierungen von Large Language Models (LLM)

Wichtig zu wissen: LLMs bilden Wahrscheinlichkeiten ab. Dabei stellen Prompts Nebenbedingungen an die Vorhersagen dar und schränken den Raum möglicher Antworten sowie deren Qualität ein.

Auf unkonkrete Fragen gibt es ungenaue und möglicherweise unerwartete Antworten. Sehr konkrete Fragen mit Abgrenzungen führen womöglich zu spezifischen Ergebnissen. Dennoch handelt es sich immer um Vorhersagen, d. h. Wahrscheinlichkeiten.

Was ist die Erkenntnis daraus? Wenn es um kritische Anwendungsfälle, präzise und wahrheitsgetreue Informationen sowie wiederholbare und zuverlässige Ergebnisse geht, sind LLMs womöglich ungeeignet. Weiterhin ist es empfehlenswert, sich bei der Formulierung von Fragen Gedanken zu machen, was die Erwartung an die Antwort ist und diese explizit zu formulieren. Will ich eine intelligente Antwort? Benötige ich Stichpunkte? Brauche ich eine kritische Antwort oder Hinweise auf mögliche Alternativen? Etc.

Eines der größeren Open Source Modelle, LLaMA hat 65 Billionen Parameter. Es wird vermutet, dass GPT-4 mit einer Trillion Parametern ausgestattet ist. Die Anzahl der Parameter von Modellen beeinflusst maßgeblich deren Leistungsfähigkeiten bezüglich Generalisierung, Kontextverständnis, Komplexität der Antworten, Robustheit bzgl. Formulierungen und Kreativität.

Aus diesem Umstand, welchen wir praktisch aus der Open-Source Community nachvollziehen können, ergibt sich, dass das Finetuning kleiner Modelle für sehr spezielle Datensätze lohnt und nahezu gleichauf mit den GPT Modellen ist. Geht es um Anwendungsfälle, welche insbesondere Kontextverständnis erfordern, hat man mit einer eigenen Lösung wenig Chancen, die Qualität kommerzieller Lösungen zu erreichen.

4. Prompt Engineering

Mittels Techniken wie Tree Of Thought oder ReAct konnten wir Halluzinationen deutlich reduzieren. Das ist interessant, da durch eigenes Finetuning typischerweise Spezialwissen abgebildet wird, welches möglichst frei von Fehlern sein sollte. Eine nachträgliche Kontrolle auf Faktualität ist jedoch in jedem Fall empfehlenswert.

Fazit

Es ist uns gelungen, einen ChatGPT Klon aufzusetzen. Hardware Ressourcen sind ein wesentlicher Puzzlestein und sollten als Kostentreiber nicht unterschätzt werden. Die ausreichende Menge an Daten, die ggf. notwendige manuelle Aufbereitung der Daten und das eigentliche Training der Daten anhand der Ergebnisse stellen einen großen zu leistenden Aufwand dar. Wird dieser nicht erbracht, sind die Resultate in den meisten Fällen wahrscheinlich nicht mit denen von ChatGPT vergleichbar.

Können die genannten Limitierungen der Open-Source Modelle künftig überwunden werden? Diese Frage bleibt offen. Bemerkenswert ist neben der bekannten Ergebnisqualität kommerzieller LLMs, die Geschwindigkeit der Entwicklung im Open-Source Bereich. Auf https://huggingface.co/ werden wöchentlich neue Open-Source Modelle veröffentlicht, welche sich in jeder Iteration qualitativ übertreffen.

Auch existieren bereits dedizierte Open-Source Modelle zur Codegenerierung: Die Initiative heißt BigCode und das aktuell beste Modell StarCoderPlus. Das Modell ist Englisch und unterstützt aktuell bereits 80+ Programmiersprachen (Stand 06/2023).

Das Thema wird uns auch in Zukunft weiter beschäftigen. Wir gehen davon aus, dass LLMs, wie GPT und CoPilot in Zukunft immer besser werden – Stichwort: Spezialhardware mittels DNN FPGAs oder SpiNNaker2. Entsprechend wichtig erachten wir es, sich zeitnah mit dem Thema auseinanderzusetzen und die Grenzen abzustecken. Dies werden wir tun. Ob in der Zusammenarbeit mit Softwareherstellern oder auch in weiteren Eigenversuchen.

Was kannst Du nun tun?

Sprich mit einem Experten.

Beratungsgespräch vereinbaren
Zuletzt bearbeitet am 15.07.2024

Beitrag teilen

Folge DevBoost

/half-hearted-attempt-at-accessibility-sorry