Stop sequences (language models) (ID)

From Systems analysis Wiki
Jump to navigation Jump to search

Stop Sequence (urutan penghentian) dalam konteks model bahasa besar (LLM) adalah urutan karakter atau token khusus yang memberi sinyal kepada model untuk menghentikan proses generasi teks[1]. Mekanisme ini merupakan komponen penting dari model bahasa autoregresif, yang memastikan penyelesaian respons secara terkendali dan dapat diprediksi.

Saat menggunakan stop sequence, model pada setiap langkah generasi memeriksa apakah teks yang telah dihasilkan diakhiri oleh salah satu urutan yang telah ditentukan. Jika kecocokan ditemukan, proses segera dihentikan, dan stop sequence itu sendiri tidak disertakan dalam keluaran akhir[2]. Hal ini memungkinkan pengembang untuk mengontrol batas respons secara tepat tanpa mengubah permintaan itu sendiri.

Prinsip Dasar Fungsi

Dalam model bahasa autoregresif, generasi teks berlangsung secara berurutan, satu token demi satu token. Pada setiap langkah, model memprediksi token berikutnya berdasarkan seluruh urutan sebelumnya (prompt masukan dan teks yang telah dihasilkan). Secara matematis, hal ini dinyatakan sebagai probabilitas bersyarat:

P(yty<t,x)

di mana yt adalah token yang sedang dihasilkan, y<t adalah urutan token yang telah dihasilkan sebelumnya, dan x adalah urutan masukan[3].

Mekanisme stop sequence berfungsi sebagai kriteria eksternal untuk menghentikan proses iteratif ini.

Jenis-jenis Urutan Penghentian

Terdapat beberapa jenis utama mekanisme penghentian yang dapat digunakan secara terpisah maupun dikombinasikan.

1. Token Akhir Urutan (EOS)

End-of-Sequence (EOS) adalah token khusus (misalnya, `<|endoftext|>`) yang tertanam dalam kosakata model dan dirancang untuk menandai akhir dari suatu fragmen teks yang logis. Model dilatih untuk menghasilkan token EOS ketika menganggap respons telah selesai, karena semua teks dalam kumpulan data pelatihan diakhiri dengan token ini[4]. Ketika token EOS terdeteksi, generasi secara otomatis dihentikan.

Penelitian menunjukkan bahwa keberadaan token EOS memengaruhi arsitektur attention: model mengembangkan mekanisme internal untuk menghitung posisi, yang namun demikian dapat membatasi kemampuannya untuk melakukan ekstrapolasi pada urutan yang jauh melebihi panjang contoh pelatihan[5].

2. Urutan yang Ditentukan Pengguna

Ini adalah string arbitrer yang ditentukan oleh pengembang untuk tugas tertentu. Urutan ini bukan bagian dari kosakata model, tetapi dilacak pada tingkat karakter. Contohnya meliputi:

  • Karakter baris baru: `\n` atau `\n\n` untuk berhenti setelah paragraf.
  • Penanda konteks: `Human:`, `User:`, atau `Q:` untuk memisahkan giliran bicara dalam dialog.
  • Penanda khusus: `###`, `</output>`, atau `END`.

3. Urutan Struktural

Ini adalah penanda khusus yang digunakan untuk mengakhiri elemen struktural tertentu, yang sangat penting dalam generasi konten berformat[1]:

  • Kode: tiga tanda backtick (```) untuk mengakhiri blok kode.
  • JSON/XML: kurung penutup (`}`) atau tag (`</element>`).

Implementasi Teknis dan Permasalahan

Deteksi stop sequence yang efektif merupakan tugas yang tidak sepele dan disertai sejumlah kesulitan.

Algoritma Deteksi dan Optimasi

Proses deteksi dalam sistem nyata mencakup:

  1. Pemeriksaan pada setiap langkah: Setelah setiap token baru dihasilkan, sistem memeriksa apakah keluaran saat ini diakhiri oleh salah satu stop sequence yang ditentukan.
  2. Penanganan kecocokan parsial: Sistem harus melacak situasi ketika sebagian urutan telah dihasilkan, tetapi kecocokan penuh belum ditemukan.
  3. Pemeriksaan multi-kriteria: Sebagian besar sistem (misalnya, OpenAI API) memungkinkan pemantauan beberapa (hingga empat) stop sequence secara bersamaan[2].

Dalam framework Hugging Face Transformers, untuk keperluan ini diimplementasikan kelas abstrak `StoppingCriteria`, yang memungkinkan pembuatan kriteria penghentian kustom, seperti `MaxLengthCriteria` (berdasarkan panjang) atau `EosTokenCriteria` (berdasarkan token EOS)[4].

Permasalahan dan Keterbatasan

  • Masalah tokenisasi: Ini adalah kesulitan teknis utama. Urutan karakter yang sama (misalnya, `\nUser:`) dapat dipecah menjadi token dengan cara yang berbeda tergantung pada konteks. Hal ini mempersulit deteksi yang andal, karena stop sequence dapat terbagi di antara beberapa token[5].
  • Performa: Pemeriksaan banyak stop sequence yang panjang pada setiap langkah dapat memperlambat generasi, terutama saat bekerja dengan urutan panjang secara real-time.
  • Positif palsu: Urutan yang ditentukan mungkin secara tidak sengaja muncul di tengah respons yang diinginkan, sehingga menyebabkan penghentian prematur. Oleh karena itu, penting untuk memilih penanda yang cukup unik dan spesifik (misalnya, `\n###\n`)[6].

Penerapan dan Skenario Penggunaan

Stop sequence merupakan alat yang ampuh untuk mengendalikan perilaku LLM.

  • Kontrol panjang dan biaya: Memungkinkan pembatasan ukuran maksimum respons dan, sebagai hasilnya, mengurangi penggunaan token, yang penting saat menggunakan API berbayar.
  • Sistem dialog: Digunakan untuk memisahkan giliran bicara para peserta secara jelas, agar model asisten tidak menghasilkan respons atas nama pengguna.
  • Generasi konten terstruktur: Sangat diperlukan untuk mendapatkan keluaran yang benar dalam format JSON, XML, atau saat menulis kode, mencegah penambahan informasi yang tidak perlu setelah struktur selesai[7].
  • Pencegahan perilaku yang tidak diinginkan: Membantu menghentikan generasi ketika muncul konten yang berulang atau tidak tepat (halusinasi).
  • Pelatihan dan fine-tuning: Dalam kumpulan data pelatihan, penanda unik (misalnya, `###`) sering digunakan sebagai stop sequence agar model belajar mengakhiri respons di tempat yang tepat[6].

Arah Penelitian Terkini

  • Kriteria penghentian adaptif: Pengembangan metode yang secara dinamis menentukan titik penghentian berdasarkan konteks dan kualitas teks yang dihasilkan.
  • Pendekatan berbasis entropi: Penggunaan entropi distribusi token sebagai kriteria. Entropi yang tinggi dapat mengindikasikan ketidakpastian model dan berfungsi sebagai sinyal untuk menghentikan generasi.

Tautan

  • Dokumentasi OpenAI tentang penggunaan stop sequences
  • Dokumentasi Hugging Face tentang StoppingCriteria

Daftar Pustaka

  • Sutskever, I.; Vinyals, O.; Le, Q. V. (2014). Sequence to Sequence Learning with Neural Networks. arXiv:1409.3215.
  • Vaswani, A. et al. (2017). Attention Is All You Need. arXiv:1706.03762.
  • Keskar, N. S. et al. (2019). CTRL: A Conditional Transformer Language Model for Controllable Generation. arXiv:1909.05858.
  • Holtzman, A. et al. (2020). The Curious Case of Neural Text Degeneration. arXiv:1904.09751.
  • Brown, T. et al. (2020). Language Models are Few-Shot Learners. arXiv:2005.14165.
  • Zong, M.; Krishnamachari, B. (2022). A Survey on GPT-3. arXiv:2212.00857.
  • Zhao, Y. et al. (2022). Calibrating Sequence Likelihood Improves Conditional Language Generation. arXiv:2210.00045.
  • Hu, J. C.; Cavicchioli, R.; Capotondi, A. (2023). A Request for Clarity over the End-of-Sequence Token in the Self-Critical Sequence Training. arXiv:2305.12254.
  • Zhu, W. et al. (2024). Improving Open-Ended Text Generation via Adaptive Decoding. arXiv:2402.18223.
  • Zhang, H. et al. (2024). Adaptable Logical Control for Large Language Models. arXiv:2406.13892.
  • Suh, Y. J. et al. (2025). The Curious Case of Sequentially Mis-calibrated Language Models. arXiv:2205.11916.

Catatan

  1. 1.0 1.1 «Stop Sequence: Understanding & Setting It Correctly». Promptitude.io Help Center. [1]
  2. 2.0 2.1 «How do I use stop sequences in the OpenAI API?». OpenAI Help Center. [2]
  3. «How to use stop sequences?». Vellum. [3]
  4. 4.0 4.1 Brown, Tom, et al. «A Survey on GPT-3». arXiv:2212.00857 [cs.CL], 1 дек. 2022 г. [4]
  5. 5.0 5.1 Suh, Y. J., et al. «The Curious Case of Sequentially Mis-calibrated Language Models». arXiv:2205.11916 [cs.CL], 24 мая 2022 г. [5]
  6. 6.0 6.1 Eric, Mihail. «How to Finetune GPT3». mihaileric.com. [6]
  7. Corin, Daniel. «Way Enough - Cursor Triple Backticks Stop Sequence». danielcorin.com. [7]