llama.cpp na MacOS

Kompletní průvodce instalací a konfigurací včetně benchmarkingu modelů s llama-bench

Proč používat llama.cpp?

Llama.cpp je výkonná implementace LLaMA modelů v čistém C/C++, optimalizovaná pro běh na běžném hardwaru včetně Apple Silicon.

Optimalizace pro Apple Silicon

Plná podpora Metal Performance Shaders pro maximální výkon na M1/M2/M3 čipech bez nutnosti externí grafiky.

Nízké nároky na paměť

Kvantizace modelů (4-bit, 5-bit, 8-bit) umožňuje běh velkých modelů i na zařízeních s omezenou RAM.

Bez závislostí na Pythonu

Samostatný nástroj v C/C++, rychlejší start, menší footprint a jednodušší deployment.

Široká podpora formátů

GGUF formát, LLaMA, LLaMA 2, Mistral, Mixtral, Phi a mnoho dalších modelů z Hugging Face.

CLI a Server režim

Použitelné jako příkazový nástroj nebo HTTP server s OpenAI-kompatibilním API.

Vestavěný benchmarking

llama-bench pro přesné měření výkonu modelů a porovnání rychlosti inference.

Instalace llama.cpp

Následujte tento krok za krokem průvodce pro instalaci na MacOS.

1 Prerekvizity

Ujistěte se, že máte nainstalované:

  • Xcode Command Line Tools - Základní vývojové nástroje
  • Homebrew - Package manager pro MacOS
  • Git - Pro klonování repozitáře
# Instalace Xcode Command Line Tools
xcode-select --install

# Instalace Homebrew (pokud ještě nemáte)
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

# Ověření Git
git --version

2 Klonování a kompilace

Stáhněte zdrojový kód a zkompilujte s podporou Metal:

# Klonování repozitáře
git clone https://github.com/ggerganov/llama.cpp.git

# Přesun do adresáře
cd llama.cpp

# Kompilace s Metal (Apple Silicon)
make LLAMA_METAL=1

# Nebo použijte CMake pro pokročilejší konfiguraci
cmake -B build -DLLAMA_METAL=ON
cmake --build build --config Release

💡 Tip: Kompilace může trvat několik minut. Na Apple Silicon je podpora Metal kritická pro maximální výkon.

3 Stažení modelů

Modely ve formátu GGUF můžete stáhnout z několika zdrojů:

1. Z LM Studio (doporučeno)

LM Studio automaticky stahuje a spravuje GGUF modely:

  • • Otevřete LM Studio
  • • V sekci "Discover" najděte požadovaný model
  • • Stáhněte vámi preferovanou kvantizaci (např. Q4_K_M)
  • • Modely jsou uloženy v: ~/.cache/lm-studio/models

2. Z Hugging Face

# Stažení modelu pomocí huggingface-cli
huggingface-cli download TheBloke/Llama-2-7B-GGUF

4 Základní použití

Spuštění modelu v interaktivním režimu:

# Spuštění modelu
./llama-cli -m models/llama-2-7b.Q4_K_M.gguf -p "Ahoj, jak se máš?" -n 128

# Interaktivní režim
./llama-cli -m models/llama-2-7b.Q4_K_M.gguf -i

# Server režim (OpenAI API kompatibilní)
./llama-server -m models/llama-2-7b.Q4_K_M.gguf --host 0.0.0.0 --port 8080

llama-bench - Benchmarking modelů

Porovnejte výkon různých modelů a kvantizací na vašem hardwaru. Ideální pro testování modelů z LM Studio.

Proč používat llama-bench?

Přesné měření výkonu

Změřte rychlost inference (tokens/s), latenci a využití paměti pro různé modely a konfigurace.

Porovnání kvantizací

Zjistěte, která kvantizace (Q4, Q5, Q8) nabízí nejlepší poměr rychlost/kvalita pro váš hardware.

Testování LM Studio modelů

Snadno otestujte všechny modely stažené přes LM Studio bez nutnosti je znovu stahovat.

Optimalizace nastavení

Najděte optimální batch size, thread count a další parametry pro maximální výkon.

Základní benchmarking

# Základní benchmark jednoho modelu
./llama-bench -m models/llama-2-7b.Q4_K_M.gguf

# Benchmark s vlastními parametry
./llama-bench -m models/llama-2-7b.Q4_K_M.gguf -p 512 -n 128

# Výstup:
model: llama-2-7b.Q4_K_M.gguf
size: 3.83 GiB
pp 512: 145.32 ± 2.15 tokens/s
tg 128: 32.47 ± 0.89 tokens/s

-p (prompt): Počet tokenů v prompt pro test zpracování

-n (n_gen): Počet tokenů k vygenerování

pp (prompt processing): Rychlost zpracování prompt

tg (text generation): Rychlost generování textu

Dávkový benchmark více modelů

Porovnejte všechny modely z LM Studio najednou:

# Benchmark všech modelů v adresáři LM Studio
./llama-bench -m ~/.cache/lm-studio/models/*/*.gguf -o benchmark-results.csv

# Benchmark specifických kvantizací
./llama-bench -m models/llama-2-7b.Q*.gguf

# Různé batch sizes
./llama-bench -m models/model.gguf -b 512,1024,2048

Pokročilé možnosti

# Test s různým počtem vláken
./llama-bench -m models/model.gguf -t 4,8,12

# GPU layers (pro Metal)
./llama-bench -m models/model.gguf -ngl 32

# Export do markdown
./llama-bench -m models/*.gguf -o results.md

# Detailní statistiky
./llama-bench -m models/model.gguf -v

💡 Tipy pro benchmarking

Příprava systému

  • • Zavřete ostatní náročné aplikace
  • • Zapojte MacBook do napájení
  • • Počkejte na ochlazení po předchozí zátěži
  • • Vypněte režim úspory energie

Interpretace výsledků

  • • Vyšší tokens/s = rychlejší inference
  • • Q4 kvantizace: nejrychlejší, nižší kvalita
  • • Q8 kvantizace: pomalejší, vyšší kvalita
  • • Sledujte využití paměti a teplotu

Optimalizace výkonu

  • • Použijte Metal (-ngl) pro Apple Silicon
  • • Experimentujte s počtem vláken (-t)
  • • Vyzkoušejte různé batch sizes (-b)
  • • Sledujte memory bandwidth

Automatizace testů

  • • Vytvořte shell script pro opakované testy
  • • Exportujte výsledky do CSV/MD
  • • Porovnejte různé verze llama.cpp
  • • Sledujte změny po aktualizacích