{"about":{"site":"https://codewithpapers.app","non_affiliation":"Code with Papers and Syntology are not affiliated with, endorsed by, or sponsored by Papers with Code, Meta, or the pwc-archive mirror.","licence":"CC BY-SA 4.0","licence_url":"https://creativecommons.org/licenses/by-sa/4.0/legalcode","attribution":"https://codewithpapers.app/attribution","modified":"archive material modified by Syntology; see the attribution page"},"url":"/paper/grandmaster-level-chess-without-search","title":"Amortized Planning with Large-Scale Transformers: A Case Study on Chess","arxiv_id":"2402.04494","date":"2024-02-07","proceeding":null,"authors":["Anian Ruoss","Grégoire Delétang","Sourabh Medapati","Jordi Grau-Moya","Li Kevin Wenliang","Elliot Catt","John Reid","Cannada A. Lewis","Joel Veness","Tim Genewein"],"abstract":"This paper uses chess, a landmark planning problem in AI, to assess transformers' performance on a planning task where memorization is futile $\\unicode{x2013}$ even at a large scale. To this end, we release ChessBench, a large-scale benchmark dataset of 10 million chess games with legal move and value annotations (15 billion data points) provided by Stockfish 16, the state-of-the-art chess engine. We train transformers with up to 270 million parameters on ChessBench via supervised learning and perform extensive ablations to assess the impact of dataset size, model size, architecture type, and different prediction targets (state-values, action-values, and behavioral cloning). Our largest models learn to predict action-values for novel boards quite accurately, implying highly non-trivial generalization. Despite performing no explicit search, our resulting chess policy solves challenging chess puzzles and achieves a surprisingly strong Lichess blitz Elo of 2895 against humans (grandmaster level). We also compare to Leela Chess Zero and AlphaZero (trained without supervision via self-play) with and without search. We show that, although a remarkably good approximation of Stockfish's search-based algorithm can be distilled into large-scale transformers via supervised learning, perfect distillation is still beyond reach, thus making ChessBench well-suited for future research.","url_abs":"https://arxiv.org/abs/2402.04494v2","url_pdf":"https://arxiv.org/pdf/2402.04494v2.pdf","source":{"archive":"pwc-archive (Hugging Face), CC BY-SA 4.0","snapshot":"2025-07-28","licence_url":"https://creativecommons.org/licenses/by-sa/4.0/legalcode","row_kind":"abstracts"},"code_links":[{"paper_slug":"grandmaster-level-chess-without-search","repo_url":"https://github.com/google-deepmind/searchless_chess","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"jax","reach":{"status":"ok","spdx":"Apache-2.0"}}],"tasks":[{"task_slug":"memorization","task_name":"Memorization"}],"methods":[{"method_slug":"adam","method_name":"Adam"},{"method_slug":"alphazero","method_name":"AlphaZero"},{"method_slug":"attention","method_name":"Attention"},{"method_slug":"attention-dropout","method_name":"Attention Dropout"},{"method_slug":"bpe","method_name":"BPE"},{"method_slug":"cosine-annealing","method_name":"Cosine Annealing"},{"method_slug":"dense-connections","method_name":"Dense Connections"},{"method_slug":"dropout","method_name":"Dropout"},{"method_slug":"gpt-3","method_name":"GPT-3"},{"method_slug":"layer-normalization","method_name":"Layer Normalization"},{"method_slug":"linear-layer","method_name":"Linear Layer"},{"method_slug":"linear-warmup-with-cosine-annealing","method_name":"Linear Warmup With Cosine Annealing"},{"method_slug":"multi-head-attention","method_name":"Multi-Head Attention"},{"method_slug":"residual-connection","method_name":"Residual Connection"},{"method_slug":"softmax","method_name":"Softmax"},{"method_slug":"weight-decay","method_name":"Weight Decay"}],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2402.04494","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2402.04494"}},"developers":"https://syntology.ai/developers","read_at":"2026-09-24T18:15:14+00:00","read_at_is":"when the build read Syntology's graph, not when any sample ran","claim":"Per-sample execution status on synthesized fixtures; not a correctness claim about the paper. Samples come from repositories linked to the paper, official or community; repo_kind says which.","repos":[{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/google-deepmind/searchless_chess","reach":{"status":"ok","spdx":"Apache-2.0"}}],"summary":{"ran":5,"unverified":2},"by_repo_kind":{"official":{"samples":7,"ran":5,"repositories":1}},"repo_kind_vocabulary":{"official":"The archive marks this repository official for the paper","named_in_paper":"The archive records that the paper mentions this repository; it is not marked official","listed":"In the archive's code links for this paper, not marked official and not recorded as mentioned in the paper","found_in_text":"Syntology found this repository in the paper's own text; whether it is the authors' implementation is not asserted","community":"Not in the archive's code links for this paper; a community repository Syntology harvested"},"n_pointer_only_for_licence":0,"samples":[{"code_sha256_prefix":"591fdb4ac81fd268","entry":"centipawns_to_win_probability","repo":"google-deepmind/searchless_chess","repo_kind":"official","path":"src/utils.py","file_url":"https://github.com/google-deepmind/searchless_chess/blob/HEAD/src/utils.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"591fdb4ac81fd268"}},{"code_sha256_prefix":"dcd92d478a8bcc64","entry":"compute_return_buckets_from_returns","repo":"google-deepmind/searchless_chess","repo_kind":"official","path":"src/utils.py","file_url":"https://github.com/google-deepmind/searchless_chess/blob/HEAD/src/utils.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"dcd92d478a8bcc64"}},{"code_sha256_prefix":"20d0be0806826b79","entry":"get_uniform_buckets_edges_values","repo":"google-deepmind/searchless_chess","repo_kind":"official","path":"src/utils.py","file_url":"https://github.com/google-deepmind/searchless_chess/blob/HEAD/src/utils.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"20d0be0806826b79"}},{"code_sha256_prefix":"f915c59353ea23e2","entry":"sinusoid_position_encoding","repo":"google-deepmind/searchless_chess","repo_kind":"official","path":"src/transformer.py","file_url":"https://github.com/google-deepmind/searchless_chess/blob/HEAD/src/transformer.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"f915c59353ea23e2"}},{"code_sha256_prefix":"441d1203a85b9ca6","entry":"tokenize","repo":"google-deepmind/searchless_chess","repo_kind":"official","path":"src/tokenizer.py","file_url":"https://github.com/google-deepmind/searchless_chess/blob/HEAD/src/tokenizer.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"441d1203a85b9ca6"}},{"code_sha256_prefix":"fa2f70d86d6bc6e4","entry":"embed_sequences","repo":"google-deepmind/searchless_chess","repo_kind":"official","path":"src/transformer.py","file_url":"https://github.com/google-deepmind/searchless_chess/blob/HEAD/src/transformer.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"fa2f70d86d6bc6e4"}},{"code_sha256_prefix":"a145acc7af542d06","entry":"layer_norm","repo":"google-deepmind/searchless_chess","repo_kind":"official","path":"src/transformer.py","file_url":"https://github.com/google-deepmind/searchless_chess/blob/HEAD/src/transformer.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"a145acc7af542d06"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}