Inference: keď AI model skutočne „odpovedá"
Inference je fáza, keď už je AI model natrénovaný a ty ho reálne používaš: pošleš prompt a model začne generovať odpoveď token po tokene. Je to „prevádzka" modelu v praxi — a práve tu sa láme rýchlosť, cena aj používateľský zážitok.
1. Čo to je (definícia + analógia)
Definícia: Inference je proces výpočtu výstupu modelu z tvojho vstupu (promptu). Pri veľkých jazykových modeloch to znamená generovanie textu po malých krokoch (tokenoch) pomocou natrénovaných váh siete.
Analógia: Predstav si natrénovaný model ako kuchára, ktorý sa už naučil variť. Inference je samotné varenie počas večernej špičky: objednávky prichádzajú, kuchyňa musí stíhať, a ty chceš jedlo rýchlo, konzistentne a za rozumné náklady.
Prečo sa to rieši: Pri moderných modeloch často nie je problém „či model vie", ale ako rýchlo a za koľko ti to vie doručiť — pri jednom používateľovi aj pri tisícoch naraz. V roku 2026 je inference optimalizácia samostatná disciplína: celé startupy existujú len preto, aby „ten istý model" bežal 3× lacnejšie a 5× rýchlejšie.
Tréning vs. inference: Tréning prebehne raz (alebo zriedka), inference beží nepretržite. Náklady na inference v produktoch dlhodobo prevyšujú náklady na tréning — preto sa optimalizácia oplatí aj pri malých projektoch.
2. Ako to funguje (krok za krokom)
Tokenizácia: Tvoj text sa rozseká na tokeny (kusy slov/znakov). Jedno anglické slovo ≈ 1–2 tokeny; slovenčina so diakritikou môže byť mierne „drahšia" na tokeny než angličtina.
Prefill (spracovanie vstupu): Model „prečíta" celý prompt naraz a vybuduje si interný stav — najmä tzv. KV cache (kľúče a hodnoty pre attention mechanizmus). Toto je paralelizovateľné, takže GPU sa tu vyťaží efektívne.
Decode loop (generovanie): Potom model opakovane:
- vypočíta pravdepodobnosti ďalšieho tokenu,
- vyberie jeden token podľa zvolenej stratégie (greedy, sampling, beam search),
- pridá ho k výstupu a pokračuje.
Tento krok je inherentne sériový — každý token závisí od predchádzajúceho. Práve tu vzniká veľká časť latencie.
Detokenizácia: Tokeny sa zložia späť na čitateľný text.
Streaming: Odpoveď môže prichádzať postupne (vidíš text „ako píše"), aj keď model vo vnútri ide striktne token po tokene. Streaming nezrýchli celkový čas, ale dramaticky zlepší subjektívny pocit rýchlosti.
Kde ľudia často nesprávne tušia, čo je „ťažké":
- Dlhý prompt zaťažuje hlavne prefill (model musí naraz spracovať veľa tokenov).
- Dlhá odpoveď zaťažuje hlavne decode (veľa opakovaných krokov generovania).
- Rýchlosť nie je len o „silnej GPU", ale aj o tom, ako dobre vieš batchovať požiadavky, udržiavať cache a minimalizovať zbytočné výpočty.
3. Moderné techniky optimalizácie inference
Inference optimalizácia sa od roku 2024 posunula výrazne vpred. Toto sú techniky, s ktorými sa v praxi stretneš najčastejšie:
Continuous batching (najdôležitejší posun v efektivite)
Klasický statický batching čaká, kým všetky požiadavky v dávke skončia — pritom dlhé odpovede blokujú ostatných. Continuous batching (vstream/iteration-level batching) púšťa novú požiadavku do skupiny hneď, ako niektorá skončí. Výsledok: GPU je obsadená oveľa rovnomernejšie, throughput sa môže zlepšiť 2–10×.
Speculative decoding
Malý pomocný model (tzv. „drafter") navrhne niekoľko tokenov dopredu, veľký model ich overí v jednom kroku. Ak súhlasia, všetky sa akceptujú naraz. Výsledok: rýchlosť decode loopу sa môže zvýšiť 2–3× bez straty kvality. Funguje najlepšie tam, kde sú výstupy relatívne predvídateľné (kód, formátované dáta).
Prefill-decode disaggregácia
V roku 2025–2026 sa ustálil nový prístup: prefill a decode fázy bežia na separátnych serveroch. Prefill server zvládne náraz dlhého promptu, decode server sa špecializuje na sériovú produkciu tokenov. Systémy ako Mooncake alebo Loogle tento pattern nasadili vo veľkom a ukázali dramatické zlepšenie pre zmiešaný traffic.
Mixture-of-Experts (MoE) inference
Modely ako GPT-4o, Mixtral či Qwen-MoE aktivujú pri každom tokene len podmnožinu váh (experty). Inference je tak výpočtovo lacnejšia — model má nominálne veľa parametrov, ale počíta len časť z nich. Za to zaplatíš vyšším nárokom na pamäť (celá sieť musí byť v RAM/VRAM) a komunikáciou medzi GPU pri distribuovanom nasadení.
Kvantizácia
Zmenšenie numerickej presnosti váh (FP16 → INT8 → INT4) zníži pamäťové nároky aj výpočtový čas. Kvantitatívny dopad na kvalitu závisí od modelu a metódy — GPTQ, AWQ a GGUF sú dnes štandardné formáty. Agresívna kvantizácia (pod INT4) môže znateľne zhoršiť odpovede na zložitých úlohách.
Flash Attention a PagedAttention
FlashAttention optimalizuje výpočet attention tak, aby sa zmestil do cache GPU čo najefektívnejšie — bez zbytočného kopírovania dát. PagedAttention (zavedené v vLLM) spravuje KV cache podobne ako virtuálna pamäť v OS: alokuje iba čo skutočne treba, čo umožňuje obsluhovať oveľa viac paralelných požiadaviek bez OOM chýb.
| Technika | Čo rieši | Typické zlepšenie | Nevýhoda |
|---|---|---|---|
| Continuous batching | slabé využitie GPU pri rôznych dĺžkach | 2–10× throughput | komplexnejší scheduler |
| Speculative decoding | pomalosť decode loopу | 2–3× rýchlosť | treba pomocný model |
| Kvantizácia INT8/INT4 | pamäťové nároky, rýchlosť | 1.5–4× menej VRAM | mierne horšia kvalita |
| Prompt caching | opakovaný prefill systémového promptu | až 80% menej výpočtu | cache invalidácia |
| Prefill-decode disagg. | latencia pri dlhých promptoch | dramaticky nižší TTFT | potrebuješ viac serverov |
| Flash/Paged Attention | efektivita pamäte pri dlhom kontexte | väčší batch na rovnakom HW | nutná kompatibilita |
4. Kľúčové metriky: ako merať kvalitu inference
Nestačí vedieť, že inference „funguje" — treba vedieť, či funguje dobre. Tieto metriky sú štandard v každom serióznom nasadení:
TTFT (Time to First Token): Čas od odoslania požiadavky po prijatie prvého tokenu. Dominuje tu prefill. Kritické pre chat aplikácie — ak TTFT presiahne 2–3 sekundy, zážitok sa cíti ťažkopádne.
TPOT (Time Per Output Token): Priemerný čas na vygenerovanie jedného tokenu počas decode loopу. Určuje, ako rýchlo narastá text na obrazovke.
Throughput (tokeny/sekunda): Koľko tokenov celkovo systém vyprodukuje za sekundu pre všetkých používateľov dohromady. Kľúčové pre kapacitné plánovanie.
Cena na 1M tokenov: Štandardná metrika pri API poskytovateľoch. V roku 2026 sa ceny dramaticky líšia — lacní poskytovatelia (Groq, Cerebras, Together AI) ponúkajú rovnaké modely desaťkrát lacnejšie než prémioví, za cenu variabilnej latencie alebo dostupnosti.
P99 latencia: Najdôležitejšia metrika pre produkčné SLO. Priemerná latencia môže byť dobrá, ale ak 1 % požiadaviek trvá 30 sekúnd, používatelia to pocítia.
5. Prečo je to dôležité / kde sa to používa
Používateľský zážitok:
- Latencia (TTFT) rozhoduje, či to pôsobí svižne alebo ťažkopádne.
- Throughput (tokeny/sekunda) rozhoduje, ako rýchlo pribúda odpoveď a koľko používateľov obslúžiš naraz.
Náklady: Inference je to, za čo v praxi „horí" výpočtový čas. Aj keď tréning je drahý jednorazovo, v produktoch je dlhodobo drahšia práve prevádzka — inference môže tvoriť 80–95 % celkových AI nákladov.
Škálovanie: Ak máš 10 používateľov, funguje skoro všetko. Ak ich máš 10 000, rozdiel medzi „naivne nasadeným" a „optimalizovaným" inference stackom je priepastný — rádovo v nákladoch aj kvalite zážitku.
Kde sa s tým stretneš:
- Chatboty a asistenti (web/app/API) — hlavný use case
- RAG systémy — model odpovedá s podporou interných dokumentov
- Agentické systémy — model robí viac inferenčných krokov za sebou (tools, plánovanie)
- Vision/Audio modely — rozpoznávanie, popisy, prepisy
- On-device AI — časť inferencie beží priamo v mobile/PC (Apple Neural Engine, Qualcomm NPU, Intel NPU)
- Edge nasadenia — inference v sieti blízko používateľa pre minimálnu latenciu
6. Praktické použitie (čo to znamená pre teba)
Keď chceš rýchle odpovede:
- Skracuj prompt: odstraň balast, opakované inštrukcie, zbytočné logy.
- Žiadaj kratší výstup: „Daj mi 5 bodov" je lacnejšie než „rozpíš to detailne".
- Použi streaming: subjektívne to pôsobí rýchlejšie, aj keď celkový čas je podobný.
- Vyber správneho poskytovateľa: pre nízku latenciu Groq alebo Cerebras; pre najlepšiu kvalitu Anthropic/OpenAI; pre vlastné nasadenie vLLM alebo TGI.
Keď chceš stabilitu vo výsledkoch:
- Teplota a sampling: vyššia
temperaturea voľnejšie sampling nastavenia zvyšujú kreativitu, ale aj variabilitu. Pre produkčné systémy so štruktúrovanými výstupmi použitemperature=0alebo structured outputs. - Stop sekvencie / limit výstupu: jasne ukonči, kde má model prestať, aby negeneroval zbytočne.
Keď riešiš infra/prevádzku:
- Batching: spájanie viacerých požiadaviek do jedného výpočtu zvyšuje efektivitu, typicky dramaticky.
- Prompt caching: ak sa opakuje systémový prompt alebo dlhý kontext, cache (napr. Anthropic prompt caching) vie znížiť náklady o 60–80 % a zároveň znížiť TTFT.
- Kvantizácia: zmenšenie numerickej presnosti váh zníži pamäť a zrýchli inference — sleduj dopad na kvalitu pri tvojich konkrétnych úlohách.
- Výber modelu: najväčší model nie je vždy správna voľba. Rýchly, lacný model na jednoduché úlohy + silný model len pre komplexné prípady je efektívnejší pattern.
Orientačný prehľad — čo typicky zhoršuje latenciu a čo pomáha:
| Faktor | Čo sa stane | Čo zvyčajne pomáha |
|---|---|---|
| Dlhý prompt | pomalší prefill, veľa výpočtu naraz | skrátiť kontext, prompt caching, lepší RAG výber |
| Dlhý výstup | dlhý decode loop | limit výstupu, stručnejšie zadanie |
| Veľa používateľov naraz | rastie queue, kolíše rýchlosť | continuous batching, autoscaling, rate limit |
| Veľký model | vyššie nároky na VRAM/čas | kvantizácia, efektívnejší runtime, menší model na jednoduché úlohy |
| Agentické reťazce | latencia sa násobí počtom krokov | paralelizovať kde možno, caching, kratšie prompty |
| On-device nasadenie | obmedzená pamäť a výkon | agresívna kvantizácia, distillácia, MoE s malým počtom expertov |
7. Decode loop v kóde
Generovanie je doslova slučka „predikuj ďalší token, pridaj, opakuj":
tokens = tokenizer.encode(prompt)
for _ in range(max_new_tokens):
logits = model(tokens) # pravdepodobnosti ďalšieho tokenu
next_id = sample(logits[-1], temperature=0.7)
tokens.append(next_id)
if next_id == EOS: # stop sekvencia
break
print(tokenizer.decode(tokens))
Prvá iterácia (spracovanie celého promptu) = prefill; každá ďalšia = decode. KV cache zabráni prepočítavať celý prefix znova — bez nej by každý krok musel prechádzať celou históriou od začiatku.
Reálne inference frameworky (vLLM, TGI, llama.cpp) robia všetko toto za teba — plus continuous batching, PagedAttention, kvantizáciu a ďalšie optimalizácie. Kód vyššie je pedagogický základ, nie produkčný recept.
8. Súvislosti
- Kontextové okno: dlhý prompt zaťažuje prefill a pamäť (KV cache); dlhší kontext = vyššie nároky na VRAM aj latencia.
- FlashAttention: optimalizácia attention výpočtu, ktorá robí dlhý kontext ekonomicky reálnym.
- LLM: inference je „prevádzka" jazykového modelu — kde sa zhodnocuje všetko, čo tréning naučil.
- Guardrails: bezpečnostné kontroly bežia okolo inferencie (pred vstupom aj po výstupe), čo pridáva latenciu.
- RAG: retrieval-augmented generation — inference s dynamickým kontextom z externých zdrojov.
- Kvantizácia: technika znižovania pamäťových nárokov modelu pre efektívnejší beh.
9. Zhrnutie
Inference je „prevádzková" fáza AI: z promptu vzniká odpoveď token po tokene, a práve tu sa rieši rýchlosť, cena a škálovateľnosť.
Dve hlavné fázy — prefill (spracovanie vstupu) a decode loop (generovanie) — majú rôzne úzke hrdlá a vyžadujú rôzne optimalizácie.
Moderné techniky ako continuous batching, speculative decoding, prompt caching a prefill-decode disaggregácia posunuli efektivitu v roku 2025–2026 dramaticky vpred.
Kľúčové metriky sú TTFT, TPOT a throughput — bez ich sledovania nevieš, či optimalizuješ správne miesto.
Keď chceš lepší zážitok pre používateľa, často stačí menej „mágie" a viac disciplíny: kratší kontext, jasnejšie zadanie, kontrolovaný výstup, správna voľba modelu pre danú úlohu.