Stop sequences (language models) (TR)

From Systems analysis wiki
Jump to navigation Jump to search

Stop Sequence (durdurma dizisi), büyük dil modelleri (LLM) bağlamında, modele metin üretimini durdurması gerektiğini bildiren özel bir karakter veya token dizisidir[1]. Bu mekanizma, otoregresif dil modellerinin önemli bir bileşeni olup yanıtın kontrollü ve öngörülebilir biçimde sonlandırılmasını sağlar.

Stop sequence kullanıldığında model, her üretim adımında hâlihazırda üretilen metnin belirlenen dizilerden biriyle sonlanıp sonlanmadığını denetler. Eşleşme bulunduğunda süreç derhal durdurulur; bu sırada stop sequence'in kendisi çıktıya dahil edilmez[2]. Bu sayede geliştirici, isteğin kendisini değiştirmeksizin yanıt sınırlarını hassas biçimde denetleyebilir.

Temel İşleyiş İlkeleri

Otoregresif dil modellerinde metin üretimi, token token sıralı biçimde gerçekleşir. Her adımda model, tüm önceki diziyi (girdi prompt'u ve hâlihazırda üretilmiş metin) temel alarak bir sonraki token'ı tahmin eder. Bu durum matematiksel olarak koşullu olasılık biçiminde ifade edilir:

P(yty<t,x)

Burada yt — üretilen geçerli token, y<t — daha önce üretilmiş token dizisi, x ise girdi dizisidir[3].

Stop sequence mekanizması, bu yinelemeli süreci kesmek için dışsal bir kriter işlevi görür.

Durdurma Dizisi Türleri

Hem ayrı ayrı hem de birlikte kullanılabilen birkaç temel durdurma mekanizması türü mevcuttur.

1. Dizi Sonu Token'ları (EOS)

End-of-Sequence (EOS) — örneğin `<|endoftext|>` gibi — modelin söz dağarcığına yerleştirilmiş ve bir metnin mantıksal parçasının sonunu belirtmeye yönelik özel token'lardır. Model, eğitim kümesindeki tüm metinler bu token ile sona erdiğinden, yanıtı tamamlandığında EOS token'ı üretmeyi öğrenir[4]. EOS token'ı algılandığında üretim otomatik olarak durur.

Araştırmalar, EOS token'larının varlığının dikkat mimarisini etkilediğini ortaya koymaktadır: modeller konum sayma için içsel mekanizmalar geliştirmekte, ancak bu durum eğitim örneklerinin uzunluğunu önemli ölçüde aşan dizilerde dışa aktarım yeteneklerini kısıtlayabilmektedir[5].

2. Kullanıcı Tanımlı Diziler

Bunlar, geliştiricinin belirli bir görev için tanımladığı keyfi dizelerdir. Model söz dağarcığının parçası değillerdir; ancak karakter düzeyinde izlenirler. Örnekler şunlardır:

  • Satır sonu karakterleri: Bir paragrafın ardından durdurmak için `\n` veya `\n\n`.
  • Bağlam işaretçileri: Diyalogda konuşmaları ayırmak için `Human:`, `User:` veya `Q:`.
  • Özel işaretçiler: `###`, `</output>` veya `END`.

3. Yapısal Diziler

Bunlar, belirli yapısal öğelerin sonlandırılması için kullanılan özelleşmiş işaretçilerdir; biçimlendirilmiş içerik üretiminde kritik önem taşırlar[1]:

  • Kod: Kod bloğunu sonlandırmak için üçlü geri tırnak (```).
  • JSON/XML: Kapanış parantezleri (`}`) veya etiketler (`</element>`).

Teknik Uygulama ve Sorunlar

Stop sequence'in etkin biçimde algılanması, bir dizi güçlükle birlikte gelen önemsiz olmayan bir görevdir.

Algılama Algoritması ve Optimizasyon

Gerçek sistemlerde algılama süreci şunları kapsar:

  1. Her adımda denetim: Yeni bir token üretildikten sonra sistem, geçerli çıktının belirlenen stop sequence'lerden biriyle sonlanıp sonlanmadığını denetler.
  2. Kısmi eşleşmelerin işlenmesi: Sistem, dizinin bir bölümünün üretilmiş ancak tam eşleşmenin henüz gerçekleşmemiş olduğu durumları izlemelidir.
  3. Çok kriterli denetim: Çoğu sistem (örneğin OpenAI API), aynı anda birden fazla (dörde kadar) stop sequence'in izlenmesine olanak tanır[2].

Hugging Face Transformers çerçevesinde bunun için `StoppingCriteria` soyut sınıfı uygulanmıştır; bu sınıf, `MaxLengthCriteria` (uzunluğa göre) veya `EosTokenCriteria` (EOS token'ına göre) gibi özel durdurma kriterleri oluşturmayı mümkün kılar[4].

Sorunlar ve Sınırlılıklar

  • Tokenizasyon sorunu: Bu, temel teknik güçlüktür. Aynı karakter dizisi (örneğin `\nUser:`), bağlama göre farklı biçimlerde token'lara ayrılabilir. Stop sequence birden fazla token arasına bölünebileceğinden bu durum güvenilir algılamayı zorlaştırır[5].
  • Performans: Her adımda çok sayıda uzun stop sequence'in denetlenmesi, özellikle gerçek zamanlı uzun dizi işlemlerinde üretimi yavaşlatabilir.
  • Yanlış tetiklemeler: Tanımlanan dizi, istenen yanıtın ortasında tesadüfen ortaya çıkarak erken sonlanmaya yol açabilir. Bu nedenle yeterince özgün ve spesifik işaretçiler (örneğin `\n###\n`) seçmek önemlidir[6].

Kullanım Alanları ve Senaryolar

Stop sequence'ler, LLM davranışını yönetmek için güçlü bir araçtır.

  • Uzunluk ve maliyet kontrolü: Yanıtın maksimum boyutunu ve dolayısıyla token tüketimini sınırlamaya olanak tanır; bu durum ücretli API kullanımında önem taşır.
  • Diyalog sistemleri: Asistan modelin kullanıcı adına yanıt üretmemesi için konuşmacıların replikalarını net biçimde ayırmak amacıyla kullanılır.
  • Yapılandırılmış içerik üretimi: JSON, XML gibi biçimlerde veya kod yazımında doğru çıktı elde etmek için vazgeçilmezdir; yapı tamamlandıktan sonra gereksiz bilgi eklenmesini önler[7].
  • İstenmeyen davranışların önlenmesi: Tekrarlayan veya hatalı içeriğin (halüsinasyon) ortaya çıkması durumunda üretimi kesmek için yardımcı olur.
  • Eğitim ve ince ayar (fine-tuning): Eğitim veri kümelerinde, modelin yanıtı doğru noktada sonlandırmayı öğrenmesi amacıyla sıklıkla özgün işaretçiler (örneğin `###`) stop sequence olarak kullanılır[6].

Güncel Araştırma Yönelimleri

  • Uyarlanabilir durdurma kriterleri: Bağlama ve üretilen metnin kalitesine göre dinamik olarak sonlanma noktasını belirleyen yöntemlerin geliştirilmesi.
  • Entropi tabanlı yaklaşımlar: Token dağılımının entropisinin kriter olarak kullanılması. Yüksek entropi, modelin belirsizliğine işaret edebilir ve üretimi durdurma sinyali olarak değerlendirilebilir.

Dış bağlantılar

  • Stop sequence kullanımına ilişkin OpenAI belgeleri
  • StoppingCriteria için Hugging Face belgeleri

Literatür

  • 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.

Notlar

  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]