Temperature (LLM) (CS)

From Systems analysis Wiki
Jump to navigation Jump to search

Teplota (angl. Temperature) v kontextu velkých jazykových modelů (LLM) je hyperparametr, který řídí míru náhodnosti a „kreativnosti" při generování textu. Reguluje „ostrost" nebo naopak „vyhlazení" pravděpodobnostního rozdělení dalšího tokenu v každém kroku dekódování. Manipulací s teplotou lze řídit rovnováhu mezi předvídatelností (koherencí) a rozmanitostí (kreativitou) generovaného textu.

Jednoduché vysvětlení

Teplota je parametr, který určuje, jak opatrně nebo naopak volně model vybírá další slovo. Velký jazykový model téměř nikdy nemá jen jedno možné pokračování: obvykle existuje na každém kroku několik vhodných variant, každá s vlastní pravděpodobností. Teplota neovlivňuje samotné znalosti modelu ani to, „co ví", ale ovlivňuje to, jak přesně vybírá mezi těmito variantami při generování.

Při nízké teplotě se model chová konzervativněji. Více „důvěřuje" nejpravděpodobnějším slovům a méně se odchyluje od nejočekávanějšího pokračování. Výsledkem je text, který je obvykle hladší, předvídatelnější, formálně správnější a konzistentnější. Tento režim je užitečný tam, kde záleží na přesnosti formulací, stabilitě odpovědi, opakovatelnosti výsledku a minimalizaci zbytečné variability. Tento přístup má však i svou odvrácenou stranu: text může být příliš šablonový, suchý, jednotvárný a někdy přehnaně „opatrný". Při příliš nízké teplotě může model dokonce začít donekonečna opakovat tytéž konstrukce (uváznout ve smyčce), „zaseknutý" na nejpravděpodobnějších, ale ne vždy vhodných pokračováních.

Při vysoké teplotě se model chová odvážněji. Častěji připouští výběr nejen nejpravděpodobnějších, ale i méně zřejmých slov. Díky tomu jsou odpovědi rozmanitější, živější, netradiční a někdy originálnější. To může být užitečné při tvůrčích úkolech, brainstormingu, generování nápadů, uměleckých textech nebo při hledání několika různých formulací. Ale spolu s růstem rozmanitosti se zvyšuje i riziko: text se může stát méně koherentním, méně přesným a v krajních případech divným, nelogickým nebo náhodným.

Pohodlná intuice spočívá v tom, že teplota není regulátorem znalostí, ale regulátorem rizika při výběru slov. Nízká teplota nutí model téměř vždy volit „nejbezpečnější" variantu. Vysoká mu dovoluje častěji „riskovat" a zkoušet méně zřejmá pokračování.

Další užitečný obraz: teplotu lze přirovnat k tomu, jak člověk odpovídá na otázku. Vyžaduje-li se oficiální, přesná a pečlivá odpověď, člověk zpravidla volí nejneutrálnější a nejočekávanější formulace — to připomíná nízkou teplotu. Je-li však úkolem vymyslet neobvyklý nápad, metaforu, dějový obrat nebo několik netradičních variant, formulace se stávají volnějšími a odvážnějšími — to připomíná vysokou teplotu.

Teplota tedy odpovídá za rovnováhu mezi dvěma vlastnostmi generování:

  • předvídatelností a stabilitou odpovědi;
  • rozmanitostí a překvapivostí formulací.

Čím nižší je teplota, tím blíže je model nejpravděpodobnějšímu a standardnímu pokračování. Čím vyšší je teplota, tím větší prostor pro variabilitu, ale tím slabší kontrola nad přísností a koherencí výsledku.

Teoretická definice

Matematicky je teplota (T) zavedena jako dělitel ve funkci softmax, která transformuje výstupní logity modelu (ui) do rozdělení pravděpodobností (Pi). Vzorec vypadá takto:

Pi(T)=eui/Tjeuj/T

Kde:

  • Pi(T) — výsledná pravděpodobnost i-ho tokenu při teplotě T.
  • ui — logit (nenormalizované skóre) pro i-tý token, vydaný modelem.
  • T — parametr teploty (striktně kladné číslo). Například v API OpenAI je pro většinu modelů přípustný rozsah od 0 do 2,0, kde 0 je speciální případ greedy decoding (viz níže). V jiných knihovnách (Hugging Face Transformers, llama.cpp) může teplota nabývat libovolné kladné hodnoty.

Důležité: teplota ovlivňuje výstup pouze v režimech se sampling. V režimech bez samplování (greedy decoding, klasický beam search) nemá parametr teploty žádný efekt. Například v Hugging Face Transformers je pro fungování teploty nutné aktivovat do_sample=True.

Vliv hodnoty teploty

  • T=1 (standardní hodnota): Rozdělení pravděpodobností zůstává nezměněno. Jedná se o standardní softmax, který odráží původní předpovědi modelu.
  • T<1 (nízká teplota, například 0.20.7): Rozdělení se stává ostřejším nebo vrcholovějším. Pravděpodobnosti nejpravděpodobnějších tokenů se zvyšují a méně pravděpodobných se snižují. To činí generování deterministickějším a předvídatelnějším. Model častěji volí zřejmá, vysokofrekvenční slova, čímž se zvyšuje koherence a gramatická správnost textu, ale snižuje jeho rozmanitost.
  • T>1 (vysoká teplota, například 1.11.5): Rozdělení se stává hladším nebo rovnoměrnějším. Rozdíl mezi pravděpodobnostmi tokenů se vyhlazuje, což zvyšuje šanci výběru méně pravděpodobných (a více „překvapivých") tokenů. To činí text kreativnějším, rozmanitějším a nepředvídatelnějším, ale zvyšuje riziko generování nesourodých nebo gramaticky nesprávných frází.

Hraniční případy

  • To0: V limitě, kdy teplota klesá k nule, se funkce softmax mění v argmax. Model vždy vybere token s nejvyšším logitem. Tento režim je ekvivalentní hladovému dekódování (greedy decoding) a je plně deterministický. Často vede k opakujícímu se a šablonovému textu. Poznámka: hodnotu T=0 nelze do vzorce dosadit přímo (dělení nulou); v mnoha implementacích je zpracována jako speciální režim maximálně konzervativního výběru, blízký greedy decoding. Přitom ne všechna hosted API zaručují úplnou deterministiku při T=0 — například v Anthropic API mohou výsledky i při nulové teplotě mírně kolísat.
  • To: Když teplota směřuje k nekonečnu, stává se rozdělení pravděpodobností rovnoměrným. Všechny tokeny ve slovníku se stávají stejně pravděpodobnými a model generuje náhodný „proud vědomí", zcela ztrácejíc koherenci. V praxi nekonečno není potřeba: již při T>2.0 se rozdělení stává téměř rovnoměrným a text se mění v nesourodou směs tokenů.

Praktické použití a doporučení

Správná volba teploty je kriticky důležitá a závisí na konkrétním úkolu. Níže uvedené rozsahy jsou hrubé heuristiky — optimální hodnoty se mohou výrazně lišit v závislosti na konkrétním modelu, doméně a úkolu.

  • Pro tvůrčí úkoly (psaní povídek, básní, marketingových sloganů):
    • Doporučuje se vyšší teplota (T0.71.2).
    • To stimuluje model k generování neočekávanějších a kreativnějších nápadů, využívání rozmanité slovní zásoby a vyhýbání se šablonovým frázím.
  • Pro úkoly vyžadující přesnost a faktičnost (odpovídání na otázky, sumarizace, generování kódu):
    • Doporučuje se nízká teplota (T0.00.4).
    • To snižuje variabilitu a zvyšuje reprodukovatelnost výsledku tím, že nutí model držet se nejpravděpodobnějších pokračování textu. Při T=0 se generování stává deterministickým (při pevném seedu a absenci jiných zdrojů náhodnosti), což je užitečné pro testování a ladění, ale může maskovat problémy projevující se pouze při samplování. Nízká teplota sama o sobě však nezaručuje faktickou přesnost — pokud model nedisponuje potřebnými znalostmi, může sebevědomě generovat nesprávnou odpověď. Pro maximální faktičnost se doporučuje kombinovat nízkou teplotu s metodami vyhledávání ve znalostní bázi (RAG) a vylepšeným promptingem. V dokumentaci OpenAI se pro úkoly extrakce dat a faktických odpovědí doporučuje T=0.
  • Pro úkoly reasoning, matematiku a generování kódu:
    • Obvykle se používají nižší teploty, optimální hodnota však výrazně závisí na konkrétním modelu a úkolu.
    • Poznámka: v některých reasoning modelech (například rodina OpenAI o1/o3) mohou být parametry samplování omezeny nebo zafixovány na straně poskytovatele. Interní chain-of-thought vyžaduje stabilní rozdělení, a proto mohou poskytovatelé zcela blokovat změnu teploty nebo přijímat uživatelské hodnoty pouze v úzkém rozsahu.
  • Pro dialogové systémy a chatboty:
    • Doporučuje se střední teplota (T0.50.8).
    • To umožňuje najít rovnováhu: odpovědi zůstávají koherentní a k tématu, ale přitom nejsou příliš suché a jednotvárné.

Poznámka: dokumentace OpenAI API doporučuje měnit buď temperature, nebo top_p, ale ne oba parametry zároveň — jinak se chování stává obtížně předvídatelným. V referenčních příkladech OpenAI API se jako výchozí hodnota obvykle uvádí T=1.0.

Srovnání s Top-k a Top-p

Teplota, na rozdíl od metod ořezávání, jako jsou Top-k a Top-p (nucleus sampling), funguje jinak:

  • Teplota přerozděluje pravděpodobnosti mezi všechny tokeny ve slovníku, ale neořezává žádný z nich. Dokonce i při velmi nízké teplotě mají méně pravděpodobné tokeny nepatrnou, ale nenulovou šanci být vybrány.
  • Top-k a Top-p zavádějí tvrdé ořezávání, úplně vylučující tokeny, které se nedostaly do jádra výběru. Takové ořezávání snižuje riziko výběru tokenů z chvostu, ale samo o sobě je hrubou heuristikou a může zahazovat věrohodná pokračování s nenulovou „skutečnou" pravděpodobností.

V praxi se tyto parametry často používají společně. Například lze nastavit střední teplotu (např. T=0.8) pro celkovou stylistiku a přidat Top-p (např. p=0.9), aby se ořízl „chvost" rozdělení a snížilo riziko hrubých chyb. Při velmi nízké teplotě (To0) Top-p fakticky ztrácí smysl, protože rozdělení má samo o sobě pouze jeden výrazný vrchol.

Interakce teploty s dalšími parametry dekódování

Teplota se téměř nikdy nepoužívá izolovaně. V praxi se kombinuje s dalšími hyperparametry pro jemné nastavení rovnováhy „kreativnost ↔ spolehlivost".

Typické pořadí aplikace parametrů

V běžných sampling implementacích (zejména Hugging Face Transformers) se parametry obvykle aplikují v následujícím pořadí:

  1. Model vydá surové logity (ui).
  2. Aplikují se postihy za opakování (repetition / frequency / presence penalty) — úprava logitů na základě již vygenerovaných tokenů.
  3. Teplota škáluje logity: ui/T.
  4. Aplikuje se softmax → vzniká nové rozdělení pravděpodobností.
  5. Ořezávání (truncation): nejprve Top-k (je-li zadán), poté Top-p nebo Min-p.
  6. Ze zbývajícího „jádra" proběhne náhodný výběr (sampling).

V tomto typickém schématu teplota mění tvar rozdělení po aplikaci postihů za opakování, ale před softmax a filtrací. Proto stejná top_p=0.9 při T=0.2 a při T=1.5 dává zcela různou velikost „jádra". Postihy a teplota interagují nelineárně — to je důležité mít na paměti při nastavování parametrů. Interní pořadí aplikace v hosted API (OpenAI, Anthropic) není na této úrovni podrobnosti veřejně dokumentováno.

Top-p (nucleus sampling) a Min-p

Min-p (minimum probability sampling) je relativně nová metoda ořezávání, která stanovuje dolní práh pravděpodobnosti relativně k nejpravděpodobnějšímu tokenu (obvykle 0,05–0,1). Na rozdíl od Top-p ořezává tokeny na základě relativního prahu (vázaného na pravděpodobnost nejlepšího tokenu, nikoliv na fixní kumulativní hmotu), což je zvláště efektivní při vysoké teplotě (>0,8): zabraňuje výběru zcela nevhodných tokenů bez výrazné ztráty rozmanitosti. Min-p je podporován řadou populárních open-source inference stacků, včetně vLLM a llama.cpp.

Repetition / Frequency / Presence penalty

Frequency_penalty a presence_penalty (OpenAI API) snižují pravděpodobnost opakování již použitých tokenů. Mohou kompenzovat jeden z nedostatků nízké teploty — sklon k šablonovitosti a zacyklení.

Typical sampling a Mirostat

Typical sampling (Meister et al., 2023) vybírá tokeny, jejichž pravděpodobnost je blízká „očekávané" entropii kontextu. Mirostat (v2) dynamicky přizpůsobuje parametry ořezávání tak, aby cílová perplexita zůstávala konstantní — to je užitečné pro dlouhé texty, kde je stabilita stylu kritická.

Ilustrativní příklady nastavení

Níže jsou uvedeny přibližné konfigurace pro různé typy úkolů. Tyto hodnoty nejsou obecnými doporučeními — optimální parametry závisí na konkrétním modelu, úkolu a inference stacku.

Úkol Teplota Možná kombinace Logika
Factual Q&A, sumarizace 0,0–0,3 T + top_p=0.9 Minimalizace náhodné variability
Generování kódu, matematika 0,1–0,4 T + repetition_penalty Stabilita + předcházení zacyklení
Dialogy / chatboty 0,6–0,85 T + top_p=0.92 nebo min_p=0.1 Rovnováha přirozenosti a koherence
Tvůrčí práce (povídky, marketing) 0,75–1,1 T + min_p=0.07–0.1 Rozmanitost s filtrací chvostu
Long-form / agenti 0,5–0,8 Mirostat nebo T + frequency_penalty Kontrola délky a koherence

Obecná rada: není vhodné výrazně měnit temperature a top_p zároveň. Zpravidla je pohodlnější zafixovat jeden z truncation parametrů a řídit kreativnost teplotou — to činí chování modelu předvídatelnějším.

Zvláštnost moderních aligned modelů: v silně vyrovnaných modelech (které prošly RLHF / Constitutional AI / RLAIF) je efekt vysoké teploty oslaben ve srovnání se základními modely — model méně často generuje nesourodý text i při T=1.2. Konkrétní optimální hodnoty se mohou měnit s vydáním nových generací modelů; výše uvedená doporučení jsou aktuální ke stavu roku 2025–2026.

Literatura

  • Holtzman, A. et al. (2020). The Curious Case of Neural Text Degeneration. arXiv:1904.09751.
  • Caccia, M. et al. (2018). Language GANs Falling Short. arXiv:1811.02549.
  • Fan, A. et al. (2018). Hierarchical Neural Story Generation. arXiv:1805.04833.
  • Meister, C. et al. (2023). Locally Typical Sampling. arXiv:2202.00666.
  • Hewitt, J.; Manning, C.; Liang, P. (2022). Truncation Sampling as Language Model Desmoothing. arXiv:2210.15191.
  • Su, Y.; Collier, N. (2022). Contrastive Search Is What You Need for Neural Text Generation. arXiv:2210.14140.
  • O'Brien, S.; Lewis, M. (2023). Contrastive Decoding Improves Reasoning in Large Language Models. arXiv:2309.09117.
  • Finlayson, M. et al. (2023). Closing the Curious Case of Neural Text Degeneration. arXiv:2310.01693.
  • Shi, C. et al. (2024). A Thorough Examination of Decoding Methods in the Era of Large Language Models. arXiv:2402.06925.
  • Ravfogel, S. et al. (2023). Conformal Nucleus Sampling. arXiv:2305.02633.
  • Sen, J. et al. (2025). Advancing Decoding Strategies: Enhancements in Locally Typical Sampling for LLMs. arXiv:2506.05387.
  • Basu, S. et al. (2021). Mirostat: A Perplexity-Controlled Neural Text Decoding Algorithm. arXiv:2007.14966.
  • Nguyen, M. N. et al. (2025). Turning Up the Heat: Min-p Sampling for Diverse and High-Quality Text Generation. arXiv:2407.01082.
  • Renze, M.; Guven, E. (2024). The Effect of Sampling Temperature on Problem Solving in Large Language Models. arXiv:2402.05201.
  • Zhang, S. et al. (2024). EDT: Improving Large Language Models' Generation by Entropy-based Dynamic Temperature Sampling. arXiv:2403.14541.
  • Li, L. et al. (2025). Exploring the Impact of Temperature on Large Language Models: Hot or Cold?. arXiv:2506.07295.

Viz také

  • Velké jazykové modely