====== 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]]