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
- Softmax, Logit, dan Temperature · Mengubah skor mentah menjadi probabilitas
- Language Modeling · Memprediksi token berikutnya, tujuan yang menggerakkan GPT, BERT, dan NLP modern
- Decoder-Only Transformer · Arsitektur di balik GPT dan LLM modern
- Entropy dan Cross-Entropy · Mengukur kejutan, ketidakpastian, dan kualitas prediksi
- KV Cache · Kenapa LLM menyimpan key dan value di cache, dan berapa biayanya
- Quantization · Mengecilkan weight model menjadi 8 dan 4 bit
Referensi
- Holtzman et al. (2019), "The Curious Case of Neural Text Degeneration"
- Fan, Lewis, and Dauphin (2018), "Hierarchical Neural Story Generation"
- Nguyen et al. (2024), "Turning Up the Heat: Min-p Sampling for Creative and Coherent LLM Outputs"
Terakhir diperbarui