Open Source Large Language Models vs proprietäre Lösungen

Autor: Manuel Kuchelmeister

Die IT-Welt ist ständig im Wandel. Der neueste Katalysator hierfür sind Large Language Models (LLMs). LLMs lernen statistische Korrelationen zwischen Wörtern bzw. Tokens, was es ihnen ermöglicht, Text oder Code mit hoher Qualität zu generieren. Dank der Verfügbarkeit von Open Source LLMs können nun leistungsstarke Modelle problemlos auf der eigenen Hardware oder in der Cloud betrieben werden. In diesem Blog gebe ich einen Überblick über die aktuell leistungsfähigsten und effizientesten Modelle und untersuche generelle Folgen der rapiden Entwicklung von Open Source LLMs. Dabei werden Closed- und Open-Source-Ansätze gegenübergestellt, Kriterien an LLMs aufgestellt, um diese vergleichbar zu machen und Hinweise zur Integration in bestehende IT-Systeme gegeben.

LLMs: Ein Wendepunkt für effiziente Informationsverarbeitung

Mit einem LLM zur Hand können Entwickler den Einstieg in Frameworks einfacher gestalten, Legacy-Code schneller verstehen oder schnell hochwertige Dokumentation schreiben. Die meisten Anwendungsbereiche finden sich in der Softwareentwicklung oder in der Verarbeitung von Texten. Dank der Möglichkeit der Einbindung als API lassen sich LLMs auch direkt in Applikationen einbetten. Wichtig hierbei ist zu verstehen, dass LLMs oftmals keine Stand-alone-Produkte sind, sondern sich als "Feature Engines" verstehen lassen, welche dann bestehende Produkte verbessern oder erweitern können. So lassen sich z.B. eigene Dokumente nahtlos mit der Verarbeitungskapazität von LLMs verknüpfen, wie mein Kollege Gian in seinem Proof of Concept demonstriert hat. 

Ein Überblick über die verschiedenen LLM-Zugänge

In den meisten Fällen lohnt es sich nicht, ein eigenes LLM zu trainieren, da der Aufwand, Expertenwissen benötigt und dies sehr kostenintensiv sein kann. Daher ist der Einsatz von pre-trained Modellen, wie z.B. verschiedene GPT Flavors von OpenAI oder Modelle wie Claude-2 von Anthropic oder Llama-2 von Meta eine pragmatische Lösung [1-5]. Für die Entscheidung zwischen einem Closed Source Modell oder einer Open Source Variante ist es zunächst wichtig zu verstehen, was Open Source und Closed Source im Kontext von LLMs unterscheidet und welche Vorteile sich aus beiden Möglichkeiten ergeben.

Die Verwendung des Begriffs “Open Source” ist im Zusammenhang mit LLMs nicht so klar definiert, wie es bei klassischer Software üblich ist. Streng genommen ist Meta’s Llama-2 nicht Open Source, da dessen Verwendung für gewisse Anwendungen untersagt ist. So darf das Llama-2 z.B. nicht verwendet werden, um andere LLMs zu trainieren. Ausserdem darf Llama-2 nicht in Apps oder Services mit mehr als 700 Millionen monatlichen Usern [6] verwendet werden (das betrifft wohl nur Hyperscaler), ansonsten muss eine Sondergenehmigung bei Meta beantragt werden. Es macht daher Sinn zwischen:

  • Open Models (Weights und Trainingsdaten offen verfügbar und Modell kommerziell einsetzbar), 
  • Open Weights (gleich wie Open Models, aber ohne frei zugängliche Trainingsdaten), oder
  • Restricted Open (Einschränkungen für den kommerziellen Einsatz) zu unterscheiden. 

Trotzdem werde ich im restlichen Artikel diese Modelle unter dem Begriff Open Source zusammenfassen, sozusagen als Modelle, die kommerziell eingesetzt werden dürfen und selbst gehostet werden können. Eine Übersicht über die Lizenzen verschiedener Modelle findet sich beispielsweise unter diesem Link.

Vor- und Nachteile von Closed Source Modellen

Im Kontrast zu den Open Source Modellen fallen Closed Source Modelle. Die wohl bekanntesten Closed Source Modelle stammen von OpenAI, welches mit Microsoft kollaboriert. Weniger bekannt hingegen ist z.B. Claude, ein von Anthropic entwickeltes Konkurrenzprodukt zu ChatGPT. Anthropic wurde von ehemaligen OpenAI Mitarbeitern gegründet und profitiert ebenfalls von Investitionen im Milliardenbereich von Google und Amazon [18, 19]. Stand heute ist GPT-4 das wohl leistungsstärkste Modell. Zusätzlich ist dessen Verwendung sehr kostengünstig, daher ist es nicht unbedingt naheliegend, warum man überhaupt etwas anderes verwenden sollte. 

Zur Verwendung von Closed Source Modellen reicht beispielsweise ein API-Aufruf, d.h. ich reiche meinen Prompt ein, bekomme eine Response (der Output des LLMs) und zahle gemäss meiner Nutzung die Usage Fees, beispielsweise an OpenAI. Das funktioniert wunderbar, da man sich praktisch um nichts kümmern muss, wenn APIs für die Nutzung von LLMs als SaaS Lösung bereitgestellt werden. Modell Features, Anpassungen, Werte/Censorship, Usage Fees, Verfügbarkeit usw. werden hierbei vom Host und Entwickler des Modells festgelegt, was bedeutet, dass diese Dinge jederzeit geändert werden können. Wir erhalten damit sehr viel Komfort bei der Integration des LLMs, sind aber auch komplett abhängig vom Serviceprovider. Developer können also nur so etwas wie eine LLM-“Wrapper” Applikation entwickeln, welche auf die SaaS Lösung zugreift. Diese Lösung bietet sich zum Beispiel sehr gut für eine Proof-of-Concept-Phase an bzw. für Unternehmen, welche bereits Services von Public Cloud Providern verwenden.

Vor- und Nachteile von Open Source Modellen

Möchte man hingegen das Modell lieber auf der eigenen Hardware (bzw. Private Cloud) ausführen, muss zwingend eine Open Source Lösung verwendet werden. Der Einsatz von Open Source LLMs ermöglicht volle Kontrolle über das Modell durch direkten Zugriff auf die Netzwerk-Weights und Architekturspezifikation. Trotz gewisser Hardwareanforderungen bietet dies Flexibilität und Unabhängigkeit von einem Drittanbieter. Open Source Modelle profitieren zudem von Innovationen aus der Community. Ein Beispiel hierfür sind quantisierte LLMs [7]: Quantisierung hierbei bedeutet, sämtliche Weights des Netzwerks durch Type Casting in einen Datentyp mit geringerer Genauigkeit umzuwandeln. Dabei wird die Grösse des Modells drastisch reduziert, ohne grosse Qualitätsverluste beim LLM zu erhalten. Das ermöglicht es wiederum, das Modell auf Consumer Hardware auszuführen. Ein weiter darauf aufbauender Ansatz ist QLoRA [17]. Damit lassen sich LLMs sogar auf Consumer Hardware feintunen (mehr zu dem Thema einem späteren Abschnitt). Das sind Beispiele für Innovationen, auf die durch die Open Source Community aufmerksam gemacht und dann von Closed Source Modellen wie OpenAI als Feature [8, 9] nachgezogen wurde. Viele solche Open-Source-Entwicklungen basieren auf bestehenden Modellen wie Llama-2, wodurch sich ganze Communities [16] um ein gewisses Modell bilden, was für Anbieter wie Meta vorteilhaft ist. Als Vergleich: Das Web Framework React wurde ebenfalls zuerst intern bei Meta entwickelt, erst später open-sourced und profitiert inzwischen von einer grossen Developer Community. 

Navigieren zwischen Open und Closed Source: Wann ist welches Modell ideal?

Die Auswahl an LLMs ist gross und gewinnt zunehmend an Komplexität. Wie bei jeder Technologie-Evaluation ist es am sinnvollsten, anhand der wichtigsten Kriterien für den eigenen Einsatz zu handeln. Denn jedes Modell hat eigene Stärken und Anwendungsbereiche. Der Modellvergleich lässt sich anhand dieser Kriterien vornehmen: 

  1. Performance
  2. Geschwindigkeit (erzeugte Tokens pro Sekunde)
  3. Kontext Länge
  4. Integrationsmöglichkeit in die eigene Infrastruktur

All diese Anwendungen erfordern ein state-of-the-art LLM. Daher werde ich in den nächsten Abschnitten aufzeigen, was es bei der Wahl für ein passendes LLM zu beachten gibt. Dabei erkläre ich zuerst den Unterschied zwischen Open und Closed Source Modellen und verweise auf “Giants of AI” wie z.B. OpenAI, Anthropic oder Meta. Anschliessend vergleiche ich LLMs anhand verschiedener Einsatzkriterien, um die Entscheidung zwischen Closed und Open Source LLMS zu ermöglichen. Zuletzt geht es darum, wie sich eine eigene Lösung implementieren lässt.

Blog Kuchelmeister (6).png
Bild 1: Wichtige Entscheidungsträger bei der Wahl für ein LLM.

Die Performance bezieht sich darauf, wie gut und wie schnell ein LLM darin ist, Aufgaben zu erfüllen. Diese Definition ist etwas schwammig, was daran liegt, dass Performance im Kontext von LLMs nicht direkt messbar ist. Für allgemeine Aufgaben hat zum heutigen Stand das Closed Source Modell GPT-4 die Nase vorne. Auf Dashboards wie z.B. dem vom AlpacaFarm [10] oder fasteval [11], werden Modelle direkt miteinander verglichen, indem ein Testdatensatz ausgewertet wird. Dabei werden die Modelle für anspruchsvollere Aufgaben angewandt. Ein Beispiel hierfür ist der Vergleich beim Anwenden der “chain of thought” Prompting-Methode, bei welchem das LLM dazu aufgefordert wird, die eigenen Überlegungen zu erläutern. Andere Ansätze, um die Modelle miteinander zu vergleichen, werten Prompts für realistische Anwendungen aus [12]. 

Ein weiterer Performance-Indikator ist die Latenz, welche angibt, wie schnell ein LLM neue Tokens generieren kann. LLMs bestehen aus vielen Layern an Weights. Diese Layers werden nacheinander vom Arbeitsspeicher in die CPU eingelesen und mit den vorliegenden Tokens verrechnet. Aus Hardware-Sichtweise ergeben sich damit zwei potenzielle Bottlenecks: Die Rechenleistung (Anzahl FLOPS) als auch die Speicherbandbreite, um Weights vom Arbeitsspeicher in den on-chip Speicher zu laden. Je nach Anwendung spielt entweder die Rechenleistung oder die Bandbreite die entscheidende Rolle für die Latenz: Bei kleiner Batch-Grösse, d.h. wenn Requests an das LLM sequenziell verarbeitet werden, ist die Bandbreite der einschränkende Faktor. Möchte man mehrere Requests mit dem LLM parallel verarbeiten (eine ähnliche Situation wie das Training des LLM), lohnt es sich, die Weights zu cachen, um mehrere Abfragen gleichzeitig zu bearbeiten. Dann wiederum ist die Rechenleistung entscheidend. Kurzum: Für die Latenz kommt es darauf an, ob die Requests parallel oder sequenziell verarbeitet werden müssen und mit welcher Hardware das LLM gehostet bzw. betrieben wird. Hier liegt ein entscheidender Vorteil beim Einsatz von Closed Source Modellen, da die Latenz vom Drittanbieter mit aufwändigen Verfahren optimiert wird.

Eine weitere wichtige Eigenschaft, um ein LLM zu beschreiben, ist die Länge des Kontexts, so etwas wie die Aufmerksamkeitsspanne des LLMs. Die Kontextlänge eines LLMs ist entscheidend für die Verwendung, denn diese gibt an, wie viel Information maximal in einem Prompt gespeichert und verarbeitet werden kann. LLMs basieren auf der Transformer-Architektur, bei welchem jedes Token mit jedem anderen Token korreliert wird. Daher ist es keine einfache Aufgabe, die Kontextlänge von LLMs zu skalieren. Eine kürzere Kontextlänge bedeutet, dass höchstens kleinere Code Snippets oder Textabschnitte verarbeitet werden können, während die momentan besten Modelle mit einem Context Window von 128k Tokens sogar kleinere Code Libraries oder Bücher auf einmal verarbeiten können. Sowohl im Open als auch im Closed Source Bereich gibt es Modelle mit Kontextlängen in den Grössenordnungen von 1k bis 100k Tokens, so dass für jede Anwendung ein passendes Modell gewählt werden kann. 

Auch bezüglich des Integrationsaufwands ist es ziemlich klar, dass die Einbindung über eine API am einfachsten ist. LLMs lassen sich direkt aus der Public Cloud aus aufrufen und die Public Cloud ist ein fester Bestandteil bei vielen Unternehmen. Llama-2 ist beispielsweise ebenfalls verfügbar im Azure AI Modellkatalog [13]. So kann man sich für eine Open Source Variante entscheiden, ohne dass man sich darum kümmern muss, eine eigene Infrastruktur aufzubauen. Alternativ kann so auch ein Proof of Concept erstellt und erst später die eigene Infrastruktur nachgezogen werden. Entscheidet man sich hierfür, so lässt sich ein Open Source Modell entweder lokal ausführen (Llama-2 mit 7 oder 13 Milliarden Weights können z.B. mit einer Latenz von 10-20 Tokens pro Sekunde auf einem MacBook Pro mit Apple Silicon verwendet werden) oder in die Private Cloud einbinden und intern im Unternehmen als API zur Verfügung stellen. 

Zusätzliche Entscheidungsträger bei der Wahl für das LLM

Möchte man das LLM gezielt für eine bestimmte Aufgabe einsetzen, lohnt es sich, sich mit Feintuning auseinanderzusetzen. Beim Feintuning wird ein LLM mit oftmals nur wenigen Daten auf eine gezielte Aufgabe trainiert. Damit ist es möglich, ein potenziell sehr viel kleineres Modell zu verwenden, welches wiederum die Hardwareanforderungen reduziert und ggf. schneller ist und bessere Resultate liefert als ein Foundational Model wie Llama-2. Interessanterweise ist für das Feintuning des LLMs Consumer Hardware ausreichend, dank Innovationen wie dem QLoRA [17] Ansatz. 

Zuletzt ergibt sich durch das Hosten eines eigenen LLMS ein grosser Vorteil bzgl. der Datensicherheit. Dadurch muss man nämlich seine eigenen Daten nicht Drittanbietern anvertrauen. Dies wird dann relevant, wenn die Daten gesetzlich nicht mit Drittanbietern geteilt werden dürfen, oder wenn es sich um besonders wertvolle Daten für das Unternehmen handelt und man diese Drittanbietern nicht zusenden möchte, um sich vor Leaks oder Ähnlichem zu schützen. Daher ist die Verwendung von Open Source Modellen eine gute Lösung für Unternehmen, welche keine Public Cloud Lösung im Einsatz haben.

Schritt für Schritt zur eigenen LLM-Integration

LLMs kommen ohne Gebrauchsanweisung! Der effektive Einsatz von LLMs ist schwierig und erfordert Domänenwissen und Verständnis dafür, was die Modelle können und was sie nicht so gut können. LLM-Anbieter stellen im Vergleich zu “klassischen Softwareunternehmen” wenig Dokumentation zur Verfügung. Eine Intuition hierfür entwickelt sich daher am besten, wenn viel mit den Modellen experimentiert wird und Proof of Concepts erstellt werden. Für den eigenen Einsatz ist es daher zuerst einmal wichtig, 

  1. ein klares Ziel oder eine Aufgabe zu formulieren, die das LLM bewältigen soll.
  2. Anschliessend sollte man die oben beschriebene Kriterien wie Performance, Latenz, Kontextlänge und Integrationsmöglichkeit gemäss ihrer Wichtigkeit für diese Aufgabe gewichten, um die Auswahl an potenziellen LLMs einzuschränken zu können. 
  3. Optional kann man sich dann mit Themen wie Feintuning auseinandersetzen, um das LLM für die bestimmte Aufgabe zu optimieren. 
  4. Zuletzt geht es dann darum, die vorhandene Soft- und Hardwarearchitektur für das LLM anzupassen bzw. zu erweitern. Dies betrifft nicht nur das Hosting des LLM an sich, sondern je nach Anwendung auch weitere Komponenten, wie bspw. das Prompting, das Caching und die Datenbankzugriffe. Einen detaillierten Einstieg in das Thema bietet beispielsweise dieser Blogpost von GitHub
  5. LLM fortlaufend evaluieren und ggf. anpassen, optimieren oder gegen ein anderes LLM austauschen.
Blog Kuchelmeister (7).png
Bild 2: Schematischer Ablauf für die Integration und den Lifecycle eines LLMs.

Zusammenfassung und die Zukunft von LLMs

Dieser Blogpost bietet eine umfassende Einführung in die Welt von Open und Closed Source LLMs und fokussiert sich besonders auf die Dinge, die Du bei der Implementierung und Integration beachten solltest. Wir diskutieren die verschiedenen Zugänge, Vorteile und Unterschiede zwischen Open Source und Closed Source LLMs. Dabei haben wir insbesondere die praktischen Aspekte für Entwickler und Unternehmen hervorgehoben. Zudem stellt der Artikel eine Liste an LLM-spezifischen Vergleichskriterien zur Verfügung, mit welchen ein passendes Modell für den eigenen Einsatz ausgewählt werden kann. Zum jetzigen Zeitpunkt sind es Closed Source Modelle wie GPT-4, die in Sachen Performance und Bequemlichkeit bei der Integration den Open Source Alternativen überlegen sind. Open Source Modelle lohnen sich dann, wenn man unabhängig von einem Drittanbieter sein möchte bzw. allgemein flexibler sein möchte, oder bei gezielten Anwendungen für welche Feintuning in Frage kommt. Ein Open Source Modell ermöglicht es, neue Frameworks oder Features schnell zu implementieren oder auch sensible Daten mit dem Modell zu verarbeiten, ohne dass diese in die Public Cloud gesendet werden müssen.

Zum aktuellen Zeitpunkt wird an mehreren Themen gleichzeitig gearbeitet. Zum einen besteht die Möglichkeit, verschiedene Datentypen gleichzeitig in einem LLM zu verwenden [14]. Dies ermöglicht Dir z.B., Bilder und Sprachaufnahmen in einem LLM zu verarbeiten, was den Umgang mit LLMs noch einfacher und weitreichender macht. In der Open Source Community wird viel daran gearbeitet, Llama-2 weiter zu optimieren, um dessen Hardwareanforderungen weiter herunterzuschrauben. Durch die Möglichkeit, LLMs auf verschiedenster Hardware laufen zu lassen, würden sich auch wieder ganz neue Anwendungen ergeben. Wird die benötigte Rechenkapazität für LLMs noch weiter reduziert, wird wohl bald jeder Benutzer eigene personifizierte LLMs haben können, welche per Feintuning mit eigenen Daten auf eigene Bedürfnisse angepasst werden. Ein weiterer interessanter Punkt sind Frameworks wie z.B. Langchain [11], an welchen gearbeitet wird, um LLM-Agenten zu entwickeln, die ganze Aufgabenbereiche übernehmen könnten. Weitere Verbesserungen wird es ziemlich sicher auch bei der Reduktion von Halluzinationen und bei der Kontextlänge geben. Es bleibt weiterhin extrem spannend, welchen Einfluss diese Technologie auf unsere Welt in den kommenden Jahren noch haben wird!

ManuelKuchelmeister_8542.jpg

Über mich

Als Techie bin ich sehr fasziniert von LLMs und deren Potential zur Wertschöpfung, sei es beim internen Einsatz im Unternehmen oder für deren Verwendung in den Produkten unserer Kunden.