====== Lokální LLM na GPU: grafické karty, llama.cpp a agentic coding ======
//Vytvořeno: **3.5.2026** | Aktualizováno: **~~LASTMOD~~**//
Zápisek z videa [[https://www.youtube.com/watch?v=atDqnXmOJT8|Srigi – Agentic coding (vibing) na grafickej karte]] o tom, jak vybrat GPU pro lokální provoz LLM, jak nainstalovat llama.cpp na Windows a jak s lokálním modelem pracovat při agentic codingu.
{{youtube>atDqnXmOJT8?}}
===== GPU přehled a klíčový parametr: datová propustnost =====
Při výběru hardwaru pro lokální AI modely není nejdůležitější čistý výpočetní výkon GPU, ale **datová propustnost paměti (memory bandwidth)** a její kapacita. Propustnost přímo určuje rychlost generování tokenů při inferenci.
Minimum pro smysluplnou práci s pokročilými programovacími agenty je **24 GB VRAM** – karty s 12 nebo 16 GB nestačí kvůli malému kontextovému oknu. Pro modely velikosti 14B–32B parametrů se 24 GB pohybuje na hranici využitelnosti.
^ GPU / Zařízení ^ VRAM ^ Propustnost ^ Poznámka ^
| **RTX 5090** | 32 GB | ~2 TB/s | Extrémně rychlá, ideální pro AI, aktuálně předražená |
| **RTX 4090** | 24 GB | ~1 TB/s | Doporučený standard pro lokální běh 32B modelů |
| **RTX 5080** | 16 GB | Vyšší než 4090 | Omezená kapacitou – nevejde se 32B model |
| **RTX 6000 Ada** | 48 GB | Nižší než 4090 | Větší modely, ale pomalejší inference |
| **MacBook Air/Pro** | Různá | Velmi nízká | Apple Silicon zaostává v propustnosti za dedikovanými GPU |
| **Mac Studio** | Až 128+ GB | ~1 TB/s | Dosahuje rychlosti RTX 4090, ale za výrazně vyšší cenu (okolo 10 000 $) |
{{.:pasted:20260504-044513.png}}
{{.:pasted:20260504-044541.png}}
==== Rychlost generování tokenů ====
RTX 4090 dosahuje při spuštění **32B modelu** (Qwen 2.5 Coder, kvantizace Q4_K_M, ctx 19 000) rychlosti **47 tokenů za sekundu**. Karta přitom během generování odebírá přibližně **400 W** – to je hlavní důvod, proč je undervolting při takovéto zátěži důležitý.
Orientační hranice použitelnosti pro agentic coding:
* **40+ tokenů/s** – pohodlná práce, plynulý vibing
* **~20 tokenů/s** – prakticky nepoužitelné, odezva je příliš pomalá
===== Konkrétní zařízení =====
Kromě desktopových GPU jsou k dispozici i specializovaná zařízení:
* **[[ai:hardware:nvidia-dgx-spark|NVIDIA DGX Spark]]** – Kompaktní krabička se 128 GB sjednocené paměti. Nevýhodou je výrazně nižší propustnost paměti (273 GB/s) oproti desktopovým GPU (~1 TB/s), což vede k pomalejší odezvě při inferenci.
* **Externí GPU (eGPU)** – Možné řešení pro notebooky, ale limituje ho rychlost sběrnice.
* **Doporučený setup:** Herní PC s RTX 4090 připojené k síti jako server, ke kterému se přistupuje z notebooku.
===== Instalace llama.cpp na Windows =====
Autor důrazně varuje před používáním [[https://ollama.com/|Ollama]] (označuje ho za proprietární obálku) a doporučuje přímé použití **[[https://github.com/ggerganov/llama.cpp|llama.cpp]]** – čistý C++ runtime bez závislosti na Pythonu, který umožňuje přímé ladění a plné využití výkonu GPU.
==== Krok za krokem ====
**1. Ovladače NVIDIA**\\
Stačí standardní herní ovladače – není potřeba speciální Studio nebo Enterprise edice.
**2. Undervolting přes MSI Afterburner**\\
LLM při generování odebírá stovky wattů, proto je vhodné kartu chránit před dlouhodobou zátěží:
* Otevřít **Voltage Frequency Curve Editor** zkratkou ''Ctrl+F''
* Snížit napětí (např. z 1050 mV na 975 mV) a mírně upravit takt jádra a paměti
* Cíl: snížit spotřebu o 50–100 W a teplotu bez ztráty výkonu
**3. Stažení llama.cpp**\\
Z [[https://github.com/ggerganov/llama.cpp/releases|GitHub releases]] stáhnout binárky pro CUDA 12. Release obsahuje 3 specifické DLL soubory (CUDA knihovny) – jsou součástí archivu.
> **⚠ Pozor:** Windows Defender může tyto DLL smazat jako falešný poplach (podobnost s krypto-malwarem). Je nutné dočasně vypnout ochranu nebo nastavit výjimku pro složku.
**4. Spuštění serveru**\\
Použít soubor ''llama-server.exe'':
llama-server.exe --model [cesta_k_modelu] --n-gpu-layers 99 --ctx-size 19000 --host 0.0.0.0 --port 8080
Parametr ''%%--n-gpu-layers 99%%'' zajistí načtení celého modelu do VRAM. ''%%--ctx-size%%'' nastavuje délku kontextového okna v tokenech – pro 32B model na 24GB kartě je bezpečný limit **19 000** (viz sekce o výběru modelu).
===== Výběr modelu: doporučení a kvantizace =====
Výběr správného modelu je nejkritičtější a zároveň nejobtížnější krok – autor ho označuje za „hotovou alchymii". Ne každý model je vhodný pro kódování. Záleží na tom, zda je model finetuningovaný na programování a zda má správný chat template s podporou nástrojů.
==== Kategorie modelů ====
Autor rozlišuje tři typy modelů podle způsobu uvažování:
^ Kategorie ^ Charakteristika ^ Kdy použít ^
| **Dumb (Hloupý)** | Styl GPT-3.5, žádná fáze přemýšlení, rovnou generuje výstup | Jednoduché dotazy bez potřeby hlubší logiky |
| **Thinking (Přemýšlející)** | Explicitní fáze přemýšlení, sledovatelná v průběhu generování, uvažuje o edge cases | Komplexní refaktoring, složité logické problémy |
| **Reasoning (Uvažující)** | Zlatá střední cesta – model uvažuje inline, bez dlouhé oddělené fáze | Běžný agentic coding; rychlejší než Thinking, kvalitnější než Dumb |
Pro agentic coding v IDE (Cursor, Roo Code) je nejlepší typ **Reasoning** – dává dobré výsledky a nebrzdí práci nadměrným přemýšlením. Thinking modely rychle vyčerpávají kontext, což je problém.
==== Co dělá model schopným kódovat ====
Ne každý model LLM umí pracovat s editorem kódu. Rozdíl spočívá ve dvou věcech:
* **Chat Template** – sada speciálních značek (např. '''', '''', ''''), na které je model natrénovaný. Runtime (llama.cpp) tyto značky využívá k řízení konverzace.
* **Tool Support** – modely pro kódování mají složitější chat template s pojmy jako ''tool_call'' a ''tool_response''. Díky tomu model rozumí, že má číst soubory, vytvářet komponenty, pracovat s výstupy příkazů.
Modely bez tool support nepochopí instrukce z editoru a nelze je pro agentic coding použít.
==== Původ modelů (Lineage) ====
Modely mají hierarchii: **Base model** (např. Qwen 2.5) → **Coder** (fine-tuning na programování) → **Instruct** (schopnost následovat instrukce). Existují i **Merge modely** – spojení několika sítí specializovaných na různé oblasti (SQL, TypeScript, obecné kódování).
==== Konkrétní doporučené modely ====
=== Qwen 2.5 Coder Instruct (32B) ===
Špičkový model pro kódování od Alibaby, finetuningovaný na programování a tool calling.
* RTX 4090: **47 tokenů/s** při ctx 19 000 a kvantizaci Q4_K_M
* Na 24GB kartě se vejde „na těsno" – bezpečný kontext max. **19 000 tokenů**
* V SafeTensors formátu má 32B model ~70 GB (14 souborů × 5 GB) – na 24GB kartu se bez kvantizace nevejde
=== DeepSeek Coder (14B) ===
Jeden z mála 14B modelů, který skutečně „thinkuje" – přemýšlí o problému před generováním kódu.
* Vejde se do VRAM s velkou rezervou → lze nastavit větší kontext
* Nevýhoda: jako Thinking model rychle vyčerpává kontext budget při složitějších úlohách
=== JosefFeed (14B) ===
Aktuálně velmi úspěšný model pro programování. Klíčová výhoda: umožňuje nastavit kontext až **50 000 tokenů**, což je zásadní pro pochopení celých větších souborů.
=== O1 (Merge) ===
Velmi schopný model vzniklý sloučením specializovaných sítí. Těžko dohledatelný pod názvem „coder" – vyžaduje znalost komunity a konkrétního repozitáře.
==== Kvantizace a výběr souboru na Hugging Face ====
Modely ve formátu GGUF jsou k dispozici v repozitáři [[https://huggingface.co/mradermacher|mradermacher]] na Hugging Face, který automatizovaně kvantizuje tisíce modelů.
**Jak číst název souboru:**
* **I1** – označení pro i-matrix kvantizaci. Vždy hledejte tuto variantu – zachovává vyšší přesnost u důležitých vah (podobné variabilnímu bitrate u videa).
* **Q4_K_M** – doporučená volba: 4-bitová kvantizace, snižuje velikost modelu ~8× oproti Float32 při ztrátě přesnosti jen 1–2 %.
* **IQ4_XS** – pozor: autor má s touto variantou zkušenost s halucinacemi. Preferovat Q4_K_M.
* Označení velikosti: **XS, S, M, L** – analogie k oděvním velikostem. M je zpravidla dobrý výchozí bod.
===== Agentic coding v praxi =====
Agentic coding znamená, že LLM nepíše jen útržky kódu, ale aktivně pracuje s celými soubory jako agent – čte je, upravuje a spouští příkazy.
==== Setup ====
* **Nástroj:** VS Code extension **Roo Code** – v nastavení zvolit „OpenAI Compatible" a zadat IP adresu a port lokálního ''llama-server''.
* **Kontextové okno:** Kritický parametr. Pro RTX 4090 a 32B model je bezpečné nastavení **19 000 tokenů** – při 25 000 dochází k přetečení VRAM a hardware akcelerace se vypíná.
==== Přetečení kontextu ====
Pokud kontext přeteče kapacitu VRAM, model začne halucinovat – například generuje nekonečné řady ''div'' tagů nebo jen opakující se tečky. Příznaky přetečení jsou stejné jako u příliš nízké kvantizace, proto je důležité nejdřív ověřit nastavení kontextu. Řešení:
- Okamžitě ukončit generování
- Snížit hodnotu ''%%--ctx-size%%'' na 19 000 (pro 32B model na 24 GB VRAM) a restartovat server
- Ponechat ~500 MB VRAM volné jako rezervu
- Případně přejít na menší model (14B), který dává více prostoru pro kontext
==== Promptování ====
Lepší výsledky přináší připravit modelu plán před samotnou úlohou místo jednoho složitého promptu. Příklad: „Nejdříve vyextrahuj kód do nového souboru, pak ho importuj, až pak smaž původní soubor."
===== Akční body =====
- **Zkontrolovat VRAM** stávající grafické karty (minimum 14 GB pro první pokusy, 24 GB pro praxi)
- **Nastavit MSI Afterburner** – undervolting pro ochranu karty při dlouhodobé 100% zátěži (~400 W)
- **Stáhnout llama-server** – aktuální release llama.cpp z GitHubu (verze pro CUDA 12)
- **Otestovat Qwen 2.5 Coder** (32B) ve verzi I1 Q4_K_M z repozitáře mradermacher na Hugging Face; nastavit ctx-size 19 000
- **Propojit s IDE** – nainstalovat Roo Code do VS Code a nakonfigurovat lokální endpoint
===== Zdroje =====
* [[https://www.youtube.com/watch?v=atDqnXmOJT8|Srigi – Agentic coding (vibing) na grafickej karte (YouTube)]]
* [[https://github.com/ggerganov/llama.cpp|llama.cpp – GitHub]]
* [[https://github.com/ggerganov/llama.cpp/releases|llama.cpp – Releases (binárky pro Windows/CUDA)]]
* [[https://huggingface.co/mradermacher|mradermacher – Hugging Face (GGUF kvantizace)]]
* [[https://ollama.com/|Ollama]]
* [[ai:hardware:nvidia-dgx-spark|NVIDIA DGX Spark – zápisek na této wiki]]