Open Source Large Language Models selbt betreiben - Fraunhofer IESE

Open Source Large Language Models selbst betreiben

Ein Open Source Large Language Model (LLM, auf Deutsch: großes Sprachmodell) bietet zahlreiche Vorteile, und diese großen Sprachmodelle haben im Jahr 2023 einen weiten Sprung nach vorne gemacht: Sie sind sehr leistungsfähig geworden und können mittlerweile mit moderaten Hardwareanforderungen betrieben werden. In diesem Blog-Beitrag geben wir Tipps für den Einstieg in das Self-Hosting von Open Source Large Language Models.

Seit Ende 2022 ist die Welt im ChatGPT-Fieber. Es vergeht kaum ein Tag ohne Meldungen zu generativer KI (generative AI oder auch »genAI«), KI-gestützten Chat-Bots und Large Language Models. Neben ChatGPT von OpenAI gibt es viele weitere kommerzielle Dienste.

Was sind Large Language Models? Und was ist bei der Nutzung von KI-Sprachmodellen zu beachten? Diesen Fragen geht ein anderer Blogbeitrag auf die Spur. Neben grundlegenden Informationen zu Large Language Models werden auch Kriterien und Tipps für die Auswahl eines Large Language Models genannt. Nicht zuletzt werden die Grenzen von LLMs thematisiert.

Sind Open Source Large Language Models eine echte Alternative?

Mittlerweile stehen allerdings auch zahlreiche Open Source LLMs zur Verfügung. »Open Source« umfasst hier Folgendes: Das Large Language Model lässt sich unter Berücksichtigung einer »gutmütigen« Lizenz (wie z.B. Apache 2.0) herunterladen, und in der Regel sind auch Trainingsdaten und -parameter sowie Details zur Modellarchitektur und zu den genauen Abläufen, die zur Modellerstellung geführt haben, bekannt. Diese Large Language Models können damit auf einer eigenen Infrastruktur betrieben werden.

Vorteile von Open Source LLMs

Auch wenn kommerzielle Modelle aktuell meistens noch die Nase vorn haben, so bietet der Einsatz selbst betriebener Open-Source LLMs viele Vorteile:

  • Es besteht keine Abhängigkeit von einem externen Service-Anbieter, der Preise erhöhen, Dienste abschalten oder Modelle entfernen kann.
  • Daten müssen das eigene Firmen-/Institutsnetzwerk nicht verlassen und müssen nicht Dritten zugänglich gemacht werden. Hierdurch können auch sensitive Daten bzw. sensitiver Code mit Large Language Models verarbeitet werden.
  • Kosten entstehen nicht auf Basis verarbeiteter Tokens und auch nicht durch ein Abonnement, sondern ergeben sich aus den Betriebskosten der eigenen Infrastruktur, ggf. nötigen Anschaffungen und dem Aufbau der notwendigen Kompetenzen. Je nach Use Case kann dies kostengünstiger sein.
  • Viele Details von Open Source Large Language Models sind i.d.R. bekannt, was die Vertrauenswürdigkeit der Modelle erhöht. Ein Finetuning der LLMs ist prinzipiell möglich.
  • Für spezielle Use Cases sind spezialisierte (fine-tuned) Open Source Large Language Models verfügbar, z.B. für Use Cases auf Deutsch oder auch für medizinische Forschung.
  • Die Community rund um Open Source Large Language Models ist äußerst aktiv. Neben einer langen Liste von LLMs existieren auch zahlreiche hochwertige Libraries und Tools.

Hilfreiche aktuelle Entwicklungen im Bereich »Open Source Large Language Models«

Hinsichtlich Open Source Large Language Models ist im Jahr 2023 viel passiert (siehe auch den Huggingface Blogbeitrag »2023, year of open LLMs«). Das Resultat: Es ist nun endlich möglich, leistungsfähige, wirklich funktionierende LLMs selbst zu betreiben. Hier eine Auswahl der Errungenschaften:

  • Mehrere neue Open-Source Large Language Models wurden entwickelt. Viele davon sind kommerziell nutzbar und besitzen, gemessen an ihrer Leistungsfähigkeit, moderate Hardwareanforderungen.
  • Fortschritte beim Finetuning der Basis Large Language Models haben dafür gesorgt, dass auch »kleine« LLMs (z.B. mit 7 Milliarden Parametern) immer bessere Leistung zeigen. (Wir haben gute Erfahrung z.B. mit OpenHermes 2.5 – Mistral 7B und Openchat 3.5 0106 gemacht.) Diese Fortschritte haben auch dafür gesorgt, dass von größeren Open Source LLMs, wie z.B. Llama 2 70B, noch leistungsfähigere Derivate erzeugt wurden.
  • Es stehen mehrere Quantisierungstechniken zur Verfügung, mit denen LLMs »kleingerechnet« werden können, ohne dabei signifikant an Qualität zu verlieren. (Wir haben gute Erfahrung mit AWQ und der Llama.cpp/GGML-Quantisierung gemacht.)
  • Es stehen mehrere optimierte Softwarelösungen für den Produktivbetrieb von Open Source Large Language Models zur Verfügung. (Wir haben gute Erfahrungen mit vLLM gemacht.)
  • Es stehen leistungsfähige Open Source LLMs, die für die deutsche Sprache optimiert wurden, zur Verfügung. (Unter anderem im Kontext von Retrieval Augmented Generation (RAG) haben wir gute Erfahrung mit LeoLM 70b Chat gemacht.)
  • Mit parameter-efficient fine-tuning lassen sich LLMs mit moderater Hardwareanforderung feinabstimmen, z.B. mithilfe der Huggingface-Bibliothek PEFT, welche viele der mittlerweile entstandenen Techniken unterstützt. Ein bekanntes Beispiel für parameter-efficient fine-tuning ist LoRA: Low-Rank Adaptation of Large Language Models (siehe auch Github Repository). Hiermit konnten wir positive Erfahrungen z.B. für den Task »Text-to-SQL« sammeln.

Ich will Open Source Large Language Models nutzen – wie fange ich an?

Um sich einen ersten Eindruck von Open Source Large Language Models zu verschaffen, kann man »kleinere« LLMs z.B. auf einer älteren Gaming-GPU, Notebook-GPU, in Online-Diensten wie Google Colab oder sogar auf der CPU ausprobieren. Aber eine Warnung vorweg: Man könnte versucht sein, zu alte oder zu kleine LLMs zu testen. Man würde fälschlicherweise zu dem Schluss kommen, dass man mit Open-Source Large Language Models nicht sinnvoll arbeiten kann, da die Ergebnisse zu schlecht sind. Des Weiteren könnte man fälschlicherweise schließen, dass Open-Source Large Language Models generell zu langsam für den Produktivbetrieb sind.

Für eine ernsthafte, realistische Evaluation sollte man ein nicht zu kleines, aktuelles LLM auswählen (siehe unten). Um eine akzeptable Geschwindigkeit zu erreichen, ist der Einsatz einer GPU zu empfehlen. Quantisierung (»Kleinrechnen«) hilft dabei, größere Modelle auch auf GPUs mit weniger VRAM betreiben zu können. Darüber hinaus ist es für erste Experimente auch hilfreich, ein performantes Backend zu benutzen, z.B. vLLM oder Llama.cpp.

Modellauswahl – ein geeignetes LLM für den Einstieg finden

Die Community hat viele Rankings erstellt, die Open Source Large Language Models vergleichen, z.T. auch mit kommerziellen Modellen, und so bei der Auswahl eines LLMs helfen können. Beispiele sind:

Ein Beispiel für ein gutes »Einsteiger-LLM« für allgemeine Zwecke (Stand Januar 2024) ist unserer Erfahrung nach Openchat 3.5 0106. Es basiert auf Mistral 7B und steht unter Apache-2.0-Lizenz. Mit 4Bit-Quantisierung benötigt es mit Llama.cpp 6,87 GB VRAM (mit der Quantisierungsmethode »Q4_K_M«).

Mit der Python-Bibliothek llama-cpp-python kann man hiermit einen OpenAI-API-kompatiblen Model-Server auf einer älteren Gaming-GPU (z.B. NVIDIA RTX 2080 Ti mit 11 GB VRAM) starten oder sogar auf der Notebook-GPU, falls man nur Teile des Modells auf die GPU lädt. Sogar auf der CPU ist es mit diesem Setup noch einigermaßen benutzbar. (Allerdings ist diese Server-Software unserer Einschätzung nach nicht für den Produktivbetrieb geeignet.) Als vergleichbares deutschsprachiges Open-Source Large Language Model könnte LeoLM Chat zum Einsatz kommen, das auch mit der o.g. Quantisierung betrieben werden kann und die gleichen Hardwareanforderungen besitzt (beide Modelle basieren auf Mistral 7B). Ein interessantes LLM für den Einstieg ist auch das sehr aktuelle Phi-2 von Microsoft, das mit nur 2,7 Milliarden Parametern deutlich kleiner ist als das Mistral 7B Modell, aber als sehr leistungsfähig gilt. Noch kleiner, aber vielleicht für allererste Experimente auch spannend: das ganz frische TinyLlama-1.1B-Chat.

Large Language Models und deutsche Sprache

Noch eine Anmerkung zu Open Source Large Language Models und Deutsch: In der Regel sind Large Language Models bereits ohne spezielles Finetuning multilingual. Das Verständnis deutscher Texte funktioniert unserer Erfahrung nach gut, allerdings kann es vorkommen, dass deutschsprachige Anweisungen (instructions) nicht so gut befolgt werden wie englischsprachige. Auch beim Generieren deutschsprachiger Antworten kommen unserer Erfahrung nach zumindest kleinere LLMs an ihre Grenzen. Größere, sehr aktuelle Open Source Large Language Models wie Mixtral-8x7B Instruct scheinen damit aber gut zurecht zu kommen. Dennoch kann es sich lohnen, z.B. die oben genannten Open Source Large Language Models, die für Deutsch feinabgestimmt (fine-tuned) wurden, zu evaluieren.

Wie betreibe ich Open Source LLMs für mein Unternehmen?

Für den Produktivbetrieb sollte man nicht auf eine GPU bzw. mehrere GPUs verzichten. Entscheidend ist hier vor allem der insgesamt zur Verfügung stehende VRAM. Die Grafikkarten dürfen aber auch nicht zu alt sein: Möchte man den optimierten Server vLLM mit der AWQ-Quantisierung nutzen, so müssen die GPUs mindestens die CUDA Compute Capability 7.5 unterstützen. Mit vLLM können Modelle auch auf mehrere kleinere GPUs aufgeteilt werden, allerdings nicht beliebig: Die Anzahl der genutzten GPUs muss Teiler der Anzahl der Schichten sein (für 64 Schichten also 2, 4, 8, 16, 32 oder 64 GPUs). (Wir betreiben z.B. das außerordentlich leistungsfähige Mixtral-8x7B-Instruct-v0.1 ohne Quantisierung auf 8 x 32GB NVIDIA V100-GPUs.) Der LLM-Server Text Generation Inference (TGI) von Huggingface kann eine Alternative zu vLLM darstellen, falls die spezielle Lizenz mit dem Einsatz kompatibel ist. TGI ist auch für den optimierten Produktivbetrieb geeignet und bietet neben AWQ auch andere Quantisierungsoptionen (bitsandbytes, eetq und GPTQ).

Insbesondere für den Produktivbetrieb gilt, dass man ein nicht zu kleines, aktuelles Large Language Model auswählen sollte. Unserer Erfahrung nach sollte man quantisierten Modellen mit vielen Parametern den Vorzug gegenüber nicht-quantisierten Modellen mit weniger Parametern geben. Das bereits erwähnte Mixtral-8x7B-Instruct genießt derzeit (Stand Januar 2024) einen ausgezeichneten Ruf, aber auch Derivate von Llama 2 70B halten wir für geeignet (gute Erfahrungen konnten wir mit dem deutschsprachigen LeoLM 70b Chat sammeln). Ist man nicht auf eine Lizenz angewiesen, die eine kommerzielle Nutzung des Large Language Models erlaubt, so ist die Auswahl geeigneter LLMs noch deutlich größer.

Je nach Use Case kann auch bei ausschließlich interner Nutzung ein Hosting mit einer vLLM-Instanz an seine Grenzen stoßen. In diesem Fall muss über Load-Balancing, Cluster usw. nachgedacht werden.

Wie kann ich entscheiden, welches Open Source Large Language Model am besten für unseren Use Case geeignet ist?

Benchmarks und die o.g. Rankings stellen einen guten Startpunkt dar. Es sei jedoch darauf hingewiesen, dass diese Rankings häufig nur wenige verschiedene Aufgabestellungen berücksichtigen, und dass gute Benchmarkergebnisse auch täuschen können, z.B. aufgrund von »Task Contamination«. Unserer Ansicht nach ist es hilfreicher, verschiedene Modelle für den konkreten eigenen Use Case zu evaluieren. Unser Team Data Science kann Ihrem Unternehmen dabei helfen.

Nicht zuletzt muss das LLM aber unter Berücksichtigung der zur Verfügung stehenden Hardware ausgewählt werden.

Ausgewählte Beispiele aus eigener Erfahrung:

  • LeoLM 70b Chat mit AWQ-Quantisierung kann auf 2x NVIDIA RTX 6000 Ada (je 48GB) mit vLLM betrieben werden.
  • Phind-CodeLlama-34B-v2 mit AWQ-Quantisierung kann auf 1x NVIDIA RTX 6000 Ada (48GB) mit vLLM betrieben werden (ein Bespiel für ein auf Code spezialisiertes Open Source Large Language Model).
  • Mixtral-8x7B-Instruct-v0.1 kann auf 8x NVIDIA V100 (je 32GB) ohne Quantisierung in float16 betrieben werden.

Large Language Models Course

Wie kann ich mehr über Open-Source Large Language Models lernen?

Das Team Data Science wird im Jahr 2024 ein Webinar zu Open Source LLMs und deren Betrieb anbieten. Melden Sie gerne bereits per E-Mail Ihr Interesse an, dann erfahren Sie die Termine als erstes, sobald sie feststehen.

Wo erhalte ich Unterstützung, um Open Source LLMs in unserem Unternehmen / in unserer Institution zu nutzen?

Unser Team Data Science kann Ihr Unternehmen / Ihre Institution unter anderem bei folgenden Themen unterstützen:

  • Modellauswahl
  • Model-Betrieb
  • Wie integriere ich Open Source Large Language Models in meine Applikationen?
  • Wie kann ich Open Source Large Language Models nutzen, um Unternehmensdaten besser zugänglich zu machen (z.B. mithilfe von Retrieval Augmented Generation (RAG))?
  • Wie kann ich Open Source LLMs für meine speziellen Use Cases bzw. Daten feinabstimmen (Finetuning, z.B. mit LoRA)?
  • Wie kann ich Open Source Large Language Models für deutschsprachige Anwendungen oder Code und Software Engineering einsetzen?
  • Wie kann ich Large Language Models für meinen Use Case evaluieren?