GGUF

01.05.2026 13:23

Definition

GGUF ist ein binäres Dateiformat zur Speicherung von Modellgewichten und Metadaten, das von llama.cpp entwickelt wurde und heute de-facto-Standard für das Laden großer Sprachmodelle auf Consumer-Hardware ist. Praktiker nutzen GGUF-Dateien, um Modelle wie Llama oder Mistral mit minimaler Latenz direkt auf CPU oder GPU auszuführen — ohne PyTorch, ohne CUDA, oft sogar auf Laptops.

Mechanik

GGUF speichert Gewichte in einem strukturierten Format mit Key-Value-Metadaten: Modellarchitektur, Tokenizer, Quantisierungsstufe und Layer-Information sind in der Datei selbst enthalten. Ein GGUF-File kann verschiedene Quantisierungs-Niveaus (Q4_K_M, Q5_K_S, Q6_K, F16) in einer Datei kombinieren, was schnelle Modell-Switching und Speicher-Handel ermöglicht. Der llama.cpp-Loader liest GGUF direkt in den RAM/VRAM, führt Inference in optimiertem C++ durch — ohne Python-Interpreter-Overhead — und unterstützt Batching sowie Multi-GPU.

Beispiel

# GGUF-Modell mit llama.cpp lokal laden und abfragen
curl -L https://huggingface.co/TheBloke/Mistral-7B-Instruct-v0.1-GGUF/resolve/main/Mistral-7B-Instruct-v0.1.Q4_K_M.gguf \
  -o mistral-7b.gguf

# Inference starten (llama.cpp Binary)
./llama-cli -m mistral-7b.gguf \
  -p "Erkläre Quantisierung in drei Sätzen:" \
  -n 150 --temp 0.7

Oder Python-Integration:



<div class="local-py-block"
     data-filename="gguf_inference.py"
     data-pip="llama-cpp-python"
     data-pre="">

  <div class="local-py-code">
    <pre><code class="language-python">from llama_cpp import Llama

# GGUF laden
llm = Llama(
    model_path=&quot;mistral-7b.gguf&quot;,
    n_gpu_layers=33,  # auf GPU offload
    n_ctx=2048
)

# Inference
response = llm(
    &quot;Erkläre Quantisierung kurz:&quot;,
    max_tokens=100,
    temperature=0.7
)
print(response[&#x27;choices&#x27;][0][&#x27;text&#x27;])</code></pre>
    <div class="local-py-actions">
      <span class="local-py-filename"><i class="fa-regular fa-file-code me-1"></i>gguf_inference.py</span>
      <button class="local-py-copy" type="button" title="In die Zwischenablage kopieren">
        <i class="fa-regular fa-copy me-1"></i>Kopieren
      </button>
      <button class="local-py-download" type="button" title="Als .py-Datei speichern">
        <i class="fa-solid fa-download me-1"></i>gguf_inference.py herunterladen
      </button>
    </div>
  </div>

  <details class="local-py-howto">
    <summary><i class="fa-solid fa-laptop-code me-1"></i>Lokal ausführen — Setup für deinen Rechner</summary>

    <div class="local-py-prereqs">
      <strong>Voraussetzungen:</strong>
      <ul>
        <li>Python 3.10 oder neuer installiert. Download:
          <a href="https://www.python.org/downloads/" target="_blank" rel="noopener noreferrer">python.org/downloads</a>.
          Beim Windows-Installer die Option <em>„Add Python to PATH"</em> aktivieren — sonst findet die Konsole `python` nicht.
        </li>
      </ul>
    </div>

    <div class="local-py-tabs" role="tablist">
      <button class="local-py-tab active" type="button" data-os="win" role="tab">
        <i class="fa-brands fa-windows me-1"></i>Windows
      </button>
      <button class="local-py-tab" type="button" data-os="unix" role="tab">
        <i class="fa-brands fa-apple me-1"></i>macOS / <i class="fa-brands fa-linux ms-1 me-1"></i>Linux
      </button>
    </div>

    <div class="local-py-tab-pane" data-os="win">
      <pre><code># 1) Konsole öffnen: Win+R drücken, "powershell" eintippen, Enter.
# 2) Prüfen, ob Python installiert ist:
py --version
# Falls "command not found" -> https://python.org/downloads

# 3) Projekt-Setup: venv + Abhängigkeiten
py -m venv .venv
.venv\Scripts\Activate.ps1
pip install llama-cpp-python

# 4) Code in gguf_inference.py speichern (Button oben oder Copy + Editor)
# Dann ausführen:
python gguf_inference.py</code></pre>
    </div>

    <div class="local-py-tab-pane" data-os="unix" hidden>
      <pre><code># 1) Terminal öffnen:
#    macOS:  Cmd+Leertaste -> "Terminal" eintippen -> Enter
#    Linux:  Strg+Alt+T (in den meisten Distros)
# 2) Prüfen, ob Python installiert ist:
python3 --version
# Falls fehlt:
#    macOS:   brew install python   (oder https://python.org/downloads)
#    Debian:  sudo apt install python3 python3-venv
#    Fedora:  sudo dnf install python3

# 3) Projekt-Setup: venv + Abhängigkeiten
python3 -m venv .venv
source .venv/bin/activate
pip install llama-cpp-python

# 4) Code in gguf_inference.py speichern (Button oben oder Copy + Editor)
# Dann ausführen:
python gguf_inference.py</code></pre>
    </div>
  </details>
</div>

<script>
(function () {
  function setup(root) {
    if (root.dataset.localPyInit) return;
    root.dataset.localPyInit = '1';

    var codeEl = root.querySelector('.local-py-code code');
    var filename = root.dataset.filename || 'snippet.py';

    var copyBtn = root.querySelector('.local-py-copy');
    if (copyBtn) {
      copyBtn.addEventListener('click', async function () {
        try {
          await navigator.clipboard.writeText(codeEl.textContent);
          var orig = copyBtn.innerHTML;
          copyBtn.innerHTML = '<i class="fa-solid fa-check me-1"></i>kopiert';
          setTimeout(function () { copyBtn.innerHTML = orig; }, 1500);
        } catch (err) {
          alert('Konnte nicht kopieren: ' + err);
        }
      });
    }

    var dlBtn = root.querySelector('.local-py-download');
    if (dlBtn) {
      dlBtn.addEventListener('click', function () {
        var blob = new Blob([codeEl.textContent], {type: 'text/x-python'});
        var url = URL.createObjectURL(blob);
        var a = document.createElement('a');
        a.href = url;
        a.download = filename;
        document.body.appendChild(a);
        a.click();
        document.body.removeChild(a);
        URL.revokeObjectURL(url);
      });
    }

    var tabs = root.querySelectorAll('.local-py-tab');
    var panes = root.querySelectorAll('.local-py-tab-pane');
    tabs.forEach(function (tab) {
      tab.addEventListener('click', function () {
        var os = tab.dataset.os;
        tabs.forEach(function (t) { t.classList.toggle('active', t === tab); });
        panes.forEach(function (p) { p.hidden = (p.dataset.os !== os); });
      });
    });
  }

  function init() {
    document.querySelectorAll('.local-py-block').forEach(setup);
  }

  if (document.readyState === 'loading') {
    document.addEventListener('DOMContentLoaded', init);
  } else {
    init();
  }
})();
</script>

Quellen