Lensa ML

Sampling: Temperature, Top-k, dan Top-p

Langkah 1 dari 6: Dari Logit ke Pilihan

Skor untuk setiap token berikutnya

"The capital of France is ___"logit zprobabilitas softmaxParis9.296.2%a5.11.6%the4.61.0%located4.00.5%known3.40.3%not2.90.2%home2.50.1%one2.2<0.1%Lyon1.6<0.1%situated1.2<0.1%Logit ilustratif untuk 10 dari 32.000 token vocabulary, softmax atas 10 token ini
Token teratas
"Paris"
Probabilitas teratas
96.2%
Entropy
0.32 bit

"Paris" punya logit 4,1 lebih tinggi dari peringkat kedua, dan softmax mengubah selisih itu menjadi 96,2% probabilitas. Dengan entropy 0,32 bit, jawabannya nyaris pasti.

Ganti antara Prompt faktual dan Prompt cerita, lalu bandingkan kedua set batang. Softmax menghitung p_i = exp(z_i) / Σ exp(z_j), jadi hanya selisih antar-logit yang berpengaruh: menambahkan 5 ke setiap logit tidak mengubah apa pun. Selisih 4,1 antara dua logit menjadi rasio probabilitas e^4.1, sekitar 60 banding 1. Entropy, H = −Σ p log₂ p, mengukur berapa bit ketidakpastian yang tersisa. Model chat 7B sungguhan memberi skor ke seluruh 32.000 token vocabulary di setiap langkah, dan ekor panjang berisi probabilitas yang sangat kecil tetap terkumpul menjadi jumlah yang berarti.

Langkah 2 dari 6: Greedy Decoding

Selalu ambil token teratas

Output greedy sejauh iniOnceuponatime,therewasaPilihan token berikutnya setelah "a" (3 teratas)little25.6% pilihan greedyyoung18.9%small12.7%Tabel ilustratif token berikutnya, berdasarkan token terakhir
Token dihasilkan
0 / 12
Probabilitas pilihan greedy
25.6%
Token berulang
0

Greedy mengambil batang terpanjang, "little" sebesar 25,6%, dan membuang 74,4% probabilitas sisanya. Tekan Langkah untuk melihat lanjutannya.

Tekan Putar, atau pakai Langkah untuk maju satu token demi satu, lalu ikuti teksnya bertambah. Greedy decoding adalah argmax di setiap posisi, sama dengan temperature 0. Cara ini cepat dan hasilnya selalu sama, jadi umum dipakai untuk jawaban faktual singkat dan prompt bergaya klasifikasi. Beam search menyimpan beberapa kandidat urutan, bukan satu, tetapi pada teks terbuka pengulangannya justru lebih parah. Holtzman et al. (2019) menunjukkan bahwa memaksimalkan likelihood menghasilkan teks yang datar dan berputar-putar, dan tulisan manusia jarang mengikuti jalur yang paling mungkin.

Langkah 3 dari 6: Temperature

Pertajam atau ratakan dengan logit / T

Temperature T1.00
"Once upon a time, there was a ___"p_i = softmax(z_i / 1.00)little25.6%young18.9%small12.7%king10.4%girl8.5%man7.0%beautiful5.7%dragon4.2%princess3.8%boy3.1%pada T = 1.00pada T = 1 (logit ilustratif)
Entropy
3.01 bit
Probabilitas top-1
25.6%
Pilihan efektif
8.1

T = 1 tidak mengubah distribusi model: batang solid sama dengan garis putus-putus. Hasil sampling menyebar ke sekitar 8,1 pilihan efektif.

Geser Temperature T dari 0,1 sampai 2,0 dan lihat batangnya menjauh dari garis putus-putus T = 1. Membagi setiap logit dengan T menskalakan semua selisih sekaligus, jadi peringkat token tidak pernah berubah, yang berubah hanya seberapa besar token teratas mendominasi. Saat T mendekati 0, hasilnya mendekati greedy decoding, dan saat T membesar, hasilnya mendekati distribusi seragam. Nama ini berasal dari distribusi Boltzmann dalam fisika. Pilihan efektif, 2^H, membaca entropy sebagai jumlah setara token yang sama-sama mungkin.

Langkah 4 dari 6: Top-k

Simpan k token yang paling mungkin

k (token yang disimpan)3
"Once upon a time, there was a ___"dinormalisasi ulang atas 3 token yang disimpanlittle44.7%young33.1%small22.2%kingdibuang (10.4%)girldibuang (8.5%)mandibuang (7.0%)beautifuldibuang (5.7%)dragondibuang (4.2%)princessdibuang (3.8%)boydibuang (3.1%)k = 3disimpansebelum normalisasi ulangdibuang
Token disimpan
3
Massa dibuang
42.8%
Top-1 setelah renorm.
44.7%

Pada prompt cerita, k = 3 membuang 42,8% probabilitas, termasuk kata yang masuk akal seperti "king". Nilai k yang tetap tidak memperhitungkan seberapa menyebar distribusinya.

Geser k dari 1 sampai 10 dan ganti prompt untuk melihat pengaruh pemotongannya pada masing-masing. Top-k mengurutkan token, menyimpan k tertinggi, dan membagi setiap probabilitas yang disimpan dengan totalnya sehingga jumlahnya kembali menjadi 1. Fan et al. (2018) memakai top-k dengan k = 10 untuk menghasilkan cerita. Kelemahannya, k bersifat tetap: pada distribusi yang runcing, top-k meloloskan token yang menurut model nyaris mustahil, dan pada distribusi yang datar, top-k membuang kata yang masuk akal. Banyak API menonaktifkan top_k secara default.

Langkah 5 dari 6: Top-p (Nucleus)

Simpan himpunan terkecil yang mencakup p

p (probabilitas kumulatif)0.90
"Once upon a time, there was a ___"littleyoungsmallkinggirlmanbeautifuldragonprincessboyp = 0.90nucleus: 8dalam nucleusprobabilitas kumulatifdibuang
Ukuran nucleus
8
Massa tersimpan
93.0%
Top-1 setelah renorm.
27.5%

Kurva kumulatif melewati p = 0.90 di token ke-8, jadi 8 token dipertahankan lalu dinormalisasi ulang. Ganti prompt: nilai p yang sama menyimpan 1 token pada prompt faktual.

Geser p dari 0,5 sampai 1,0 dan ganti kedua prompt sambil memperhatikan garis nucleus. Top-p, disebut juga nucleus sampling, diusulkan oleh Holtzman et al. (2019) untuk mengatasi masalah k yang tetap. Dengan mengurutkan token dan menyusuri kurva kumulatif sampai mencapai p, pemotongannya menyesuaikan diri dengan bentuk setiap distribusi. Nilai 0,9 sampai 0,95 umum dipakai. Filter terkait, min-p, menyimpan token yang probabilitasnya minimal sekian bagian dari probabilitas token teratas.

Langkah 6 dari 6: Menyatukan Semuanya

Temperature, filter, lalu ambil sampel

Temperature T0.70
Top-k (10 = mati)10
Top-p (1.00 = mati)0.90
T 0.7010 token›top-k 1010 token›top-p 0.907 token›sampel"small"probabilitas akhir · hasil dari 200 pengambilanlittle36.0% 74young23.5% 53▸small13.2% 18king10.0% 24girl7.5% 15man5.6% 12beautiful4.2% 4dragondibuang 0princessdibuang 0boydibuang 0probabilitas setelah filterjumlah 200 pengambilan ber-seed
seed 1
Token terpilih
"small"
Token tersisa
7
Berbeda dalam 200 pengambilan
7
Probabilitas top-1
36.0%

7 token lolos filter dan 200 pengambilan mengenai 7 di antaranya. Tekan Ambil ulang: pengambilan pertama berubah mengikuti seed, sedangkan jumlahnya tetap mendekati panjang batang.

Pilih preset, lalu tekan Ambil ulang beberapa kali dan bandingkan token terpilih dengan jumlahnya. Urutan yang umum, dipakai Hugging Face Transformers, menerapkan temperature dulu, lalu top-k, lalu top-p, kemudian mengambil sampel dari yang tersisa. Library lain memakai urutan berbeda, jadi angka yang sama bisa berperilaku sedikit berbeda antaralat. Setiap pengambilan memetakan satu angka acak seragam ke probabilitas kumulatif. Seed yang tetap membuat satu run bisa direproduksi, dan ini membantu saat men-debug prompt atau membandingkan pengaturan.

Apa itu temperature, top-k, dan top-p dalam sampling LLM?

Sampling adalah cara model bahasa mengubah skor untuk token berikutnya menjadi satu token terpilih. Di setiap langkah, model mengeluarkan logit untuk setiap token dalam vocabulary-nya, softmax mengubah logit menjadi probabilitas, dan aturan decoding memilih satu. Temperature membentuk ulang probabilitas itu, sedangkan top-k dan top-p membuang token yang kecil kemungkinannya sebelum pengambilan.

Setiap asisten chat, alat code completion, dan pembuat teks menyediakan sebagian pengaturan ini, biasanya sebagai temperature, top_k, dan top_p di API atau file konfigurasi. Temperature rendah cocok untuk kode, ekstraksi, dan jawaban faktual, ketika hanya satu output yang benar. Temperature lebih tinggi dengan filter top-p cocok untuk chat dan tulisan kreatif, ketika kata yang beragam membantu dan pengulangan merusak. Model yang sama bisa terasa presisi atau kreatif hanya karena beberapa angka ini.

Ide utama

  • Model bahasa mengeluarkan probabilitas untuk setiap token vocabulary, dan aturan decoding memilih salah satunya.
  • Greedy decoding selalu mengambil token teratas, jadi hasilnya deterministik dan bisa terjebak dalam pengulangan.
  • Temperature membagi logit dengan T: di bawah 1 mempertajam distribusi, di atas 1 meratakannya.
  • Top-k menyimpan token dalam jumlah tetap, yang terlalu banyak untuk prediksi yang yakin dan terlalu sedikit untuk prediksi yang terbuka.
  • Top-p menyimpan himpunan token terkecil yang mencakup probabilitas p, jadi ukurannya menyesuaikan diri di setiap langkah.
  • Library menerapkan langkah-langkah ini dalam urutan berbeda, dan random seed yang tetap membuat hasil sampling bisa direproduksi.

Ulasan singkat tentang topik ini

Pertanyaan umum

Apakah temperature 0 membuat LLM sepenuhnya deterministik?

Secara prinsip, temperature 0 berarti greedy decoding, jadi prompt yang sama memberi output yang sama. Dalam praktik, model yang di-host masih bisa sedikit berbeda karena perbedaan floating-point pada komputasi GPU per batch. Dua token dengan logit yang nyaris sama bisa bertukar urutan antar-run.

Apakah temperature dan top-p perlu diubah bersamaan?

Keduanya mengatur keacakan, jadi mengubah keduanya membuat efeknya sulit diprediksi. Pendekatan yang umum adalah menetapkan top-p sekali, misalnya 0,9, lalu menyetel temperature. Sebagian penyedia API menyarankan hanya mengubah salah satunya.

Temperature berapa yang cocok untuk menghasilkan kode?

Nilai rendah, dari 0 sampai sekitar 0,3, cocok saat yang dicari satu jawaban yang benar. Saat menghasilkan banyak kandidat program dan menguji masing-masing, temperature lebih tinggi seperti 0,8 memberi percobaan yang lebih beragam, sehingga peluang minimal satu program lolos jadi lebih besar.

Kenapa LLM suka mengulang-ulang?

Begitu sebuah frasa muncul di context, model sering memberi probabilitas tinggi untuk melanjutkannya, dan greedy decoding atau temperature rendah mengikuti jalur itu setiap kali. Sampling dengan top-p mengurangi pengulangan ini. Repetition penalty dan frequency penalty menurunkan logit token yang sudah muncul.

Penjelasan terkait

Referensi

  1. Holtzman et al. (2019), "The Curious Case of Neural Text Degeneration"
  2. Fan, Lewis, and Dauphin (2018), "Hierarchical Neural Story Generation"
  3. Nguyen et al. (2024), "Turning Up the Heat: Min-p Sampling for Creative and Coherent LLM Outputs"

Terakhir diperbarui