2 पॉइंट द्वारा GN⁺ 2024-10-19 | 1 टिप्पणियां | WhatsApp पर शेयर करें
  • Google DeepMind का searchless_chess, NeurIPS 2024 paper Amortized Planning with Large-Scale Transformers का implementation है, जो chess के जरिए यह evaluate करता है कि बड़े पैमाने के Transformer explicit search के बिना planning problems कितनी अच्छी तरह कर पाते हैं
  • मुख्य dataset ChessBench में Stockfish 16 द्वारा दिए गए legal moves और value annotations सहित 10 million chess games हैं, कुल 15 billion data points
  • अधिकतम 270 million parameters वाले Transformer को supervised learning से train किया गया, और dataset size, model size, architecture type, prediction objective बदलकर इनके असर की तुलना की गई
  • सबसे बड़ा model नए boards पर action-value को काफी सटीकता से predict करता है, explicit search के बिना कठिन chess puzzles हल करता है, और human opponents के खिलाफ Lichess blitz Elo 2895 हासिल करता है
  • Stockfish के search-based algorithm को बड़े पैमाने के Transformer में काफी अच्छी तरह distill किया जा सकता है, लेकिन complete distillation अभी हासिल नहीं हुई है, इसलिए ChessBench आगे की research के लिए benchmark बना रहता है

Project का उद्देश्य और paper का संदर्भ

  • searchless_chess, Amortized Planning with Large-Scale Transformers: A Case Study on Chess का implementation है
  • Chess को AI की प्रतिनिधि planning problem के रूप में इस्तेमाल किया जाता है, और यह project बड़े scale पर भी memorization को निरर्थक बनाने वाले task में Transformer performance को evaluate करता है
  • यह research chess में verify करती है कि search-based chess engine के behavior को Transformer में supervised learning से distill किया जा सकता है या नहीं

ChessBench dataset

  • ChessBench में Stockfish 16 द्वारा दिए गए legal moves और value annotations शामिल हैं
    • Chess games की संख्या: 10 million
    • कुल data points: 15 billion
    • Stockfish 16 को latest स्तर के chess engine के रूप में इस्तेमाल किया गया
  • Dataset को prediction objective के आधार पर बाँटा गया है
    • Action-Value

    • Behavioral Cloning

    • State-Value

      • Puzzle evaluation के लिए puzzles.csv
      • Download size के उदाहरण इस प्रकार हैं
      • Train Action-Value: पहला shard 1.2GB, कुल 1.1TB, कुल 2148 shards
      • 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

Model और experiment setup

  • Transformer को अधिकतम 270M parameters तक train किया गया
  • Training ChessBench आधारित supervised learning से की गई
  • Experiments में नीचे दिए गए factors के प्रभाव की तुलना की गई
    • Dataset size
    • Model size
    • Architecture type
    • Prediction objective: state-values, action-values, behavioral cloning
  • सबसे बड़ा model नए boards पर action-values को काफी सटीकता से predict करता है, जिससे simple memorization से आगे की generalization दिखती है

Searchless performance और तुलना के targets

  • Final chess policy ने explicit search के बिना कठिन chess puzzles हल किए
  • Human opponents के खिलाफ Lichess blitz में Elo 2895 हासिल कर Grandmaster स्तर की performance दिखाई
  • तुलना के targets में Leela Chess Zero और AlphaZero शामिल हैं
    • दोनों systems की तुलना self-play से trained models के रूप में की गई
    • Search इस्तेमाल करने और न करने, दोनों cases की तुलना की गई
  • Stockfish के search-based algorithm को बड़े Transformer में बहुत अच्छी तरह approximate करके distill किया जा सकता है, लेकिन complete distillation अभी संभव नहीं है

Repository structure और execution flow

  • मुख्य directories और files की भूमिकाएँ ये हैं
    • src/engines: Stockfish, Leela Chess Zero, neural-network engine interfaces
    • src/transformer.py: Decoder-only Transformer
    • src/train.py: example training और evaluation script
    • src/puzzles.py: puzzle evaluation script
    • src/tournament.py: Elo tournament script
    • src/searchless_chess.ipynb: model behavior analysis notebook
    • src/tokenizer.py: chess board tokenization
  • Pretrained checkpoints 9M, 136M, 270M models के रूप में उपलब्ध हैं
  • Model behavior analysis notebook में सभी legal moves की win rate calculation जैसे analysis किए जा सकते हैं

Installation और dependencies

  • Runtime environment के लिए Python 3.10 चाहिए
  • pip install -r requirements.txt से आवश्यक dependencies install करें
  • GPU हो तो fast training के लिए CUDA-supported JAX installation की सिफारिश की जाती है
    • उदाहरण में CUDA 12 के लिए jax[cuda12_pip] installation command इस्तेमाल की गई है
    • JAX version आपके उपयोग में मौजूद CUDA installation से match होना चाहिए
  • External engines और tools install करने होंगे

Evaluation और usage

  • Local training src में python train.py से run करें
    • Checkpoints /checkpoints/local में save होते हैं
  • Puzzle evaluation python puzzles.py --num_puzzles 10 --agent=local के रूप में run करें
  • puzzles.py जिन agents को support करता है वे ये हैं
    • Local training model: local
    • Pretrained models: 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 calculation के लिए python tournament.py --num_games=200 से games generate करने के बाद, BayesElo से data/tournament.pgn पढ़कर calculate करें

License और limitations

  • Software Apache License 2.0 के तहत distribute किया गया है
  • Model weights Creative Commons Attribution 4.0 license के अंतर्गत हैं
  • Dataset का कुछ हिस्सा lichess.org के Creative Commons CC0 public domain license के अंतर्गत है, और बाकी CC-BY license के अंतर्गत है
  • Distributions explicit या implied warranty के बिना "AS IS" basis पर provide किए जाते हैं
  • यह project official Google product नहीं है

1 टिप्पणियां

 
GN⁺ 2024-10-19
Hacker News की राय
  • ऑफ़टॉपिक है, लेकिन मैं जानना चाहता हूँ कि GM-न-होने वाले स्तर का कंप्यूटर chess अभी कहाँ तक पहुँचा है
    कभी-कभी मैं अपने स्तर के आसपास के प्रतिद्वंद्वी से, या training के लिए अपने से लगभग 100 rating points ऊपर वाले प्रतिद्वंद्वी से खेलना चाहता हूँ
    ज़्यादातर engines को search depth घटाकर कमजोर बनाया जा सकता है, लेकिन आम तौर पर यह ठीक से काम नहीं करता। काफी घटा दें तो मैं लगभग आधे games जीतने लगता हूँ, फिर भी ज़्यादातर game में लगातार मैं दबा रहता हूँ और अंत में engine एक-दो बड़ी गलतियाँ कर देता है, जिससे जीतता हुआ महसूस होता है
    मुझे ऐसा computer opponent चाहिए जो मेरे चुने हुए स्तर पर खेले, लेकिन उस rating band के typical human player जैसा लगे। सोच रहा हूँ कि ऐसा कोई engine है क्या

    • Maia काफी अच्छा है। Lichess पर इसके खिलाफ खेल सकते हैं
      कुछ मौके सच में “human जैसा” लगे, जैसे ऐसे trap में फँसना जिसे पारंपरिक search algorithm आसानी से बचा लेता, लेकिन इंसान फँस सकता है
      इसे adjust नहीं कर सकते, लेकिन अलग-अलग rating वाले कुछ versions हैं। हालांकि range बहुत बड़ी नहीं है
      https://www.maiachess.com/
      https://lichess.org/@/maia1
    • मैंने कुछ ऐसा ही बनाया था: chessmate.ai। अगर rating बहुत ऊँची न हो तो यह अच्छा काम करता है
      जैसे-जैसे player rating बढ़ती है, अगली move predict करना मुश्किल हो जाता है, क्योंकि सिर्फ intuitive move selection नहीं बल्कि search process को भी model करना पड़ता है
      किसी खास player के games से ही train करके इसे और personalized बनाना भी संभव है
      इसका approach Maia जैसा है, लेकिन neural network अलग है, इसलिए move-match performance थोड़ा बेहतर था; इसके ऊपर मैंने expected value maximization algorithm लगाया ताकि bot मेरी गलतियों का फायदा उठा सके
    • chess में जीतना आखिरकार यही है। गलतियों को न्यूनतम करना
    • बहुत पहले मैंने ChessBase का Fritz engine इस्तेमाल किया था, उसमें sparring feature था। अगर आप मजबूत और ठोस खेलते, तो game के बीच में वह tactical puzzle जैसा मौका देता था, और warning को on/off किया जा सकता था
      अगर आप पर्याप्त स्थिर नहीं खेलते, तो बस हार जाते
      मेरी नजर में यह feature शायद अब हट गया है। दबाव में human जैसी गलती करने का एहसास देता था; computer की तरह खेलते हुए random मूर्खतापूर्ण move करने से अलग, यह अकेला computer था जो सचमुच असली opponent जैसा लगा
    • इसलिए मुझे multiplayer games में जीतना खास पसंद नहीं है। आम तौर पर जीतने पर लगता है कि opponent ने कई बार हास्यास्पद रूप से खराब खेला, या opponent अच्छा खेला लेकिन कुछ बार मेरी किस्मत जरूरत से ज्यादा अच्छी रही
      यह एहसास बहुत दुर्लभ है कि opponent भी अच्छा खेला, लेकिन कुल मिलाकर मैं थोड़ा बेहतर था इसलिए जायज़ तरीके से जीता
      लगभग हमेशा ऐसा लगता है कि मैं जीता नहीं, बल्कि opponent हारा। यह सिर्फ artificial intelligence की समस्या नहीं है
      अगर कोई symmetric games में संतोषजनक तरीके से हारने और हार से संतोषजनक ढंग से सिखाने वाली artificial intelligence बना सके, तो वह 1 अरब डॉलर का business होगा। मुझे लगता है गंभीर psychology research के बिना यह मुश्किल है
  • मैंने इस विषय पर presentation दी थी, और presentation की सामग्री को लेख के रूप में भी整理 किया था[1]। यह paper knowledge distillation का अच्छा example है
    यह chess पर paper कम और यह दिखाने वाला paper ज्यादा है कि experts द्वारा tuned जटिल nonlinear search function को chess जैसे standardized inputs पर लगभग linear के करीब Transformer model में distill किया जा सकता है
    [1]: https://hlfshell.ai/posts/deepmind-grandmaster-chess-without...

    • इंसानी opponents के खिलाफ results को काफी सावधानी से देखना चाहिए। ये blitz games हैं, और इस engine का Elo humans के खिलाफ दूसरे bots की तुलना में काफी ज्यादा था
      इसलिए time एक factor हो सकता है। इंसान time trouble में flag fall कर सकते हैं, या कम समय होने पर गलती करने की संभावना ज्यादा होती है
      बिना search के भी बहुत अच्छा evaluation function सीख लिया, यह फिर भी शानदार है। लेकिन काश Stockfish fallback सक्रिय हुए games को हटाकर देखा जाता। इंसानों के लिए भी 2-move mate और 10-move mate, time loss के लिहाज से, जीत और draw/हार के बीच का फर्क है
      limited search depth वाले Stockfish से head-to-head भी देखना चाहता था। तब अंदाजा लग पाता कि इस evaluation function ने search tree का कितना हिस्सा distill किया है
  • chess neural networks में शुरुआत करने वालों के लिए मैं यह repository strongly recommend करता हूँ: https://github.com/sgrvinod/chess-transformers
    पढ़ने में आसान PyTorch code है, typical implementation style follow करता है, और architecture भी मौजूदा अच्छे performance वाले chess neural networks जैसा है

  • https://lczero.org/blog/2024/02/how-well-do-lc0-networks-com...
    सर्वश्रेष्ठ neural-network chess engine के authors ने इस DeepMind paper पर जो लिखा है

    • Stockfish ने 2020 में NNUE जोड़ने के बाद से LC0 सर्वश्रेष्ठ neural-network chess engine नहीं रहा
  • training में इस्तेमाल हुआ विशाल synthetic dataset आखिरकार बहुत सारी traditional search से ही बनाया गया था। इसलिए इसमें थोड़ी अजीब-सी बात है, लेकिन फिर भी यह cool है

    • यह knowledge distillation है। इसके बाद बड़े model की जगह छोटा और efficient model इस्तेमाल किया जा सकता है
    • बल्कि यह neural networks की सीमाएँ दिखाता है। इंसानी दिमाग बहुत कम examples से भी सीख सकता है
    • search सिर्फ एक बार की गई। अगर इस efficiency से इसे दूसरे ज्ञान पर भी लागू किया जा सके, तो बात बन सकती है
  • GM और chess author Matthew Sadler ने training games के लिए Leela Zero को लगभग केवल intuition से खेलने, और search को बहुत कम या बिल्कुल नहीं करने के लिए configure किया था, ऐसा मुझे याद है
    आम तौर पर वे जीतते थे, लेकिन हमेशा नहीं। शायद यह The Silicon Road to Chess Improvement में था

    • वे YouTube पर भी बहुत मजेदार videos डालते हैं। contempt को बहुत ऊँचा set करके draw से जितना हो सके बचने की कोशिश करने वाली Leela कौन-सी अजीब opening discoveries करती है, यह दिखाते हैं, और उस पर 2700+ level commentary देते हैं
    • lczero हो तो बस maximum depth को, उदाहरण के लिए, 1 ply set कर दें
  • अगर हर गेम की हर बोर्ड पोज़िशन पर Stockfish चलाकर training data बनाया जाए, तो क्या अंत में search tree को Transformer model में encode ही नहीं किया जा रहा होगा?
    फिर model के parameters की संख्या बढ़ाने पर search tree का ज़्यादा हिस्सा समा सकेगा और performance बेहतर होगी, लेकिन यह बहुत दिलचस्प नहीं लगता

    • समझ नहीं आता कि इस तरह search tree को encode करना संभव कैसे हो सकता है
  • यह repository हमारे paper Grandmaster-Level Chess Without Search का implementation देती है: https://arxiv.org/abs/2402.04494
    हाल के machine learning breakthroughs मुख्य रूप से scale से आए हैं—यानी बड़े attention-based architectures और अभूतपूर्व पैमाने के datasets से। यह paper chess में large-scale learning के प्रभाव की जांच करता है
    पारंपरिक chess engines जटिल heuristics, explicit search, या दोनों के संयोजन पर निर्भर करते हैं; इसके विपरीत, 1 करोड़ chess games के dataset पर 270 मिलियन parameter Transformer model को supervised learning से train किया गया
    dataset के हर board पर शक्तिशाली Stockfish 16 engine द्वारा दिए गए action values के annotations जोड़े गए, जिससे लगभग 15 अरब data points बने
    सबसे बड़े model ने इंसानी विरोधियों के खिलाफ Lichess blitz Elo 2895 हासिल किया और domain-specific tuning या explicit search algorithms के बिना कठिन chess puzzles हल किए
    साथ ही इसने MCTS के बिना AlphaZero के policy/value networks और GPT-3.5-turbo-instruct को पीछे छोड़ा। Model और dataset size की systematic जांच में पाया गया कि मजबूत chess performance केवल पर्याप्त scale पर ही उभरती है। Design choices और hyperparameters पर व्यापक ablation experiments भी किए गए

    • लेकिन bot के खिलाफ Lichess blitz Elo, इंसानों के खिलाफ वाले score से करीब 700 points कम है
  • अच्छा होगा अगर कोई ऐसा engine हो जो इंसानों की तरह ज़्यादा सोचता हो। यह तरीका Stockfish-annotated game records इस्तेमाल करता है, इसलिए मूल रूप से यह computer की तरह सोचने लगेगा लगता है
    अगर यह इंसानों की तरह सोचे, तो game review में हर position पर क्या देखना चाहिए, यह मेरे Elo के हिसाब से बताने में बहुत अच्छा होगा

    • या ऐसा model भी अच्छा होगा जो performance को learning efficiency से मापे। यानी X level तक खेलने के लिए कितने games खेलने पड़ते हैं
      Magnus Carlsen इसलिए महान हैं क्योंकि computer की तुलना में बेहद ज्यादा time और compute constraints के भीतर उन्होंने अपनी मौजूदा chess skill हासिल की। उनकी learning efficiency किसी भी chess engine की तुलना में असाधारण है
    • इसके उलट spectrum का दूसरा छोर भी है: जब memory, program size और compute time बेहद सीमित हों: https://rlc-chess.com/
      यह demoscene program जैसा लगता है। सचमुच चलने वाला 1KB chess program भी मौजूद है
  • Chess को पूरी तरह solve करने पर एक ऐसा tree बनता है जो अभी compute करने के लिए बहुत बड़ा है। मुझे याद है कि यह लगभग 10^80 के आसपास है, हालांकि मैं गलत भी हो सकता हूं
    अगर उस tree पर win/loss/draw annotate कर दिया जाए, तो search के बिना भी optimal player संभव है
    Compression और optimization के दो साफ़ approaches हैं: tree का approximation करना, या annotations का approximation करना। ये दोनों तरीके कितने अच्छे काम करेंगे, यह tree structure पर बहुत निर्भर करता है
    यह result learning approach की absolute power से ज़्यादा यह दिखाता लगता है कि chess game tree इन दोनों approaches के लिए कितना उपयुक्त है। मेरा निष्कर्ष यह है कि उस tree का एक उचित approximation 270 मिलियन words के scale के data से संभव है

    • इस technique का exact version chess endgames में पहले से इस्तेमाल हो रहा है, और इसे tablebase कहते हैं
      Chess में board पर 7 pieces रह जाने पर game 18.4TB database से solved है, और इसका वर्णन यहां है: https://lichess.org/@/lichess/blog/7-piece-syzygy-tablebases...