- Llama.cpp unterstützt jetzt über libmtmd multimodale Eingaben (einschließlich Vision)
- OpenAI-kompatible
/chat/completions-API über llama-mtmd-cli oder llama-server
- Die multimodalen Funktionen sind sofort in Modellen wie Gemma 3, SmolVLM, Pixtral, Qwen 2/2.5, Mistra Small und InternVL nutzbar
- Vorgequantisierte Modelle werden bereitgestellt (meist standardmäßig mit QK_K_M-Quantisierung)
- Standardmäßig wird der multimodale Projektor auf die GPU ausgelagert; bei Bedarf kann dies auch deaktiviert werden
- Einige Modelle benötigen ein großes Kontextfenster (z. B.
-c 8192)
Überblick
- Llama.cpp unterstützt mit libmtmd nun neu multimodale Eingaben
- Nutzer können damit neben Text auch Eingaben wie Bilder verarbeiten, wodurch sich die Nutzbarkeit von Vision-Modellen erweitert
- Diese Funktion ist bereits mit wichtigen Modellen wie Gemma 3, SmolVLM, Pixtral, Qwen 2 VL, Qwen 2.5 VL, Mistral Small und InternVL kompatibel
So aktiviert man multimodale Eingaben
- Es werden zwei zentrale Ausführungsarten beschrieben: Erstens die Nutzung der Option -hf (erfordert unterstützte Modelle), zweitens die Kombination der Optionen -m und --mmproj, um Textmodell und multimodales Projektormodell jeweils separat anzugeben
- Bei Verwendung der -hf-Option kann die multimodale Funktion mit --no-mmproj deaktiviert werden; wenn eine benutzerdefinierte mmproj-Datei verwendet werden soll, nutzt man die Option --mmproj local_file.gguf
- GPU-Offloading ist der Standard; wer das nicht möchte, kann es mit der Option --no-mmproj-offload deaktivieren
Beispielbefehle
- In der Kommandozeile wird llama-mtmd-cli, auf dem Server llama-server verwendet
- Bei Verwendung lokaler Dateien wird die Datei direkt mit --mmproj angegeben
- Um GPU-Offloading zu deaktivieren, wird zusätzlich die Option --no-mmproj-offload verwendet
Liste sofort nutzbarer multimodaler Modelle
- Es werden verschiedene vorbereitete Modelle beschrieben, die standardmäßig die Q4_K_M-Quantisierung verwenden
- Beispiele unterstützter Modelle:
- Gemma 3: Versionen mit 4b, 12b und 27b
- SmolVLM-Reihe: 256M, 500M, 2.2B usw.
- Pixtral 12B
- Qwen 2 VL: 2B, 7B sowie Qwen 2.5 VL: 3B, 7B, 32B, 72B
- Mistral Small 3.1 24B (IQ2_M-Quantisierung)
- InternVL Generation 2.5 und 3: Unterstützung für verschiedene Parametergrößen
Hinweise
- Bei der Nutzung wird anstelle von (tool_name) der gewünschte Name der ausführbaren Datei eingetragen (z. B. llama-mtmd-cli oder llama-server)
- Bei einigen multimodalen Modellen muss möglicherweise eine große Kontextfenstergröße angegeben werden (z. B. mit einer Option wie -c 8192)
1 Kommentare
Hacker-News-Kommentare
Auf einem MBP M1 mit 64 GB erreiche ich mit
ggml-org/gemma-3-4b-it-GGUFetwa 25 t/s bei der Prompt-Verarbeitung und 63 t/s bei der Token-Generierung.Die gesamte Bildverarbeitung dauert unabhängig von der Bildgröße etwa 15 Sekunden.
Selbst das kleine 4B-Modell liefert schon ziemlich gute Ausgaben und beschreibt unterschiedlichste Bilder gut.
Zur Reproduktion:
llama.cppklonen und bauen, Modell- undmmproj-Datei herunterladen, dann den Server starten und die Weboberfläche öffnen.Wenn man es ohne die Option
-hfverwendet, muss man unbedingt den Schalter--mmprojangeben, sonst gibt es einen Fehler bei der Multimodal-Unterstützung.Ich verwende derzeit die offizielle Quantisierung
ggml-org/gemma-3-4b-it-GGUF.Ich erwarte, dass die von
danielhanchenbereitgestellte Unsloth-Quantisierung schneller ist.Bei allen Bildern erscheint dieselbe Antwort.
So etwas wie: „Dieses Bild zeigt mehrere Personen in verschiedenen Posen …“
Im tatsächlichen Bild ist davon überhaupt nichts zu sehen, daher habe ich keine Ahnung, wo ich beim Debugging anfangen soll.
Bei mir kommt ebenfalls immer wieder dasselbe Ergebnis.
Ich habe gelesen, dass die Prompt-Verarbeitung mit dem 7B-Modell auf M1 fast 10-mal schneller sein sollte.
Vielleicht ist der Encoder nicht optimiert?
Kannst du Beispielbilder zeigen, die direkt per Prompt erzeugt wurden?
Ich würde das gern einmal sehen, bevor ich es selbst ausprobiere.
Beziehen sich diese Zahlen auf 4-/8-Bit-Quantisierungen oder auf vollständiges fp16?
Man muss
llama.cppdirekt aus dem Quellcode kompilieren.Dann bekommt man das Programm
llama-mtmd-cli.Ich habe Quantisierungen mit Vision-Unterstützung vorbereitet.
Sie lassen sich mit Befehlen wie
unsloth/gemma-3-4b-it-GGUF:Q4_K_XLausführen.Während des Chats kann man mit
/image image.pngein Bild hochladen und darüber sprechen.Auf dem Metal-Backend muss man jetzt
-ngl -1nicht mehr verwenden.Unter CUDA ist es weiterhin nötig.
-1bedeutet, dass alle GPU-Layer auf die GPU ausgelagert werden.Falls es hilft: Ich habe die Doku auf der
unsloth.ai-Seite aktualisiert, dort kann man die Verwendung vonllama-mtmd-clidirekt nachschlagen.Es funktioniert auch mit Mistral Small.
Wenn man
llama.cppmit Homebrew installiert, istllama-mtmd-cliebenfalls enthalten.Man muss nur den Befehl eingeben und kann es sofort starten.
Tatsächlich ist
-ngl 99stabiler,-ngl -1kann je nach Umgebung unterschiedlich funktionieren.Schon beim bloßen Anblick von
nglsteigt mein Ärgerpegel.Das ist bisher die nützlichste Dokumentation, die ich gefunden habe.
Sie hilft enorm dabei zu verstehen, wie das Ganze funktioniert.
https://github.com/ggml-org/llama.cpp/…
Das ähnelt der Aufteilung von Text-Transformer-Werkzeugen wie bei
huggingface/tokenizers.Die SmolVLM-Reihe wird ebenfalls unterstützt.
Dank der kleinen Größe liefert sie sehr schnelle Antworten.
Perfekt für ein Echtzeit-Videoüberwachungssystem zu Hause.
Ich will das als Hobbyprojekt ausprobieren.
Es wurden auch konkrete Schnellstart-Befehle hinterlassen.
Danke, dass du dem Server die
mtmd-Funktion hinzugefügt hast.Ich habe ebenfalls auf den Commit gewartet und das weiter verfolgt.
Jedes Mal, wenn ich die Git-Commit-Notizen lese und deine Beiträge sehe, bin ich beeindruckt.
Auch insgesamt großartige Arbeit an
llama.cpp.Mich würde aber interessieren, wie es qualitativ bei dieser hohen Geschwindigkeit aussieht.
Können Modelle kleiner als 2.2B überhaupt noch vernünftige, zusammenhängende Sätze erzeugen?
Ich habe
Gemma3 4bgenutzt, um für viele meiner jüngsten Reisefotos Keywords und Beschreibungen zu erzeugen.Es kann auch grundlegendes OCR, fasst also Fotos mit Text zusammen und errät anhand von Kontext-Hinweisen recht gut, wo sie aufgenommen wurden.
Für etwas, das man selbst hosten kann, ist das hervorragend.
Klingt spannend.
Nutzt du dafür eine Struktur, die durch eine Bildliste iteriert, für jedes Bild einen Prompt ausführt und die Ergebnisse dann in Metadaten oder
sqlitespeichert?Ich frage mich, ob
gemma 4bfür solche Aufgaben wirklich ausreichend brauchbar ist.Ich habe bisher nur größere Versionen verwendet und dachte, 4b wäre dafür zu schwach.
Mich würde aus Sicht eines normalen Nutzers interessieren, was sich konkret geändert hat.
Schon vor ein paar Monaten konnte man mit
llama.cppdoch Bildbeschreibungen und Ähnliches erzeugen, daher frage ich mich, was hier neu ist.llama.cppbietet kompilierte Releases für verschiedene Plattformen an.Diesmal ist die Vision-Funktion neu hinzugekommen.
Unter macOS kann man
llama-b5332-bin-macos-arm64.zipherunterladen, entpacken und persudo xattrdie Ausführung erlauben. Danach lässt sich die Terminal-Oberfläche mitllama-mtmd-cliverwenden.Alternativ kann man auch einen Webserver auf
localhost:8080starten, inklusive UI und API.Eine detaillierte Nutzungsdokumentation habe ich in meinem persönlichen Blog zusammengestellt.
Wenn man per
brewinstalliert, kann man mit der Option--HEADimmer den neuesten Stand bauen.In den nächsten Stunden wird wohl auch die
brew-Paketversion aktualisiert, sodass sich alles leicht upgraden lässt.Dank
convert_hf_to_gguf.py --mmprojist es viel einfacher geworden, Quantisierungen für beliebige Vision-Modelle zu erstellen.Dass
llama-serverjetzt Vision unterstützt, ist wirklich großartig.Darauf habe ich lange gewartet.
Jetzt wird für
-nglautomatisch der Maximalwert gesetzt.Man muss
-ngl 99nicht mehr selbst angeben.Das gilt allerdings nur für Metal, bei CUDA und Ähnlichem muss es weiterhin explizit gesetzt werden.
Ich frage mich, wie sich die Nutzung des multimodalen Modells
gemma3überollamaim Vergleich zullama.cppverhält.Mich interessieren vor allem Vorteile und Erfahrungen auf Apple-Silicon-Macs.
Erstens ist die Unterstützung in
llama.cppinnerhalb desggml-Ökosystems horizontal integriert, sodass sie stärker auf Geschwindigkeit optimiert werden kann als beiollama.Zum Beispiel bietet
pixtral/mistral small 3.1einen 2D-RoPE-Trick, der weniger Speicher benötigt als bei Ollama.Bald soll auch Flash Attention hinzukommen, wodurch der Vision-Encoder schneller und mit weniger Speicher laufen wird.
Zweitens unterstützt
llama.cppmehr unterschiedliche Modelle alsollama.ollamaunterstützt wederpixtralnochsmolvlm.Ich frage mich, ob es ein Tool gibt, das Vision in die UI-Entwicklung einbindet.
Beispiel: In einem Frontend-Hobbyprojekt mit TS/React nutze ich lokale/Cloud-LLMs in VSCode, aber selbst bei Modellen mit Vision-Unterstützung muss ich immer erst Screenshots machen und einfügen.
Es wäre schon eine große Zeitersparnis, wenn dieser gesamte Teil automatisiert wäre oder es wenigstens eine einfache Erweiterung gäbe, die per Tastenkürzel einen Screenshot macht und ihn automatisch in den Chat einfügt.
Die Abkürzung
nglist wirklich verwirrend.Es ist faszinierend, wie viele Tipps und Feineinstellungen auftauchen, um auf dem Mac maximale Geschwindigkeit herauszuholen.
Ich frage mich, ob solche Geschwindigkeitsverbesserungen mehr Leute dazu bringen werden, Vision-Funktionen zu Hause auszuprobieren.
llama.cppläuft sowohl auf meinem zehn Jahre alten PC als auch auf meinem M1-Mac hervorragend.