TakéTemperature, Sampling temperature, Parametr temperaturePokročilý
Definice
Teplota modelu je parametr vzorkování, který u generativních jazykových modelů řídí, jak moc se pravděpodobnosti dalších tokenů zplošťují před náhodným výběrem. Nízká teplota vede k předvídatelnému a opakovatelnému textu, vysoká teplota zvyšuje rozmanitost i riziko nesmyslů. Teplota nemění naučené znalosti modelu, pouze způsob výběru z jeho rozdělení.
Nezaměňujte: Ve strojovém učení označuje teplota parametr vzorkování při generování, zatímco v destilaci modelů jde o teplotu softmaxu použitou k změkčení cílových pravděpodobností při trénování.
Než se na to spolehnete: Doporučené rozsahy hodnot (0 az 0,3, 0,5 az 0,8 atd.) jsou zobecněná praxe, ne údaj z dokumentace; liší se podle modelu i poskytovatele. Tvrzení o horní hranici rozsahu (1 vs 2) platí obecně, ale u konkrétních API se může měnit. sameAs jsem nechal prázdné, protože samostatný článek o sampling temperature na Wikipedii si nejsem jistý.
Co teplota mění v rozdělení pravděpodobností
Jazykový model při každém kroku spočítá takzvané logity: skóre pro každý možný následující token. Tato skóre se funkcí softmax převedou na pravděpodobnosti. Teplota vstupuje do výpočtu tak, že se logity před softmaxem vydělí její hodnotou. Dělení číslem menším než 1 rozdíly mezi kandidáty zvětší, takže nejsilnější token dostane ještě větší převahu. Dělení číslem větším než 1 rozdíly stlačí a slabší kandidáti získají reálnou šanci.
Teplota 0 se v praxi implementuje jako greedy výběr: model vždy vezme nejpravděpodobnější token. Výsledek je pak deterministický v rámci jednoho běhu na stejném hardwaru, i když ani tady není opakovatelnost napříč verzemi API zaručená.
Jaké hodnoty dávají smysl v jakém úkolu
Volba teploty vyplývá z toho, jestli existuje jedna správná odpověď, nebo mnoho přijatelných.
- 0 az 0,3: extrakce dat, klasifikace, generování JSON, převod textu na strukturu, SQL dotazy. Konzistence je důležitější než pestrost.
- 0,5 az 0,8: běžná konverzace, shrnutí, přepis textu do jiného tónu. Odpovědi znějí přirozeněji a méně se opakují.
- 0,9 a výš: brainstorming, varianty reklamních textů, kreativní psaní. Nad zhruba 1,2 začíná u většiny modelů text ztrácet soudržnost.
Vztah k top-p a top-k
Teplota působí na tvar celého rozdělení, zatímco top-p (nucleus sampling) a top-k rozdělení nejdřív oříznou na množinu kandidátů. Kombinace vysoké teploty s volným top-p je nejrizikovější nastavení, protože teplota nadzvedne ocas rozdělení a top-p ho nechá projít. Většina týmů proto ladí jeden parametr a druhý nechává na výchozí hodnotě. Rozsah teploty navíc není napříč poskytovateli srovnatelný: někde končí na 1, jinde na 2, takže hodnotu z jednoho API nelze přenést do druhého bez ověření.
Proč teplota neřeší halucinace
Nízká teplota omezuje náhodnost, ne chybnost. Pokud model přiřadí vysokou pravděpodobnost nepravdivému tvrzení, greedy výběr ho zvolí naprosto spolehlivě, a to při každém pokusu. Snížení teploty tak halucinaci spíš stabilizuje než odstraní. Proti věcným chybám pomáhá doplnění kontextu, například přes RAG, ověřování výstupu proti schématu a kontrola citací, ne posun jednoho čísla.
Teplota při testování a v produkci
Vysoká teplota komplikuje regresní testy: stejný prompt vrátí pokaždé jiný text a rozdíl mezi zlepšením promptu a náhodou se hůř rozeznává. Při vyhodnocování promptů se proto obvykle fixuje teplota na nule nebo se stejný vstup pouští vícekrát a měří se rozptyl výsledků. Naopak u funkcí typu „nabídni další variantu“ je nulová teplota vada, protože uživatel dostane stále totéž. Teplota patří mezi parametry, které se logují spolu s promptem a verzí modelu, jinak nelze zpětně rekonstruovat, proč konkrétní odpověď vypadala tak, jak vypadala.
Příklady z praxe
Extrakce údajů z faktury do JSON
Aplikace posílá modelu naskenovaný text faktury a čeká strukturovaný JSON s částkou, variabilním symbolem a datem splatnosti. Při teplotě 0,9 model občas přejmenuje klíč nebo doplní vysvětlující větu navíc a parsování spadne. Po snížení na 0 dává stejný vstup opakovaně stejný výstup a validace proti schématu prochází.
const res = await client.chat.completions.create({ model: "gpt-4o-mini", temperature: 0, response_format: { type: "json_object" }, messages: [ { role: "system", content: "Vrat pouze JSON s klici amount, vs, dueDate." }, { role: "user", content: ocrText } ] });Pět variant nadpisu pro e-shop
Copywriter potřebuje pět různých nadpisů pro stejný produkt. Při teplotě 0,2 se varianty liší jen v pořadí slov a tři z nich jsou prakticky totožné. Zvýšení na 1,0 přinese skutečně odlišné úhly pohledu, ale zhruba jedna z pěti variant obsahuje tvrzení o produktu, které je nutné ručně vyškrtnout.
Časté omyly
- MýtusKdyž dám teplotu na nulu, model přestane halucinovat.
- Ve skutečnostiTeplota na nule odstraní náhodnost výběru, ne věcné chyby. Nepravdivé tvrzení s nejvyšší pravděpodobností model zvolí při každém spuštění, takže se halucinace jen stane stabilní a opakovatelnou.
- MýtusTeplota 1 znamená u všech modelů totéž.
- Ve skutečnostiRozsah i výchozí hodnota teploty se liší podle poskytovatele a jsou navíc ovlivněné dalšími parametry vzorkování, například top-p. Hodnotu naladěnou na jednom API je nutné při přechodu na jiný model znovu ověřit.
- MýtusVyšší teplota dělá model kreativnějším, protože přemýšlí volněji.
- Ve skutečnostiVyšší teplota nemění nic na naučených vahách ani na uvažování modelu. Pouze zplošťuje rozdělení pravděpodobností, takže se častěji vyberou méně obvyklé tokeny; vnímaná kreativita je vedlejší efekt této náhodnosti.
Časté dotazy
- Jaká teplota modelu je nejlepší pro chatbota na webu?
- Pro zákaznického chatbota se v praxi osvědčuje teplota kolem 0,2 az 0,5. Odpovědi zůstávají konzistentní napříč uživateli, což je důležité, pokud chatbot sděluje ceny, dodací lhůty nebo podmínky reklamace, a zároveň nezní úplně roboticky. Pokud chatbot pracuje nad vlastní znalostní bází, doporučuje se držet se u spodní hranice a soustředit se spíš na kvalitu vyhledaného kontextu. Konkrétní hodnotu je vhodné ověřit na sadě reálných dotazů a porovnat odpovědi ručně, ne se spolehnout na obecné doporučení.
- Zaručuje teplota 0 stejnou odpověď při každém volání?
- Teplota 0 výrazně zvyšuje šanci na stejnou odpověď, ale plnou determinističnost nezaručuje. U cloudových API vstupují do hry paralelní výpočty na GPU, pořadí sčítání v pohyblivé řádové čárce, load balancing mezi různým hardwarem a tiché aktualizace modelu. Výsledkem bývá občasná drobná odchylka ve formulaci. Pokud aplikace potřebuje reprodukovatelnost, je vhodné použít parametr seed, pokud ho poskytovatel nabízí, výstup cachovat a vždy logovat konkrétní verzi modelu.
- Ovlivňuje teplota modelu cenu nebo rychlost odpovědi?
- Teplota modelu sama o sobě cenu za token ani rychlost generování neovlivňuje, protože výpočet dopředného průchodu je stejný. Nepřímý dopad ale existuje: při vyšší teplotě model častěji sklouzne k rozvláčnějším formulacím nebo se hůř trefí do požadovaného formátu, takže aplikace musí volání opakovat. Opakované pokusy se počítají jako další tokeny a prodlužují odezvu. U strojově zpracovávaných výstupů proto nízká teplota často znamená i nižší celkové náklady.
- Kde se teplota modelu nastavuje?
- Teplota modelu se nastavuje jako parametr požadavku při volání API, typicky pod názvem temperature v těle JSON požadavku. Nabízejí ji rozhraní OpenAI, Anthropic, Google i lokální běhová prostředí jako Ollama nebo llama.cpp. V uživatelských chatovacích aplikacích bývá teplota skrytá a pevně nastavená provozovatelem. Při použití knihoven typu LangChain nebo Hugging Face Transformers se předává při vytváření objektu modelu nebo ve volání funkce generate spolu s parametry top_p a top_k.
Zdroje
- Generation with LLMs(otevře se v novém okně)
- Softmax function(otevře se v novém okně)
- The Curious Case of Neural Text Degeneration(otevře se v novém okně)
- Distilling the Knowledge in a Neural Network(otevře se v novém okně)