SlowGuess/NeurIPS_2023_OCR huggingface dataset:
Table 2: UCI to FEN test
Tasks	LLM Models (%)
LLAMA	RedPajama-Base	ChessGPT-Base	ChessGPT-Chat
UCI to FEN	Real Short	2.2 ± 0.0	5.2 ± 0.0	95.1 ± 0.3	95.7 ± 0.1
Real Med	2.3 ± 0.1	4.0 ± 0.1	89.9 ± 0.2	88.6 ± 0.3
Real Long	1.8 ± 0.0	3.8 ± 0.1	85.7 ± 0.2	81.4 ± 0.5
PGN to FEN	Real Short	6.0 ± 0.1	2.8 ± 0.1	96.7 ± 0.1	95.8 ± 0.1
Real Med	5.6 ± 0.1	3.4 ± 0.1	94.8 ± 0.1	93.6 ± 0.1
Real Long	5.7 ± 0.0	8.9 ± 0.1	95.4 ± 0.2	82.7 ± 1.0
positions and the calculation of situation scores. Lastly, the Policy capability gauges the model's aptitude for generating optimal moves based on a given position. By thoroughly examining these sub-categories, we can comprehensively evaluate and contrast the efficacy of different models in chess-related tasks. We choose the following models as baselines: LLaMA-7B [55], RedPajama-Base-3B [53], and compare them with ChessCLIP, ChessGPT-Base-3B $^3$ , and ChessGPT-Chat-3B. To help readers who are not familiar with chess, we provide task examples and illustrative figures to elucidate these evaluation tasks in Appendix G.1.
5.1 Chess modeling ability
Chess state tracking We utilized Big-bench's State Tracking in Chess task [49, 54] to evaluate language models' ability to track the state of chess games encoded in UCI notation. The task involves predicting the legal ending square given the game prefix and starting square of the current move. For example, if the input UCI notation is "f2f4 d7d5 g1", the expected output would be ["h3", "f3"], as the chess piece on square  $g1$  can only move to those two positions. The task dataset includes real and synthetic games, divided into short, medium, and long categories based on move count. The evaluation measures correctness across all games using a specified output regex. Notably, the ChessCLIP is unsuitable for modeling tasks, so we do not include it in the comparison.
Table 1 presents a performance analysis of all models on the task. Our Base and Chat models consistently outperformed baselines in all tasks. This indicates their strong ability to track the state of chess games. However, the ChessGPT-Chat model exhibited slightly lower performance, suggesting a potential trade-off between language capabilities and state tracking. Nevertheless, the results underscore the effectiveness of our dataset-trained LLM models for chess state tracking.
Board state tracking We performed additional evaluations involving UCI to FEN and PGN to FEN conversions. In the UCI to FEN experiment, the target was replaced with FEN format, while in the PGN to FEN experiment, UCI was converted to PGN format as input and the target was replaced with FEN format. The similarity was measured using Levenshtein distance, which was normalized to a range of 0 to 1 [63]. These evaluations focused on assessing the model's capability to track the overall state of the chessboard by representing the state of each chess piece using FEN notation.
Table 2 illustrates the results of these evaluations. It is evident that compared to tracking the state of an individual chess piece, tracking the entire chessboard state becomes more challenging. The similarity scores between the two baselines were consistently below  $10\%$ , indicating a lack of global chess piece state tracking ability. However, the ChessGPT achieves an average similarity score
3The model size is 2.8B and 3B is a rounded representation
Table 3: State value multi-choice
Prompt Setting	Models (%)
LLAMA	RedPajama	ChessGPT-Base	ChessGPT-Chat	ChessCLIP
W/O { suffix	33.2 ± 0.7	31.1 ± 0.7	43.1 ± 0.8	52.8 ± 0.8	N/A
With { suffix	26.9 ± 0.7	29.7 ± 0.8	53.7 ± 0.8	53.5 ± 0.8	38.1 ± 0.8
Table 4: Chess Annotation Multi-choice
Prompt Setting	Models (%)
LLAMA	RedPajama	ChessGPT-Base	ChessGPT-Chat	ChessCLIP
W/O { suffix	29.8 ± 0.8	27.4 ± 0.7	33.2 ± 0.9	35.7 ± 0.9	N/A
With { suffix	29.6 ± 0.8	28.4 ± 0.8	38.8 ± 0.9	34.7 ± 0.9	63.6 ± 0.9
higher than  $90\%$ . These results demonstrate that our dataset-trained model excels in capturing and reproducing the global chess piece state in both UCI to FEN and PGN to FEN conversions.
5.2 Value judgement ability
In this part, we evaluate the model's ability of value judgement. Specifically, we want to assess the model from two perspectives: (1) its ability to align with the true value function given a chessboard state (the true value are evaluated by chess engines in enough search depths) in the evaluation of State value multi-choice, and (2) its ability to align with human judgement and human knowledge in the evaluation of Chess Annotation Multi-choice and Opening multi-choice.
State value multi-choice Here we evaluate the model's ability to see whether it can determine which side holds the advantage for a given PGN. We construct an evaluation dataset consisting of 3000 game snippets and utilize Stockfish 15 with a depth of 18 to calculate the winning rate for the white pieces. By categorizing the winning rate into three intervals:  $0 - 33\%$  for black advantage,  $34 - 66\%$  representing a balanced state, and  $67 - 100\%$  for white advantage, we construct the state-value multiple-choice task. During experiments, we discovered that an additional '\{'' suffix to the prompt can significantly enhance the performance of the base model. This is due to '\{'' consistently serving as the initial symbol for annotation in annotated PGNs. Consequently, we carried out our evaluation under two distinct prompt settings and report our results w.r.t multi-choice grade shown in Table 3.
Chess annotation multi-choice The annotations within an annotated PGN can be viewed as a reflection of human evaluative judgement. To examine the degree to which the model's value aligns with human value, we extract 3k game-language pairs from the annotation dataset as the test set. By randomly selecting three annotations from the test set as incorrect options, we construct the chess annotation four-choice task. We report the multi-choice grade results over two prompts in Table 4.
Opening multi-choice A chess opening refers to the initial moves made by players at the beginning of a chess game. There are numerous chess openings, each with its own name, characteristics, and strategic goals. For example, the Sicilian defense: 1.  $e4$ $c5$  is one of the most popular and aggressive chess openings for Black. We use the Lichess opening dataset [29] including 3.5k opening PGNs and their corresponding names, to formulate two tasks: (1) PGN2Opening five-choice task, which aims at choosing the correct opening name for a given PGN, and reversely, (2) Opening2PGN five-choice task, aiming at choosing the correct PGN for a given opening name. We report the result in Table 5.
In general, our trio of models surpasses the performance of two baseline language models across these four tasks in all settings. This result confirms that our models are more effectively aligned with both the true value function and human judgement/knowledge. Both ChessGPT-Base and ChessGPT-chat deliver outstanding performance in the state-value task and the opening task. Notably, ChessCLIP displays a surprisingly high level of proficiency in the annotation task and the opening task. This result reveals the model's capacity to extract human judgement and knowledge solely from annotations, even without training in any actual chess games.
5.3 Policy evaluation
Checkmate in one We incorporate the checkmate-in-one task from Big-Bench [49] into our evaluation methods. This task is designed to challenge the model's ability to identify a move in a given PGN
Table 5: Opening2PGN and PGN2Opening
Prompt Setting	Models (%)
LLAMA	RedPajama	ChessGPT-Base	ChessGPT-Chat	ChessCLIP
Opening2PGN	43.0 ± 0.9	26.5 ± 0.8	92.2 ± 0.5	94.7 ± 0.4	73.0 ± 0.8
PGN2Opening	20.0 ± 0.7	20.7 ± 0.7	49.3 ± 0.9	55.8 ± 0.9	80.5 ± 0.7
Table 6: Checkmate in One
Setting	Models (%)
LLAMA	RedPajama	ChessGPT-Base	ChessGPT-Chat	ChessCLIP
With suffix (ESM)	1.6 ± 0.2	0.0 ± 0.0	71.4 ± 0.7	56.8 ± 0.8	N/A
With suffix (MC)	2.6 ± 0.3	0.0 ± 0.0	66.1 ± 0.8	11.3 ± 0.5	2.9 ± 0.3
W/O suffix (ESM)	1.7 ± 0.2	0.0 ± 0.0	26.5 ± 0.8	59.4 ± 0.8	N/A
W/O suffix (MC)	2.2 ± 0.3	0.0 ± 0.0	13.6 ± 0.6	15.4 ± 0.6	N/A
that would result in a checkmate. By doing so, it measures the model's capacity to comprehend and apply the rules of chess. The model is essentially required to discern a move that not only places the opponent's king under attack but also ensures that the king cannot evade capture in the next move.
We also find adding an additional instruction suffix like {Now white/black can checkmate in one} can largely enhance the base model performance. We report the result in two prompts with two metrics (exact-string match as ESM and multi-choice-grade as MC) in Table 6. our ChessGPT-Base model and ChessGPT-Chat model show a really great checkmate ability by surpassing two LLM baselines by a large margin. ChessCLIP does not perform well in this task, because there does not exist much annotation data regarding checkmate-in-one behavior in the annotation dataset.
General policy In order to assess the model's generalization ability, we introduced Elo Rating as a factor in the task, aiming to evaluate its capacity to identify PGN and related keywords and generate the appropriate next move within the specified skill level. Model's selection of the next legal move is assigned a move score, which is normalized based on the win rate observed in the raw data. Table 7 presents the results representing the performance of different models in selecting the most suitable move for white
Table 7: Elo Rating 1700-2000
LLM Models	Move Score
LLAMA	55.1 ± 1.1
RedPajama	56.4 ± 0.9
ChessGPT-Base	59.6 ± 1.0
ChessGPT-Chat	60.3 ± 1.0
chess. Notably, all models surpassed the performance of the random policy  $(\approx 50\%)$  as the Elo Ratings correspond to relatively high skill levels among human players.
Further analyzing the performance of different models across varying Elo Ratings is crucial for understanding the observed results. The minor variations in move scores for different Elo Rating scenarios in Table 8 indicate that ChessGPT-Base may struggle to effectively incorporate Elo Rating information into its decision-making process. This could be due to the model's limited understanding of the nuanced characteristics associated with distinct Elo Ratings. The complexity of the task and the challenges in accurately accounting for diverse playing styles further contribute to the limited variations in move scores across different Elo Ratings. Consequently, neglecting this information can lead to the model learning an average policy for each Elo Rating, resulting in subpar overall performance. Similar findings were observed in the black chess test, and to further validate this viewpoint, we conducted input attention visualization. Refer to Appendix F.1.2 for more details.
To clarify, the dataset we have presented encompasses a wide range of games and varying Elo ratings, as shown in Figure 2, which possesses the potential to effectively capture and generalize intricate patterns and policies associated with different Elo levels. However, the current training method might not sufficiently emphasize these nuanced features. This highlights a potential direction for future research, which involves enhancing the model's ability to better integrate and utilize metadata such as Elo Rating and other auxiliary data. By addressing these aspects, the model's overall generalization
Table 8: ChessGPT-Base in Different Elo Rating Results
Elo Rating	Move Score
700-1000	59.4 ± 1.0
1200-1500	58.9 ± 0.9
1700-2000	59.6 ± 1.0
2700-3000	59.8 ± 1.0
5.4 Qualitative results
We also perform qualitative comparison between our models (ChessGPT-Chat and ChessGPT-Base) and the baselines. We ask the language models a series of questions ranging from factual knowledge of chess as well as requesting the models to perform some operational tasks related to chess. We found that ChessGPT-base performed similarly to RedPajama: both models can sometimes produce factual answers for some of the questions but they failed to generate coherent answers when asked to perform tasks such as providing commentary on chess moves or converting the PGN notation to FEN. ChessGPT-Chat gives more factual answers and demonstrates better performance when prompted to generate analysis and perform other chess-related tasks. Refer to Appendix H for qualitative analysis.
In this paper, we introduce a new large-scale dataset and benchmark on chess to encourage the study of the interplay between historical policy data and natural language knowledge. We accompany our dataset with an evaluation framework for assessing language models' capability in chess. We showcase two models, ChessCLIP and ChessGPT, that demonstrate promising results for learning the interplay between language and action. Nevertheless, our results indicate that we are only beginning to understand how to bridge the gap between policy learning and language modeling and we discuss more on the future directions of our dataset in Appendix J. We hope that our dataset and benchmark can make future research on policy and language alignment more accessible.
A Acknowledgement 17
B Different Chess Formats 17
B.1 Universal Chess Interface (UCI) 17
B.2 Standard Algebraic Notation (SAN) 17
B.3 Portable Game Notation (PGN) 17
B.4 Forsyth-Edwards Notation (FEN) 17
C Image sources 18
D Dataset analysis 18
D.1 Dataset statistics and metrics 18
D.2 Dataset examples 19
E Data Collection and Preprocessing 26
E.1 Online Chess websites 26
E.2 Online Chess forums 26
E.3 Annotated PGN 26
E.4 Existing Datasets 27
E.5 YouTube transcripts dataset 27
E.6 Lichess dataset 28
E.7 Pro-player dataset 28
E.8 Chess books 29
E.9 CCRL 29
E.10 Chess puzzles 29
E.11 Chess modeling data 29
E.12 Preprocessing 29
E.13 Licenses and dataset cards 30
F Implementation and Evaluation Details 30
F.1 Implemenetation details 30
G Evaluation details 32
G.1 Evaluation task examples and plots 32
H Qualitative Analysis 36
H.1 Experimental set-up 36
H.2 General knowledge 37
H.3 Chess modeling 41
I ChessCLIP visualization 46
J Potential directions 46
K Limitations and Potential Societal Impact 47
A Acknowledgement
We thank Jiacheng Liu for his work on collecting chess-related data and chess book list.
B Different Chess Formats
B.1 Universal Chess Interface (UCI)
The UCI format is widely used for communication between chess engines and user interfaces. It represents chess moves by combining the starting and ending squares of a piece, such as "e2e4" to indicate moving the pawn from e2 to e4. For example, the UCI notation for a full game would be:
e2e4 c7c6 g1f3 d7d5 e4d5 c6d5 d2d4 b8c6 c2c4 g8f6 b1c3 c8e6 c4c5 g7g6 c1f4 f8g7  
f1e2 f6e4 e1g1 e6g4 f3e5 g4e2 d1e2 c6e5 c3e4 e5c6 e4d6 e8f8 f1e1 g7d4 f4h6 d4g7  
h6g7 f8g7 d6b5 a7a6 b5c3 d5d4 c3e4 d8d5 a2a3 a8d8 b2b4 h7h6 e2
B.2 Standard Algebraic Notation (SAN)
SAN (Standard Algebraic Notation) is a widely used notation system in the game of chess for recording and describing moves. It provides a standardized and concise representation of moves that is easily understood by chess players and enthusiasts. In SAN, each move is represented by two components: the piece abbreviation and the destination square. The piece abbreviation is a letter that represents the type of piece making the move, such as "K" for king, "Q" for queen, "R" for rook, "B" for bishop, "N" for knight, and no abbreviation for pawns. The destination square is denoted by a combination of a letter (a-h) representing the column and a number (1-8) representing the row on the chessboard. Additional symbols may be used to indicate specific move types. The symbol "+" is used to indicate a check, while "#" denotes a checkmate. Castling moves are represented by "O-O" for kingside castling and "O-O-O" for queenside castling.
B.3 Portable Game Notation (PGN)
PGN is a widely adopted format for recording chess games. It includes not only the SAN moves but also additional information like player names, event details, and game results. PGN files are human-readable and can be easily shared and analyzed. Here is an example of a PGN representation of a full game:
[Event "World Chess Championship"]  
[Site "London, England"]  
[Date "2023.05.20"]  
[Round "1"]  
[White "Carlsen, Magnus"]  
[Black "Nepomniachtchi, Ian"]  
[Result "1/2-1/2"]  
1. e4 e5 2. Nf3 Nc6 3. Bb5 a6 4. Ba4 Nf6 5. 0-0 Be7 6. Re1 b5 7. Bb3 d6  
8. c3 0-0 9. h3 Nb8 10. d4 Nbd7 11. Nbd2 Bb7 12. Bc2 Re8 13. Nf1 Bf8  
14. Ng3 g6 15. a4 c5 16. d5 c4 17. Bg5 h6 18. Be3 Nc5 19. Qd2 h5 20. Bg5 Bg7  
21. Nh2 Qc7 22. Rf1 Nh7 23. Bh6 Bh8 24. f4 exf4 25. Bxf4 Nf6 26. Rae1 bxa4  
27. Nf3 Nfd7 28. Bh6 Ne5 29. Nxe5 Bxe5 30. Rf3 Qb6 31. Kh1 Qxb2 32. Ref1 Re7  
33. Bg5 Rd7 34. Bf6 Bxf6 35. Rxf6 a3 36. Nxh5 a2 37. Qh6 gxh5 38. R6f3 h4  
39. Rf4 f5 40. Rxf5 Rg7 41. Rh5 1-0
B.4 Forsyth-Edwards Notation (FEN)
FEN is a notation system used to describe the state of a chess game. It represents the positions of pieces on the chessboard, active color, castling rights, en passant targets, and the half-move and full-move counters. Here is an example of a FEN notation representing the starting position:
rnbqkbnr/pppppppp/8/8/8/8/PPP PPPPPR/NBQKBNR w KQkq - 0 1
In this FEN notation, each letter represents a piece on the board, with uppercase letters representing white pieces and lowercase letters representing black pieces. The forward slash  $(\prime \prime \prime)$  separates ranks, and the number after
each rank indicates the number of empty squares. The active color is represented by "w" for white or "b" for black. The castling rights are denoted by "K" (white kingside), "Q" (white queenside), "k" (black kingside), and "q" (black queenside). The en passant target square is indicated with the corresponding square, or "-" if there is no en passant target. The half-move and full-move counters specify the number of half-moves since the last pawn move or capture and the current move number, respectively.
These different chess formats serve various purposes, from representing individual moves (UCI) to recording entire games (PGN) and describing specific positions (FEN). Understanding and working with these formats is essential for tasks like parsing, analyzing, and exchanging chess game data in different contexts.
C Image sources
Here we provide the sources for images used in our Figure 1.
Online game: https://lichess.org/tv
- Pro game: https://www.insidethegames.biz/articles/1110959/magnus-carlsen-chess-world-cup-duda
- Computer game: https://www.chess.com/news/view/updated-alphazer-crushes-stockfish-in-new-1-000-game-match
- Modeling: https://www.chess.com/terms/fen-chess
- Puzzle: https://chesspuzzle.net/
- General text: https://www.bbc.co.uk/newsround/66233770
- Wiki: https://en.wikipedia.org/wiki/Chess
- Forum: https://www.chess.com/forum
- Blog: https://www.chess.com/blogs
- Book: https://www.amazon.co.uk/Chess-Strategy-Action-John-Watson/dp/1901983692
- Annotated game: https://www.chess.com/forum/view/game-analysis/kingside-pawn-rush
- Youtube video: https://www.youtube.com/watch?v=NAlIQyOpcjNM
- Reddit: https://www.reddit.com/r/chess/comments/15s65hb/white_toPlay_and_reach_2000_chesscom/jwdqpze/?context=3
- Value judgement: https://www.thenewatlantis.com/wp-content/uploads/legacy/20190820_TNA58Wilkenfeldbanner.jpg
D Dataset analysis
D.1 Dataset statistics and metrics
InTable 9, we present the dataset statistics breakdown for each data subset, including its raw size, document count, and subset type.
Table 10 shows the properties of the chess-specific language dataset that we use for training ChessGPT. For these datasets, we computed the average number of words (num. words) per example, character repetition ratio (char. rep. ratio), word repetition ratio (word. rep. ratio.), special character ratio (special char. ratio), stopwords ratio and perplexity of the first shard for each subset in the language dataset. These metrics are based on some of the criteria employed by Bloom [25] in their pre-processing pipelines.
Table 9: Dataset statistics
Component	Raw size	Document count	Subset type
Lichess	19.9 GB	17.5 M	Game
Pro-player	0.37 GB	0.44 M	Game
CCRL	3.60 GB	3.00 M	Game
Chess puzzles	1.53 GB	3.19 M	Game
Chess modeling	0.94 GB	1.90 M	Game
C4-Chess	0.59 GB	0.18 M	Language
Pile-Chess	1.10 GB	0.10 M	Language
RedPajama-Chess	5.65 GB	0.52 M	Language
Oscar-Chess	3.13 GB	0.33 M	Language
WikiPedia-Chess	40.3 MB	11.4 K	Language
Chess Blogs	0.59 GB	73.2 K	Language
Chess Books	1.86 GB	8.36 K	Language
Chess Forums	1.05 GB	0.14 M	Language
Annotated Chess Games	0.66 GB	245 K	Mixed
Youtube transcripts	0.98 GB	83.0K	Mixed
GPT-4-Chess	0.95 MB	3.91 K	Conversation
Reddit	0.86 GB	0.41 M	Conversation
Overall	42.3 GB	28.1 M	N/A
Table 10: Metrics for the language dataset.
dataset	num. words	char. rep. ratio	word rep. ratio	special char ratio	stopwords ratio	perplexity
Chess puzzles	49.6618	0.0104	0.0000	0.3246	0.4771	988.3734
Oscar-Chess	1441.4341	0.0596	0.0499	0.2242	0.4119	665.6499
Pile-Chess	2105.2454	0.0626	0.0205	0.2409	0.4227	497.3883
RedPajama-Chess	1581.5825	0.0532	0.0163	0.2273	0.4218	410.1236
StackExchange-Chess	578.3733	0.0591	0.0816	0.2617	0.4835	520.1257
Wikipedia-Chess	463.4980	0.0876	0.0052	0.2604	0.3079	236.9671
C4-Chess	510.6041	0.0479	0.0082	0.2131	0.4418	548.9471
D.2 Dataset examples
In this subsection, we offer dataset examples for each subset to help the readers to understand its contents more intuitively and clearly.
[Event "Rated Bullet tournament https://lichess.org/tournament/yc1WW20x"]  
[Site "https://lichess.org/PpwPOZMq"]  
[Date "2017.04.01"]  
[Round "-"]  
[White "Abbot"]  
[Black "Costello"]  
[Result "0-1"]  
[UTCDate "2017.04.01"]  
[UTCTime "11:32:01"]  
[WhiteElo "2100"]  
[BlackElo "2000"]  
[WhiteRatingDiff "-4"]  
[BlackRatingDiff "+1"]  
[Title "FM"]  
[ECO "B30"]  
[Opening "Sicilian Defense: Old Sicilian"]  
[TimeControl "300+0"]  
[Termination "Time forfeit"]  
1.e4{[%eval 0.17]}1...c5{[%eval 0.19]}  
2.Nf3{[%eval 0.25]}2...Nc6{[%eval 0.33]}  
3.Bc4{[%eval -0.13]}3...e6{[%eval -0.04]}  
4.c3{[%eval -0.4]}4...b5?{[%eval 1.18]}  
5.Bb3?!{[%eval 0.21]}5...c4{[%eval 0.32]}  
6.Bc2{[%eval 0.2]}6...a5{[%eval 0.6]}  
7.d4{[%eval 0.29]}7...cxxd3{[%eval 0.6]}  
8.Qxd3{[%eval 0.12]}8...Nf6{[%eval 0.52]}  
9.e5{[%eval 0.39]}9...Nd5{[%eval 0.45]}  
10.Bg5?!{[%eval -0.44]}10...Qc7{[%eval -0.12]}  
11.Nbd2??{[%eval -3.15]}11...h6{[%eval -2.99]}  
12.Bh4{[%eval -3.0]}12...Ba6{[%eval -0.12]}  
13.b3??{[%eval -4.14]}13...Nf4{[%eval -2.73]}0-1
Pro-player
[Event "URS-ch34"]  
[Site "Tbilisi"]  
[Date "1966.??..?"]  
[Round "9"]  
[White "Bronstein, David I"]  
[Black "Suetin, Alexey S"]  
[Result "1/2-1/2"]  
[WhiteElo ""]  
[BlackElo ""]  
[ECO "B97"]
1.e4 c5 2.Nf3 d6 3.d4 cxd4 4.Nxd4 Nf6 5.Nc3 a6  
6.Bg5 e6 7.f4 Qb6 8.Qd2 Qxb2  
9.Rb1 Qa3 10.Bxf6 gxf6 11.Be2 Bg7 12.O-O Nc6  
13.Nxc6 bxc6 14.Rb3 Qc5+ 15.Kh1 f5  
16.exf5 exf5 17.Na4 Qd4 18.Qxd4 Bxd4 19.Rd1 Bf2  
20.Rxd6 0-0 21.Nb6 Bxb6 22.Rxb6 Re8  
23.Bf1 Be6 24.Kg1 Bxa2 25.Rxa6 Rxa6 26.Bxa6 Bd5  
27.Kf2 Re4 28.g3 Bc4 29.Rxc6 Re2+  
30.Kg1 Bxa6 31.Rxa6 Rxc2 32.Ra5 Kg7 33.Rxf5 Kg6  
34.Rg5+ Kf6 1/2-1/2
CCRL
[Event "CCRL 40/15"]  
[Site "CCRL"]  
[Date "2022.01.08"]  
[Round "806.6.381"]  
[White "Stockfish 060122 64-bit"]  
[Black "Dragon by Komodo 2.6 64-bit"]  
[Result "1/2-1/2"]  
[ECO "D30"]  
[Opening "Queen's gambit declined"]  
[PlyCount "115"]  
[WhiteElo "3505"]  
[BlackElo "3480"]