Blog

Predictive LLMs: Skalierung, Reproduzierbarkeit & DeepSeek

In unserer Blogreihe zu großen Sprachmodellen (Large Language Models, kurz LLMs) ging es bislang um die Frage, wie gut verschiedene LLMs Fahrzeugpreise - also eine metrische Zielvariable - prognostizieren können. Wir übergeben den Modellen dafür nicht nur klassische tabellarische Daten, sondern auch Texte, in denen der Zustand und die Verkaufsbedingungen der Autos beschrieben sind. Im letzten Beitrag haben wir gezeigt, dass Open-Source-Modelle mittlerweile gut mit den Modellen von OpenAI mithalten können. Diesmal betrachten wir weitere Details: Wir wollten wissen, ob ein größeres Open-Source-Modell – gemessen an der Anzahl seiner Parameter – auch bessere Vorhersagen trifft als ein kleineres. Außerdem berichten wir von unseren Erfahrungen beim Finetuning mit mehreren GPUs auf einer AWS-Maschine, sprechen über Herausforderungen bei der Reproduzierbarkeit von LLM-Finetunings und werfen einen Blick auf CPU-basierte Inferenz. Ein weiteres Experiment: Wir haben ein Modell der chinesischen Firma DeepSeek unter die Lupe genommen, welches zu Anfang des Jahres für viel Aufmerksamkeit sorgte.

Fahrzeugpreisprognose und Modellgröße

Ergebnisse

Die verfügbaren Open-Source-LLMs unterscheiden sich unter anderem in ihrer Anzahl der Parameter. Für uns stellte sich die Frage, ob größere Modelle auch die besseren Prognosen erstellen. Um dies zu testen, haben wir für unseren Benchmark-Datensatz Prognosen mit dem Llama-3.1-70B-Instruct und dem Llama-3.2-1B-Instruct generiert. Wir vergleichen die Ergebnisse außerdem zum Llama-3.1-8B-Instruct, welches wir bereits vorher genutzt haben. Somit vergleichen wir drei Modelle aus derselben Modellklasse mit unterschiedlichen Anzahlen an Parametern. 8B meint hier 8 Billion, also 8 Milliarden Parameter. Tabelle 1 zeigt die Ergebnisse. Der Benchmarkdatensatz beinhaltet als Zielvariable Fahrzeugpreise, die auf Basis verschiedener Fahrzeugeigenschaften prognostiziert werden. Weitere Details zum Datensatz sind hier beschrieben.

ModelMAPE (%)Median APE (%)
Llama-3.2 1B12.56.3
Llama-3.1 8B10.35.5
Llama-3.1 70B11.06.7

Tabelle 1: Ergebnisse mit 6000 Trainingsbeobachtungen

In unserem Experiment zeigte sich, dass ein größeres Modell nicht zwangsläufig zu besseren Prognosen führt. Das 8B Modell schneidet am besten ab. Zu diesen Ergebnissen lassen sich verschiedene Aspekte diskutieren. Zum einen stellt sich die Frage der Reproduzierbarkeit. Erhalten wir bei einem erneuten Finetuning mit den gleichen Trainingsdaten ein Modell, das die gleichen Prognosen erstellt? Dieses Thema diskutieren wir weiter unten. Außerdem ergaben sich beim Finetuning mit dem 70B Modell neue technische Fragen, da das Modell zu groß ist, um es auf unserer in-house Nvidia L40S GPU zu finetunen.

Multi-GPU Finetuning

Stattdessen sind wir auf eine AWS-Maschine ausgewichen, die über 8 Nvidia A100 GPUs verfügt und verwendeten das pytorch-native torchtune-Framework, um das 70B-Modell im multi-GPU Setup zu finetunen. Dafür nutzten wir ein Docker-Container-Setup und benötigten an Software unter anderem das Cuda Toolkit, Cuda Treiber, Nvidia Container Toolkit sowie den Nvidia Fabric Manager, der die Kommunikation zwischen den GPUs steuert. Es stellte sich heraus, dass wir eines der neuesten Nvidia-Modelle - die A100 GPU - benötigen, um das Finetuning durchführen zu können. Jede A100 verfügt über 80 GB Speicher. Unser Versuch, das Modell auf 8 kleineren L40S GPUs mit jeweils 48 GB Speicher zu finetunen, ließ sich nicht umsetzen. In Zukunft könnten wir auch mit einer Quantisierung von Modellen experimentieren, um größere Modelle auf kleinerer Hardware laufen zu lassen. Auch für die Verwendung des angepassten (finetuned) Modells für die Inferenz wird ein multi-GPU-Setup benötigt. Hierfür bietet das python-Paket vLLM eine komfortable und schnelle Lösung.

Reproduzierbarkeit des LLM-Finetunings

Warum Reproduzierbarkeit relevant ist

Reproduzierbarkeit ist vor allem aus wissenschaftlichen Kontexten als wichtiges Kriterium bekannt. Gemeint ist oft, dass der Code und am besten auch die Daten, die verwendet wurden, bereitgestellt werden, sodass andere Forscher*innen unabhängig überprüfen können, wie die Ergebnisse erzeugt wurden. Dadurch können Fehler leichter entdeckt werden. Auch in Bezug auf den EU AI Act ist Reproduzierbarkeit relevant aus der Compliance-Perspektive. Im Kontext von Data-Science-Projekten werden komplexe Algorithmen und Modelle verwendet, die mit Zufallselementen arbeiten. Oft reicht es aus, einen Seed für den Zufallszahlengenerator zu setzen, um die Ergebnisse eines Modelltrainings reproduzierbar zu machen. Reproduzierbarkeit ist nützlich, weil dann verschiedene Hyperparameter-Kombinationen besser gegeneinander getestet werden können. Ohne Reproduzierbarkeit ist es weniger klar, ob eine Änderung der Prognosegüte der Änderung von Hyperparametern oder aber der Randomisierung im Training zuzuschreiben ist.

Unsere Beobachtungen

Für die Reproduzierbarkeit der Prognosen, nachdem ein LLM gefinetuned wurde, reicht es aus, einen Seed im Code zu setzen. Um aber ein LLM-Finetuning auf einer GPU so zu reproduzieren, dass die gleichen Ergebnisse generiert werden können, reichte ein Seed in unseren Experimenten nicht aus. Unsere Recherchen ergaben, dass es neben den Trainingsalgorithmen auch auf Hardware-Ebene weitere Zufallselemente gibt, die sich bislang nicht vollständig kontrollieren lassen. Für PyTorch werden einige dieser Aspekte beispielsweise hier genauer beschrieben. Dadurch erhalten wir bei wiederholtem Finetuning mit gleichen Daten und Hyperparametern unterschiedliche Ergebnisse für die Prognosegüte. Diese Beobachtung wird auch von anderen Forschenden gemacht. In diesem Paper fassen die Autor*innen in ihrem Abstract zusammen: “Our study shows that fine-tuning of LLMs with the QLoRA method is not repeatable (not stable), such that different fine-tuned runs result in different performance on the holdout test set.” Eine Wiederholung des Finetunings unter gleichen Bedingungen führt zu unterschiedlichen Ergebnissen.

Interpretation und Empfehlung für LLM-Anwendungen

Wenn bereits kleine Unterschiede in der Prognosegüte im Anwendungsfall eine hohe Hebelwirkung haben, empfehlen wir eine gezielte Modellselektion:

  • Mehrfaches Finetuning sowie Evaluierung der resultierenden Modelle auf einem Validierungsdatensatz
  • Auswahl des Modells mit der besten Prognosegüte
  • Finale Evaluation des ausgewählten Modells auf einem unabhängigen Testdatensatz
  • Verwendung dieses Modells für die Erstellung der Prognosen

Man kann dieses Vorgehen analog zu konventioneller Modellselektion sehen, wenn zum Beispiel entschieden werden soll, in welcher funktionaler Form ein Feature mit aufgenommen wird. In diesem Falle ist es nun so, dass unterschiedliche Parameterwerte des LLMs daraufhin getestet werden, ob sie zu besseren Prognosen führen. Die Parameterwerte werden dabei nicht händisch, sondern vom (randomisierten) Trainingsalgorithmus auswählt. Für unsere Ergebnisse haben wir eine solche Modellselektion nicht vorgenommen und somit können wir nicht sicher sagen, wie stark die Schwankungen in der Prognosegüte ausfallen, wenn Finetuning mehrfach durchgeführt worden wäre. Dennoch geben unsere Ergebnisse einen guten Anhaltspunkt, was die einzelnen Modelle leisten können. Um eine Reproduzierbarkeit der Prognosen im Sinne des EU AI Acts zu gewährleisten, ist es wichtig, dass das beste finetuned Modell auch nach der Verwendung gespeichert wird und bei der Erstellung der Prognosen mit einem Seed gearbeitet wird. Nur so ist gewährleistet, dass die Prognosen exakt reproduzierbar sind.

Prognosegeschwindigkeit: CPU vs. GPU

Im laufenden Betrieb kann es vorkommen, dass Rechenstandorte nicht über eine leistungsstarke GPU verfügen. Zudem kann es kostensparend sein, wenn diese nicht extra angeschafft werden muss. Im Idealfall kann ein Finetuning in einem zentralen Rechenzentrum durchgeführt werden, welches über GPUs verfügt. Nach dem Finetuning auf der GPU lässt sich das Modell für Inferenz und andere Einsatzzwecke möglicherweise mit reiner CPU-Rechenleistung verwenden. Somit stellt sich vor allem die Frage, ob die Verwendung eines LLMs auf einer CPU möglich ist und wie stark sich dadurch die Laufzeit für einzelne Prognosen verlängert. Wir haben dies anhand des Llama-3.2-1B getestet. Auf der GPU brauchte die Erstellung einer Prognose für den Autopreis im Durchschnitt ca. 0,13 Sekunden, dabei war dies unabhängig davon, ob die transformer oder die vLLM Python-Bibliothek genutzt wurde. Auf der CPU dauerte die Erstellung einer Prognose dagegen im Mittel ca. 4,1 Sekunden. Damit erhöhte sich die Laufzeit in unserem Anwendungsfall ca. um einen Faktor 30. Es zeigt sich außerdem, dass eine Quantisierung des LLMs für weitere Geschwindigkeitsvorteile sorgen kann. Dabei werden die Parameterwerte des Modells in ein weniger hoch auflösendes Datenformat konvertiert. Im 16-Bit Datenformat waren unser Prognosen 4 mal schneller im Vergleich zum 32-Bit Format. Auch eine starke Quantisierung auf 8-Bit oder 4-Bit ist bereits in verschiedenen Softwarepaketen umgesetzt und wir haben vor, diese Möglichkeit zu testen.

Autopreisprognose mit Deepseek

Hype um DeepSeek

Im Januar dieses Jahres berichteten zahlreiche große Nachrichtenportale über das neue Sprachmodell des chinesischen Unternehmens DeepSeek. Dessen LLMs sollen in Entwicklung und Betrieb kostengünstiger sein und dabei eine vergleichbare Leistungsfähigkeit wie die Modelle von OpenAI bieten. Diese Ankündigung erregte viel Aufmerksamkeit in der Entwickler*innenszene – für uns Anlass, ein Modell von DeepSeek näher zu betrachten und im Rahmen unseres Anwendungsfalls praktisch zu erproben.

Ergebnisse

Unser Benchmark-Datensatz gibt uns eine gute Gelegenheit, ein DeepSeek LLM mit openAI und weiteren Modellen zu vergleichen. Tabelle 2 zeigt die Prognosegüte für die Autopreisdaten. Dabei nutzen wir eine kleine Version des R1-Modells, die sich DeepSeek-R1-Distill-Llama-8B nennt.

ModelNMAPE (%)Median APE (%)
gpt-460011.36.6
gpt-3.5-turbo60011.86.6
Llama-3.1 8B60014.89.7
Llama-3.1 70B60014.89.6
Llama-3.2 1B60022.812.3
Deepseek60024.112.8
Llama-3.1 8B600010.35.5
Deepseek600010.85.5
Llama-3.1 70B600011.06.7
Llama-3.2 1B600012.56.3

Tabelle 2: Ergebnisse mit dem DeepSeek Modell R1-Distill-Llama-8B und weiteren Modellen im Vergleich. Das Ergebnis des Llama-3.1-8B konnten wir durch anders gewählte Hyperparameter verbessern im Vergleich zum letzten Blogartikel.

Mit 6000 Trainingsbeobachtungen ist das DeepSeek Modell nahe am Llama-3.1 Modell dran (10.8 % vs 10.3 %). Mit 600 Trainingsbeobachtungen liegt die Prognosegüte dagegen in einer anderen Größenordnung als beim Llama-3.1 (24.1 % vs. 14.8 %). Bei wenigen Trainingsbeobachtungen liegen die OpenAI-Modelle klar vorn. Bei größeren Trainingsdatenmengen (hier 6000 Beobachtungen) können jedoch auch Open-Source-Modelle eine ähnliche oder bessere Performance erzielen.

Zusammenfassung

Unsere Ergebnisse zeigen, dass eine größere Anzahl von Parametern des LLMs nicht notwendigerweise zu besseren Prognosen führt. In unserem Fall erzielte das 8B Llama-Modell sogar etwas bessere Ergebnisse als das 70B Modell. Zudem haben wir diskutiert, dass es für die optimale Prognosegüte hilfreich sein kann, wenn aus mehreren Finetuning-Runs das beste Modell ausgewählt wird. Dieser Ansatz ist sinnvoll, da einzelne Finetunings aufgrund der hohen Komplexität der LLM-Architekturen sowie der schwer kontrollierbaren Zufallselemente in Trainingsalgorithmen und verwendeter Hardware zu unterschiedlichen Ergebnissen führen können. Die Erstellung von LLM-Prognosen mit einer CPU anstelle einer GPU ist grundsätzlich möglich, führte in unseren Experimenten jedoch zu einem rund 30-fachen Geschwindigkeitsverlust. Darüber hinaus haben wir eine 8B-Variante des R1-Modells von DeepSeek getestet, die insbesondere bei einer größeren Anzahl von Trainingsbeobachtungen eine vergleichbare Prognosegüte wie das Llama 3.1 8B erzielt.

Ausblick

In weiteren Blogartikeln möchten wir unter anderem unsere Erfahrungen mit dem Multi-GPU-Finetuning ausführlicher teilen. Ein relevantes Thema ist für uns auch die Quantisierung von LLMs, da sie deren Einsatz auf kostengünstigerer Hardware ermöglichen könnte. Außerdem sind wir auf TabPFN aufmerksam geworden – ein vielversprechendes Foundation-Modell, das speziell für Prognosen auf tabularen Daten entwickelt wurde. Auch zu unseren Erfahrungen mit TabPFN werden wir berichten.