Temperature (LLM) (PL)

From Systems analysis Wiki
Jump to navigation Jump to search

Temperatura (ang. Temperature) w kontekście dużych modeli językowych (LLM) — to hiperparametr, który kontroluje poziom losowości i „kreatywności" podczas generowania tekstu. Reguluje „ostrość" lub, przeciwnie, „wygładzenie" rozkładu prawdopodobieństwa następnego tokenu na każdym kroku dekodowania. Manipulując temperaturą, można sterować balansem między przewidywalnością (koherencją) a różnorodnością (kreatywnością) generowanego tekstu.

Proste wyjaśnienie

Temperatura — to parametr, który określa, jak ostrożnie lub, przeciwnie, swobodnie model wybiera następne słowo. Duży model językowy prawie nigdy nie ma tylko jednej możliwej kontynuacji: zazwyczaj na każdym kroku istnieje kilka odpowiednich wariantów, z których każdy ma własne prawdopodobieństwo. Temperatura nie wpływa na samą wiedzę modelu ani na to, „co model wie", lecz na to, w jaki sposób dokładnie wybiera spośród tych wariantów podczas generowania.

Przy niskiej temperaturze model zachowuje się bardziej konserwatywnie. Bardziej „ufa" najbardziej prawdopodobnym słowom i rzadziej odchyla się od najbardziej oczekiwanej kontynuacji. W efekcie tekst jest zazwyczaj bardziej równy, przewidywalny, formalnie poprawny i spójny. Taki tryb jest przydatny tam, gdzie ważna jest precyzja sformułowań, stabilność odpowiedzi, powtarzalność wyników i minimalizacja zbędnej wariantywności. Jednak takie podejście ma też swoją drugą stronę: tekst może stawać się zbyt szablonowy, suchy, monotonny i czasem nadmiernie „ostrożny". Przy zbyt niskiej temperaturze model może nawet zacząć w nieskończoność powtarzać te same konstrukcje (wpadać w pętlę), „zacinając się" na najbardziej prawdopodobnych, lecz nie zawsze stosownych kontynuacjach.

Przy wysokiej temperaturze model zachowuje się śmielej. Częściej dopuszcza wybór nie tylko najbardziej prawdopodobnych, ale i mniej oczywistych słów. Dzięki temu odpowiedzi stają się bardziej zróżnicowane, żywe, niestandardowe i niekiedy bardziej oryginalne. Może to być przydatne w zadaniach twórczych, podczas burzy mózgów, generowania pomysłów, tekstów literackich lub poszukiwania kilku różnych sformułowań. Jednak wraz ze wzrostem różnorodności rośnie też ryzyko: tekst może stać się mniej spójny, mniej precyzyjny, a w skrajnych przypadkach — dziwny, nielogiczny lub przypadkowy.

Wygodna intuicja polega na tym, że temperatura — to nie regulator wiedzy, lecz regulator ryzyka przy wyborze słów. Niska temperatura sprawia, że model niemal zawsze wybiera „najbezpieczniejszy" wariant. Wysoka — pozwala mu częściej „ryzykować" i próbować mniej oczywistych kontynuacji.

Jeszcze jeden przydatny obraz: temperaturę można porównać do tego, jak człowiek odpowiada na pytanie. Jeśli wymagana jest oficjalna, precyzyjna i staranna odpowiedź, człowiek zazwyczaj wybiera najbardziej neutralne i oczekiwane sformułowania — przypomina to niską temperaturę. Jeśli zaś zadanie polega na wymyśleniu niezwykłego pomysłu, metafory, wątku fabularnego lub kilku niestandardowych wariantów, sformułowania stają się swobodniejsze i śmielsze — przypomina to wysoką temperaturę.

Tym samym temperatura odpowiada za balans między dwiema właściwościami generowania:

  • przewidywalnością i stabilnością odpowiedzi;
  • różnorodnością i nieoczekiwanością sformułowań.

Im niższa temperatura, tym bliżej model jest do najbardziej prawdopodobnej i standardowej kontynuacji. Im wyższa temperatura, tym większa przestrzeń dla wariantywności, lecz tym słabsza kontrola nad rygoryzmem i spójnością wyniku.

Definicja teoretyczna

Matematycznie, temperatura (T) jest wprowadzana jako dzielnik w funkcji softmax, która przekształca wyjściowe logity modelu (ui) w rozkład prawdopodobieństwa (Pi). Formuła wygląda następująco:

Pi(T)=eui/Tjeuj/T

Gdzie:

  • Pi(T) — końcowe prawdopodobieństwo i-tego tokenu przy temperaturze T.
  • ui — logit (nienormalizowana ocena) dla i-tego tokenu, zwrócony przez model.
  • T — parametr temperatury (liczba ściśle dodatnia). Na przykład w API OpenAI dla większości modeli dopuszczalny zakres wynosi od 0 do 2.0, gdzie 0 to specjalny przypadek greedy decoding (zob. poniżej). W innych bibliotekach (Hugging Face Transformers, llama.cpp) temperatura może przyjmować dowolną wartość dodatnią.

Ważne: temperatura wpływa na wyjście tylko w trybach z sampling. W trybach bez próbkowania (greedy decoding, klasyczny beam search) parametr temperatury nie ma efektu. Na przykład w Hugging Face Transformers, aby temperatura działała, konieczne jest włączenie do_sample=True.

Wpływ wartości temperatury

  • T=1 (wartość standardowa): Rozkład prawdopodobieństwa pozostaje bez zmian. Jest to standardowy softmax, który odzwierciedla oryginalne przewidywania modelu.
  • T<1 (niska temperatura, np. 0.20.7): Rozkład staje się bardziej ostry lub szczytowy. Prawdopodobieństwa najbardziej prawdopodobnych tokenów rosną, a mało prawdopodobnych — maleją. Sprawia to, że generowanie jest bardziej deterministyczne i przewidywalne. Model częściej wybiera oczywiste, wysokoczęstościowe słowa, co zwiększa koherencję i poprawność gramatyczną tekstu, lecz zmniejsza jego różnorodność.
  • T>1 (wysoka temperatura, np. 1.11.5): Rozkład staje się bardziej gładki lub równomierny. Różnica między prawdopodobieństwami tokenów jest niwelowana, co zwiększa szansę wybrania mniej prawdopodobnych (i bardziej „nieoczekiwanych") tokenów. Sprawia to, że tekst jest bardziej kreatywny, zróżnicowany i nieprzewidywalny, lecz zwiększa ryzyko generowania niespójnych lub gramatycznie niepoprawnych fraz.

Przypadki graniczne

  • To0: W granicy, gdy temperatura dąży do zera, funkcja softmax zamienia się w argmax. Model zawsze będzie wybierał token z najwyższym logitem. Ten tryb jest równoważny żądnemu dekodowaniu (greedy decoding) i jest w pełni deterministyczny. Często prowadzi to do powtarzającego się i szablonowego tekstu. Uwaga: wartości T=0 nie można podstawić bezpośrednio do formuły (dzielenie przez zero); w wielu implementacjach jest ona obsługiwana jako specjalny tryb maksymalnie konserwatywnego wyboru, zbliżony do greedy decoding. Przy tym nie wszystkie hosted API gwarantują pełny determinizm przy T=0 — na przykład w Anthropic API nawet przy zerowej temperaturze wyniki mogą się nieznacznie różnić.
  • To: Gdy temperatura dąży do nieskończoności, rozkład prawdopodobieństwa staje się równomierny. Wszystkie tokeny w słowniku stają się równie prawdopodobne, a model generuje losowy „strumień świadomości", całkowicie tracąc koherencję. W praktyce nieskończoność nie jest potrzebna: już przy T>2.0 rozkład staje się niemal równomierny, a tekst zamienia się w bezsensowny zbiór tokenów.

Zastosowanie praktyczne i zalecenia

Właściwy dobór temperatury jest kluczowy i zależy od konkretnego zadania. Poniższe zakresy są grubymi heurystykami — optymalne wartości mogą się znacznie różnić w zależności od konkretnego modelu, domeny i zadania.

  • Do zadań twórczych (pisanie opowiadań, wierszy, sloganów marketingowych):
    • Zalecana jest wyższa temperatura (T0.71.2).
    • Zachęca to model do generowania bardziej nieoczekiwanych i kreatywnych pomysłów, używania zróżnicowanego słownictwa i unikania szablonowych fraz.
  • Do zadań wymagających precyzji i zgodności z faktami (odpowiedzi na pytania, sumaryzacja, generowanie kodu):
    • Zalecana jest niska temperatura (T0.00.4).
    • Zmniejsza to wariantywność i zwiększa odtwarzalność wyniku, skłaniając model do trzymania się najbardziej prawdopodobnych kontynuacji tekstu. Przy T=0 generowanie staje się deterministyczne (przy stałym seed i braku innych źródeł losowości), co jest przydatne przy testowaniu i debugowaniu, lecz może maskować problemy ujawniające się tylko przy próbkowaniu. Jednak niska temperatura sama w sobie nie gwarantuje faktycznej dokładności — jeśli model nie posiada potrzebnej wiedzy, może z pewnością siebie generować błędną odpowiedź. Dla maksymalnej zgodności z faktami zaleca się łączenie niskiej temperatury z metodami wyszukiwania w bazie wiedzy (RAG) i ulepszonym promptingiem. W dokumentacji OpenAI dla zadań ekstrakcji danych i odpowiedzi faktograficznych zalecana jest wartość T=0.
  • Do zadań reasoning, matematyki i generowania kodu:
    • Na ogół stosowane są niższe temperatury, jednak optymalna wartość wyraźnie zależy od konkretnego modelu i zadania.
    • Uwaga: w niektórych modelach reasoning (np. rodzina OpenAI o1/o3) parametry sampling mogą być ograniczone lub ustalone po stronie dostawcy. Wewnętrzny chain-of-thought wymaga stabilnego rozkładu, dlatego dostawcy mogą całkowicie blokować zmianę temperatury lub akceptować wartości użytkownika tylko w wąskim zakresie.
  • Do systemów dialogowych i chatbotów:
    • Zalecana jest umiarkowana temperatura (T0.50.8).
    • Pozwala to znaleźć balans: odpowiedzi pozostają spójne i na temat, ale nie stają się zbyt suche i monotonne.

Uwaga: w dokumentacji OpenAI API zaleca się zmienianie albo temperature, albo top_p, ale nie obu parametrów jednocześnie — w przeciwnym razie zachowanie staje się trudne do przewidzenia. W przykładach referencyjnych OpenAI API jako domyślna wartość zazwyczaj pojawia się T=1.0.

Porównanie z Top-k i Top-p

Temperatura, w odróżnieniu od metod odcięcia, takich jak Top-k i Top-p (nucleus sampling), działa inaczej:

  • Temperatura redystrybuuje prawdopodobieństwa między wszystkimi tokenami w słowniku, ale nie odcina żadnego z nich. Nawet przy bardzo niskiej temperaturze mało prawdopodobne tokeny zachowują znikomy, lecz niezerowy szans na bycie wybranym.
  • Top-k i Top-p wprowadzają twarde odcięcie, całkowicie wykluczając tokeny, które nie znalazły się w jądrze próbkowania. Takie odcięcie zmniejsza ryzyko wyboru tokenów z ogona rozkładu, lecz samo w sobie jest grubą heurystyką i może odrzucać wiarygodne kontynuacje z niezerowym „prawdziwym" prawdopodobieństwem.

W praktyce parametry te są często używane łącznie. Na przykład można ustawić umiarkowaną temperaturę (np. T=0.8) dla ogólnej stylistyki i dodać Top-p (np. p=0.9), aby odciąć „ogon" rozkładu i zmniejszyć ryzyko poważnych błędów. Przy bardzo niskiej temperaturze (To0) Top-p traci w praktyce sens, ponieważ rozkład i tak ma tylko jeden znaczący szczyt.

Interakcja temperatury z innymi parametrami dekodowania

Temperatura prawie nigdy nie jest używana w izolacji. W praktyce łączy się ją z innymi hiperparametrami w celu precyzyjnego dostrojenia balansu „kreatywność ↔ niezawodność".

Typowa kolejność stosowania parametrów

W popularnych implementacjach sampling (w szczególności Hugging Face Transformers) parametry są zazwyczaj stosowane w następującej kolejności:

  1. Model zwraca surowe logity (ui).
  2. Stosowane są kary za powtórzenia (repetition / frequency / presence penalty) — modyfikacja logitów na podstawie już wygenerowanych tokenów.
  3. Temperatura skaluje logity: ui/T.
  4. Stosowany jest softmax → uzyskiwany jest nowy rozkład prawdopodobieństwa.
  5. Odcięcie (truncation): najpierw Top-k (jeśli ustawione), następnie Top-p lub Min-p.
  6. Z pozostałego „jądra" dokonywana jest losowa próbka (sampling).

W tym typowym schemacie temperatura zmienia kształt rozkładu po zastosowaniu kar za powtórzenia, ale przed softmax i filtrowaniem. Dlatego ta sama top_p=0.9 przy T=0.2 i przy T=1.5 daje zupełnie inny rozmiar „jądra". Kary i temperatura oddziałują nieliniowo — to ważne przy dobieraniu parametrów. Wewnętrzna kolejność stosowania w hosted API (OpenAI, Anthropic) nie jest publicznie udokumentowana na takim poziomie szczegółowości.

Top-p (nucleus sampling) i Min-p

Min-p (minimum probability sampling) — stosunkowo nowa metoda odcięcia, ustalająca dolny próg prawdopodobieństwa względem najbardziej prawdopodobnego tokenu (zazwyczaj 0.05–0.1). W odróżnieniu od Top-p odcina tokeny według progu względnego (powiązanego z prawdopodobieństwem najlepszego tokenu, a nie ze stałą skumulowaną masą), co jest szczególnie skuteczne przy wysokiej temperaturze (>0.8): zapobiega wyborowi zupełnie nieodpowiednich tokenów bez znaczącej utraty różnorodności. Min-p jest obsługiwane przez szereg popularnych open-source stosów inference, w tym vLLM i llama.cpp.

Repetition / Frequency / Presence penalty

Frequency_penalty i presence_penalty (OpenAI API) obniżają prawdopodobieństwo powtarzania się już napotkanych tokenów. Mogą kompensować jedną z wad niskiej temperatury — skłonność do szablonowości i zapętlania się.

Typical sampling i Mirostat

Typical sampling (Meister et al., 2023) wybiera tokeny, których prawdopodobieństwo jest bliskie „oczekiwanej" entropii kontekstu. Mirostat (v2) dynamicznie dostosowuje parametry odcięcia, aby docelowa perplexity pozostawała stała — jest to przydatne w przypadku długich tekstów, gdzie stabilność stylu jest kluczowa.

Ilustracyjne przykłady konfiguracji

Poniżej przedstawiono przykładowe konfiguracje dla różnych typów zadań. Wartości te nie są zaleceniami ogólnego przeznaczenia — optymalne parametry zależą od konkretnego modelu, zadania i stosu inference.

Zadanie Temperatura Możliwa kombinacja Logika
Factual Q&A, sumaryzacja 0.0–0.3 T + top_p=0.9 Minimalizacja przypadkowej wariantywności
Generowanie kodu, matematyka 0.1–0.4 T + repetition_penalty Stabilność + unikanie zapętlania
Dialogi / chatboty 0.6–0.85 T + top_p=0.92 lub min_p=0.1 Balans naturalności i spójności
Twórczość (opowiadania, marketing) 0.75–1.1 T + min_p=0.07–0.1 Różnorodność z filtrowaniem ogona
Long-form / agenty 0.5–0.8 Mirostat lub T + frequency_penalty Kontrola długości i spójności

Ogólna rada: nie należy jednocześnie mocno zmieniać temperature i top_p. Na ogół wygodniej jest unieruchomić jeden z parametrów truncation i sterować kreatywnością za pomocą temperatury — sprawia to, że zachowanie modelu jest bardziej przewidywalne.

Cecha charakterystyczna współczesnych aligned-modeli: w silnie wyrównanych modelach (po RLHF / Constitutional AI / RLAIF) efekt wysokiej temperatury jest osłabiony w porównaniu z modelami bazowymi — model rzadziej generuje niespójny tekst nawet przy T=1.2. Konkretne optymalne wartości mogą się zmieniać wraz z pojawianiem się nowych generacji modeli; powyższe zalecenia są aktualne według stanu na lata 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.

Zobacz też

  • Duże modele językowe