Skip to content
Zurück zu Technik
GenAI · 9 Min. Lesezeit

Lokale LLMs betreiben — Qwen3-Coder, DeepSeek, MLX und Apple Silicon

Ein praktischer Guide zum lokalen Betrieb leistungsfähiger Sprachmodelle auf Apple Silicon — Modellauswahl, MLX vs. Ollama, Quantisierungs-Tradeoffs und wann lokal besser ist als Cloud.

Lokale LLMs auf Apple Silicon betreiben

Die Möglichkeit, leistungsfähige Sprachmodelle lokal zu betreiben, hat einen Wendepunkt erreicht. Mit Apple Silicons Unified-Memory-Architektur und Frameworks wie MLX und Ollama laufen Modelle, die vor fünf Jahren ein Rechenzentrum gebraucht hätten, heute auf einem Laptop. Hier ist mein Setup, was ich gelernt habe, und praktische Orientierung für den Einstieg.

Warum lokal?

Es gibt drei überzeugende Gründe, Modelle lokal statt ausschließlich über Cloud-APIs zu betreiben:

Datenschutz: Sensiblen Code, proprietäre Dokumente und Kundendaten verarbeiten, ohne irgendetwas vom eigenen Rechner zu senden. Das ist nicht theoretisch — wer mit regulierten Daten, Kundencode oder interner Geschäftslogik arbeitet, eliminiert mit lokaler Inferenz die Datenverarbeitungsfrage komplett.

Latenz und Verfügbarkeit: Keine Netzwerkabhängigkeit, keine Rate Limits, sofortige Antworten selbst im Flugzeug. Lokale Modelle antworten in Millisekunden bei Autocomplete und in Sekunden bei längerer Generierung. Keine Warteschlange, kein API-Ausfall, kein “Rate Limit überschritten” um 2 Uhr nachts.

Kosten: Nach der Hardware-Investition ist Inferenz im Grunde kostenlos. Wer hunderte Abfragen pro Tag für Autocomplete, Code-Erklärungen und kleine Aufgaben ausführt, bei dem summieren sich die Cloud-API-Kosten. Lokale Inferenz amortisiert sich über die Zeit auf nahezu null.

Der Tradeoff ist klar: Lokale Modelle sind kleiner und weniger leistungsfähig als Frontier-Cloud-Modelle. Man tauscht rohe Intelligenz gegen Datenschutz, Geschwindigkeit und Kosten. Die Kunst liegt darin zu wissen, welche Abfragen Frontier-Fähigkeit brauchen und welche gut von einem lokalen 14B- oder 32B-Parameter-Modell bedient werden.

Mein Hardware-Setup

Mac Studio M2 Ultra (192 GB Unified Memory): Mein primärer lokaler Inferenz-Rechner. Der massive Unified Memory ist der Schlüssel — er erlaubt den Betrieb von 70B+-Parameter-Modellen in voller Qualität oder mehrerer kleinerer Modelle gleichzeitig. Die Speicherbandbreite des M2 Ultra (~800 GB/s) bestimmt direkt die Token-Generierungsgeschwindigkeit für LLMs.

MacBook Pro M4 Pro (48 GB): Mein mobiles Setup. Führt 14B-Modelle problemlos aus, 32B-Modelle in Q4-Quantisierung. Gut genug für Code-Autocomplete und schnelle Abfragen unterwegs.

Warum Apple Silicon: Die Unified-Memory-Architektur bedeutet, dass GPU und CPU sich denselben Speicherpool teilen. Ein 70B-Q4-Modell braucht ~40 GB Speicher — bei einem Setup mit diskreter GPU bräuchte man mehrere NVIDIA-Karten. Auf einem Mac Studio mit 192 GB Unified Memory funktioniert es einfach. Die Speicherbandbreite ist niedriger als bei dedizierten GPUs, aber die Gesamtkapazität und Benutzerfreundlichkeit sind unerreicht für lokale Inferenz.

Software-Stack

MLX (Apples ML-Framework)

MLX ist Apples Machine-Learning-Framework, speziell für Apple Silicon entwickelt. Es ist der schnellste Weg, Modelle lokal auf einem Mac auszuführen.

# MLX und das LM-Modul installieren
pip install mlx mlx-lm

# Ein Modell direkt ausführen
mlx_lm.generate --model mlx-community/Qwen3-Coder-8B-4bit \
  --prompt "Write a Python function that validates an email address"

# Lokalen Server starten (OpenAI-kompatible API)
mlx_lm.server --model mlx-community/Qwen3-Coder-8B-4bit --port 8080

Hauptvorteile: Native Apple-Silicon-Optimierung, Lazy Evaluation (berechnet nur was nötig ist), die mlx-community auf Hugging Face bietet vorkonvertierte Modellgewichte, sodass man nicht selbst konvertieren muss.

Ollama

Ollama ist der einfachste Weg, mit lokalen Modellen zu starten. Punkt.

# Installieren
brew install ollama

# Ein Modell ausführen (wird beim ersten Aufruf automatisch heruntergeladen)
ollama run qwen3-coder
ollama run deepseek-r1:14b
ollama run llama4-scout

# API-Zugriff (OpenAI-kompatibel)
curl http://localhost:11434/v1/chat/completions \
  -d '{"model": "qwen3-coder", "messages": [{"role": "user", "content": "Hello"}]}'

Hauptvorteile: Extrem einfaches Setup, automatische Modellverwaltung, eingebaute OpenAI-kompatible API, funktioniert mit den meisten KI-Tools (Cursor, Continue.dev, Cline) direkt.

llama.cpp

Die grundlegende Inference-Engine, die die lokale LLM-Revolution möglich gemacht hat. Die meisten anderen Tools (einschließlich Ollama) bauen darauf auf. Direkte Nutzung gibt die meiste Kontrolle:

# Aus dem Quellcode bauen für maximale Performance
git clone https://github.com/ggerganov/llama.cpp
cd llama.cpp && make -j

# Ein GGUF-Modell ausführen
./llama-cli -m ~/models/qwen3-coder-14b-q5_k_m.gguf \
  -p "Explain the three-tier AI architecture pattern" \
  -n 512 --temp 0.7

Wann llama.cpp direkt nutzen: Wenn maximale Kontrolle über Inferenz-Parameter nötig ist, beim Benchmarken oder beim Aufbau eigener Inferenz-Pipelines.

Modellauswahl-Guide

Für Code-Aufgaben

ModellParameterSpeicher (Q4)GeschwindigkeitQualitätHinweise
Qwen3-Coder 8B8B~5 GBSchnellGutMein Standard für Autocomplete. Schnell genug für Inline-Vorschläge.
Qwen3-Coder 14B14B~9 GBGutSehr gutSweet Spot für Code-Generierung auf 48-GB-Maschinen.
Qwen3-Coder 32B32B~20 GBMittelExzellentStarkes Code-Verständnis, läuft gut auf 48 GB+.
DeepSeek-Coder V3 16B16B~10 GBGutSehr gutExzellent für komplexes Code-Reasoning.
Codestral 22B22B~14 GBGutSehr gutMistrals Code-Modell, starke Mehrsprachigkeit.

Für allgemeine Aufgaben

ModellParameterSpeicher (Q4)GeschwindigkeitQualitätHinweise
Llama 4 Scout17B aktiv (MoE)~12 GBGutSehr gutMetas Neuestes, starke Allgemein-Fähigkeit.
Qwen3 14B14B~9 GBGutSehr gutExzellente Mehrsprachigkeit (inkl. Deutsch).
DeepSeek R1 14B14B~9 GBMittelExzellentReasoning-Modell — denkt vor dem Antworten. Langsamer, aber deutlich fähiger bei komplexen Aufgaben.
Gemma 3 12B12B~8 GBSchnellGutGoogles offenes Modell, gut für allgemeine Aufgaben.
Mistral Small 24B24B~15 GBMittelSehr gutStarke europäische Sprachunterstützung.

Für Reasoning

ModellParameterSpeicher (Q4)Hinweise
DeepSeek R1 14B14B~9 GBBestes Reasoning-Modell in dieser Größe. Chain-of-Thought ist eingebaut.
DeepSeek R1 32B32B~20 GBDeutlich stärkeres Reasoning. Den Speicher wert, wenn vorhanden.
QwQ 32B32B~20 GBAlibabas Reasoning-Modell. Wettbewerbsfähig mit R1 in vielen Benchmarks.

Quantisierung verstehen

Quantisierung reduziert die Modellpräzision, um in weniger Speicher zu passen. Der Tradeoff ist Qualität vs. Speicherverbrauch:

QuantisierungQualitätsverlustSpeicherreduktionWann verwenden
Q8Vernachlässigbar~50 % von FP16Bei ausreichend Speicher. Am nächsten zur Originalqualität.
Q6_KMinimal~40 % von FP16Gute Balance für Maschinen mit viel Speicher.
Q5_K_MGering~35 % von FP16Mein Standard. Bestes Qualität-zu-Speicher-Verhältnis.
Q4_K_MSpürbar bei komplexen Aufgaben~25 % von FP16Wenn Speicher knapp ist. Trotzdem gut nutzbar.
Q3_KErheblich~20 % von FP16Nur wenn ein größeres Modell unbedingt reinpassen muss.

Faustregel: Die höchste Quantisierungsstufe verwenden, die in den verfügbaren Speicher passt, mit ~5 GB Reserve für OS und andere Anwendungen.

Integration mit Entwicklungstools

Cursor

Cursor unterstützt lokale Modelle über seine OpenAI-kompatiblen API-Einstellungen:

  1. Ollama starten: ollama serve
  2. In Cursor Settings > Models > OpenAI API Base: http://localhost:11434/v1
  3. Modellname hinzufügen: qwen3-coder
  4. Für Autocomplete nutzen; Cloud-Modelle für komplexe Agent-Aufgaben behalten

Continue.dev

Continue.dev hat erstklassige Ollama-Unterstützung:

// ~/.continue/config.json
{
  "models": [
    {
      "title": "Qwen3-Coder (Local)",
      "provider": "ollama",
      "model": "qwen3-coder"
    }
  ],
  "tabAutocompleteModel": {
    "title": "Qwen3-Coder 8B",
    "provider": "ollama",
    "model": "qwen3-coder:8b"
  }
}

Cline

Cline unterstützt Ollama-Modelle als Backend. In den Extension-Einstellungen mit dem Ollama-API-Endpoint konfigurieren. Funktioniert gut für kleinere Aufgaben; für komplexe Multi-File-Edits übertreffen Cloud-Modelle (Claude) weiterhin.

Performance-Tuning

Speicherverwaltung

# Verfügbaren Speicher prüfen
sysctl hw.memsize

# Während der Inferenz überwachen
# Activity Monitor > Memory Tab > Memory Pressure (sollte grün bleiben)

# Für Ollama: steuern, wie viele Modelle geladen bleiben
export OLLAMA_MAX_LOADED_MODELS=2
export OLLAMA_NUM_PARALLEL=4

Kontextlänge vs. Geschwindigkeit

Längere Kontextfenster verbrauchen mehr Speicher und verlangsamen die Inferenz. Für lokale Modelle:

  • 4K Kontext: Schnell, gut für Autocomplete und kurze Abfragen
  • 8K Kontext: Standard, gute Balance für die meisten Aufgaben
  • 16K-32K Kontext: Langsam auf lokaler Hardware, nur bei Bedarf für längere Dokumente
  • 128K+ Kontext: Lokal unpraktisch, außer auf Maschinen mit sehr viel Speicher. Cloud-Modelle nutzen.

Batch-Verarbeitung

Für Aufgaben wie die Verarbeitung mehrerer Dateien oder Dokumentationsgenerierung über eine Codebase hinweg, Anfragen gebündelt an die lokale API senden statt einzeln:

import mlx_lm

# Modell einmal laden, viele Inferenzen ausführen
model, tokenizer = mlx_lm.load("mlx-community/Qwen3-Coder-14B-4bit")

for file_content in files:
    result = mlx_lm.generate(
        model, tokenizer,
        prompt=f"Add docstrings to this code:\n{file_content}",
        max_tokens=2048
    )

Wann lokal besser ist als Cloud

AnwendungsfallLokalCloudGewinner
Code-AutocompleteSchnell, kostenlos, privatLeichte Latenz, Per-Token-KostenLokal
Schnelle Code-ErklärungenSofort, offlineBessere QualitätLokal
Komplexes Multi-File-RefactoringBegrenzt durch ModellgrößeFrontier-Modelle glänzenCloud
Sensiblen Code verarbeitenKeine Daten verlassen den RechnerDaten an Anbieter gesendetLokal
Offline-Entwicklung (Reise, Flugzeug)Immer verfügbarBraucht InternetLokal
Hochvolumige Batch-VerarbeitungKostenlos nach Hardware$$$$ im großen MaßstabLokal
Neuartige ArchitekturentscheidungenSchwächeres ReasoningFrontier-ReasoningCloud
Long-Context-Analyse (>32K Tokens)Sehr langsam, speicherhungrigNativ unterstütztCloud

Der hybride Ansatz

Das beste Setup nutzt beides. Mein Routing:

  • Lokal (Qwen3-Coder via Ollama/MLX): Autocomplete, schnelle Fragen, Code-Erklärungen, einfaches Refactoring, Dokumentationsgenerierung, Offline-Arbeit, sensibler Code
  • Cloud (Claude Opus via Claude Code): Komplexe Feature-Implementierung, Architekturentscheidungen, Multi-File-Refactors, alles was tiefes Reasoning oder langen Kontext erfordert
  • Cloud (Claude Sonnet via Cursor): Aufgaben mittlerer Komplexität, Code Review, UI-Komponenten-Implementierung

Die Kosteneinsparungen sind real. Ich schätze, lokale Inferenz bearbeitet 60-70 % meiner täglichen KI-Abfragen nach Volumen, und die würden 50-100 $/Monat an API-Gebühren kosten. Der Mac Studio hat sich innerhalb des ersten Jahres allein durch eingesparte API-Kosten amortisiert — und das ohne die Datenschutz- und Verfügbarkeitsvorteile einzurechnen.

Einstieg

Wer neu bei lokalen LLMs ist, hier der schnellste Weg:

  1. Ollama installieren: brew install ollama
  2. Ein Modell laden: ollama pull qwen3-coder (oder ollama pull deepseek-r1:14b für Reasoning)
  3. Ausprobieren: ollama run qwen3-coder
  4. Integrieren: Die IDE (Cursor, Continue.dev) auf http://localhost:11434/v1 zeigen
  5. Experimentieren: Verschiedene Modelle und Größen für die eigenen Anwendungsfälle testen

Gesamtzeit bis zur ersten lokalen Inferenz: etwa 5 Minuten plus Modell-Downloadzeit. Es gab nie eine niedrigere Einstiegshürde, um leistungsfähige KI lokal zu betreiben.

local-llm qwen3 deepseek mlx ollama apple-silicon privacy developer-tools