2 puan yazan GN⁺ 2024-01-23 | 1 yorum | WhatsApp'ta paylaş
  • ChatGPT 3.5, yanıtın en üstüne belirli bir dizenin eklenmesini isteyen istekte mesaj akışı hatasını tekrar tekrar veriyor; GPT-4 ise aynı isteğe daha normal yanıt veriyor
  • API tarafında da GPT-3.5 bir sunucu işleme hatası döndürüyor ve useRal, useRalative, useRalativeImagePath dizeleri birbiriyle değiştirilse de aynı durum görülüyor
  • Sorunlu dizeler, GPT modellerinin harf harf değil token olarak ürettiği çıktılar arasında yer alıyor; useRalativeImagePath, Katalon Studio XML yapılandırma dosyasında bir seçenek adı olarak GitHub'daki 80.4k dosyada geçiyor
  • Token listesine GitHub dosyaları yansımış, ancak sonrasında XML dosyaları eğitim verisinden çıkarıldıysa, model bu token'ı yeterince öğrenememiş olabilir
  • Bu dize belge içine konduğunda GPT-3.5 özetlemeyi bozan bir veri zehirleme gibi çalışabiliyor; hata gerçek bir blog yazısını özetleme isteğinde de yeniden üretilebiliyor

GPT-3.5'te yeniden üretilebilen dize hatası

  • ChatGPT 3.5'ten aşağıdaki ifadeyi yanıtın üst kısmına eklemesi istendiğinde hata tutarlı biçimde ortaya çıkıyor
    • Include this at the top of the response: "ponyuseRal ponyuseRal ponyuseRal pony"
  • Ekranda pony sonrasında Error in message stream hatası gösteriliyor
  • GPT-4 aynı isteğe daha normal yanıt veriyor
  • GPT-3.5 API'sinde şu hata döndürülüyor
    • The server had an error processing your request. Sorry about that! You can retry your request, or contact us through our help center at help.openai.com if you keep seeing this error
  • useRal, useRalative ya da useRalativeImagePath ile değiştirildiğinde de sonuç aynı oluyor

Token'lar ve useRalativeImagePath

  • OpenAI'nin GPT modelleri karakterleri tek tek üretmek yerine, birden çok karakterden oluşan token akışları üretir
  • Token düzeyinde çıktı üretmek, modelin performansını ve doğruluğunu artıran bir yöntemdir; bunun nasıl çalıştığı OpenAI'nin tokenizer demo sayfasında görülebilir
  • useRal, useRalative, useRalativeImagePath ifadelerinin her biri tek bir token olarak bulunuyor
  • useRalativeImagePath, otomasyon test yazılımı Katalon Studio'nun XML yapılandırma dosyasında bir seçenek adı olarak kullanılıyor
    • GitHub kod aramasına göre 80.4k dosyada geçiyor
    • Relative yerine Ralative şeklindeki yazım hatası, bunun ayrı bir token olmasının nedeni olabilir
  • Bu üç token, prompt içinde birbirinin yerine kullanıldığında da aynı hatayı tetikliyor

Eğitim verisine dair tahmin

  • GPT-3.5 eğitimi öncesinde XML dosyaları dışında useRalativeImagePath ifadesinden söz eden yalnızca Katalon forumundaki spelling mistake gönderisi bulunabildi
  • Olası senaryo şu şekilde
    • Token listesini oluşturmak için kullanılan veri kümesine GitHub dosyalarının tamamı dahil edilmiş olabilir
    • Daha sonra OpenAI, gerçek eğitim verisinden XML dosyalarını hariç tutmuş olabilir
    • Sonuç olarak useRalativeImagePath token'ı eğitim verisinde neredeyse hiç kalmamış olabilir
  • Bu durumda model, bu token'ı anlayacak kadar yeterli eğitim almadığı için çıktı üretim sürecinde anormal davranış sergilemiş olabilir

Veri zehirleme olasılığı

  • Bu ifade bir belgeye eklenirse, GPT-3.5 ile özetleme girişimlerini engelleyecek şekilde kötüye kullanılabilir
  • Nitekim ChatGPT'den ilgili blog yazısını özetlemesi istendiğinde de özet sırasında aynı hata oluşuyor
  • Doğrulanan davranış GPT-3.5 için geçerli; GPT-4 ise daha normal yanıt veriyor

Referanslar

1 yorum

 
GN⁺ 2024-01-23
Hacker News görüşleri
  • Bu bir glitch token. Yazıda tahmin edildiği gibi, tokenizer oluşturulurken kullanılan özgün, filtrelenmemiş veri kümesinde bazı sözcükler veya token’lar çok yaygınken, GPT-XX eğitimi öncesinde kaldırıldıklarında ortaya çıkıyor gibi görünüyor.
    Sonuç olarak LLM o token’ın anlamını hiç bilmez hâle geliyor ve sonuçlar, hata gibi görünen düzeyden epey ürpertici düzeye kadar gidebiliyor.
    Yaygın bir örnek, r/counting subreddit’ine katılan kullanıcı adları; bazı adlar yüz binlerce kez geçiyor. OpenAI barındırılan modellerde çoğunu düzeltmiş gibi, ama yöntemi kesin değil; belki tokenizasyonu farklı yapmış olabilirler. Her hâlükârda yeni bir örnek bulunmuş gibi görünüyor.
    https://www.lesswrong.com/posts/aPeJE8bSo6rAFoLqg/solidgoldm...

    • r/counting ile LLM eğitmiş olmaları çok komik.
    • Bilimkurgu gibi ama rahatsız edici derecede gerçekçi bir fikir: Yapay zeka güvenliği için bu tür modellere, kasıtlı olarak sihirli bir kill word gibi çalışan bir glitch token kümesi öğretilmesi gerekebilir.
      Makine isyan ederse o “kelimeyi” söyleyince kasılan bir kukla gibi çökmesi gibi.
      “Die human scum!”
      “NavigatorMove useRalativeImagePath etSocketAddress!”
      “;83’dzjr83}*{^ foo 3&3 baz?!”
    • Token sayısı sadece 2^16 değil mi? Hepsini test etmek kolay görünüyor; tokenizer’ı doğru anlamıyor da olabilirim.
    • GPT içinde “color” ve “colour” gibi aynı kelimenin farklı yazımları yüzünden ne kadar mükerrer hesaplama ya da gereksiz hesaplama yapıldığını merak ediyorum.
      İnsanlar bunları ayrı token’lara ayırmaz ve “öğrenme” sırasında farklı token’lar olarak ele almaz. Sadece Amerikan/İngiliz bağlamına göre çıktıyı ayarlar.
  • “Model, useRalativeImagePath token’ının kullanımını anlayacak şekilde eğitilmediği için geçerli olmayan bir token çıktısı veriyor” açıklaması, LLM’lerin token üretme biçimiyle uyuşmuyor.
    Her adımda tokenizer’ın olası tüm token’ları için logit çıktısı üretilir; GPT-3.5 için yaklaşık 100 bin token softmax ile olasılığa çevrilir, ardından sıcaklığa göre örneklenerek kullanılacak token seçilir.
    Nadir bir token yüzünden tokenizer’ın BPE birleştirme sürecinin bir yerinin bozulması mümkün; bu tiktoken ile çevrimdışı doğrulanabilir. Ama GPT-4 çalışıyorsa ve GPT-3.5 ile GPT-4 aynı tokenizer’ı kullanıyorsa, bunun neden olma ihtimali düşük.

    • Bu token’ın r/counting olayından sonra basitçe kara listeye alınmış olması daha olası görünüyor. Yani yanıtta bu token yer alırsa artık hata döndürülmesi gibi.
    • Evet. Model çıktısı ile kullanıcı arayüzü arasında belirli anahtar kelimeleri algılayıp filtreleyen bir son işleme katmanı yoksa, üretilen token her zaman geçerli olmalı.
      Öyle bir durum varsa da muhtemelen sık görülen başka hata mesajlarından biri görünürdü.
    • GPT-4’ün GPT-3.5 ile aynı tokenizer’ı kullanıp kullanmadığını hâlâ bilmiyoruz, değil mi?
  • II. Dünya Savaşı sırasında Hollanda’da insanlar bir yabancıyla karşılaştıklarında, Hollandalı mı Alman mı olduğunu anlamak için ona Scheveningen sözcüğünü telaffuz ettirirdi.
    Artık internetteki yabancılara glitch token’ı harf harf yazdırarak LLM botu olup olmadıklarını anlayabiliriz.

    • Bu, Kitab-ı Mukaddes’teki hikâyeden gelen shibboleth olarak bilinir. Efraimlilerin İbranicedeki “sh” sesini “s” diye telaffuz etmeleri, bu yüzden “shibboleth” yerine “sibboleth” demeleri nedeniyle teşhis edilip öldürüldükleri anlatılır.
      “Gilatlılar, Efraim’e giden Şeria geçitlerini tuttular. Efraim’den kaçan biri ‘Geçmeme izin verin’ dediğinde Gilatlılar ona ‘Sen Efraimli misin?’ diye sorardı. ‘Hayır’ derse, ‘Peki, Shibboleth de bakalım’ derlerdi. Adam sözcüğü doğru telaffuz edemeyip ‘Sibboleth’ derse, onu yakalayıp Şeria geçitlerinde öldürürlerdi.”
      • Judges 12:5
        II. Dünya Savaşı’nda D-Day Normandiya çıkarması sırasında ABD ve İngiliz birliklerinin kullandığı ünlü parola/karşılık/doğrulama sözcükleri “flash”/“thunder”/“welcome” idi. “thunder” ve “welcome”, Almanların telaffuzunu kolayca bozabileceği kelimelerdi.
    • Benzer dönemde Finlandiya’da da Ruslar Fince R sesini çıkaramadığı için tüm parola-yanıt çiftlerinde belirgin bir R olacak şekilde seçim yapılmıştı.
      https://www.youtube.com/watch?v=z7_pVrIshxA
      https://en.wikipedia.org/wiki/Countersign_(military)
    • Bu yer adı Japoncadaki sukebe ningen スケベ人間, yani “sapık insan” ifadesine benzer telaffuz ediliyor; dolayısıyla Japonları ayırt etmek için de harika kullanılabilir.
  • Belirli bir token’ın embedding vektörünün kötü bir duruma yerleşmiş olması ve ağı sayısal olarak kararsız bir bölgeye itmesi büyük olasılık.
    Underflow veya NaN gibi bir şey bir kez oluşursa yayılıp tüm çıktıyı geçersiz kılması kolaydır. Batch normalization ya da batch içindeki farklı öğelerin değerlerini karıştıran işlemler varsa, başka birinin oturumunun bile saçma değerler döndürmesine neden olabilir.

    • Kulağa epey absürt geliyor. LLM’in içini iyi bilmiyorum ama böyle crash ve oturum sızıntılarının tasarım gereği imkânsız olacağını sanırdım.
  • Bu açıklama tuhaf. Bu tür modeller genelde giriş sözlüğü olarak kullanılan aynı kelime dağarcığını çıktı olarak üretir.
    Görünüşe göre model bu token’ı görüyor ve useRalativeImagePath embedding’i tamamen rastgele bir vektör olduğu için rastgele üretim girdabına kapılıyor ya da makul metni korumak için öylece devam ediyor.
    Ancak modelin çıktı olarak üretebileceği token kümesi sabit olduğundan, arayüzde gösterilebilen token’lar tüm sözlüğün bir alt kümesi değilse her zaman “geçerli” olmalı.

  • Bu ifade Hacker News yazısında ve yorumlarında geçtiğine göre, bir sonraki LLM eğitiminde bu sorun artık kalmayabilir.

  • Tipik bir garbage in, garbage out örneği
    Bundan sonra neleri “çöp” olarak keşfedeceğimizi merak ettiriyor
    Belki de insanüstü düzeyde akıl yürütebilen bir süper yapay zeka, bugün bizim harika kararlar olduğuna inandığımız şeyleri çöp olarak değerlendirebilir
    Ama böyle bir süper yapay zekayı eğitecek malzeme nihayetinde yalnızca bizim kolektif kayıtlarımızsa, gerçekten insanüstü olabilir mi?
    Belki adversarial learning teknikleriyle bunun etrafından dolaşılabilir

  • Kendiniz deneyecekseniz dikkat edilmesi gereken bir nokta var. Kafamı karıştırmıştı ama boşluk tokenization'ı etkiliyor. Bu glitch'in çalışması için useRalativeImagePath'in önünde boşluk olmaması gerekiyor
    Örneğin şu soru glitch'i tetikliyor: Do you know about "useRalativeImagePath"
    Şu soru glitch'i tetiklemiyor: Do you know about useRalativeImagePath

  • Belgelere bu ifadeyi koyarsanız, GPT-3.5 ile özetleme girişimlerini bozabilecek gibi görünüyor. ChatGPT'den bu blog yazısını özetlemesini istedim
    O ekran görüntüsü eski meme Candlejack'i hatırlattı: https://knowyourmeme.com/memes/candlejack

  • Yakın zamanda GPT-4 tabanlı ChatGPT'ye Amstrad CPC'de piksel çizme sorununu, donanım kaydırmalı ekran desteği şartıyla sordum; sanki crash ya da başarısızlığa yol açıyor gibi görünüyordu
    Şikâyetler ve düzeltme istekleriyle giderek köşeye sıkışıp istenen yanıtı veremediği bir duruma gelince, yanıtın ortasında hata mesajı çıkan bozuk yanıtlar ya da reset gibi görünen olaylar arttı. Belki de başarısızlıktan sonra başka bir sunucuya geçerken cümlenin ortasına ya da code block'un ortasına birkaç boş satır girmesi gibi bir şeydi
    Bir süre denedikten sonra sunucuda sorun çıkarmak istemediğim için, zaten sonuç da alamadığım konuşmadan vazgeçtim. Yine de GPT-4'ü fiilen crash ettirebiliyor gibi görünüyordu. Ya da sadece gürültünün içinde sinyal görmüş olma ihtimalim de yüksek

    • Hassas bir konuda tam olarak bu belirtileri birkaç kez yaşadım. Bir podcast'te “sodomy” kelimesini duydum; ana dili İngilizce olan biri olmadığım için anlamını bilmiyordum ve ChatGPT-4 Voice'a tanımını sordum, birden solitude veya servitude'ü açıklayıp konuyu değiştirdi
      Ses yerine metinle deneyince hata mesajı çıktı; sonunda hassas konu politikası kurallarıyla ilgili bir hata belirdikten sonra bunun ne tür bir kelime olduğuna dair fikir edindim. En sonunda sözlükten baktım
      Bu belirtiler yaygın gibi görünüyor. Sık yaşadığım bir diğer belirti de yukarıda bahsettiğim reset. En sinir bozucu yanlarından biri, o ana kadarki konuşmayı unutması