IT, LLM

Ollama, llama.cpp, vLLM, eine Einordnung

Die KI Landschaft entwickelt sich immer weiter und nix davon fühlt sich für mich intuitiv an. Aus diesem Grunde ein neuer Blogeintrag zur Einordnung von KI Begriffen.

Heute ordnen wir ein: LM Studio, Ollama, llama.cpp, TabbyAPI ExLlamaV2/V3, vLLM,llama-swap,MLC LLM / MediaPipe und MLX.

Inferenz-Engines

Das wichtigste zuerst. Wenn wir ein LLM haben, dann wollen wir es auch laufen lassen. Dafür brauchen wir Inferenz-Server, solche sind z.b. llama.cpp, vLLM, ExLlamaV2/V3, MLC LLM / MediaPipe, MLX und Ollamas neue Engine. Und welche wir laufen lassen können, bestimmt die Hardware die wir zur Hand haben.

Wir unterscheiden hier der Einfachheit halber nur zwischen Datacenter-GPUs, also keine Privat-Rechner, Consumer-GPU-Ecke, also Privat-Rechner mit High-End-GPU-Karten und Prozessortypen wie amd64 und ARM.

vLLM ist traditionell für Nvidia Datacenter-GPUs entwickelt worden, jedoch wurde der Funktionsumfang ständig erweitert und läuft jetzt auch auf anderen Systemen.
ExLlamaV2/V3 hatte als Fokus den Privat-Rechner mit Nvidia High-End-GPU, auch hier findet Weiterentwicklung statt.
MLX ist eine Spezialisierung für Apple Silicon Rechner.
MLC LLM / MediaPipe sind größtenteils auf ARM bzw. Android/Mobile ausgerichtet und teilweise sehr spezifisch für einige LLMs entworfen worden.
llama.cpp der Allrounder, läuft so ziemlich überall und macht was es soll.
Ollama das ist praktisch llama.cpp neu geschrieben in Go, wie ich das verstehe, ist llama.cpp aber noch als legacy drin.

So, das sind praktisch unsere Programme, die das LLM später ausführen. Ich wette da gibt's noch mehr, das waren jedoch erstmal diejenigen, die mir am meisten über den Weg gelaufen sind.

Wrapper

Die Unterscheidung zwischen Server und Wrapper macht im ersten Moment wenig Sinn, da alle außer ExLlamaV2/V3 und MediaPipe ihren Wrapper praktisch mitbringen. Bei ExLlamaV2/V3 heißt der Wrapper TabbyAPI und MediaPipe ist genau genommen eine Programmierschnittstelle für Android Programme.

Jedoch hilft es bei der geistigen Einordnung hier eine Trennung zu vollziehen, während der Fokus bei der Inferenz-Engine auf der unterstützenden Hardware liegt, beschreibt der Wrapper den Funktionsumfang der Software. Dann erklärt es sich einfacher, dass z.B. Ollama (Wrapper) zwar selbst eine Engine hat die auf Apple Silicon läuft, zusätzlich aber MLX (Engine) laufen lässt für Safetensors-Modelle.

Was soweit alle mitbringen: Eine API zur Interaktion mit dem Server und eine Möglichkeit Modelle zu laden. Und hier enden schon die Gemeinsamkeiten. Ich ignoriere jetzt mal die ganzen Spezialprojekte und konzentriere mich nur auf Ollama und llama.cpp, da diese die häufigsten und vielseitigsten Programme in dem Bereich sind. Wichtig ist zu erkennen, dass beide Projekte komplett unterschiedliche Use-Case bedienen. Ollama ist anwendungsfreundlich, einfach zu bedienen und es ist einfach neue Modelle zu testen. Es hat interessante Features wie zwei Modelle gleichzeitig laufen zu lassen oder ein Modell mit verschiedenen Kontexten, interessant z.B. für Agenten. Setzt jedoch auf ein eigenes Modellformat und die API ist auch eine Eigenentwicklung. Was den Wechsel nicht gerade vereinfacht. Zusätzlich sind die Tuningfähigkeiten beschränkter als bei llama.cpp, was aber nicht unbedingt negativ sein muss.

llama.cpp hingegen ist DAS Programm zum Laufenlassen von Modellen. Wenn etwas bei Modellen eingestellt werden kann, dann hat llama.cpp fast immer eine Option dafür. Neuerungen kommen schneller an und Modelle können direkt von Huggingface geladen werden. Auch die API liegt näher an OpenAI / Anthropic, was es als lokalen drop-in interessant macht. Nachteil, es ist auch entsprechend komplexer.

Erweiterungen

Die Wrapper entwickeln sich natürlich weiter und neue Features werden hinzugefügt. Aber es werden auch mit externen Programmen neue Use-Cases bedient:

LM Studio

Dieses Programm nutzt llama.cpp als Grundlage um ein sehr anfängerfreundliches Gesamtsystem bereit zu stellen. Für Erstbenutzer ist es damit besser geeignet als Ollama, das als CLI-First System entwickelt worden ist, sprich Kommandozeile.

Open WebUI

Natürlich lassen sich Ollama und llama.cpp auch anders erweitern. Open WebUI bietet die bekannte Weboberfläche um mit den LLMs chatten zu können die von den Servern bereit gestellt werden. Bietet aber auch MCP-Integration, RAG und Websuche.

TextGen (text-generation-webui/oobabooga)

Wer wirklich mit LLMs rumspielen will und alle Regler und Einstellmöglichkeiten haben möchte, der sollte hier mal reinschauen.

llama-swap oder LiteLLM oder LocalAI

Mehrere lokale LLMs (llama-swap) bzw lokale und kommerzielle LLMs (LiteLLM) über eine API ansprechen? Oder gleich einen direkten Drop-In für OpenAI (LocalAI) ? Die Programme haben alle unterschiedlichen Funktionsumfang und einen anderen Use-Case, aber im Grunde bieten sie einen vereinheitlichten Zugang zu unterschiedlichen LLM Instanzen.

Wie immer soll das nur als grobe Übersicht zur Einordnung dienen und ich empfehle jedem, sich in das jeweilige Wunschthema weiter einzulesen. Natürlich konnte ich nicht alle Aspekte ansprechen, z.B., dass Ollama es absolut einfach macht mit Claude Code oder anderen Programmierprogrammen lokal zu arbeiten.

In diesem Sinne

Eurer

Kowo

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert