Fortgeschritten 11 Min.llama.cpp

llama.cpp mit Metal

Direkte Antwort

Auf einem Mac mit Apple Silicon lässt sich llama.cpp mit drei Befehlen kompilieren, und Metal ist standardmäßig aktiviert: Klonen Sie das Repository, führen Sie cmake -B build und anschließend cmake --build build --config Release aus, ohne ein GPU-Toolkit zu installieren. Sie können es auch ohne Kompilieren über Homebrew installieren. Die ausführbaren Dateien llama-cli und llama-server führen die Berechnungen dann auf der GPU des M-Chips aus; für die mögliche Modellgröße ist der gemeinsame Speicher wichtiger als die reine Rechenleistung.

llama.cpp ist die Inferenz-Engine, auf der Ollama und LM Studio basieren, und läuft nativ auf dem Mac. Dieser Leitfaden zeigt, wie man sie installiert oder mit Metal kompiliert, mit einem GGUF-Modell ausführt, über eine API bereitstellt, die GPU-Speichergrenze von macOS anhebt und die veröffentlichten Benchmarks für die Chips M1 bis M5 richtig interpretiert.

Von Mohamed Meguedmi·Aktualisierung 2026-09-30·Getestet auf macOS 14+

#llama.cpp auf dem Mac: Was Metal bringt

Unter macOS wird die GPU über Metal, Apples Grafik- und Berechnungs-API, angesprochen, und llama.cpp nutzt diese direkt. Das README des Projekts betont, dass Apple Silicon erstklassig unterstützt und über ARM NEON, Accelerate und Metal optimiert wird. In der Praxis bedeutet das, dass bereits die Standardkompilierung eine Engine erzeugt, die die GPU nutzt, ohne dass zusätzliche Optionen nötig sind. Der vereinheitlichte Speicher vermeidet sämtliche Datenübertragungen zwischen Prozessor und GPU: Das Modell liegt nur einmal im Speicher. Die begrenzenden Faktoren auf einem Mac sind daher die Kapazität und die Bandbreite dieses Speichers.

→
Für die GPU muss nichts installiert werden
Im Gegensatz zu CUDA, das ein mehrere Gigabyte großes Toolkit erfordert, wird Metal mit macOS bereitgestellt. Die Kompilierungswerkzeuge von Apple und CMake genügen.

#Voraussetzungen

Das Lokale-KI-Paket

Ihr privates, kostenloses ChatGPT auf Ihrem Rechner in einer Stunde – mit LM Studio, Ollama, Open WebUI und Ihren Dokumenten, ganz ohne Cloud.

  • Lebenslanger Online-Zugang
  • PDF + Dateien
  • Erstattung binnen 30 Tagen
Ein Mac mit Apple Silicon
M1 bis M5: Auf diese Modelle ist dieser Leitfaden ausgerichtet. Macs mit Intel-Prozessor profitieren davon kaum.
Die Kompilierungswerkzeuge von Apple
Installieren Sie die Command Line Tools mit xcode-select --install.
CMake und Git
Über Homebrew verfügbar: brew install cmake git.
Speicher für das Modell
Als Richtwert auf dieser Website gilt: Ein 8B-Modell in Q4 benötigt etwa 5 GB, ein 14B-Modell etwa 9 GB, ein 32B-Modell 19 bis 20 GB, jeweils ohne den Speicherbedarf für den Kontext.
Kompilierungs-Tools
xcode-select --install
brew install cmake git

#Installieren ohne Kompilierung: Homebrew

Wenn Sie keine besonderen Kompilierungsoptionen benötigen, ist Homebrew der schnellste Weg. Die Installationsdokumentation von llama.cpp gibt an, dass die Formel bei jeder neuen Version des Projekts automatisch aktualisiert wird. Sie erhalten dieselben ausführbaren Dateien, einsatzbereit und mit Metal-Unterstützung.

Installation mit Homebrew
brew install llama.cpp

Kompilieren Sie selbst, wenn Sie die neueste Version des Repositorys haben, einen Branch testen oder eine Kompilierungsoption ändern möchten. Ansonsten reicht Homebrew aus: Sie sparen die Kompilierungszeit, und Updates erfolgen mit brew upgrade.

#1. Mit Metal kompilieren

Kompilierung (Metal standardmäßig aktiviert)
git clone https://github.com/ggml-org/llama.cpp
cd llama.cpp

cmake -B build
cmake --build build --config Release -j $(sysctl -n hw.ncpu)

Die Build-Dokumentation ist eindeutig: Unter macOS ist Metal standardmäßig aktiviert und lässt die Berechnungen auf der GPU ausführen. Es muss keine Option hinzugefügt werden. Der alte Repository-Name unter dem Konto von Georgi Gerganov leitet zur Organisation ggml-org weiter, wo sich das Projekt inzwischen befindet. Die Binärdateien liegen in build/bin, insbesondere llama-cli für das Terminal und llama-server für die API.

i
Metal und MPS sind zwei verschiedene Dinge
MPS (Metal Performance Shaders) ist die Schicht, die PyTorch verwendet. llama.cpp ist davon unabhängig: Sein Metal-Backend ist für die Inferenz quantisierter Modelle geschrieben, was zu einem großen Teil erklärt, warum es auf dem Mac schneller ist als Lösungen, die über PyTorch laufen.

Zwei nützliche Optionen: Laut Dokumentation deaktiviert -DGGML_METAL=OFF Metal beim Kompilieren. Ein mit Metal kompiliertes Programm lässt sich mit --n-gpu-layers 0 zur Ausführung auf der CPU zwingen, was für Geschwindigkeitsvergleiche praktisch ist.

#2. Ein erstes Modell starten

Neuere Inferenz-Engines können das Modell selbst herunterladen. Die Option -hf nimmt den Namen eines Hugging-Face-Repositorys entgegen, mit der Quantisierung als Suffix; ohne Suffix wird standardmäßig Q4_K_M gewählt. Für eine bereits heruntergeladene Datei verwenden Sie -m mit ihrem Pfad.

Ein Modell herunterladen und starten
./build/bin/llama-cli -hf UTILISATEUR/MODELE-GGUF:Q4_K_M
Eine lokale Datei starten
./build/bin/llama-cli -m ~/modeles/mon-modele-Q4_K_M.gguf

Die Anzahl der auf der GPU abgelegten Schichten lässt sich mit -ngl einstellen; der Standardwert ist auto, was für einen Mac mit gemeinsamem Arbeitsspeicher geeignet ist. Sie können auch -ngl all angeben, um alles zu laden. Suchen Sie nicht im Ollama-Ordner nach dem Pfad zu einem Modell: Die Modelldateien werden in einem internen Format gespeichert, das kein direkt verwendbares GGUF ist.

#Eine OpenAI-kompatible API mit llama-server bereitstellen

llama-server stellt Routen bereit, die mit der OpenAI-API für Chat, Antworten und Embeddings kompatibel sind. Standardmäßig lauscht er auf 127.0.0.1, Port 8080: Er ist nur von Ihrem Mac aus erreichbar. Um ihn über das Netzwerk zugänglich zu machen, müssen Sie --host ausdrücklich angeben und sollten dann den Zugriff schützen.

Lokale API starten
./build/bin/llama-server -m ~/modeles/mon-modele-Q4_K_M.gguf --port 8080

#4. Die GPU-Speicherbegrenzung von macOS

Auf Apple Silicon stellt macOS der GPU nur einen Teil des vereinheitlichten Speichers zur Verfügung. Ein Modell, das diesen Anteil überschreitet, wird abgelehnt oder teilweise auf den Prozessor ausgelagert, selbst wenn der Gesamtspeicher ausreicht. Die Engine zeigt den effektiven Wert beim Start an: Suchen Sie in den Protokollen von llama-cli oder llama-server nach der Zeile ggml_metal_init: recommendedMaxWorkingSetSize.

Mit dem Befehl sysctl iogpu.wired_limit_mb lässt sich diese Obergrenze erhöhen. Er erwartet einen Wert in Megabyte: beispielsweise 61.440 für 60 GB. Ein Mitwirkender am llama.cpp-Repository weist darauf hin, dass der Befehl bei jedem Systemstart erneut ausgeführt werden muss, da die Einstellung nicht dauerhaft gespeichert wird, und rät davon ab, bis auf 100 % zu gehen: Das System braucht Speicher für alles, was nicht durch die GPU gesperrt ist, und es kommt zu Problemen, wenn ihm nicht genug Speicher bleibt.

Limit erhöhen (nicht dauerhaft)
# 56 Go pour le GPU sur un Mac de 64 Go (56 x 1024 = 57344)
sudo sysctl iogpu.wired_limit_mb=57344

# Relancez ensuite le modèle et relisez recommendedMaxWorkingSetSize
!
Lassen Sie Speicherreserve für macOS
Lassen Sie dem System mindestens einige Gigabyte. Eine zu hohe Obergrenze führt zu Verlangsamungen oder zum Einfrieren des Systems, sodass ein Neustart nötig wird. Damit die Einstellung dauerhaft wirksam bleibt, muss sie bei jedem Systemstart erneut angewendet werden, beispielsweise durch einen Daemon, der beim Booten gestartet wird: Eine native Möglichkeit, die Einstellung dauerhaft zu speichern, gibt es nicht.

#Welches Modell für welche Größe des vereinheitlichten Speichers

Der vereinheitlichte Speicher wird zwischen macOS, Ihren Anwendungen und dem Modell geteilt, und die GPU erhält davon nur einen Teil. Als Richtwert veranschlagt diese Website für die Gewichte eines 8B-Modells in Q4 etwa 5 GB, für ein 14B-Modell etwa 9 GB und für ein 32B-Modell etwa 19 bis 20 GB. Der Kontextcache kommt hinzu. Die Tabelle liefert eine vorsichtige Größenordnung; maßgeblich ist der vom Ausführungsbackend angezeigte Wert recommendedMaxWorkingSetSize.

Größenordnung je nach Arbeitsspeicher des Macs (Modellgewichte in Q4, ohne Kontext)
Arbeitsspeicher des MacAngemessenes ModellHinweis
8 GB3B (2 GB)Ein 8B ist möglich, aber lässt bei macOS zu wenig Spielraum
16 GB8B (5 GB), mittlerer KontextDas standardmäßige GPU-Speicherlimit reicht weiterhin aus
24 bis 32 GB14B (9 GB), oder auch ein 8B in Q8Ein 32B in Q4 erfordert das Erhöhen der GPU-Grenze
48 bis 64 GB32B (19–20 GB) mit langem KontextDie GPU-Grenze erhöhen, falls die Engine das Modell nicht akzeptiert
96 GB und mehr70B (ca. 40 GB) und MoE-ModellerecommendedMaxWorkingSetSize vor dem Herunterladen prüfen

Diese Größenordnungen sind vorsichtige Schätzungen, keine Messwerte: Ein langer Kontext, ein zweites Modell oder eine ressourcenhungrige Anwendung reichen aus, um die Situation zu verändern. Der Leitfaden zum Arbeitsspeicher erläutert die vollständige Berechnungsmethode.

#5. Die wichtigsten Einstellungen

Optionen von llama-cli und llama-server (offizielle README-Datei von llama-cli)
OptionRolleStandardwert
-ngl, --n-gpu-layersAnzahl der im VRAM abgelegten Schichten (eine Zahl, auto oder all)auto
-fa, --flash-attnFlash Attention: on, off oder autoauto
-ctk, -ctvTyp des KV-Caches für Schlüssel und Werte (f16, q8_0, q4_0…)f16
-hfHugging-Face-Repository zum Herunterladen, mit optionaler QuantisierungQ4_K_M, wenn das Suffix weggelassen wird
-cGröße des Kontexts in Tokensje nach Modell

Flash Attention ist standardmäßig im Automatikmodus: In den meisten Fällen müssen Sie es nicht manuell aktivieren. Der KV-Cache lässt sich mit -ctk und -ctv quantisieren, sofern Flash Attention aktiv ist; mit q8_0 wird der Speicherbedarf des Caches gegenüber f16 ungefähr halbiert. Das geht mit einem leichten Genauigkeitsverlust einher, dessen Auswirkungen Sie für Ihre Anwendungsfälle überprüfen sollten. Der eigene Leitfaden dazu erläutert diesen Kompromiss im Detail.

#6. Leistungsdaten pro Chip: Was öffentliche Benchmarks messen

QuelLLM führt keine Messungen an diesen Geräten durch. Als Referenz dient die Diskussion „Performance of llama.cpp on Apple Silicon M-series“ im llama.cpp-Repository, in der alle Beitragenden denselben Test mit einem LLaMA 7B in Q4_0 ausführen. Die folgende Tabelle enthält einige Zeilen daraus sowie die jeweils verwendete Version von llama.cpp: Die Messungen für die Chips M1 bis M4 wurden mit derselben Version durchgeführt, die für die M5-Chips mit einer neueren.

Generierung (tg) und Prompt-Verarbeitung (pp) mit LLaMA 7B Q4_0, in Tokens pro Sekunde
Chip (GPU-Kerne)BandbreitePromptGenerierungAnteil des theoretischen Höchstwerts
M2 Pro (19)200 GB/s341,1938,8674 %
M3 Pro (18)150 GB/s341,6730,7478 %
M4 Pro (20)273 GB/s439,7850,7471 %
M5 Pro (20)307 GB/s1 620,6466,3382 %
M4 Max (40)546 GB/s885,6883,0658 %

Die theoretische Obergrenze ergibt sich aus der Bandbreite geteilt durch die Größe der Modellgewichte (3,56 GiB, also 3,82 GB). Die Pro-Chips erreichen 71 bis 82 % dieser Obergrenze, der Max-Chip nur 58 %: Ab einem bestimmten Niveau ist der Speicher nicht mehr der einzige Engpass, und für mehr Bandbreite zu bezahlen bringt weniger, als das Datenblatt vermuten lässt.

Drei Erkenntnisse. Die Generierung folgt der Speicherbandbreite: Der M3 Pro mit 150 GB/s ist langsamer als der M2 Pro mit 200 GB/s, trotz der neueren Chip-Generation. Die Max-Chips mit deutlich höherer Bandbreite dominieren. Schließlich hat das Lesen des Prompts mit den M5-Chips einen Sprung gemacht: 1 620,64 Tokens/s für einen M5 Pro, gegenüber 439,78 für einen M4 Pro mit derselben Anzahl von GPU-Kernen, also 3,7-mal schneller. Dieser Unterschied ist für lange Dokumente und RAG von Bedeutung, für den Chat jedoch weit weniger.

i
Wie interpretiert man diese Zahlen?
Die Messungen stammen von verschiedenen Mitwirkenden, die unterschiedliche Versionen von llama.cpp und macOS verwendet haben. Sie liefern eine Größenordnung für den Vergleich von Chips, aber keine Garantie für Ihren Rechner. Ein Modell mit 8 bis 9 Milliarden Parametern in Q4 ist größer als ein 7B-Modell und läuft daher etwas langsamer.

Eine gute Vorgehensweise, bevor Sie zu dem Schluss kommen, dass ein Mac langsam ist: dasselbe Modell zunächst mit -ngl 0, dann mit dem Standardwert erneut starten und die Ergebnisse vergleichen. Der Unterschied zeigt, was die GPU auf Ihrem Rechner tatsächlich leistet, und bestätigt, dass die Berechnung tatsächlich über Metal erfolgt. Notieren Sie auch die verwendete Version von llama.cpp: Die Metal-Optimierungen entwickeln sich schnell weiter, und eine ältere Binärdatei kann deutlich langsamer sein als eine aktuelle Version.

#Fehlerbehebung: häufige Fehler

Häufige Symptome auf dem Mac
SymptomWahrscheinliche UrsacheLösungsansatz
Sehr geringer Durchsatz, Prozessor bei 100 %Modell auf der CPU geladen-ngl prüfen und die Startprotokolle lesen
GPU-SpeicherzuweisungsfehlerModell größer als der der GPU zugewiesene RAM-Anteiliogpu.wired_limit_mb erhöhen, Modell oder Kontext reduzieren
Der Mac verlangsamt sich oder hängtGPU-Limit zu hoch, kein Spielraum für macOSDen Wert von iogpu.wired_limit_mb wieder senken
Die Kompilierung schlägt fehlFehlende Apple-Tools oder zu altes CMakexcode-select --install dann brew upgrade cmake
Das Modell wird nicht gefundenFehlerhafter Pfad oder Repository-Name auf Hugging Face-hf mit einem bekannten Repository oder -m mit einem absoluten Pfad testen
FAQ
Muss llama.cpp kompiliert werden, um Metal auf einem Mac zu verwenden?+
Nein. Metal ist beim Kompilieren unter macOS standardmäßig aktiviert, und Homebrew stellt mit brew install llama.cpp bereits fertige ausführbare Dateien bereit. Kompilieren Sie nur dann selbst, wenn Sie die neueste Version des Repositorys, einen zu testenden Branch oder eine bestimmte Option benötigen. Beide Wege liefern dieselben Werkzeuge: llama-cli und llama-server.
Wie überprüfe ich, ob llama.cpp die GPU auf meinem Mac nutzt?+
Lesen Sie die Protokolle beim Start von llama-cli oder llama-server: Sie zeigen die Initialisierung von Metal und den Wert von recommendedMaxWorkingSetSize an. Ein sehr niedriger Durchsatz bei voll ausgelastetem Prozessor deutet darauf hin, dass das Modell auf die CPU geladen wurde. Prüfen Sie dann die Einstellung -ngl, deren Standardwert auto ist.
Wie lässt sich der GPU auf einem Mac mit Apple Silicon mehr Speicher zuweisen?+
Mit sudo sysctl iogpu.wired_limit_mb=VALEUR, wobei der Wert in Megabyte angegeben wird. Die Einstellung ist nicht dauerhaft und muss bei jedem Systemstart erneut vorgenommen werden. Streben Sie nicht 100 % des RAM an: macOS benötigt Speicher für den Rest des Systems. Lesen Sie recommendedMaxWorkingSetSize erneut in den Protokollen nach, um den neuen Wert zu bestätigen.
llama.cpp oder Ollama auf dem Mac?+
Ollama basiert auf llama.cpp und vereinfacht die Installation, Downloads und die API. Verwenden Sie llama.cpp direkt, um die neuesten Optionen, eine fein abgestimmte Steuerung der Parameter oder llama-server zu nutzen. Auf dem Mac erläutert der Vergleichsleitfaden zu MLX und llama.cpp auch die andere mögliche Engine im Detail. Für den Einstieg reichen Ollama oder LM Studio aus.
Welche Geschwindigkeit ist von einem Mac M4 Pro mit llama.cpp zu erwarten?+
Der öffentliche Benchmark von llama.cpp liefert bei einem M4 Pro mit 20 GPU-Kernen für ein LLaMA-7B-Modell in Q4_0 50,74 Tokens/s bei der Generierung und 439,78 Tokens/s bei der Verarbeitung des Prompts. Ein größeres Modell ist langsamer. Diese Werte variieren je nach Version von llama.cpp, Speicher und macOS.
Hat Ihnen dieser Guide geholfen?

Haben Sie Feedback, einen Fehler entdeckt oder möchten Sie etwas präzisieren? Geben Sie uns Bescheid – so wird der Guide für alle besser.