1 puan yazan GN⁺ 2024-11-15 | 1 yorum | WhatsApp'ta paylaş
  • Birden fazla LLM aynı koşullarda satranca sokulduğunda çoğu açılıştan sonra çöktü; ancak yalnızca gpt-3.5-turbo-instruct, Stockfish’in en düşük zorluk seviyesine karşı çok güçlü performans gösterdi
  • Deneyde LLM beyaz olarak oynatıldı, Stockfish’in en düşük zorluk seviyesiyle karşılaştırıldı ve her hamleden sonraki tahta durumu satranç motorunun centipawn puanı ile değerlendirildi
  • llama-3.2-3b, llama-3.1-70b, Qwen-2.5-72b, command-r-v01, gemma-2-27b, gpt-3.5-turbo, gpt-4o-mini, gpt-4o, o1-mini modellerinin hiçbiri gpt-3.5-turbo-instruct seviyesine yaklaşamadı
  • Benzer ailelerden modeller karşılaştırıldığında instruction/chat ince ayarının satranç performansını düşürdüğü görüldü; ancak bozulma miktarı modele göre küçükten çok büyüğe değişti
  • Açık modellerde, prompt’un sonundaki tek bir boşluğun performansı büyük ölçüde değiştirdiği bir tokenizer sorunu ortaya çıktı; satranç notasyonu girdisi LLM’in iç temsillerine ve üretim kısıtlarına hassas tepki veriyor

Deney düzeni ve değerlendirme yöntemi

  • LLM’e, bir satranç büyükustası gibi bir sonraki hamleyi seçmesini isteyen bir prompt verildi; girdi ise kısmen ilerlemiş bir satranç oyun kaydıydı
    • Notasyonda e4, Rdf8, R1a3 gibi standart cebirsel notasyon kullanıldı
    • Hamle numarası yazmaması ve seçiminin gerekçesini açıklamaması yönünde talimatlar da yer aldı
  • Tüm oyunlarda LLM beyaz olarak oynadı; rakibi ise standart satranç yapay zekası Stockfish’in en düşük zorluk seviyesiydi
  • Her hamleden sonraki tahta durumu bir satranç motoruyla puanlanarak model performansları karşılaştırıldı
    • Birim centipawn idi; bir piyon 100 puan kabul edildi ve konumsal değer de hesaba katıldı
    • Oyun bittiğinde LLM galibiyeti +1500, beraberlik 0, yenilgi -1500 olarak işlendi

Açılıştan sonra hızla zayıflayan modeller

  • llama-3.2-3b, 3 milyar parametreli bir base model; 50 oyunun tamamını kaybetti
    • Birkaç hamle boyunca standart açılışlar oynayabildi, ancak kısa süre sonra taş kaybetmeye başladı
    • Rakip Stockfish’in en düşük ayarı olmasına rağmen hepsini kaybetti
  • 70 milyar parametreli llama-3.1-70b sadece biraz daha iyiydi; yine de çok kötü sonuçlar verdi
  • llama-3.1-70b-instruct, Qwen-2.5-72b, command-r-v01, gemma-2-27b de aynı şekilde test edildi, ancak güçlü satranç performansı gösteremedi
  • Birkaç oyun oynatılan llama-3.1-405b de gpt-3.5-turbodan daha büyük bir model olmasına rağmen sonuçları hâlâ kötüydü

İstisnai derecede güçlü olan gpt-3.5-turbo-instruct

  • gpt-3.5-turbo-instruct, OpenAI’ın kapalı bir modeli olduğu için ayrıntıları belirsiz; ancak 10 denemede çok iyi performans gösterdi
  • Stockfish zorluğu birkaç seviye artırıldığında bile tüm oyunları kazanacak kadar güçlüydü
  • Benzer adlı gpt-3.5-turbo, daha sohbet odaklı ayarlanmış bir modeldir ve satranç performansı gpt-3.5-turbo-instructtan büyük ölçüde farklıydı
  • gpt-4o-mini, gpt-4o, o1-mini de test edilenler arasındaydı; gpt-4o biraz daha yavaş kaybetti, ancak tüm oyunlarda yenildi
  • İnternetteki LLM satranç deneyleri akışı, 2023 Eylül-Ekim döneminde ileri amatör seviyede olduklarına dair ilginin artmasıyla başlamış; son modellerde ise yeniden açılıştan sonra çökme görünümüne dönmüştü

instruction/chat ince ayarı ve satranç performansı

  • Benzer ailelerde base’e yakın modeller ek ince ayarlı modellerle karşılaştırıldığında, ek instruction ince ayarının her durumda satranç performansını kötüleştirdiği görüldü
  • Bozulma miktarı sabit değildi
    • İki durumda fark küçüktü
    • Bir durumda fark çok büyüktü
  • gpt-3.5-turbo-instruct adı, alışılmış adlandırma geleneğinden farklı yorumlanmalı
    • Burada gpt-3.5-turboya göre base model’e daha yakın bir model olarak ele alınıyor
    • Bu, normalde instruct veya it eklerinin daha fazla sohbet/talimat izleme ayarı anlamına gelmesinin tersidir

Olası neden adayları

  • Büyük base model satranç oynayabiliyor, ancak instruction ince ayarı bunu bozuyor olabilir

    • Deney sonuçlarıyla uyumlu, ancak daha büyük llama-3.1-405b modelinin de kötü sonuç vermesi bir karşı örnek
  • gpt-3.5-turbo-instruct daha fazla satranç oyunuyla eğitilmiş olabilir

    • Tüm modellerin çok sayıda satranç oyunu üzerinde eğitilmiş olması muhtemel, ancak tam miktarı bilmek zor
  • Transformer mimarisi farkları etkili olmuş olabilir

    • Llama ailesi modellerinin satrançta özellikle zayıf olma olasılığını da dışlamak zor
  • Farklı veri türleri arasında rekabet olmuş olabilir

    • Yalnızca satranç oyunlarıyla eğitilen Transformer satrancı çok iyi oynayabilir
    • gpt-3.5-turbo-instruct, satranç oyunu oranı daha yüksek verilerle eğitildiyse parametrelerin daha büyük bir bölümü satranca ayrılmış olabilir
    • Bu hipotez doğruysa, yeterince büyük bir model satranç oyunu oranı düşük olsa bile yeterli satranç verisi öğrendiğinde satrancı iyi oynayabilmeli

Uygulama ayrıntıları ve kısıtlar

  • Açık modeller doğrudan çalıştırıldı; OpenAI dışındaki modeller açık model olarak sınıflandırıldı
  • Açık modellerin çalıştırılmasında Q5_K_M quantization kullanıldı
  • Açık modellerde mevcut yasal hamleler doğrudan oluşturuldu ve llama.cpp grammars ile çıktı kısıtlanarak her zaman yasal hamle çıkması sağlandı
  • OpenAI modelleri tam grammar desteği sunmadığından en fazla 10 kez üretim yaptırıldı; yine de yasal hamle çıkmazsa rastgele bir hamle seçildi
  • Sohbet modelleri olan llama-3.1-70b-instruct, gemma-2-27b-it, gpt-3.5-turbo, gpt-4o-mini, gpt-4o için ayrı bir system prompt kullanıldı
  • o1-mini için system prompt değiştirilemediğinden olduğu gibi çalıştırıldı
  • Açık modeller temperature 0.7 ile, OpenAI modelleri ise varsayılan değerlerle çalıştırıldı

Prompt boşluğu ve tokenizer’daki tuhaf olgu

  • Açık modellerde 1. e4 e5 2. gibi sonunda boşluk bulunan prompt’lar, 1 e4 e5 2. gibi boşluksuz biten prompt’lara göre çok daha kötü performans verdi
  • Nedenin tokenizer ile ilgili olduğu değerlendiriliyor
    • Llama tokenizer’ı 1. sonrasında e dizisini tek bir token olarak üretir
    • Bu, bir boşluk token’ının ardından e üretmekle aynı şey değildir
    • Girdinin sonuna boşluk koyup sonraki token’ı üretmesini istemek modeli kafa karıştırıcı bir duruma sokar
  • Uygun işlem yöntemi, girdinin son token’ını silip silinen dizeyle başlayan tüm dizeler için kısıtlı üretim yapmaya dayanan token healing yöntemidir
  • Uygulamada token healing yerine boşluk çıkarıldı; grammar’ın boşluk üretebilmesi veya üretmeyebilmesi sağlandı ve ardından mevcut yasal hamle ile isteğe bağlı boşluk ürettirildi
  • Güncellemede, bu olgunun nedeninin gerçekten anlaşıldığı ve doğru açıklamayı henüz kimsenin bulamadığına dair bir ipucu eklendi

OpenAI optimizasyonu olasılığı

  • Bir varsayım, OpenAI’ın satranç performansına yönelik ilgiyi görüp gpt-3.5-turbo-instructun satranç performansını artırmak için eğitim verisi, fine-tuning veya algoritma tarafında bir şeyi optimize etmiş olabileceği
  • Aynı varsayıma göre bu optimizasyon, maliyet ya da başka işlevlerde gerileme gibi trade-off’lar nedeniyle sonraki modellerde korunmamış olabilir
  • Bu, net bir kanıt değil; “OpenAI bunu kasıtlı yaptı” düzeyinde bir tahmin ve zamanlamanın uyup uymadığı da kesin değil

1 yorum

 
GN⁺ 2024-11-15
Hacker News yorumları
  • Yazı bariz bir olasılığı kaçırmış gibi: OpenAI satrancı “kazanılması gereken” bir benchmark olarak görüp gpt-3.5-turbo-instruct içinde yalnızca satranca özel işlem yapmış olabilir; sonraki modellere ise sürekli medya ilgisi yaratmadığı için bu özel işlemi koymamış olabilir

    • Bence tam olarak bu. Satranç değerlendirmesinin eklendiği pull request burada: https://github.com/openai/evals/pull/45
    • Benim de aynı şüphem var. LLM’in “satranç öğrenmiş” olmasından ziyade, satranç oyununu tanıyıp talimatları bir satranç motoruna aktarmayı “öğrenmiş” olması mümkün. Öyleyse hiç etkileyici değil
    • Bu epey olası görünüyor, ama özel işlemin LLM’in içine pekiştirmeli öğrenme ile mi enjekte edildiğini, yoksa OpenAI API çağrısının öbür tarafında trilyon parametreli LLM’in yanı sıra bir Stockfish örneğinin de mi çalıştırıldığını merak ediyorum
    • Satranç elbette kazanılmaya değer bir benchmark’tı; Watson’dan beri böyle. Hatta daha öncesinde Mechanical Turk’e kadar gider
    • Adil olmak gerekirse yazıda da “Teori 2: GPT-3.5-instruct daha fazla satranç notasyonu ile eğitildi” deniyor
  • Testte önemli kısımlar var: Kapalı OpenAI modeli yasal hamle üretmezse en fazla 10 kez yeniden üretiyor, yine olmazsa rastgele seçiyordu; açık modeller Q5_K_M quantization ile yerelde çalıştırıldı; prompt sonundaki boşluk olup olmaması bile açık model performansını ciddi ölçüde değiştirdi; açık modellerde sıcaklık 0.7, OpenAI modellerinde ise varsayılan değer kullanıldı
    Tokenizer’ın tuhaf davranışları, sıcaklık, quantization, rastgele hamleler ve satranç prompt’u birbirine karışmış durumda; sonuçları nasıl yorumlamak gerektiğini bilmiyorum. Yine de yazı ilginç

    • Bu, yazının arka taraflarına gömülmüş bir noktaydı. Eskiden LLM’lerin satranç oynadığını gördüğümde yasal hamleleri bile düzgün yapamıyorlardı; burada modellerin nasıl olup da hepsinin yasal hamle yapabildiğini merak etmiştim
  • Belki de gerçekten zeki modeller istiyorsak tokenization’ın kendisini bırakmamız gerekiyordur. Modelin ne gördüğünü ve dünyayı nasıl algıladığını, en baştan girdi bilgi akışının yapısıyla sınırlıyoruz
    Ham bitler ya da baytlarla çalışmanın yavaş olduğunu biliyorum, ama büyük sorunların tokenization’dan kaynaklanıyor olabileceği hipotezini yanlışlamak nispeten ucuz ve kolay görünüyor. Radikal biçimde farklı tokenization araştırmalarını daha fazla görmemek şaşırtıcı

    • “Tokenization problemi” denen şeylerin çoğunun aslında akıl yürütme problemi olduğunu, çoğu zaman da küçük teknik sorunlara yanlış biçimde yüklendiğini düşünüyorum
      Örneğin LLM’lerin temel sayma işlemini yapamamasının tokenization’dan kaynaklandığı söylenir, ama aynı LLM düşünce süreci prompt’u kullanınca iyi sayıyor. O zaman bunu tokenization ile açıklayamazsınız. Sorun, adım adım çözünce doğru çözüldüğünü bir insanın ona söylemesi gerekmesi; bu yardım olmadan kolayca tahmin yürütüyor
    • Bayt düzeyinde eğitim pratikte zor bence. Yine de elle yapılmış, sonuçta insan tarzı token’lar kullanmak çok yanlış hissettiriyor. Gerçek tokenizer’lara bakınca, neyin token’laştırılacağını sezgisel kurallara göre değiştiren regex gibi ilginç şeyler var
      Görüntüleri token’a dönüştürebiliyorsak, sesi de token’a dönüştürebiliyorsak, modelin doğrudan seçtiği bir anlam temsili token kümesi oluşturup bu token’ları tekrar metne decode etmek de mümkün olamaz mı diye düşünüp duruyorum. Dezavantajı, kodlanmış token’ları metne geri çevirme sürecinin kayıplı olması; bu yüzden görülen metni bire bir alıntılayamaz hale geliyorsunuz
      Benim anladığım kadarıyla OpenAI, gpt-4o raporundaki görsellerde tam olarak böyle bir şey yapmış gibi. “Explorations of capabilities” bölümüne bakın: https://openai.com/index/hello-gpt-4o/
    • İnsan beyninde dile özel işleme bölgeleri olmasının bir nedeni var. Tokenization oldukça sağlam bir strateji olabilir. Asıl mesele, dilin her tür bilgiyi kodlamak için iyi bir yöntem olmaması
    • https://youtu.be/zduSFxRajkE
      Karpathy de aynı fikre katılıyor. 2 saat boyunca tokenizer’ı baştan yaparken tokenizer’lardan nefret ettiği bir video
    • Token’dan bayta indiğinizde model boyutu patlıyor. Şu an referansı bulamıyorum ama ortalama token boyutunu küçültünce modelin genişliğinin, yani her katmanın boyutunun buna bağlı olarak karesel arttığı söyleniyor. Yalnızca çıkarım hızını değil, eğitim hızını da etkiliyor
  • Prompt’u ve tahta konumunu çeşitli şekillerde değiştirerek denemeye değer. Bu arada modele verilen tahta konumu şu görsel: https://i.imgur.com/qRxalgH.png
    Bu deneyde birden fazla tuhaflık olabilir. Örneğin instruction-tuning yapılmamış varyant modellere talimat vermek ters etki yaratıyor olabilir. Daha önemlisi, yalnızca kesilmiş PGN verildiğinde bu konumda beyazın büyükusta seviyesinde bir oyuncu gibi görünüp görünmediğinden emin değilim. Model satrancı iyi anlasa bile mevcut konumda en olası hamleyi tahmin etmeye çalışacaktır; beyazın kötü bir oyuncu olduğuna karar verirse kötü bir hamlenin olasılığını daha yüksek tahmin edebilir

    • Bu şekilde başlayan güçlü oyuncular arasındaki bazı oyunları bulabildiğim için, modelin bilerek kötü hamle tahmin ettiği yönündeki hipotezim zayıflıyor: https://www.365chess.com/search_result.php?search=1&p=1&m=8&n=3071&order=welo&ms=e4.e6.d3.c5.Nf3.Nc6.g3.Nf6&rev=&wid=&bid=
      Yine de Stockfish’i en düşük seviyeye alıp “çok güçlü bir rakip” gibi karşısına koymak modeli bir ölçüde şaşırtmış olabilir. Grafiği doğru yorumladıysam modelin ilk birkaç hamlesi iyi görünüyor, sorunlar ondan sonra başlıyor gibi. Prompt yönergeleri, Stockfish gücü, başlangıç konumu, hayali oyuncu adları vb. değiştirilerek deney tekrarlanabilir
    • Deneyler oyunun ilk hamlesinden başlayıp her oyunu sonuna kadar oynattı. Bağladığın konum, yalnızca her hamlede oyun durumunun modele verildiği formatın bir örneği
      Tek bir hamleye karşı olsaydı, “kazanıyor” ya da “kaybediyor” demek tam olarak ne anlama gelirdi ki?
  • Katılıyorum. Birkaç prompt varyasyonu denenebilir: modele düşünme sürecine izin verilse nasıl olurdu; bu deneyde açıkça yasaklanmıştı. Ayrıca her adımda tahta konumu prompt’ta açıklanırsa, modelin bunu içeride hesaplaması ya da tahmin etmesi gerekmez

    • Tek bir hamle değil, tüm oyun oynatılmış
  • Modelin yasa dışı hamle yapmayı deneyip denemediğini merak ediyorum. Orijinal yazar bundan bahsetmemiş; oysa satranç kuralları epey keyfî ve LLM’ler zor problemlerde cevap olmadığını kabul etmek yerine kulağa makul gelen şeyler uydurmakla kötü şöhretli olduğundan, bunun en az bir kez kaçınılmaz olarak yaşanacağını düşünüyorum

  • Eğitimli insanların LLM’lerin satrancı makul bir seviyede oynayabileceğini neden beklediğini anlamıyorum
    LLM kendi verisinin kalitesini bilmez. “x gibi davran” prompt’u, satranç için açıkça gerekli olan gerçek akıl yürütme ve deterministik hesaplamanın yerine geçmez

    • Öyleyse turbo-instruct’ın gerçekten iyi oynamasına şaşırmamız gerekmez mi? “Gerçek akıl yürütme” gibi temelsiz antropomorfik sezgilere dayanan üstünkörü iddialar çok fazla. Bence mevcut durum, kimsenin neler olup bittiğini doğru dürüst anlamadığının iyi bir kanıtı
      Eğer bir zihinsel model LLM’lerin satranç oynayamaması gerektiğini söylüyorsa, güçlü satranç oynayan bir LLM’i açıklayamaz. Tersine, iyi oynamaları gerektiğini söyleyen bir model de birçok büyük modelin satrançta feci şekilde başarısız olmasını açıklayamaz. Açıkça daha karmaşık bir şey oluyor
    • Deney yapmanın başlıca amaçlarından biri, önyargılarımızın doğru olup olmadığını kontrol etmektir. Elbette bu soru ilginizi çekmiyorsa teleskoptan bakmak zorunda değilsiniz
    • Yeterli eğitim bilgisi varsa bu daha çok bir bulmacaya benzer. LLM, verilen hamlelerden sonraki tahta durumunu başarıyla çıktılayabiliyor, konum özetlerini de fena olmayan şekilde çıkarabiliyor ve en azından bir hamle sonrasındaki tehlikeleri listeleyebiliyor
      “Makul seviye” öznel, ama bu kadarıyla yeni başlayanları yenebilmesi gerekir. Yazıda kullanılan Stockfish’in en düşük seviyesi bile en alt düzey orta seviye oyuncu seviyesinde. Mevcut açık uygulamalardan mı, yoksa genel olarak LLM fikrinden mi bahsettiğinize bağlı; daha iyi sonuç istiyorsanız modele çok daha fazla satranç kitabı ve geçmiş maç analizi de yedirilebilir
    • Satranç basit bir olasılıksal dizi modelleme işi ve GPT-3.5-turbo-instruct’ın ileri amatör seviyesinde oynadığını bizzat gördüm. Ancak yeni modellere giren RLHF ve distilasyon bu yeteneği bozuyor gibi görünüyor
    • O zaman soru, gpt-3.5-instruct’ın Stockfish’i neden yenebildiği
  • Açık bir modeli Q5_K_M niceleme ile çalıştırmış olmaları, tüm parametreleri kayıplı sıkıştırdıkları anlamına gelir sadece. Muhtemelen önemli değildir, değil mi?

    • OpenAI’ın nicelenmemiş modeliyle yarışıyorsa muhtemelen önemlidir
  • Satrancı dizi olarak öğrenme biçiminin faydadan çok sorun yarattığını düşünüyorum. 1 trilyon oyunla eğitmek bile kurtarmaz: https://en.wikipedia.org/wiki/Shannon_number
    Tamlık adına ekleyeyim: modern satranç motorları, araçlarının bir parçası olarak yüksek kaliteli satranç odaklı modeller kullanır ve mevcut ya da geçmişteki tüm oyuncularla her seferinde en azından berabere kalabilir. Rakip en ufak bir hata yaparsa kaybeder. Stockfish seviyesini maksimuma, ya da en azından 1800+ Elo oyuncuya çıkarırsanız daha başarılı oyunlar çıkabilir; ama bu, ileri seviye oyuncuların çöp hamleleri daha az yapması nedeniyle eğitim verisindeki gürültünün azalmasının sonucudur, daha iyi oyun anlamına gelmez

    • Doğru. Daha önce de belirtildiği gibi, olası satranç konumlarının sayısı, bilinen evrendeki atom sayısı için ne kadar büyük bir tahmin alırsanız alın, onu kolayca ve muazzam ölçüde aşar
    • Shannon’dan söz açılmışken sorayım: Bu problem uzayının asgari temsilî örneklem boyutu nedir? İnternet ve kitaplarda公开 bulunan satranç hamlelerinin sayısına yeterince yakın mı?
    • Doğru. Diziden bir kez sapınca yolunu kaybeder
      Milyarlarca, trilyonlarca konumda en iyi hamleyi öğrenip bunu bir tür yapay zekaya koymak daha iyi işleyebilir. Benzer konumlarda çoğu zaman aynı türden en iyi hamleler bulunur
    • Dürüst olmak gerekirse, asla oynanmayacak hamleleri atıp simetrileri ve pratikte birbirine benzeyen tahta konumlarını hesaba katarsak satranç o kadar da büyük bir oyun olmayabilir diye düşünüyorum. Bu konumlar çok basit bir örüntü eşleyiciyle bile tespit edilebilir
  • gpt-3.5-turbo-instruct, gpt-3.5-turbo, gpt-4 içeren ilgili deneyler kümesi buldum
    Sonuç da aynı şekilde şaşırtıcı: gpt-3.5-turbo-instruct satrancı çok daha iyi oynuyor
    https://blog.mathieuacher.com/GPTsChessEloRatingLegalMoves/

    • Gerçek bir satranç motoruna fonksiyon çağrısı yapıyor olma ihtimaline bahse girerim. Token sayısına ya da oyun karmaşıklığına göre çıkarım süresinin nasıl değiştiğini, ya da değişmediğini zaman analiziyle kanıtlamak mümkün olabilir
  • OpenAI’ın oyun oynayan yapay zeka yapma konusunda çok fazla deneyimi var. Hatırlarsanız birkaç yıl boyunca ana odakları buydu. Bu yüzden satranç öğrenmenin genel zekâyı etkileyip etkilemediğini görmek için bir modeli satranca iyi uyacak şekilde yapmış olabilirler. İnsanların satranç öğrenince daha zeki olabilmesi, matematik veya programlama öğrenmenin de buna benzer etkileri olabilmesi gibi

    • Oyun oynama, oyun durumunun soyut temsili ile güçlü biçimde bağlantılıdır. Oyuncu farkında olmasa bile satranç, olası hamleler içinde sığ arama ya da beam search yapma problemine yakındır
      LLM akıl yürütme ya da arama yapmaz; önceki metne dayanarak metin yazar. Bu yüzden bize oyun oynuyormuş gibi görünebilir, ama aslında geçmiş maçlara dayalı akıllı bir tahmindir. Kasparov’un gerçek taş dizilimini hayal etmeden hamle yazmasına benzer. İlginç deney, yalnızca kurallar verildiğinde modelin oynayıp oynayamayacağını görmek olurdu; muhtemelen oynayamazdı. Şu anda bir hedefi takip etmek yerine hafızadan yeniden oynatma durumunda. Henüz ileriye dönük dikkat gibi bir şey yok ve beam search yeterince pahalı olduğundan, klasik satranç algoritmasına geri dönmek daha iyi olur
    • OpenAI ile DeepMind’ı karıştırmış gibisin
      OpenAI, etkileşimli ajanlar dışında bir şey yapmadı