llama.cpp Opener  Bild © Eigenellama.cpp Opener (Bild © Eigene)

Ursprünglich für die Meta LLaMA-Familie entwickelt, unterstützt llama.cpp jetzt ein breites Spektrum an Open-Weight-Modellen im GGUF-Format und ist mit Windows, macOS und Linux kompatibel. Dank der Unterstützung für Python-Bindings und HTTP-APIs ist es ein ideales Tool für Entwickler, Forscher und Hobbyprogrammierer, die eine private, lokale Kontrolle über große Sprachmodelle (LLMs) wünschen.

Plattformübergreifende Unterstützung mit hardwarespezifischen Binärdateien

Llama.cpp bietet eine Reihe von vorkompilierten Binärdateien, die auf bestimmte Hardware-Befehlssätze zugeschnitten sind. Dies gewährleistet maximale Effizienz auf verschiedenen Geräten:

Llama.cpp Git RepoLlama.cpp Git Repo (Bild © Eigene)

Windows:

Lade die richtige Binärdateien direkt von Github herunter.

  • Einfache C/C++-Implementierung ohne Abhängigkeiten
  • AVX-, AVX2-, AVX512- und AMX-Unterstützung für x86-Architekturen
  • 1,5-Bit-, 2-Bit-, 3-Bit-, 4-Bit-, 5-Bit-, 6-Bit- und 8-Bit-Ganzzahlquantisierung für schnellere Inferenz und reduzierten Speicherverbrauch
  • Benutzerdefinierte CUDA-Kernel für die Ausführung von LLMs auf NVIDIA-GPUs (Unterstützung für AMD-GPUs über HIP und Moore Threads-GPUs über MUSA)
  • Unterstützung für Vulkan- und SYCL-Backends
  • Hybrid-Inferenz mit CPU und GPU zur teilweisen Beschleunigung von Modellen, die größer sind als die gesamte VRAM-Kapazität

Linux/macOS:

  • Binärdateien für Ubuntu (x64), macOS (x64) und Apple Silicon (ARM64).
  • Apple Silicon ist ein First-Class-Citizen – optimiert über ARM NEON, Accelerate und Metal Frameworks

Einfache Installation über ein Shell-Skript:

curl -fsSL https://ollama.com/install.sh | sh

Nach dem Extrahieren der Binärdateien musst du die Systemvariablen PATH aktualisieren, um die globale Verwendung der Befehlszeile zu aktivieren.

Unterstützte Modellformate: GGUF, GGML, Hugging Face und LoRA

GGUF (Generalized GGML Unified Format)

Der aktuelle Standard für lokale Inferenz in llama.cpp. GGUF-Modelle sind für schnelle Ausführung und minimalen Speicherverbrauch optimiert. Diese Dateien enthalten Metadaten, Tokenizer und quantisierte Gewichte in einem einzigen Paket.

GGML

Ein älteres, mittlerweile veraltetes Format, das aus Gründen der Abwärtskompatibilität weiterhin unterstützt wird. GGUF wird aufgrund seiner überlegenen Effizienz empfohlen.

Hugging Face-Konvertierung

Die meisten auf Hugging Face gehosteten vortrainierten Modelle verwenden PyTorch-basierte .bin- oder .safetensors-Formate. Diese können mit dem Skript convert_hf_to_gguf.py aus dem GitHub-Repository von llama.cpp in GGUF konvertiert werden. Je nach Plattform und Version, kann es hier zu Problemen kommen. Das Projekt entwickelt sich schnell weiter und manche Conversion-Tools sind deprecated.

LoRA (Low-Rank Adaptation)

Um LoRA-fein abgestimmte Modelle zu verwenden, musst du zuerst die LoRA-Adaptergewichte mit einem Basismodell zusammenführen und dann das Ergebnis mit convert_lora_to_gguf.pyin GGUF konvertieren.

Erste Schritte: Herunterladen und Ausführen eines GGUF-Modells

Ausführen:

llama-cli:llama-cli -m models/mistral-7b-instruct-v0.2.Q4_K_M.gguf -p „Wie weit ist die Sonne von der Erde entfernt?“

Llama.cpp unterstützt umfangreiche Flags zur Steuerung der Prompt-Verarbeitung, der Speichernutzung, der Sampling-Parameter (z. B. top-k, top-p) und der Kontextfenstergröße.

Python-Integration mit llama-cpp-python

Entwickler können llama.cpp über das Paket llama-cpp-pythonin ihre Python-Projekte einbinden:

pip install llama-cpp-python

Beispiel für die Verwendung als Python-Code:

from llama_cpp import Llama

llm = Llama(
      model_path="./models/7B/llama-model.gguf",
      # n_gpu_layers=-1, # Uncomment to use GPU acceleration
      # seed=1337, # Uncomment to set a specific seed
      # n_ctx=2048, # Uncomment to increase the context window
)
output = llm(
      "Q: Name the planets in the solar system? A: ", # Prompt
      max_tokens=32, # Generate up to 32 tokens, set to None to generate up to the end of the context window
      stop=["Q:", "\n"], # Stop generating just before the model would generate a new question
      echo=True # Echo the prompt back in the output
) # Generate a completion, can also call create_completion
print(output)

Anwendungsfälle und Vorteile

  • Entwickler: LLMs können nahtlos in lokale Apps, Skripte oder Server-Backends eingebettet werden.
  • Forscher: Volle Kontrolle über die Ausführung des Modells für die Bewertung, das Benchmarking und die Optimierung.
  • Datenschutzbewusste Nutzer: Alle Schlussfolgerungen werden lokal getroffen; keine Daten verlassen das Gerät.
  • Umgebungen mit geringer Bandbreite: Offline-Inferenz ohne Abhängigkeit von Cloud-APIs.

Llama.cpp ermöglicht einen breiten Zugang zu LLMs mit einer leistungsstarken, effizienten Laufzeitumgebung, die sich leicht erweitern, integrieren und auf einer Vielzahl von Systemen einsetzen lässt.