2 puan yazan GN⁺ 2024-10-19 | 1 yorum | WhatsApp'ta paylaş
  • Google DeepMind'in searchless_chess projesi, NeurIPS 2024 makalesi Amortized Planning with Large-Scale Transformers'ın uygulamasıdır ve satranç üzerinden büyük ölçekli Transformer'ların açık arama olmadan planlama problemlerini ne kadar iyi çözebildiğini değerlendirir
  • Temel veri kümesi ChessBench, Stockfish 16'nın sağladığı yasal hamleler ve değer açıklamalarını içeren 10 milyon satranç oyunundan, toplam 15 milyar veri noktasından oluşur
  • En fazla 270 milyon parametreli Transformer modelleri gözetimli öğrenmeyle eğitilir; veri kümesi boyutu, model boyutu, mimari türü ve tahmin hedefi değiştirilerek etkileri karşılaştırılır
  • En büyük model, yeni tahtalarda action-value tahminlerini oldukça doğru yapar, açık arama olmadan zor satranç bulmacalarını çözer ve insan rakiplere karşı Lichess blitz Elo 2895'e ulaşır
  • Stockfish'in arama tabanlı algoritması büyük ölçekli Transformer'lara oldukça iyi damıtılabilse de tam damıtıma henüz ulaşılamadığı için ChessBench sonraki araştırmalar için bir benchmark olarak kalır

Projenin amacı ve makalenin bağlamı

  • searchless_chess, Amortized Planning with Large-Scale Transformers: A Case Study on Chess makalesinin uygulamasıdır
  • Satranç, yapay zekada temsili bir planlama problemi olarak kullanılır ve bu proje, büyük ölçekte bile ezberlemenin anlamsız olduğu görevlerde Transformer performansını değerlendirir
  • Araştırma, arama tabanlı satranç motorlarının davranışının Transformer'a gözetimli öğrenme ile damıtılıp damıtılamayacağını satranç üzerinde doğrular

ChessBench veri kümesi

  • ChessBench, Stockfish 16'nın sağladığı yasal hamleleri ve değer açıklamalarını içerir
    • Satranç oyunu sayısı: 10 milyon
    • Toplam veri noktası: 15 milyar
    • Stockfish 16, güncel seviyede bir satranç motoru olarak kullanılır
  • Veri kümesi tahmin hedeflerine göre ayrılır
    • Action-Value

    • Behavioral Cloning

    • State-Value

      • Bulmaca değerlendirmesi için puzzles.csv
      • İndirme boyutu örnekleri şöyledir
      • Train Action-Value: ilk shard 1.2GB, toplam 1.1TB, toplam 2148 shard
      • Train Behavioral Cloning: 34GB
      • Train State-Value: 36GB
      • Test Action-Value: 141MB
      • Test Behavioral Cloning: 4.1MB
      • Test State-Value: 4.4MB
      • Puzzles: 4.5MB

Modeller ve deney düzeni

  • Transformer modelleri en fazla 270M parametreye kadar eğitilir
  • Eğitim, ChessBench tabanlı gözetimli öğrenme ile yürütülür
  • Deneyler şu unsurların etkisini karşılaştırır
    • veri kümesi boyutu
    • model boyutu
    • mimari türü
    • tahmin hedefi: state-values, action-values, behavioral cloning
  • En büyük model, yeni tahtalarda action-values değerlerini oldukça doğru tahmin ederek basit ezberin ötesinde genelleme gösterir

Aramasız performans ve karşılaştırmalar

  • Nihai satranç politikası, açık arama olmadan zor satranç bulmacalarını çözer
  • İnsan rakiplere karşı Lichess blitz'te Elo 2895 elde ederek büyükusta seviyesinde performans gösterir
  • Karşılaştırma hedefleri arasında Leela Chess Zero ve AlphaZero da bulunur
    • Her iki sistem de self-play ile eğitilmiş modeller olarak karşılaştırılır
    • Arama kullanan ve kullanmayan durumların ikisi de karşılaştırılır
  • Stockfish'in arama tabanlı algoritması büyük ölçekli Transformer'a çok iyi biçimde yaklaştırılarak damıtılabilir, ancak tam damıtım hâlâ mümkün değildir

Depo yapısı ve çalışma akışı

  • Başlıca dizinler ve dosyalar şu rollere sahiptir
    • src/engines: Stockfish, Leela Chess Zero, sinir ağı motor arayüzleri
    • src/transformer.py: Sadece decoder içeren Transformer
    • src/train.py: örnek eğitim ve değerlendirme betiği
    • src/puzzles.py: bulmaca değerlendirme betiği
    • src/tournament.py: Elo turnuva betiği
    • src/searchless_chess.ipynb: model davranışı analizi not defteri
    • src/tokenizer.py: satranç tahtası tokenization işlemi
  • Önceden eğitilmiş checkpoint'ler 9M, 136M, 270M modelleri olarak sunulur
  • Model davranışı analizi not defterinde, tüm yasal hamlelerin kazanma oranını hesaplamak gibi analizler yapılabilir

Kurulum ve bağımlılıklar

  • Çalışma ortamı Python 3.10 gerektirir
  • Gerekli bağımlılıklar pip install -r requirements.txt ile kurulur
  • GPU varsa daha hızlı eğitim için CUDA destekli JAX kurulması önerilir
    • Örnek olarak CUDA 12 için jax[cuda12_pip] kurulum komutu kullanılır
    • JAX sürümü, kullanımda olan CUDA kurulumuyla uyumlu olmalıdır
  • Harici motorların ve araçların kurulması gerekir

Değerlendirme ve kullanım

  • Yerel eğitim src içinde python train.py ile çalıştırılır
    • Checkpoint'ler /checkpoints/local altına kaydedilir
  • Bulmaca değerlendirmesi python puzzles.py --num_puzzles 10 --agent=local biçiminde çalıştırılır
  • puzzles.py tarafından desteklenen ajanlar şunlardır
    • Yerel eğitilmiş model: local
    • Önceden eğitilmiş modeller: 9M, 136M, 270M
    • Stockfish: stockfish, stockfish_all_moves
    • Lc0: leela_chess_zero_depth_1, leela_chess_zero_policy_net, leela_chess_zero_400_sims
  • Elo hesabı, python tournament.py --num_games=200 ile oyunlar üretildikten sonra BayesElo'nun data/tournament.pgn dosyasını okumasıyla yapılır

Lisans ve sınırlamalar

  • Yazılım Apache License 2.0 ile dağıtılır
  • Model ağırlıkları Creative Commons Attribution 4.0 lisansına tabidir
  • Veri kümesinin bir bölümü lichess.org'un Creative Commons CC0 public domain lisansını, geri kalanı ise CC-BY lisansını izler
  • Dağıtılan içerik, açık ya da zımni hiçbir garanti olmaksızın "AS IS" esasına göre sunulur
  • Bu proje resmî bir Google ürünü değildir

1 yorum

 
GN⁺ 2024-10-19
Hacker News yorumları
  • Konu dışı olacak ama GM seviyesinde olmayan bilgisayar satrancının bugün nerede olduğunu merak ediyorum
    Kendi seviyeme yakın bir rakiple ya da antrenman için benden reytingi yaklaşık 100 puan yüksek bir rakiple oynamak istediğim zamanlar oluyor
    Çoğu motor arama derinliği azaltılarak zayıflatılabiliyor, ama genelde bu pek iyi çalışmıyor. Yeterince azaltınca oyunların yaklaşık yarısını kazanır hale gelsem de, çoğu oyunda sürekli geride kalıp motorun bir iki büyük hata yapmasıyla kazanmışım gibi bir his kalıyor
    İstediğim şey, seçtiğim seviyede oynayan ama o reyting aralığındaki tipik bir insan oyuncu gibi hissettiren bir bilgisayar rakip. Böyle bir motor var mı merak ediyorum

    • Maia bu işi oldukça iyi yapıyor. Lichess’te karşısına çıkabilirsiniz
      Geleneksel bir arama algoritmasının kolayca kaçınacağı ama bir insanın düşebileceği tuzaklara düşmesi gibi, gerçekten “insan gibi” hissettirdiği birkaç an oldu
      Ayarlanabilir değil, ama farklı reytinglere sahip birkaç sürümü var. Yine de aralık çok geniş değil
      https://www.maiachess.com/
      https://lichess.org/@/maia1
    • Benzer bir şey yapmıştım: chessmate.ai. Reyting çok yüksek değilse iyi çalışıyor
      Oyuncu reytingi yükseldikçe yalnızca sezgisel hamle seçimini değil, arama sürecinin kendisini de modellemek gerektiği için sonraki hamleyi tahmin etmek zorlaşıyor
      Sadece belirli bir oyuncunun oyun kayıtlarıyla eğitip daha kişiselleştirmek de mümkün
      Maia’ya benzer bir yaklaşım kullanıyor, ama farklı bir sinir ağı olduğu için hamle eşleşme performansı biraz daha iyiydi; bunun üzerine botun hatalarımdan yararlanmasını sağlamak için beklenen değer maksimizasyonu algoritması eklemiştim
    • Satrançta kazanmak nihayetinde budur: hataları en aza indirmek
    • Uzun zaman önce ChessBase’in Fritz motorunu kullanmıştım; bir sparring özelliği vardı. Sağlam oynarsanız oyunun ortasında taktik bulmaca gibi fırsatlar veriyordu, uyarıları açıp kapatabiliyordunuz
      Yeterince istikrarlı oynayamazsanız doğrudan kaybediyordunuz
      Bana kalırsa bu özellik kaybolmuş gibi. Baskı altında insana özgü hatalar yapıyor hissi verdiği için, bilgisayar gibi oynayıp rastgele aptalca hamle yapanlardan farklı olarak gerçekten rakip gibi hissettiren tek bilgisayardı
    • Bu yüzden çok oyunculu oyunlarda kazanmayı pek sevmiyorum. Genelde kazandığımda rakibin birkaç kez gülünç derecede kötü oynadığı ya da rakip iyi oynamış olsa bile benim birkaç kez aşırı şanslı olduğum için kazandığım hissine kapılıyorum
      Rakibin de iyi oynadığı ama genel olarak benim biraz daha iyi oynayıp hak ederek kazandığım hissi çok nadir
      Neredeyse her zaman ben kazanmışım gibi değil, rakip kaybetmiş gibi görünüyor. Bu yalnızca yapay zekaya özgü bir sorun değil
      Simetrik oyunlarda tatmin edici şekilde kaybedebilen ve yenilgiden de tatmin edici şekilde öğrenmeyi sağlayan bir yapay zeka yapılabilirse, bu milyar dolarlık bir iş olur. Ciddi psikoloji araştırması olmadan bunun zor olduğunu düşünüyorum
  • Bu konu üzerine bir sunum yaptım ve sunum içeriğini de yazıya döktüm[1]. Bu makale bilgi damıtmanın iyi bir örneği
    Makale satrancın kendisinden ziyade, uzmanların ayarladığı karmaşık doğrusal olmayan bir arama fonksiyonunun, satranç gibi standartlaştırılmış girdilerde neredeyse doğrusal sayılabilecek bir Transformer modeline damıtılabileceğini gösteren bir çalışma gibi
    [1]: https://hlfshell.ai/posts/deepmind-grandmaster-chess-without...

    • İnsan rakiplere karşı sonuçlara epey temkinli bakmak gerektiğini düşünüyorum. Bunlar blitz oyunları ve bu motorun Elo’su, diğer botlara karşı olduğundan insanlara karşı çok daha yüksekti
      Bu yüzden zamanın bir etken olma ihtimali yüksek. İnsanların zaman sıkıntısından bayrağı düşebilir ya da az zamanı varken hata yapma olasılıkları daha yüksektir
      Arama olmadan da çok iyi bir değerlendirme fonksiyonu öğrenmiş olması yine de harika. Yalnız Stockfish fallback’in devreye girdiği oyunların hariç tutulmasını isterdim. İnsanlar için de 2 hamlede mat ile 10 hamlede mat, zaman kaybı açısından galibiyet ile beraberlik/mağlubiyet arasındaki farktır
      Sınırlı arama derinliğine sahip Stockfish ile doğrudan bir karşılaşma da görmek isterdim. Böylece bu değerlendirme fonksiyonunun arama ağacının ne kadarını damıttığı kabaca anlaşılabilirdi
  • Satranç sinir ağlarına başlamak isteyenlere bu depoyu şiddetle tavsiye ederim: https://github.com/sgrvinod/chess-transformers
    Okunması kolay PyTorch koduyla tipik uygulama biçimini izliyor ve mimarisi de bugün iyi performans gösteren satranç sinir ağlarına benziyor

  • https://lczero.org/blog/2024/02/how-well-do-lc0-networks-com...
    En iyi sinir ağı satranç motorlarının yazarlarının bu DeepMind makalesi hakkında yazdığı yazı

    • Stockfish 2020’de NNUE ekledikten sonra LC0 en iyi sinir ağı satranç motoru değildi
  • Eğitimde kullanılan devasa sentetik veri kümesi sonuçta çok sayıda geleneksel aramayla oluşturuldu. Bu yüzden biraz komik bir tarafı var, ama yine de etkileyici

    • Bu bilgi damıtma. Sonrasında büyük model yerine daha küçük ve verimli bir model kullanılabilir
    • Aksine, sinir ağlarının sınırlarını gösteriyor. İnsan beyni çok daha az örnekle bile öğrenebiliyor
    • Arama yalnızca bir kez yapıldı. Bu verimlilikle başka bilgilere de uygulanabilirse ortaya bir şey çıkar
  • GM ve satranç yazarı Matthew Sadler’ın antrenman oyunları için Leela Zero’yu fiilen yalnızca sezgiyle oynayacak, çok az arama yapacak ya da hiç arama yapmayacak şekilde ayarladığını hatırlıyorum
    Genelde o kazanıyordu ama her zaman değil. Sanırım The Silicon Road to Chess Improvement’da geçiyordu

    • YouTube’da da çok eğlenceli videolar yayımlıyor. contempt değerini çok yükseğe ayarlayarak beraberlikten olabildiğince kaçınmaya çalışan Leela’nın ne tür tuhaf açılış keşifleri yaptığını gösteriyor ve buna 2700+ seviyesinde yorum ekliyor
    • lczero kullanıyorsanız maksimum derinliği örneğin 1 ply olarak ayarlamanız yeterli
  • Tüm oyunlardaki tüm tahta pozisyonları için Stockfish çalıştırıp eğitim verisi oluşturursanız, sonuçta arama ağacını Transformer modeline encode etmiş olmuyor musunuz?
    O zaman modelin parametre sayısını artırdıkça arama ağacının daha fazlasını içine alabilir ve performans iyileşir; ama bu pek ilginç görünmüyor

    • Arama ağacını bu şekilde encode etmenin nasıl mümkün olabileceğini bilmiyorum
  • Bu depo, makalemiz Grandmaster-Level Chess Without Search’ün uygulamasını sunuyor: https://arxiv.org/abs/2402.04494
    Makine öğrenmesindeki son atılımlar ağırlıklı olarak ölçekten, yani büyük ölçekli attention tabanlı yapılardan ve benzeri görülmemiş büyüklükteki veri kümelerinden geldi. Bu makale, satrançta büyük ölçekli öğrenmenin etkisini inceliyor
    Karmaşık sezgisellere, açık aramaya ya da ikisinin birleşimine dayanan geleneksel satranç motorlarının aksine, 10 milyon satranç oyunundan oluşan bir veri kümesiyle 270 milyon parametreli bir Transformer modeli gözetimli öğrenmeyle eğittik
    Veri kümesindeki her tahtaya güçlü Stockfish 16 motorunun sağladığı hamle değerleriyle anotasyon eklendi ve yaklaşık 15 milyar veri noktası oluştu
    En büyük model, insan rakiplere karşı Lichess blitz Elo 2895’e ulaştı ve alana özgü ayarlama ya da açık arama algoritmaları olmadan zor satranç bulmacalarını çözdü
    Ayrıca MCTS’siz AlphaZero’nun politika/değer ağlarını ve GPT-3.5-turbo-instruct’ı geride bıraktı. Model ve veri kümesi boyutlarını sistematik olarak incelediğimizde, güçlü satranç performansının ancak yeterli ölçekte ortaya çıktığı görüldü. Tasarım tercihleri ve hiperparametreler üzerine kapsamlı ablasyon deneyleri de yaptık

    • Ancak botlara karşı Lichess blitz Elo değeri, insanlara karşı olandan yaklaşık 700 puan daha düşük
  • İnsan gibi daha çok düşünen bir motor olsa güzel olurdu. Bu yöntem Stockfish anotasyonlu oyun kayıtları kullandığı için temelde bilgisayar gibi düşünecek gibi görünüyor
    İnsan gibi düşünseydi, oyun incelemelerinde her pozisyonda neye bakılması gerektiğini benim Elo seviyeme göre göstermek için çok iyi olurdu

    • Ya da performansı öğrenme verimliliği ile ölçen bir model de iyi olurdu. Başka bir deyişle, X seviyesine ulaşmak için kaç oyun oynaması gerektiğine bakmak
      Magnus Carlsen’in olağanüstü olmasının nedeni, bilgisayarlarla karşılaştırıldığında çok büyük zaman ve hesaplama kısıtları altında bugünkü satranç seviyesine ulaşmış olması. Öğrenme verimliliği herhangi bir satranç motoruyla karşılaştırıldığında bile sıradışı
    • Spektrumun diğer ucunda ise şu var: bellek, program boyutu ve hesaplama süresi aşırı sınırlı olduğunda: https://rlc-chess.com/
      Demoscene programı gibi hissettiriyor. Gerçekten çalışan 1KB’lık bir satranç programı bile var
  • Satrancı tamamen çözerseniz, şu an hesaplanamayacak kadar büyük bir ağaç ortaya çıkar. Kabaca 10^80 civarı diye hatırlıyorum ama yanılıyor olabilirim
    O ağaca kazanma/kaybetme/beraberlik anotasyonu eklerseniz, arama olmadan da optimal bir oyuncu mümkün olur
    Sıkıştırma ve optimizasyon için bariz iki yaklaşım, ya ağacı yaklaşıklaştırmak ya da anotasyonları yaklaşıklaştırmaktır. Bu iki yöntemin ne kadar iyi çalışacağı, ağaç yapısına büyük ölçüde bağlıdır
    Bu sonuç, öğrenme yaklaşımının mutlak gücünden ziyade satranç oyun ağacının bu iki yaklaşıma ne kadar iyi uyduğunu daha fazla gösteriyor gibi. Benim çıkardığım sonuç, o ağacın makul bir yaklaşık temsilinin 270 milyon kelime ölçeğinde veri ile mümkün olduğu