सर्च के बिना Grandmaster स्तर की chess
(github.com/google-deepmind)- 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
- Puzzle evaluation के लिए
-
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 interfacessrc/transformer.py: Decoder-only Transformersrc/train.py: example training और evaluation scriptsrc/puzzles.py: puzzle evaluation scriptsrc/tournament.py: Elo tournament scriptsrc/searchless_chess.ipynb: model behavior analysis notebooksrc/tokenizer.py: chess board tokenization
- Pretrained checkpoints
9M,136M,270Mmodels के रूप में उपलब्ध हैं - 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 होना चाहिए
- उदाहरण में CUDA 12 के लिए
- External engines और tools install करने होंगे
Evaluation और usage
- Local training
srcमेंpython train.pyसे run करें- Checkpoints
/checkpoints/localमें save होते हैं
- Checkpoints
- 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
- Local training model:
- 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 टिप्पणियां
Hacker News की राय
ऑफ़टॉपिक है, लेकिन मैं जानना चाहता हूँ कि GM-न-होने वाले स्तर का कंप्यूटर chess अभी कहाँ तक पहुँचा है
कभी-कभी मैं अपने स्तर के आसपास के प्रतिद्वंद्वी से, या training के लिए अपने से लगभग 100 rating points ऊपर वाले प्रतिद्वंद्वी से खेलना चाहता हूँ
ज़्यादातर engines को search depth घटाकर कमजोर बनाया जा सकता है, लेकिन आम तौर पर यह ठीक से काम नहीं करता। काफी घटा दें तो मैं लगभग आधे games जीतने लगता हूँ, फिर भी ज़्यादातर game में लगातार मैं दबा रहता हूँ और अंत में engine एक-दो बड़ी गलतियाँ कर देता है, जिससे जीतता हुआ महसूस होता है
मुझे ऐसा computer opponent चाहिए जो मेरे चुने हुए स्तर पर खेले, लेकिन उस rating band के typical human player जैसा लगे। सोच रहा हूँ कि ऐसा कोई engine है क्या
कुछ मौके सच में “human जैसा” लगे, जैसे ऐसे trap में फँसना जिसे पारंपरिक search algorithm आसानी से बचा लेता, लेकिन इंसान फँस सकता है
इसे adjust नहीं कर सकते, लेकिन अलग-अलग rating वाले कुछ versions हैं। हालांकि range बहुत बड़ी नहीं है
https://www.maiachess.com/
https://lichess.org/@/maia1
जैसे-जैसे 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 मेरी गलतियों का फायदा उठा सके
अगर आप पर्याप्त स्थिर नहीं खेलते, तो बस हार जाते
मेरी नजर में यह feature शायद अब हट गया है। दबाव में human जैसी गलती करने का एहसास देता था; computer की तरह खेलते हुए random मूर्खतापूर्ण move करने से अलग, यह अकेला computer था जो सचमुच असली 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...
इसलिए 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 पर जो लिखा है
training में इस्तेमाल हुआ विशाल synthetic dataset आखिरकार बहुत सारी traditional search से ही बनाया गया था। इसलिए इसमें थोड़ी अजीब-सी बात है, लेकिन फिर भी यह cool है
GM और chess author Matthew Sadler ने training games के लिए Leela Zero को लगभग केवल intuition से खेलने, और search को बहुत कम या बिल्कुल नहीं करने के लिए configure किया था, ऐसा मुझे याद है
आम तौर पर वे जीतते थे, लेकिन हमेशा नहीं। शायद यह The Silicon Road to Chess Improvement में था
अगर हर गेम की हर बोर्ड पोज़िशन पर Stockfish चलाकर training data बनाया जाए, तो क्या अंत में search tree को Transformer model में encode ही नहीं किया जा रहा होगा?
फिर model के parameters की संख्या बढ़ाने पर search tree का ज़्यादा हिस्सा समा सकेगा और performance बेहतर होगी, लेकिन यह बहुत दिलचस्प नहीं लगता
यह 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 भी किए गए
अच्छा होगा अगर कोई ऐसा engine हो जो इंसानों की तरह ज़्यादा सोचता हो। यह तरीका Stockfish-annotated game records इस्तेमाल करता है, इसलिए मूल रूप से यह computer की तरह सोचने लगेगा लगता है
अगर यह इंसानों की तरह सोचे, तो game review में हर position पर क्या देखना चाहिए, यह मेरे Elo के हिसाब से बताने में बहुत अच्छा होगा
Magnus Carlsen इसलिए महान हैं क्योंकि computer की तुलना में बेहद ज्यादा time और compute constraints के भीतर उन्होंने अपनी मौजूदा chess skill हासिल की। उनकी learning efficiency किसी भी chess engine की तुलना में असाधारण है
यह 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 से संभव है
Chess में board पर 7 pieces रह जाने पर game 18.4TB database से solved है, और इसका वर्णन यहां है: https://lichess.org/@/lichess/blog/7-piece-syzygy-tablebases...