Apples MLX-Framework: Maximale KI-Geschwindigkeit

laptop_mac macOS Sonoma Intermediate schedule 8 min read
Author by Alex Rivera • May 14, 2024

Step 1 Was ist MLX und warum ist es relevant?

Wenn Sie jemals ein großes Sprachmodell auf einem Mac ausgeführt haben und dabei zusehen mussten, wie der CPU-Lüfter hochdreht, während Ihre GPU ungenutzt blieb, verstehen Sie bereits das Problem, das MLX lösen soll.

MLX ist ein Open-Source-Array-Framework, das vom Machine-Learning-Forschungsteam von Apple entwickelt und Ende 2023 veröffentlicht wurde. Im Kern ist MLX für einen einzigen Zweck konzipiert: maschinelles Lernen auf Apple Silicon schnell zu machen. Nicht nur „akzeptabel" schnell — sondern wirklich wettbewerbsfähig mit dedizierten GPU-Workstations für Inferenz-Workloads.

Der Unified-Memory-Vorteil

Die zentrale architektonische Erkenntnis hinter MLX ist Apples Unified Memory Architecture (UMA). In traditionellen Computing-Setups verfügen CPU und GPU über separate Speicherpools. Daten müssen explizit zwischen ihnen kopiert werden — ein Flaschenhals, der sowohl Zeit als auch Energie verbraucht.

Apple Silicon eliminiert dies vollständig:

Terminal
Traditional Architecture:
┌──────────┐    PCIe Bus    ┌──────────┐
│  CPU RAM │ ◄────────────► │  GPU RAM │
│  (DDR5)  │   ~50 GB/s    │  (GDDR6) │
└──────────┘                └──────────┘

Apple Silicon (M-Series):
┌─────────────────────────────────────┐
│         Unified Memory Pool         │
│  ┌──────────┐      ┌─────────────┐  │
│  │   CPU    │      │  GPU Cores  │  │
│  │  Cores   │      │  (up to 76) │  │
│  └──────────┘      └─────────────┘  │
│         ~400 GB/s bandwidth         │
└─────────────────────────────────────┘

MLX wurde von Grund auf entwickelt, um diese Topologie auszunutzen. Tensoren leben in einem einzigen Adressraum, der von jeder Recheneinheit gleichzeitig zugänglich ist — CPU-Kerne, GPU-Kerne und die Neural Engine — ohne jeglichen Kopieraufwand.

Warum das für LLM-Inferenz relevant ist

Das Ausführen eines großen Sprachmodells ist grundlegend ein Speicherbandbreiten-Problem, kein Rechenproblem. Der Forward-Pass eines Transformers wird dadurch begrenzt, wie schnell Gewichte aus dem Speicher in die Recheneinheiten geladen werden können — nicht durch die rohe FLOP-Anzahl.

Hardware Speicherbandbreite Peak TOPS
MacBook Pro M4 Max ~546 GB/s 38,4
RTX 4090 (diskret) 1.008 GB/s 165,6
MacBook Pro M3 Pro ~153 GB/s 18
MacBook Air M2 ~100 GB/s 15,8

Was die obige Tabelle nicht erfasst: Eine RTX 4090 erfordert ein Desktop-System mit einem TDP von 450 W. Ein M4 Max MacBook Pro verbraucht unter voller ML-Last ungefähr 60 W. Die Performance-pro-Watt-Bilanz ist außerordentlich.

MLX vs. die Alternativen

Vor MLX war die dominierende Lösung für den lokalen Betrieb von LLMs auf dem Mac llama.cpp — eine herausragende C++-Implementierung, die handoptimierte Metal-Kernel und CPU-Vektoroperationen verwendet. Sie funktioniert gut, ist aber im Grunde ein Workaround, der für Hardware entwickelt wurde, für die er nicht konzipiert war.

MLX hingegen wurde von den Menschen entwickelt, die die Hardware entworfen haben. Apples Ingenieure schrieben MLX mit vollständigem Wissen über das M-Series-Speichersubsystem, die Cache-Hierarchie und die GPU-Mikroarchitektur. Das Ergebnis ist ein Framework, in dem Operationen wie matmul, quantized_matmul und Attention-Kernel erstklassige Bürger mit nativen Metal-Compute-Shadern sind — keine nachträglichen Ergänzungen.

Weitere architektonische Entscheidungen, die MLX außergewöhnlich machen:

  • Lazy Evaluation: Berechnungen werden erst ausgeführt, wenn Ergebnisse explizit benötigt werden, was automatische Kernel-Fusion und Graph-Optimierung ermöglicht.
  • Automatische Differentiation: Vollständige Unterstützung für Forward- und Reverse-Mode-AD, wodurch MLX nicht nur für Inferenz, sondern auch für Fine-Tuning geeignet ist.
  • Pythonische API: Die Schnittstelle ist bewusst NumPy-kompatibel gestaltet, was die Lernkurve für ML-Praktiker erheblich reduziert.
  • mlx-lm-Ökosystem: Eine High-Level-Bibliothek, die auf MLX aufbaut und speziell für LLM-Inferenz, Quantisierung und LoRA-Fine-Tuning entwickelt wurde.

Das Fazit: Wenn Sie Apple-Silicon-Hardware besitzen und MLX nicht für lokale KI-Inferenz nutzen, lassen Sie erhebliche Performance-Reserven ungenutzt. Der Rest dieses Leitfadens zeigt Ihnen genau, wie Sie diese erschließen können.

Step 2 Voraussetzungen & Python-Umgebungs-Setup

Bevor Sie in MLX einsteigen, stellen Sie sicher, dass Ihre Hardware und Ihr Software-Stack die Mindestanforderungen erfüllen. MLX ist ausschließlich für Apple Silicon — das ist nicht verhandelbar. Das Framework ist von Grund auf darauf ausgelegt, die Unified Memory Architecture und die Neural Engine zu nutzen, die ausschließlich in M-Series-Chips zu finden sind.

Hardware-Anforderungen

Komponente Minimum Empfohlen
Chip Apple M1 Apple M2 Pro / M3 Max
RAM 8 GB Unified Memory 32 GB+ Unified Memory
Speicher 20 GB frei 50 GB+ frei (für Modelle)
macOS Ventura 13.5 Sonoma 14.x oder neuer

⚠️ Wichtig: MLX läuft nicht auf Intel-basierten Macs. Wenn Sie versuchen, es auf einem x86_64-Mac zu installieren, wird das Paket installiert, aber das Metal-Backend schlägt zur Laufzeit bei der Initialisierung fehl.


Silicon verifizieren

Bevor Sie einen einzigen Paketmanager anfassen, bestätigen Sie, dass Sie auf Apple Silicon arbeiten:

Terminal
uname -m

Erwartete Ausgabe:

Terminal
arm64

Sie können auch detaillierte Chip-Informationen abrufen:

Terminal
system_profiler SPHardwareDataType | grep "Chip"
Terminal
Chip: Apple M3 Max

Python-Versionsanforderungen

MLX erfordert Python 3.9 oder höher. Python 3.11 ist derzeit die optimale Wahl — es liefert die beste Performance mit dem geringsten Interpreter-Overhead auf Apple Silicon, und alle wichtigen MLX-Abhängigkeiten pflegen stabile Wheels dafür.

Terminal
python3 --version
# Python 3.11.x preferred

Eine dedizierte virtuelle Umgebung einrichten

Installieren Sie MLX niemals in Ihrem System-Python. Abhängigkeitskonflikte mit dem von macOS mitgelieferten Python können zu subtilen, schwer nachvollziehbaren Fehlern führen. Verwenden Sie eine saubere virtuelle Umgebung.

Option A: Mit venv (Leichtgewichtig, eingebaut)

Terminal
# Create the environment
python3.11 -m venv ~/envs/mlx-env

# Activate it
source ~/envs/mlx-env/bin/activate

# Confirm the Python path
which python
# ~/envs/mlx-env/bin/python

Option B: Mit conda / miniforge (Empfohlen für ML-Workflows)

Miniforge wird mit ARM-nativem conda ausgeliefert und ist die bevorzugte Wahl für ernsthaftes ML-Development auf Apple Silicon:

Terminal
# Install Miniforge (if not already installed)
brew install miniforge

# Create a dedicated MLX conda environment
conda create -n mlx-env python=3.11 -y

# Activate
conda activate mlx-env

Pro-Tipp: Verwenden Sie conda-forge als Ihren primären Channel. Es bietet ARM64-native Builds für die meisten wissenschaftlichen Computing-Pakete und vermeidet den Rosetta-2-Übersetzungs-Overhead, der die Performance still und leise beeinträchtigen kann.


pip und Core-Tools aktualisieren

Sobald Sie sich in Ihrer aktivierten Umgebung befinden, aktualisieren Sie die grundlegende Toolchain, bevor Sie ML-Pakete installieren:

Terminal
pip install --upgrade pip setuptools wheel

Dies ist besonders wichtig, da MLX gelegentlich Binary-Wheels liefert, für deren korrekte Auflösung auf dem arm64-Plattform-Tag eine aktuelle pip-Version (≥23.x) erforderlich ist.


Metal- und Accelerate-Verfügbarkeit prüfen

MLX verlässt sich auf Apples Metal-GPU-API und das Accelerate-Framework für BLAS-Operationen. Diese werden mit macOS ausgeliefert und erfordern keine separate Installation, aber Sie können über Python verifizieren, dass Metal zugänglich ist:

Terminal
python3 -c "import subprocess; subprocess.run(['system_profiler', 'SPDisplaysDataType'])"

Alternativ bestätigt nach der Installation von MLX im nächsten Abschnitt folgender Einzeiler, dass das Metal-Backend aktiv ist:

Terminal
import mlx.core as mx
print(mx.default_device())  # Device(gpu, 0) — confirms Metal backend

Wenn Sie Device(cpu, 0) sehen, werden Ihre Metal-Treiber nicht korrekt erkannt — dies weist typischerweise auf eine macOS-Versions-Inkompatibilität oder eine beschädigte Xcode-Command-Line-Tools-Installation hin.


Xcode Command Line Tools installieren

Mehrere MLX-Abhängigkeiten kompilieren bei der Installation native Erweiterungen. Stellen Sie sicher, dass Xcode Command Line Tools vorhanden sind:

Terminal
xcode-select --install

Verifizieren Sie die Installation:

Terminal
xcode-select -p
# /Library/Developer/CommandLineTools

Mit einer sauberen Umgebung, Python auf 3.11 fixiert, Metal bestätigt und pip aktuell, sind Sie bereit, MLX selbst zu installieren.

Step 3 Schritt 1: MLX und MLX-LM installieren

Mit Ihrer ordnungsgemäß konfigurierten Python-Umgebung ist es an der Zeit, die Core-Bibliotheken zu installieren. MLX wird als Standard-Python-Paket ausgeliefert, aber es gibt einige Feinheiten, die Sie verstehen sollten, bevor Sie blind pip install eingeben und sich damit in eine kaputte Umgebung manövrieren.


Core-Paketstruktur

Apples MLX-Ökosystem ist auf mehrere zielgerichtete Pakete aufgeteilt. Für LLM-Inferenz benötigen Sie zwei primäre Komponenten:

Paket Zweck
mlx Core-Array-Computation-Framework (GPU/CPU Unified-Memory-Ops)
mlx-lm High-Level-LLM-Interface — Generierung, Quantisierung, Fine-Tuning
huggingface-hub Modell-Download und Cache-Verwaltung
transformers Tokenizer-Unterstützung (als Abhängigkeit eingebunden)

Das mlx-lm-Paket installiert mlx nicht automatisch in der exakten Version, gegen die es getestet wurde — daher ist Versions-Pinning wichtig. Dazu mehr weiter unten.


Installation

Aktivieren Sie zunächst Ihre virtuelle Umgebung. Falls Sie den Abschnitt zu den Voraussetzungen übersprungen haben: Die Mindestanforderung ist Python 3.9+ auf einem Apple-Silicon-Mac (M1/M2/M3/M4-Series). MLX läuft nicht auf Intel-Macs — das Framework ist architektonisch an die Unified Memory Architecture gekoppelt.

Terminal
# Upgrade pip first — older pip versions mishandle Apple's binary wheels
pip install --upgrade pip

# Install the core MLX framework
pip install mlx

# Install the LLM interface layer
pip install mlx-lm

Für Nutzer, die die neuesten Nightly-Builds wünschen (nützlich zum Testen noch nicht veröffentlichter Modell-Unterstützung):

Terminal
pip install mlx-nightly mlx-lm

⚠️ Mischen Sie nicht stabiles mlx mit mlx-nightly. Das ABI zwischen den beiden ist inkompatibel und erzeugt zur Laufzeit kryptische Import-Fehler.


Die Installation verifizieren

Führen Sie diesen Verifikationsblock unmittelbar nach der Installation aus. Wenn einer dieser Schritte fehlschlägt, weist Ihre Umgebung Probleme auf, die sich später zu schwerer zu debuggenden Fehlern aufschaukeln.

Terminal
# verify_mlx.py
import mlx.core as mx
import mlx_lm

# Check MLX version
print(f"MLX version: {mx.__version__}")

# Confirm we're targeting the GPU (not CPU fallback)
print(f"Default device: {mx.default_device()}")

# Confirm mlx-lm loaded
print(f"mlx-lm version: {mlx_lm.__version__}")

# Quick tensor operation on GPU
a = mx.array([1.0, 2.0, 3.0])
b = mx.array([4.0, 5.0, 6.0])
print(f"Dot product (GPU): {mx.inner(a, b).item()}")

Erwartete Ausgabe:

Terminal
MLX version: 0.16.x
Default device: Device(gpu, 0)
mlx-lm version: 0.19.x
Dot product (GPU): 32.0

Kritischer Checkpoint: Wenn Default device den Wert Device(cpu, 0) zurückgibt, greift MLX nicht auf das Metal-GPU-Backend zu. Dies bedeutet in der Regel, dass Sie eine nicht-native Python-Binary verwenden (z. B. ein via Rosetta übersetztes x86-Python). Verifizieren Sie mit:

Terminal
python -c "import platform; print(platform.machine())"
# Must output: arm64

Optional: Development-Installation

Wenn Sie zu MLX beitragen oder Interna patchen möchten, installieren Sie aus dem Quellcode:

Terminal
git clone https://github.com/ml-explore/mlx.git
cd mlx
pip install -e .

git clone https://github.com/ml-explore/mlx-lm.git
cd mlx-lm
pip install -e .

Das Bauen aus dem Quellcode erfordert Xcode Command Line Tools und CMake ≥ 3.26:

Terminal
xcode-select --install
brew install cmake

Dependency-Snapshot

Hier ist eine saubere requirements.txt für eine reproduzierbare Inferenz-Umgebung (Stand Mitte 2025):

Terminal
mlx>=0.16.0
mlx-lm>=0.19.0
huggingface-hub>=0.23.0
transformers>=4.41.0
sentencepiece>=0.2.0
protobuf>=3.20.0

Fixieren Sie diese Versionen in Produktions-Workloads. Das MLX-Team liefert angesichts des rasanten Entwicklungstempos des Frameworks häufig breaking API-Änderungen, und ein stiller Upgrade kann Ihre Generierungsparameter oder Quantisierungskonfigurationen ungültig machen.

Nachdem die Bibliotheken bestätigt und betriebsbereit sind, besteht der nächste Schritt darin, korrekt formatierte MLX-Modelle von HuggingFace herunterzuladen — was ein Verständnis davon erfordert, warum nicht alle GGUF- oder Safetensors-Modelle von Haus aus MLX-kompatibel sind.

Step 4 Schritt 2: Optimierte MLX-Modelle von HuggingFace herunterladen

Bevor Sie Inferenz ausführen können, benötigen Sie Modelle, die speziell für die MLX-Runtime formatiert und quantisiert sind. Während MLX Standardmodelle on-the-fly konvertieren kann, ist der leistungsstärkste Weg, vorkonvertierte, vorquantisierte MLX-native Modelle direkt von HuggingFace zu beziehen. Die MLX-Community — größtenteils angeführt von der produktiven mlx-community-Organisation auf HuggingFace — hat die Schwerstarbeit der Konvertierung und Quantisierung hunderter populärer Modelle übernommen.

MLX-Modellformate verstehen

MLX-Modelle werden als Safetensors-Dateien gespeichert, gepaart mit einer config.json und einer tokenizer_config.json. Was sie auszeichnet, ist das Quantisierungsformat. Im Gegensatz zu GGUF (verwendet von llama.cpp) verwendet MLX ein eigenes internes Quantisierungsschema mit folgenden gängigen Konfigurationen:

Quantisierung Bits pro Gewicht Qualität Geschwindigkeit (Tok/s geschätzt) Größe (7B-Modell)
mlx-4bit 4-Bit Gut ⚡⚡⚡⚡ ~4 GB
mlx-8bit 8-Bit Besser ⚡⚡⚡ ~8 GB
bf16 16-Bit (bfloat) Beste ⚡⚡ ~14 GB
fp16 16-Bit (float) Beste ⚡⚡ ~14 GB

Für die meisten Nutzer mit M1/M2/M3-Geräten bieten 4-Bit-quantisierte Modelle das beste Durchsatz-zu-Qualität-Verhältnis.

Methode 1: Verwendung des huggingface_hub-CLI (Empfohlen)

Der sauberste Ansatz ist die Verwendung des HuggingFace Hub CLI, der automatisch Resume-on-Failure, Caching und Integritätsprüfung übernimmt.

Terminal
# Install the hub CLI if you haven't already
pip install huggingface_hub

# Download a 4-bit quantized Llama 3.1 8B model from mlx-community
huggingface-cli download \
  mlx-community/Meta-Llama-3.1-8B-Instruct-4bit \
  --local-dir ./models/llama-3.1-8b-4bit \
  --local-dir-use-symlinks False

Pro-Tipp: Das Flag --local-dir-use-symlinks False stellt sicher, dass tatsächliche Dateien in Ihr Verzeichnis geschrieben werden und keine Symlinks in den HuggingFace-Cache. Dies ist entscheidend für die Portabilität und direkte Pfadreferenzen in Ihren Skripten.

Methode 2: Verwendung von mlx_lm.convert für benutzerdefinierte Konvertierung

Falls das benötigte Modell noch nicht von der Community vorkonvertiert wurde, können Sie es selbst direkt aus einem Standard-HuggingFace-Checkpoint konvertieren:

Terminal
# Convert and quantize a standard model to MLX 4-bit format
python -m mlx_lm.convert \
  --hf-path mistralai/Mistral-7B-Instruct-v0.3 \
  --mlx-path ./models/mistral-7b-instruct-4bit \
  -q \
  --q-bits 4 \
  --q-group-size 64

Wichtige Flags erklärt:

  • -q — Aktiviert die Quantisierung während der Konvertierung
  • --q-bits — Ziel-Bits pro Gewicht (4 oder 8)
  • --q-group-size — Gruppengröße für Gruppenquantisierung; 64 ist Standard, 32 liefert bei größerem Speicherverbrauch etwas bessere Qualität

Methode 3: Snapshot-Download via Python

Für programmatische Workflows und CI/CD-Pipelines verwenden Sie die Python-API:

Terminal
from huggingface_hub import snapshot_download

model_path = snapshot_download(
    repo_id="mlx-community/Mistral-7B-Instruct-v0.3-4bit",
    local_dir="./models/mistral-7b-4bit",
    ignore_patterns=["*.md", "*.txt"]  # Skip non-essential files
)

print(f"Model downloaded to: {model_path}")

Empfohlene Einstiegsmodelle

Hier sind bewährte, leistungsstarke MLX-Modelle, die derzeit auf HuggingFace verfügbar sind:

Modell HuggingFace-Repo Benötigtes VRAM Optimal für
Llama 3.1 8B (4-Bit) mlx-community/Meta-Llama-3.1-8B-Instruct-4bit ~5 GB Allgemeine Nutzung
Mistral 7B (4-Bit) mlx-community/Mistral-7B-Instruct-v0.3-4bit ~4,5 GB Schnelle Inferenz
Llama 3.1 70B (4-Bit) mlx-community/Meta-Llama-3.1-70B-Instruct-4bit ~38 GB Hohe Qualität
Phi-3.5 Mini (4-Bit) mlx-community/Phi-3.5-mini-instruct-4bit ~2,5 GB Macs mit wenig Speicher
Qwen2.5 14B (4-Bit) mlx-community/Qwen2.5-14B-Instruct-4bit ~9 GB Coding-Aufgaben

Das heruntergeladene Modell verifizieren

Bevor Sie Inferenz ausführen, validieren Sie, dass die Modellstruktur vollständig ist:

Terminal
# List the expected files in a valid MLX model directory
ls -lh ./models/llama-3.1-8b-4bit/

# Expected output should include:
# config.json
# tokenizer.json
# tokenizer_config.json
# special_tokens_map.json
# model.safetensors (or sharded: model-00001-of-00004.safetensors, etc.)

Wenn Sie .safetensors-Dateien zusammen mit den Tokenizer-Konfigurationen sehen, sind Sie bereit. Eine fehlende config.json oder tokenizer_config.json ist die häufigste Ursache für Ladefehler — führen Sie den Download-Befehl erneut aus, falls eine davon fehlt.

Step 5 Schritt 3: Inferenz via CLI ausführen

Mit Ihrem heruntergeladenen und lokal bereitgestellten MLX-optimierten Modell sind Sie bereit, Inferenz direkt vom Terminal aus auszuführen. MLX-LM wird mit einem leistungsfähigen mlx_lm.generate-Befehl ausgeliefert, der Python-Boilerplate vollständig umgeht und Ihnen eine saubere, reproduzierbare Schnittstelle für Benchmarking und schnelle Experimente bietet.

Grundlegender Generierungsbefehl

Der denkbar einfachste Inferenzaufruf sieht folgendermaßen aus:

Terminal
mlx_lm.generate \
  --model mlx-community/Mistral-7B-Instruct-v0.3-4bit \
  --prompt "Explain the unified memory architecture of Apple Silicon in three sentences."

MLX lädt die Modellgewichte direkt in den Unified-Memory-Pool, kompiliert den Compute-Graphen über seine Lazy-Evaluation-Engine und streamt Token nach stdout. Auf M-Series-Chips sehen Sie typischerweise das erste Token innerhalb von 1–2 Sekunden — eine direkte Konsequenz der vollständigen Eliminierung der PCIe-Übertragungslatenz.


Wichtige CLI-Flags im Überblick

Das Verständnis der verfügbaren Flags ermöglicht es Ihnen, das Framework an seine Grenzen zu bringen:

Flag Typ Standard Beschreibung
--model str erforderlich Lokaler Pfad oder HuggingFace-Repo-ID
--prompt str erforderlich Eingabe-Prompt-String
--max-tokens int 256 Maximale Anzahl zu generierender Token
--temp float 0.0 Sampling-Temperatur (0 = Greedy-Decode)
--top-p float 1.0 Nucleus-Sampling-Schwellenwert
--seed int None RNG-Seed für Reproduzierbarkeit
--repetition-penalty float 1.0 Bestraft Token-Wiederholungen
--verbose bool True Gibt Token/s-Durchsatz und Latenz aus

Produktionsreifer Inferenzbefehl

Für ernsthaftes Benchmarking oder die Evaluation von Produktions-Prompts verwenden Sie die vollständig parametrisierte Form:

Terminal
mlx_lm.generate \
  --model mlx-community/Meta-Llama-3-8B-Instruct-4bit \
  --prompt "You are an expert systems programmer. Write a zero-copy ring buffer implementation in Rust." \
  --max-tokens 1024 \
  --temp 0.7 \
  --top-p 0.9 \
  --repetition-penalty 1.1 \
  --seed 42 \
  --verbose

Das Flag --verbose gibt nach Abschluss eine Performance-Zusammenfassung aus, die in etwa so aussieht:

Terminal
==========
Prompt: 47 tokens, 823.14 tokens-per-second
Generation: 1024 tokens, 68.42 tokens-per-second
Peak memory: 5.21 GB

Achten Sie genau auf die zwei unterschiedlichen Durchsatzzahlen. Die Prompt-Verarbeitung (Prefill) ist eine hochgradig parallelisierbare Matrixoperation und wird stets deutlich schneller sein als die autoregressive Token-Generierung (Decode). Auf einem M3 Max mit 128 GB Unified Memory können Sie beim Decode-Durchsatz bei 8B-4-Bit-quantisierten Modellen 60–90 Token/s erwarten — wettbewerbsfähig mit oder überlegen gegenüber GPU-beschleunigter Inferenz auf diskreten NVIDIA-Karten, die ein Vielfaches mehr kosten.


Verwendung eines Chat-Templates

Viele instruction-tuned Modelle benötigen ein strukturiertes Chat-Template, um korrekt zu funktionieren. MLX-LM übernimmt dies automatisch, wenn Sie das Flag --chat-template verwenden oder die Chat-Schnittstelle aufrufen:

Terminal
mlx_lm.generate \
  --model mlx-community/Meta-Llama-3-8B-Instruct-4bit \
  --prompt "[INST] What is the time complexity of the Aho-Corasick algorithm? [/INST]" \
  --max-tokens 512

Alternativ können Sie bei Modellen mit eingebetteten tokenizer_config.json-Chat-Templates (wie Llama 3 und Mistral v0.3) direkt den interaktiven Chat-Modus verwenden:

Terminal
mlx_lm.chat --model mlx-community/Meta-Llama-3-8B-Instruct-4bit

Dies startet eine REPL-ähnliche Schnittstelle mit vollständiger Konversationsverlaufs-Verwaltung, die automatisch die korrekten <|begin_of_text|>-, <|user|>- und <|assistant|>-Token anwendet. Die Sitzung hält den KV-Cache über Turns hinweg im Unified Memory, was bedeutet, dass nachfolgende Antworten in einem langen Gespräch progressiv schneller werden, während der Cache sich aufwärmt.


Prompts aus Dateien pipen

Für automatisierte Pipelines und Evaluation-Harnesses leiten Sie Prompts aus