Takémodel inference, AI inference, inferenční běhPokročilý
Definice
Inference je fáze, kdy se už natrénovaný model, pravidlový systém nebo jiný mechanismus rozhodování použije na nová vstupní data a vrátí výsledek. Ve strojovém učení jde typicky o predikci, klasifikaci nebo generování odpovědi bez úpravy vah modelu, zatímco náklady řeší latence, paměť a provoz.
Nezaměňujte: Inference může znamenat logické odvozování, statistické usuzování, odvozování typů v programování nebo produkční běh modelu ve strojovém učení.
Proč inference není trénink
Inference ve strojovém učení znamená použití hotového modelu na data, která model v daném okamžiku vyhodnocuje. Trénink upravuje parametry modelu podle ztrátové funkce, zatímco inference parametry pouze čte. Výsledek může být štítek, skóre pravděpodobnosti, doporučení, vektorová reprezentace, textová odpověď nebo další token u Large language model.
Rozlišení je praktické, ne jen slovníkové. Trénink bývá výpočetně těžký, běží nad velkým datasetem a řeší kvalitu modelu v delším cyklu. Inference se často odehrává v uživatelské cestě: člověk odešle dotaz, aplikace čeká na odpověď a špatná latence je okamžitě vidět. Proto se u inference řeší nejen přesnost, ale i odezva, stabilita a cena jednoho požadavku.
Co se při inferenci skutečně děje
Inferenční běh obvykle začíná převodem vstupu do formátu, který model očekává. Text se tokenizuje, obrázek se změní na tenzor, číselné znaky se normalizují. Model potom provede dopředný průchod, tedy výpočet od vstupu k výstupu bez zpětného šíření chyby. Nakonec aplikace výstup převede do podoby použitelné pro produkt: například seřadí třídy podle skóre, odfiltruje neplatné odpovědi nebo přidá vysvětlení.
V knihovnách jako PyTorch se při inferenci často vypíná výpočet gradientů. Důvodem není změna výsledné predikce, ale úspora paměti a režie, protože není potřeba uchovávat mezivýsledky pro učení. U velkých modelů se navíc používá kvantizace, batching, cache mezivýpočtů nebo specializovaný hardware místo obecného CPU.
Latence, throughput a cena dotazu
Inferenční systém se navrhuje podle jiných metrik než experiment v notebooku. Latence říká, za jak dlouho přijde odpověď na jeden požadavek. Throughput říká, kolik požadavků systém obslouží za čas. Cena dotazu zahrnuje výpočetní prostředky, paměť, síť, případně platbu externímu modelovému API.
Kompromisy jsou běžné. Větší batch může zvýšit propustnost, ale prodloužit čekání jednotlivého uživatele. Menší model může být levnější a rychlejší, ale méně přesný. Přesnější dekódování textu může zlepšit odpověď, ale spotřebuje více tokenů a času. Produkční inference proto často používá fronty, limity, fallback modely a monitoring výstupů.
Inference mimo strojové učení
Slovo inference má širší význam: v logice znamená odvození závěru z předpokladů, ve statistice odhadování vlastností populace z dat a v programování se objevuje například jako type inference. V kontextu AI se však nejčastěji myslí nasazení modelu pro predikce nebo generování. Význam je proto nutné číst podle oblasti, dokumentace a okolních slov, například training, deployment, runtime nebo model serving.
Příklady z praxe
Klasifikace obrázku v API
Tým nasazuje klasifikátor obrázků do API pro kontrolu nahraných produktových fotek. Model už je natrénovaný, takže server pouze převede obrázek na tenzor, spustí dopředný průchod a vrátí kategorii s nejvyšším skóre. Režim inference šetří paměť, protože se nepočítají gradienty.
import torch model.eval() with torch.inference_mode(): logits = model(input_tensor) predicted_class = logits.argmax(dim=1)Návrh odpovědi v zákaznické podpoře
E-shop používá jazykový model k návrhu odpovědí zákaznické podpory. Při každém dotazu se text zákazníka vloží do promptu a model vygeneruje návrh odpovědi, který operátor zkontroluje. Kvalita produktu závisí nejen na modelu, ale i na latenci, ceně za tokeny a kontrole nevhodných výstupů.
Časté omyly
- MýtusInference je jen jiné slovo pro trénování modelu.
- Ve skutečnostiInference používá hotový model k získání výstupu. Trénink mění parametry modelu podle dat a cílové funkce.
- MýtusVětší model má vždy lepší inference.
- Ve skutečnostiVětší model může být přesnější, ale také pomalejší, dražší a náročnější na paměť. Pro konkrétní produkt může být menší model s dobrým předzpracováním lepší volba.
- MýtusKdyž model běží přes API, inference už není technický problém aplikace.
- Ve skutečnostiExterní API přesouvá část provozu na poskytovatele, ale aplikace pořád řeší latenci, limity, chybové stavy, cenu, ochranu dat a kvalitu odpovědí.
Časté dotazy
- Proč je inference oddělená od tréninku modelu?
- Inference používá již naučené parametry modelu a neprovádí zpětnou úpravu vah. Trénink naopak hledá parametry, které zlepší chování modelu na trénovacích datech. Oddělení je důležité pro architekturu systému: trénink může běžet dávkově a dlouho, zatímco inference často odpovídá uživateli v reálném čase a musí splnit limity latence, dostupnosti a ceny.
- Co znamená inference latency?
- Inference latency znamená dobu mezi přijetím vstupu a dostupným výstupem modelu. Do latence se může počítat předzpracování dat, samotný běh modelu, postprocessing, síťová komunikace i čekání ve frontě. Nízká latence je zásadní u vyhledávání, chatu, doporučování nebo detekce podvodu, kde pomalá odpověď přímo zhoršuje uživatelský zážitek nebo blokuje obchodní proces.
- Proč se při inferenci vypínají gradienty?
- Vypnutí gradientů při inferenci snižuje paměťovou režii a obvykle zrychluje běh, protože knihovna nemusí ukládat informace nutné pro zpětné šíření chyby. Výstup modelu se tím běžně nemění, pokud zůstane stejný režim vrstev, vstup a numerická přesnost. Produkční kód proto často používá eval režim modelu a kontext určený pro inference.
- Kdy stačí pro inference CPU místo GPU?
- Inference na CPU dává smysl u malých modelů, nízkého provozu, jednoduchých tabulkových predikcí nebo služeb, kde by GPU zůstávalo většinu času nevyužité. CPU může být také praktičtější pro okrajová zařízení, interní nástroje a levné dávkové zpracování. Výkonnější akcelerátor se vyplatí hlavně u velkých modelů, vysoké propustnosti nebo přísné latence.
Zdroje
- inference_mode(otevře se v novém okně)
- Run inference with TensorFlow Lite(otevře se v novém okně)
- Transformers(otevře se v novém okně)
- Inference(otevře se v novém okně)