-
Notifications
You must be signed in to change notification settings - Fork 2.3k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[tools] Merge branch 'upstream/master' (4c7de9e8abd8d5dc71d0c85dddd75a7b244600d7) into tools #4040
Conversation
fixes official-stockfish#3658 dependencies are now regenerated for each code change, this adds some 1s overhead in compile time, but avoids potential miscompilations or build problems. closes official-stockfish#3659 No functional change
This net was created with the nnue-pytorch trainer, it used the previous master net as a starting point. The training data includes all T60 data (https://drive.google.com/drive/folders/1rzZkgIgw7G5vQMLr2hZNiUXOp7z80613), all T74 data (https://drive.google.com/drive/folders/1aFUv3Ih3-A8Vxw9064Kw_FU4sNhMHZU-) and the wrongNNUE_02_d9.binpack (https://drive.google.com/file/d/1seGNOqcVdvK_vPNq98j-zV3XPE5zWAeq). The Leela data were randomly named and then concatenated. All data was merged into one binpack using interleave_binpacks.py. python3 train.py \ ../data/t60_t74_wrong.binpack \ ../data/t60_t74_wrong.binpack \ --resume-from-model ../data/nn-e8321e467bf6.pt \ --gpus 1 \ --threads 4 \ --num-workers 1 \ --batch-size 16384 \ --progress_bar_refresh_rate 300 \ --random-fen-skipping 3 \ --features=HalfKAv2_hm^ \ --lambda=1.0 \ --max_epochs=600 \ --seed $RANDOM \ --default_root_dir ../output/exp_24 STC: LLR: 2.95 (-2.94,2.94) <-0.50,2.50> Total: 15320 W: 1415 L: 1257 D: 12648 Ptnml(0-2): 50, 1002, 5402, 1152, 54 https://tests.stockfishchess.org/tests/view/611c404a4977aa1525c9c97f LTC: LLR: 2.94 (-2.94,2.94) <0.50,3.50> Total: 9440 W: 345 L: 248 D: 8847 Ptnml(0-2): 3, 222, 4175, 315, 5 https://tests.stockfishchess.org/tests/view/611c6c7d4977aa1525c9c996 LTC with UHO_XXL_+0.90_+1.19.epd: LLR: 2.94 (-2.94,2.94) <0.50,3.50> Total: 6232 W: 1638 L: 1459 D: 3135 Ptnml(0-2): 5, 592, 1744, 769, 6 https://tests.stockfishchess.org/tests/view/611c9b214977aa1525c9c9cb closes official-stockfish#3664 Bench: 5375286
Fix handling of empty strings in uci options and reassigning of the log file Fixes official-stockfish#3650 Closes official-stockfish#3655 No functional change
The new network caused some issues initially due to the very narrow neuron set between the first two FC layers. Necessary changes were hacked together to make it work. This patch is a mature approach to make the affine transform code faster, more readable, and easier to maintain should the layer sizes change again. The following changes were made: * ClippedReLU always produces a multiple of 32 outputs. This is about as good of a solution for AffineTransform's SIMD requirements as it can get without a bigger rewrite. * All self-contained simd helpers are moved to a separate file (simd.h). Inline asm is utilized to work around GCC's issues with code generation and register assignment. See https://gcc.gnu.org/bugzilla/show_bug.cgi?id=101693, https://godbolt.org/z/da76fY1n7 * AffineTransform has 2 specializations. While it's more lines of code due to the boilerplate, the logic in both is significantly reduced, as these two are impossible to nicely combine into one. 1) The first specialization is for cases when there's >=128 inputs. It uses a different approach to perform the affine transform and can make full use of AVX512 without any edge cases. Furthermore, it has higher theoretical throughput because less loads are needed in the hot path, requiring only a fixed amount of instructions for horizontal additions at the end, which are amortized by the large number of inputs. 2) The second specialization is made to handle smaller layers where performance is still necessary but edge cases need to be handled. AVX512 implementation for this was ommited by mistake, a remnant from the temporary implementation for the new... This could be easily reintroduced if needed. A slightly more detailed description of both implementations is in the code. Overall it should be a minor speedup, as shown on fishtest: passed STC: LLR: 2.96 (-2.94,2.94) <-0.50,2.50> Total: 51520 W: 4074 L: 3888 D: 43558 Ptnml(0-2): 111, 3136, 19097, 3288, 128 and various tests shown in the pull request closes official-stockfish#3663 No functional change
slightly simpler formula for reduction computation. first round of tests: STC: LLR: 2.97 (-2.94,2.94) <-2.50,0.50> Total: 15632 W: 1319 L: 1204 D: 13109 Ptnml(0-2): 33, 956, 5733, 1051, 43 https://tests.stockfishchess.org/tests/view/60bd03c7457376eb8bcaa600 LTC: LLR: 3.37 (-2.94,2.94) <-2.50,0.50> Total: 86296 W: 2814 L: 2779 D: 80703 Ptnml(0-2): 33, 2500, 38039, 2551, 25 https://tests.stockfishchess.org/tests/view/60bd1ff0457376eb8bcaa653 recent tests: STC: LLR: 2.93 (-2.94,2.94) <-2.50,0.50> Total: 23936 W: 1895 L: 1793 D: 20248 Ptnml(0-2): 40, 1470, 8869, 1526, 63 https://tests.stockfishchess.org/tests/view/611f9b7d4977aa1525c9cb6b LTC: LLR: 2.95 (-2.94,2.94) <-2.50,0.50> Total: 62568 W: 1750 L: 1713 D: 59105 Ptnml(0-2): 19, 1560, 28085, 1605, 15 https://tests.stockfishchess.org/tests/view/611fa4814977aa1525c9cb71 functional on high depth closes official-stockfish#3535 Bench: 5375286
LMR Pv and depth 6 Extension tweak: LTC: LLR: 2.93 (-2.94,2.94) <0.50,3.50> Total: 52488 W: 1542 L: 1394 D: 49552 Ptnml(0-2): 18, 1253, 23552, 1405, 16 https://tests.stockfishchess.org/tests/view/611e49c34977aa1525c9caa7 STC: LLR: 2.94 (-2.94,2.94) <-0.50,2.50> Total: 76216 W: 6000 L: 5784 D: 64432 Ptnml(0-2): 204, 4745, 28006, 4937, 216 https://tests.stockfishchess.org/tests/view/611e0e254977aa1525c9ca89 closes official-stockfish#3666 Bench: 5046381
SPSA: https://tests.stockfishchess.org/tests/view/611cf0da4977aa1525c9ca03 Parameters: 256 net weights and 8 net biases (output layer) Base net: nn-ac5605a608d6.nnue New net: nn-517c4f68b5df.nnue STC: LLR: 2.93 (-2.94,2.94) <-0.50,2.50> Total: 11600 W: 998 L: 851 D: 9751 Ptnml(0-2): 30, 705, 4186, 846, 33 https://tests.stockfishchess.org/tests/view/611f84524977aa1525c9cb5b LTC: LLR: 2.95 (-2.94,2.94) <0.50,3.50> Total: 9360 W: 338 L: 243 D: 8779 Ptnml(0-2): 0, 220, 4151, 303, 6 https://tests.stockfishchess.org/tests/view/611f8c5b4977aa1525c9cb64 closes official-stockfish#3667 Bench: 4844618
Removes possible micro-optimization in favor of readability. STC: LLR: 2.95 (-2.94,2.94) <-2.50,0.50> Total: 75432 W: 5824 L: 5777 D: 63831 Ptnml(0-2): 178, 4648, 28036, 4657, 197 https://tests.stockfishchess.org/tests/view/611fa7f84977aa1525c9cb75 LTC: LLR: 2.93 (-2.94,2.94) <-2.50,0.50> Total: 41200 W: 1156 L: 1106 D: 38938 Ptnml(0-2): 13, 981, 18562, 1031, 13 https://tests.stockfishchess.org/tests/view/611fcc694977aa1525c9cb9b Closes official-stockfish#3669 No functional change
some GUIs send an empty string for EvalFile, in that case explicitly try the default name fixes official-stockfish#3675 closes official-stockfish#3678 No functional change.
This will avoid to run in fishtest a test where the linux machines exit from the building process and only the windows machines run the test. See: https://tests.stockfishchess.org/tests/view/61122d732a8a49ac5be79996 SFisGOD@4e42257#comments closes official-stockfish#3671 No functional change.
STC: LLR: 2.95 (-2.94,2.94) <-0.50,2.50> Total: 37368 W: 9621 L: 9391 D: 18356 Ptnml(0-2): 117, 4287, 9664, 4481, 135 https://tests.stockfishchess.org/tests/view/612768165318138ee1204977 LTC: LLR: 2.94 (-2.94,2.94) <0.50,3.50> Total: 13328 W: 3446 L: 3246 D: 6636 Ptnml(0-2): 11, 1383, 3682, 1571, 17 https://tests.stockfishchess.org/tests/view/6127dc8d62d20cf82b5ad196 Closes official-stockfish#3679 Bench: 5179347
Tweak pruning formula by adding up CMH values. STC: LLR: 2.94 (-2.94,2.94) <-0.50,2.50> Total: 14608 W: 3837 L: 3641 D: 7130 Ptnml(0-2): 27, 1681, 3723, 1815, 58 https://tests.stockfishchess.org/tests/view/612792f362d20cf82b5ad156 LTC: LLR: 2.94 (-2.94,2.94) <0.50,3.50> Total: 53520 W: 13580 L: 13276 D: 26664 Ptnml(0-2): 28, 5610, 15183, 5908, 31 https://tests.stockfishchess.org/tests/view/6127d27062d20cf82b5ad191 closes official-stockfish#3682 Bench: 5186641
SPSA 1: https://tests.stockfishchess.org/tests/view/61286d8b62d20cf82b5ad1bd Parameters: A total of 256 net biases were tuned (hidden layer 2) Base net: nn-33495fe25081.nnue New net: nn-83e3cf2af92b.nnue SPSA 2: https://tests.stockfishchess.org/tests/view/6129cf2162d20cf82b5ad25f Parameters: A total of 64 net biases were tuned (hidden layer 1) Base net: nn-83e3cf2af92b.nnue New net: nn-69a528eaef35.nnue SPSA 3: https://tests.stockfishchess.org/tests/view/612a0dcb62d20cf82b5ad2a0 Parameters: 256 net weights and 8 net biases (output layer) Base net: nn-69a528eaef35.nnue New net: nn-735bba95dec0.nnue STC: LLR: 2.94 (-2.94,2.94) <-0.50,2.50> Total: 95144 W: 24310 L: 23999 D: 46835 Ptnml(0-2): 232, 11059, 24748, 11232, 301 https://tests.stockfishchess.org/tests/view/612bb3be0fdf40644b4b9996 LTC: LLR: 2.94 (-2.94,2.94) <0.50,3.50> Total: 33632 W: 8522 L: 8271 D: 16839 Ptnml(0-2): 18, 3511, 9516, 3744, 27 https://tests.stockfishchess.org/tests/view/612ce5b9bb4956d8b78eb5b3 Closes official-stockfish#3685 Bench: 5600615
This patch introduces extension for captures and promotions. Every capture or promotion that is not the first move in the list gets extended at PvNodes and cutNodes. Special thanks to @locutus2 - all my previous attepmts that failed on this idea were done only for PvNodes - idea to include also cutNodes was based on his latest passed patch. STC https://tests.stockfishchess.org/tests/view/6134abf325b9b35584838574 LLR: 2.95 (-2.94,2.94) <-0.50,2.50> Total: 188920 W: 47754 L: 47304 D: 93862 Ptnml(0-2): 595, 21754, 49344, 22140, 627 LTC https://tests.stockfishchess.org/tests/view/613521de25b9b355848385d7 LLR: 2.93 (-2.94,2.94) <0.50,3.50> Total: 8768 W: 2283 L: 2098 D: 4387 Ptnml(0-2): 7, 866, 2452, 1053, 6 closes official-stockfish#3692 bench: 5564555
SPSA 1: https://tests.stockfishchess.org/tests/view/612cdb1fbb4956d8b78eb5ab Parameters: A total of 256 net biases were tuned (hidden layer 2) Base net: nn-fe433fd8c7f6.nnue New net: nn-5f134823db04.nnue SPSA 2: https://tests.stockfishchess.org/tests/view/612fcde645091e810014af19 Parameters: A total of 64 net biases were tuned (hidden layer 1) Base net: nn-5f134823db04.nnue New net: nn-8eca5dd4e3f7.nnue SPSA 3: https://tests.stockfishchess.org/tests/view/6130822345091e810014af61 Parameters: 256 net weights and 8 net biases (output layer) Base net: nn-8eca5dd4e3f7.nnue New net: nn-4556108e4f00.nnue SPSA 4: https://tests.stockfishchess.org/tests/view/613287652ffb3c36aceb923c Parameters: A total of 256 net biases were tuned (hidden layer 2) Base net: nn-4556108e4f00.nnue New net: nn-6762d36ad265.nnue STC: LLR: 2.96 (-2.94,2.94) <-0.50,2.50> Total: 162776 W: 41220 L: 40807 D: 80749 Ptnml(0-2): 517, 18800, 42359, 19177, 535 https://tests.stockfishchess.org/tests/view/6134107125b9b35584838559 LTC: LLR: 2.95 (-2.94,2.94) <0.50,3.50> Total: 41056 W: 10428 L: 10156 D: 20472 Ptnml(0-2): 30, 4288, 11618, 4564, 28 https://tests.stockfishchess.org/tests/view/6134ad6525b9b3558483857a closes official-stockfish#3691 Bench: 5812158
If a search failed low at an expected PV or CUT node do greater history updates. STC: LLR: 2.94 (-2.94,2.94) <-0.50,2.50> Total: 95112 W: 24293 L: 23982 D: 46837 Ptnml(0-2): 285, 10893, 24906, 11170, 302 https://tests.stockfishchess.org/tests/view/6132aa1a2ffb3c36aceb926f LTC: LLR: 2.94 (-2.94,2.94) <0.50,3.50> Total: 116352 W: 29450 L: 28975 D: 57927 Ptnml(0-2): 93, 12263, 32984, 12748, 88 https://tests.stockfishchess.org/tests/view/613394d12ffb3c36aceb92f4 closes official-stockfish#3693 Bench: 6130736
Now even double history updates if a search failed low at an expected PV or CUT node. STC: LLR: 2.93 (-2.94,2.94) <-0.50,2.50> Total: 30736 W: 7891 L: 7674 D: 15171 Ptnml(0-2): 90, 3477, 8017, 3694, 90 https://tests.stockfishchess.org/tests/view/61364ae30cd98ab40c0c9da5 LTC: LLR: 2.94 (-2.94,2.94) <0.50,3.50> Total: 73600 W: 18684 L: 18326 D: 36590 Ptnml(0-2): 41, 7734, 20899, 8078, 48 https://tests.stockfishchess.org/tests/view/6136940f0cd98ab40c0c9df3 closes official-stockfish#3694 Bench: 6030657
By analogy to existing logic of decreasing depth for PvNodes w/o tt move do the same for cutNodes. Passed STC https://tests.stockfishchess.org/tests/view/613abf5a689039fce12e1155 LLR: 2.94 (-2.94,2.94) <-0.50,2.50> Total: 90336 W: 23108 L: 22804 D: 44424 Ptnml(0-2): 286, 10316, 23642, 10656, 268 Passed LTC https://tests.stockfishchess.org/tests/view/613ae330689039fce12e1172 LLR: 2.94 (-2.94,2.94) <0.50,3.50> Total: 37736 W: 9607 L: 9346 D: 18783 Ptnml(0-2): 21, 3917, 10730, 4180, 20 closes official-stockfish#3697 bench 5891181
A tuning run on 3 search parameters was done with 200k games, narrow ranges (50-150%) and a small value for A (3% of total games) : https://tests.stockfishchess.org/tests/view/613b5f4b689039fce12e1220 STC 10+0.1 : LLR: 2.95 (-2.94,2.94) <-0.50,2.50> Total: 73112 W: 18800 L: 18520 D: 35792 Ptnml(0-2): 205, 8395, 19115, 8597, 244 https://tests.stockfishchess.org/tests/view/613cb8d2689039fce12e1308 LTC 60+0.6 : LLR: 2.95 (-2.94,2.94) <0.50,3.50> Total: 45616 W: 11604 L: 11321 D: 22691 Ptnml(0-2): 24, 4769, 12946, 5038, 31 https://tests.stockfishchess.org/tests/view/613d07048253e53e97b55b32 closes official-stockfish#3698 Bench 6504816
SPSA 1: https://tests.stockfishchess.org/tests/view/6134abc425b9b35584838572 Parameters: A total of 64 net biases were tuned (hidden layer 1) Base net: nn-6762d36ad265.nnue New net: nn-c9fdeea14cb2.nnue SPSA 2: https://tests.stockfishchess.org/tests/view/61355b7e25b9b3558483860e Parameters: 256 net weights and 8 net biases (output layer) Base net: nn-c9fdeea14cb2.nnue New net: nn-0ddc28184f4c.nnue SPSA 3: https://tests.stockfishchess.org/tests/view/613737be0cd98ab40c0c9e4e Parameters: A total of 256 net biases were tuned (hidden layer 2) Base net: nn-0ddc28184f4c.nnue New net: nn-2419828bb394.nnue SPSA 4: https://tests.stockfishchess.org/tests/view/613966ff689039fce12e0fe7 Parameters: A total of 64 net biases were tuned (hidden layer 1) Base net: nn-2419828bb394.nnue New net: nn-05d9b1ee3037.nnue SPSA 5: https://tests.stockfishchess.org/tests/view/613b4a38689039fce12e1209 Parameters: 256 net weights and 8 net biases (output layer) Base net: nn-05d9b1ee3037.nnue New net: nn-98c6ce0fc15f.nnue SPSA 6: https://tests.stockfishchess.org/tests/view/613e331515591e7c9ebc3fe9 Parameters: A total of 256 net biases were tuned (hidden layer 2) Base net: nn-98c6ce0fc15f.nnue New net: nn-13406b1dcbe0.nnue STC: LLR: 2.93 (-2.94,2.94) <-0.50,2.50> Total: 82008 W: 21044 L: 20752 D: 40212 Ptnml(0-2): 264, 9341, 21525, 9587, 287 https://tests.stockfishchess.org/tests/view/613f7c6cf29dda16fcca870c LTC: LLR: 2.96 (-2.94,2.94) <0.50,3.50> Total: 182928 W: 46258 L: 45602 D: 91068 Ptnml(0-2): 107, 19448, 51712, 20076, 121 https://tests.stockfishchess.org/tests/view/613fccb97315e7c73204a48c Closes official-stockfish#3703 Bench: 6658747
STC 10+0.1 : LLR: 2.94 (-2.94,2.94) <-0.50,2.50> Total: 47032 W: 12078 L: 11841 D: 23113 Ptnml(0-2): 159, 5098, 12746, 5373, 140 https://tests.stockfishchess.org/tests/view/613f9df1f29dda16fcca8731 LTC 60+0.6 : LLR: 2.95 (-2.94,2.94) <0.50,3.50> Total: 66248 W: 16631 L: 16301 D: 33316 Ptnml(0-2): 44, 6560, 19578, 6906, 36 https://tests.stockfishchess.org/tests/view/6140603d7315e7c73204a4c1 Non-regression tests with other time control styles: Moves/Time 40/10+0 : LLR: 2.93 (-2.94,2.94) <-2.50,0.50> Total: 51640 W: 13350 L: 13254 D: 25036 Ptnml(0-2): 183, 5770, 13797, 5908, 162 https://tests.stockfishchess.org/tests/view/6141592b7315e7c73204a599 TCEC Style 10+0.01 : LLR: 2.94 (-2.94,2.94) <-2.50,0.50> Total: 20592 W: 5300 L: 5157 D: 10135 Ptnml(0-2): 81, 2240, 5544, 2317, 114 https://tests.stockfishchess.org/tests/view/61425bb27315e7c73204a6a2 Sudden death 15+0 : LLR: 2.94 (-2.94,2.94) <-2.50,0.50> Total: 127104 W: 32728 L: 32741 D: 61635 Ptnml(0-2): 735, 13973, 34149, 13960, 735 https://tests.stockfishchess.org/tests/view/614256a77315e7c73204a699 The first 3 tests were run with an initial version of the code, which was then modified to make the amount of extra time dependent on the size of increment. No increment gives no extra time, and the extra time given increases until an increment of 1% or more of remaining time gives 10% extra thinking time. closes official-stockfish#3702 Bench 6658747
Combination of parameter tweaks in search, evaluation and time management. Original patches by snicolet xoto10 lonfom169 and Vizvezdenec. Includes: * Use bigger grain of positional evaluation more frequently (up to 1 exchange difference in non-pawn-material); * More extra time according to increment; * Increase margin for singular extensions; * Do more aggresive parent node futility pruning. Passed STC https://tests.stockfishchess.org/tests/view/6147deab3733d0e0dd9f313d LLR: 2.94 (-2.94,2.94) <-0.50,2.50> Total: 45488 W: 11691 L: 11450 D: 22347 Ptnml(0-2): 145, 5208, 11824, 5395, 172 Passed LTC https://tests.stockfishchess.org/tests/view/6147f1d53733d0e0dd9f3141 LLR: 2.94 (-2.94,2.94) <0.50,3.50> Total: 62520 W: 15808 L: 15482 D: 31230 Ptnml(0-2): 43, 6439, 17960, 6785, 33 closes official-stockfish#3710 bench 5575265
This patch detects some search explosions (due to double extensions in search.cpp) which can happen in some pathological positions, and takes measures to ensure progress in search even for these pathological situations. While a small number of double extensions can be useful during search (for example to resolve a tactical sequence), a sustained regime of double extensions leads to search explosion and a non-finishing search. See the discussion in official-stockfish#3544 and the issue official-stockfish#3532 . The implemented algorithm is the following: a) at each node during search, store the current depth in the stack. Double extensions are by definition levels of the stack where the depth at ply N is strictly higher than depth at ply N-1. b) during search, calculate for each thread a running average of the number of double extensions in the last 4096 visited nodes. c) if one thread has more than 2% of double extensions for a sustained period of time (6 millions consecutive nodes, or about 4 seconds on my iMac), we decide that this thread is in an explosion state and we calm down this thread by preventing it to do any double extension for the next 6 millions nodes. To calculate the running averages, we also introduced a auxiliary class generalizing the computations of ttHitAverage variable we already had in code. The implementation uses an exponential moving average of period 4096 and resolution 1/1024, and all computations are done with integers for efficiency. ----------- Example where the patch solves a search explosion: ``` ./stockfish ucinewgame position fen 8/Pk6/8/1p6/8/P1K5/8/6B1 w - - 37 130 go infinite ``` This algorithm does not affect search in normal, non-pathological positions. We verified, for instance, that the usual bench is unchanged up to depth 20 at least, and that the node numbers are unchanged for a search of the starting position at depth 32. ------------- See official-stockfish#3714 Bench: 5575265
This patch relax a little bit the condition for doubly singular moves (ie moves that are so forced that we think that they deserve a local double extension of the search). We lower the margin and allow up to six such double extensions in the path between the root and the critical node. Original idea by Siad Daboul (@TopoIogist) in PR official-stockfish#3709 Tested with the previous commit: passed STC: LLR: 2.94 (-2.94,2.94) <-0.50,2.50> Total: 33048 W: 8458 L: 8236 D: 16354 Ptnml(0-2): 120, 3701, 8660, 3923, 120 https://tests.stockfishchess.org/tests/view/614b24347bdc23e77ceb88fe passed LTC: LLR: 2.95 (-2.94,2.94) <0.50,3.50> Total: 54176 W: 13712 L: 13406 D: 27058 Ptnml(0-2): 36, 5653, 15399, 5969, 31 https://tests.stockfishchess.org/tests/view/614b3b727bdc23e77ceb8911 closes official-stockfish#3714 Bench: 5792377
adding reductions for when the delta between the static eval and the child's eval is consistently low. passed STC https://tests.stockfishchess.org/html/live_elo.html?614d7b3c7bdc23e77ceb8a5d LLR: 2.95 (-2.94,2.94) <-0.50,2.50> Total: 88872 W: 22672 L: 22366 D: 43834 Ptnml(0-2): 343, 10150, 23117, 10510, 316 passed LTC https://tests.stockfishchess.org/html/live_elo.html?614daf3e7bdc23e77ceb8a82 LLR: 2.93 (-2.94,2.94) <0.50,3.50> Total: 24368 W: 6153 L: 5928 D: 12287 Ptnml(0-2): 13, 2503, 6937, 2708, 23 closes official-stockfish#3717 Bench: 5443950
In master, during singular move analysis, when both the transposition value and a reduced search for the other moves seem to indicate a fail high, we heuristically prune the whole subtree and return an fail high score. This patch is a little bit more cautious in this case, and instead of the risky cutoff, we now search the ttMove with a reduced depth (by two plies). STC: https://tests.stockfishchess.org/tests/view/614dafe07bdc23e77ceb8a89 LLR: 2.94 (-2.94,2.94) <-0.50,2.50> Total: 46728 W: 11909 L: 11666 D: 23153 Ptnml(0-2): 181, 5288, 12168, 5561, 166 LTC: https://tests.stockfishchess.org/tests/view/614dc84abe4c07e0ecac3c95 LLR: 2.94 (-2.94,2.94) <0.50,3.50> Total: 74520 W: 18809 L: 18450 D: 37261 Ptnml(0-2): 45, 7735, 21346, 8084, 50 closes official-stockfish#3718 Bench: 5499262
Idea is to extend some quiet ttMoves if a lot of things indicate that the transposition table move is going to be a good move: 1) move being a killer - so being the best move in nearby node; 2) reply continuation history is really good. This is basically saying that move is good "in general" in this position, that it is a good reply to the opponent move and that it was the best in this position somewhere in search - so extending it makes a lot of sense. In general in past year we had a lot of extensions of different types, maybe there is something more in it :) passed STC LLR: 2.96 (-2.94,2.94) <-0.50,2.50> Total: 42944 W: 10932 L: 10695 D: 21317 Ptnml(0-2): 141, 4869, 11210, 5116, 136 https://tests.stockfishchess.org/tests/view/614cca8e7bdc23e77ceb89f0 passed LTC LLR: 2.93 (-2.94,2.94) <0.50,3.50> Total: 156848 W: 39473 L: 38893 D: 78482 Ptnml(0-2): 125, 16327, 44913, 16961, 98 https://tests.stockfishchess.org/tests/view/614cf93d7bdc23e77ceb8a13 closes official-stockfish#3719 Bench: 5714575
Respin of multi-thread idea that was simplified away recently: basically doing more reductions with thread count since Lazy SMP naturally widens search. With drawish book this idea got simplified away but with less drawish book it again gains elo, maybe trying to reinstall other ideas that were simplified away previously can be beneficial. passed STC LLR: 2.96 (-2.94,2.94) <-0.50,2.50> Total: 39736 W: 10205 L: 9986 D: 19545 Ptnml(0-2): 45, 4254, 11064, 4447, 58 https://tests.stockfishchess.org/tests/view/615750702d02f48db3961b00 passed LTC LLR: 2.97 (-2.94,2.94) <0.50,3.50> Total: 60352 W: 15530 L: 15218 D: 29604 Ptnml(0-2): 24, 5900, 18016, 6212, 24 https://tests.stockfishchess.org/tests/view/6157d8935488e26ea5eace7f closes official-stockfish#3724 Bench 5714575
When playing games in MultiPV mode we must take care to only track the best move changing for the first PV line. Otherwise, SF will spend most of its time for the initial moves after the book exit. This has been observed and reported on Discord, but can also be seen in games played in Stefan Pohl's MultiPV experiment. Tested with MultiPV=4. STC: https://tests.stockfishchess.org/tests/view/615c24b59d256038a969b990 LLR: 2.95 (-2.94,2.94) <-0.50,2.50> Total: 1744 W: 694 L: 447 D: 603 Ptnml(0-2): 32, 125, 358, 278, 79 LTC: https://tests.stockfishchess.org/tests/view/615c31769d256038a969b993 LLR: 2.94 (-2.94,2.94) <0.50,3.50> Total: 2048 W: 723 L: 525 D: 800 Ptnml(0-2): 10, 158, 511, 314, 31 closes official-stockfish#3729 Bench: 5714575
As Chess960 patches can not be tested on fishtest, this was locally tuned and tested: Elo: 2.36 +- 1.07 LOS: 0.999992 closes official-stockfish#3730 Bench: 5714575
This patch lessens the Late Move Reduction at PV nodes with low depth. Previously the affect of depth on LMR was independant of nodeType. The idea behind this patch is that at PV nodes, LMR at low depth is will miss out on potential alpha-raising moves. Passed STC: https://tests.stockfishchess.org/tests/view/625aa867d3367522c4b8965c LLR: 2.93 (-2.94,2.94) <0.00,2.50> Total: 19360 W: 5252 L: 5006 D: 9102 Ptnml(0-2): 79, 2113, 5069, 2321, 98 Passed LTC: https://tests.stockfishchess.org/tests/view/625ae844d3367522c4b8a009 LLR: 2.94 (-2.94,2.94) <0.50,3.00> Total: 39264 W: 10636 L: 10357 D: 18271 Ptnml(0-2): 18, 3928, 11473, 4183, 30 closes official-stockfish#3985 bench: 8129754
Official release version of Stockfish 15 Bench: 8129754 --- A new major release of Stockfish is now available at https://stockfishchess.org Stockfish 15 continues to push the boundaries of chess, providing unrivalled analysis and playing strength. In our testing, Stockfish 15 is ahead of Stockfish 14 by 36 Elo points and wins nine times more game pairs than it loses[1]. Improvements to the engine have made it possible for Stockfish to end up victorious in tournaments at all sorts of time controls ranging from bullet to classical and even at Fischer random chess[2]. At CCC, Stockfish won all of the latest tournaments: CCC 16 Bullet, Blitz and Rapid, CCC 960 championship, and the CCC 17 Rapid. At TCEC, Stockfish won the Season 21, Cup 9, FRC 4 and in the current Season 22 superfinal, at the time of writing, has won 16 game pairs and not yet lost a single one. This progress is the result of a dedicated team of developers that comes up with new ideas and improvements. For Stockfish 15, we tested nearly 13000 different changes and retained the best 200. These include the fourth generation of our NNUE network architecture, as well as various search improvements. To perform these tests, contributors provide CPU time for testing, and in the last year, they have collectively played roughly a billion chess games. In the last few years, our distributed testing framework, Fishtest, has been operated superbly and has been developed and improved extensively. This work by Pasquale Pigazzini, Tom Vijlbrief, Michel Van den Bergh, and various other developers[3] is an essential part of the success of the Stockfish project. Indeed, the Stockfish project builds on a thriving community of enthusiasts to offer a free and open-source chess engine that is robust, widely available, and very strong. We invite our chess fans to join the Fishtest testing framework and programmers to contribute to the project[4]. The Stockfish team [1] https://tests.stockfishchess.org/tests/view/625d156dff677a888877d1be [2] https://en.wikipedia.org/wiki/Stockfish_(chess)#Competition_results [3] https://github.com/glinscott/fishtest/blob/master/AUTHORS [4] https://stockfishchess.org/get-involved/
No functional change.
train a net using training data with a heavier weight on positions having 16 pieces on the board. More specifically, with a relative weight of `i * (32-i)/(16 * 16)+1` (where i is the number of pieces on the board). This is done with the trainer branch official-stockfish/nnue-pytorch#173 The command used is: ``` python train.py $datafile $datafile $restarttype $restartfile --gpus 1 --threads 4 --num-workers 12 --random-fen-skipping=3 --batch-size 16384 --progress_bar_refresh_rate 300 --smart-fen-skipping --features=HalfKAv2_hm^ --lambda=1.00 --max_epochs=$epochs --seed $RANDOM --default_root_dir exp/run_$i ``` The datafile is T60T70wIsRightFarseerT60T74T75T76.binpack, the restart is from the master net. passed STC: LLR: 2.94 (-2.94,2.94) <0.00,2.50> Total: 22728 W: 6197 L: 5945 D: 10586 Ptnml(0-2): 105, 2453, 6001, 2695, 110 https://tests.stockfishchess.org/tests/view/625cf944ff677a888877cd90 passed LTC: LLR: 2.94 (-2.94,2.94) <0.50,3.00> Total: 35664 W: 9535 L: 9264 D: 16865 Ptnml(0-2): 30, 3524, 10455, 3791, 32 https://tests.stockfishchess.org/tests/view/625d3c32ff677a888877d7ca closes official-stockfish#3989 Bench: 7269563
the only place where it was used it was true with >99% probability so it seemed to not be doing much any more. Passed STC: https://tests.stockfishchess.org/tests/view/625f4778d00da81c22dd4c93 LLR: 2.95 (-2.94,2.94) <-2.25,0.25> Total: 85152 W: 22487 L: 22406 D: 40259 Ptnml(0-2): 313, 9035, 23818, 9078, 332 Passed LTC: https://tests.stockfishchess.org/tests/view/625ff1f1b03f22647441a215 LLR: 2.94 (-2.94,2.94) <-2.25,0.25> Total: 66776 W: 17768 L: 17673 D: 31335 Ptnml(0-2): 46, 6200, 20792, 6313, 37 close official-stockfish#3993 bench 7280798
in the context of singular extensions Passed STC: https://tests.stockfishchess.org/tests/view/626047e8b03f22647441ade0 LLR: 2.97 (-2.94,2.94) <0.00,2.50> Total: 50296 W: 13410 L: 13108 D: 23778 Ptnml(0-2): 196, 5548, 13370, 5826, 208 Passed LTC: https://tests.stockfishchess.org/tests/view/6260a513b03f22647441b970 LLR: 2.96 (-2.94,2.94) <0.50,3.00> Total: 83896 W: 22433 L: 22054 D: 39409 Ptnml(0-2): 49, 8273, 24938, 8626, 62 closes official-stockfish#3995 bench: 7729968
Replace the best move instability adjustment factor by a simpler version which doesn't have a dependency on the iteration depth. STC: LLR: 2.94 (-2.94,2.94) <-2.25,0.25> Total: 30800 W: 8232 L: 8073 D: 14495 Ptnml(0-2): 101, 3309, 8444, 3422, 124 https://tests.stockfishchess.org/tests/view/6266c77bc5b924ba22908d30 LTC: LLR: 2.95 (-2.94,2.94) <-2.25,0.25> Total: 61664 W: 16375 L: 16272 D: 29017 Ptnml(0-2): 40, 5869, 18897, 6000, 26 https://tests.stockfishchess.org/tests/view/6266fc39b3d1812808915f23 closes official-stockfish#3999 Bench: 7729968
Increase reduction if next ply has a lot of fail high else reset count to 0 Passed STC: https://tests.stockfishchess.org/tests/view/626ea8299116b52aa83b71f6 LLR: 2.94 (-2.94,2.94) <0.00,2.50> Total: 144288 W: 38377 L: 37902 D: 68009 Ptnml(0-2): 565, 16298, 38054, 16551, 676 Passed LTC: https://tests.stockfishchess.org/tests/view/626fa0fb79f761bab2e382f0 LLR: 2.98 (-2.94,2.94) <0.50,3.00> Total: 74872 W: 20050 L: 19686 D: 35136 Ptnml(0-2): 51, 7541, 21893, 7895, 56 closes official-stockfish#4006 bench: 7084802
STC: LLR: 2.95 (-2.94,2.94) <0.00,2.50> Total: 73760 W: 19590 L: 19244 D: 34926 Ptnml(0-2): 285, 8352, 19292, 8634, 317 https://tests.stockfishchess.org/tests/view/626eb2dc9116b52aa83b73da LTC: LLR: 2.93 (-2.94,2.94) <0.50,3.00> Total: 114400 W: 30561 L: 30111 D: 53728 Ptnml(0-2): 68, 11432, 33785, 11812, 103 https://tests.stockfishchess.org/tests/view/626f730859e9c431e0b10b21 closes official-stockfish#4008 bench: 6174823
….nnue. Architecture changes: Duplicated activation after the 1024->15 layer with squared crelu (so 15->15*2). As proposed by vondele. Trainer changes: Added bias to L1 factorization, which was previously missing (no measurable improvement but at least neutral in principle) For retraining linearly reduce lambda parameter from 1.0 at epoch 0 to 0.75 at epoch 800. reduce max_skipping_rate from 15 to 10 (compared to vondele's outstanding PR) Note: This network was trained with a ~0.8% error in quantization regarding the newly added activation function. This will be fixed in the released trainer version. Expect a trainer PR tomorrow. Note: The inference implementation cuts a corner to merge results from two activation functions. This could possibly be resolved nicer in the future. AVX2 implementation likely not necessary, but NEON is missing. First training session invocation: python3 train.py \ ../nnue-pytorch-training/data/nodes5000pv2_UHO.binpack \ ../nnue-pytorch-training/data/nodes5000pv2_UHO.binpack \ --gpus "$3," \ --threads 4 \ --num-workers 8 \ --batch-size 16384 \ --progress_bar_refresh_rate 20 \ --random-fen-skipping 3 \ --features=HalfKAv2_hm^ \ --lambda=1.0 \ --max_epochs=400 \ --default_root_dir ../nnue-pytorch-training/experiment_$1/run_$2 Second training session invocation: python3 train.py \ ../nnue-pytorch-training/data/T60T70wIsRightFarseerT60T74T75T76.binpack \ ../nnue-pytorch-training/data/T60T70wIsRightFarseerT60T74T75T76.binpack \ --gpus "$3," \ --threads 4 \ --num-workers 8 \ --batch-size 16384 \ --progress_bar_refresh_rate 20 \ --random-fen-skipping 3 \ --features=HalfKAv2_hm^ \ --start-lambda=1.0 \ --end-lambda=0.75 \ --gamma=0.995 \ --lr=4.375e-4 \ --max_epochs=800 \ --resume-from-model /data/sopel/nnue/nnue-pytorch-training/data/exp367/nn-exp367-run3-epoch399.pt \ --default_root_dir ../nnue-pytorch-training/experiment_$1/run_$2 Passed STC: LLR: 2.95 (-2.94,2.94) <0.00,2.50> Total: 27288 W: 7445 L: 7178 D: 12665 Ptnml(0-2): 159, 3002, 7054, 3271, 158 https://tests.stockfishchess.org/tests/view/627e8c001919125939623644 Passed LTC: LLR: 2.95 (-2.94,2.94) <0.50,3.00> Total: 21792 W: 5969 L: 5727 D: 10096 Ptnml(0-2): 25, 2152, 6294, 2406, 19 https://tests.stockfishchess.org/tests/view/627f2a855734b18b2e2ece47 closes official-stockfish#4020 Bench: 6481017
This patch makes the SE depth condition more robust and allows it to scale with completed depth from a previous search. At long TC this patch is almost equivalent to official-stockfish#4016 which had VLTC: https://tests.stockfishchess.org/tests/view/626abd7e8707aa698c0093a8 Elo: 2.35 +-1.5 (95%) LOS: 99.9% Total: 40000 W: 10991 L: 10720 D: 18289 Ptnml(0-2): 8, 3534, 12648, 3799, 11 nElo: 5.47 +-3.4 (95%) PairsRatio: 1.08 VLTC multicore: https://tests.stockfishchess.org/tests/view/6272a6afc8f14123163c1997 LLR: 2.94 (-2.94,2.94) <0.50,3.00> Total: 86808 W: 24165 L: 23814 D: 38829 Ptnml(0-2): 11, 7253, 28524, 7606, 10 however, it is now also gaining at LTC: LTC: https://tests.stockfishchess.org/tests/view/627e7cb523c0c72a05b651a9 LLR: 2.94 (-2.94,2.94) <0.50,3.00> Total: 27064 W: 7285 L: 7046 D: 12733 Ptnml(0-2): 8, 2446, 8390, 2675, 13 and should have nearly no influence at STC as depth 27 is rarely reached. It was noticed that initializing the threshold with MAX_PLY, had an adverse effect, possibly because the first move is sensitive to this. closes official-stockfish#4021 closes official-stockfish#4016 Bench: 6481017
Tune scale and optimism in effort to make stockfish play more aggressively. STC @ 10+0.1 th 1: LLR: 2.94 (-2.94,2.94) <0.00,2.50> Total: 27896 W: 7506 L: 7248 D: 13142 Ptnml(0-2): 103, 3047, 7388, 3309, 101 https://tests.stockfishchess.org/tests/live_elo/627fd0cfab44257388ab1f13 LTC @ 60+0.6 th 1: LLR: 2.93 (-2.94,2.94) <0.50,3.00> Total: 65576 W: 17512 L: 17178 D: 30886 Ptnml(0-2): 37, 6397, 19587, 6729, 38 https://tests.stockfishchess.org/tests/live_elo/627ff666ab44257388ab256d closes official-stockfish#4025 Bench 6407734
Principal variation depth late move reduction extension simplification. stc: https://tests.stockfishchess.org/tests/view/6285a1d19d18a78568e7fa24 LLR: 2.94 (-2.94,2.94) <-2.25,0.25> Total: 428536 W: 113433 L: 113851 D: 201252 Ptnml(0-2): 1671, 48606, 114090, 48272, 1629 ltc: https://tests.stockfishchess.org/tests/view/62871d20375cdc5de8cf5db3 LLR: 2.95 (-2.94,2.94) <-2.25,0.25> Total: 56792 W: 15123 L: 15011 D: 26658 Ptnml(0-2): 42, 5681, 16825, 5819, 29 closes official-stockfish#4028 bench: 6501437
closes official-stockfish#3973 No functional change
This patch provides command line flags `--help` and `--license` as well as the corresponding `help` and `license` commands. ``` $ ./stockfish --help Stockfish 200522 by the Stockfish developers (see AUTHORS file) Stockfish is a powerful chess engine and free software licensed under the GNU GPLv3. Stockfish is normally used with a separate graphical user interface (GUI). Stockfish implements the universal chess interface (UCI) to exchange information. For further information see https://github.com/official-stockfish/Stockfish#readme or the corresponding README.md and Copying.txt files distributed with this program. ``` The idea is to provide a minimal help that links to the README.md file, not replicating information that is already available elsewhere. We use this opportunity to explicitly report the license as well. closes official-stockfish#4027 No functional change.
The speedup is around 0.25% using gcc 11.3.1 (bmi2, nnue bench, depth 16 and 23) while it is neutral using clang (same conditions). According to `perf` that integer division was one of the most time-consuming instructions in search (gcc disassembly). Passed STC: https://tests.stockfishchess.org/tests/view/628a17fe24a074e5cd59b3aa LLR: 2.94 (-2.94,2.94) <0.00,2.50> Total: 22232 W: 5992 L: 5751 D: 10489 Ptnml(0-2): 88, 2235, 6218, 2498, 77 yellow LTC: https://tests.stockfishchess.org/tests/view/628a35d7ccae0450e35106f7 LLR: -2.95 (-2.94,2.94) <0.50,3.00> Total: 320168 W: 85853 L: 85326 D: 148989 Ptnml(0-2): 185, 29698, 99821, 30165, 215 This patch also suggests that UHO STC is sensible to small speedups (< 0.50%). closes official-stockfish#4032 No functional change
removes duplication on the commandline for example in a profile-build closes official-stockfish#3859 No functional change
xoto10's scaleopt tune resulted in a yellow LTC, but the main parameter shift looked almost exactly like the tune rate reduction schedule, so further increases of that param were tried. Joint work xoto10 and dubslow. passed LTC: https://tests.stockfishchess.org/tests/view/628c709372775f382300f03e LLR: 2.93 (-2.94,2.94) <0.50,3.00> Total: 70112 W: 18932 L: 18584 D: 32596 Ptnml(0-2): 66, 6904, 20757, 7274, 55 failed STC: https://tests.stockfishchess.org/tests/view/6290e4441e7cd5f29966bdc8 LLR: -2.96 (-2.94,2.94) <0.00,2.50> Total: 59976 W: 15919 L: 16018 D: 28039 Ptnml(0-2): 250, 6791, 15974, 6754, 219 similar LTC's were yellow first yellow LTC: https://tests.stockfishchess.org/tests/view/6288a33f817227d3e5c5b05d double exaggerate yellow: https://tests.stockfishchess.org/tests/live_elo/628e140372775f38230129a6 triple exaggerate yellow: https://tests.stockfishchess.org/tests/live_elo/628e2caf72775f3823012d45 closes official-stockfish#4036 bench 6410652
What do we do about CI failing for android? Forcing v22 for ndk doesn't work. Do we drop it from CI for tools (since it should not be very relevant anyway)? |
Interesting error on clang now.... 🤷 Looks like a compiler bug. Might not be fixable. Since this branch does not need to be as compatible as the main Stockfish, should we do CI just for the most important builds? That is 64 bit only, linux GCC, linux clang, msys gcc? |
yes, that seems a LLVM compiler bug. I'm fine with skipping that CI as well (or updating the version if it is possible). |
For some reason there was an issue with incbin on i686-gcc too... Is the current set of CI runs acceptable? |
yes, I think it is fine. I tried having a quick look at the diff to master, but it really is a serious diff... |
The tools branch doesn't require as much compatibility as the main Stockfish project.
Okay. I squashed the CI changes. |
Update for the tools branch. This is a merge instead of a rebase because rebasing it is pretty much impossible with all the historical conflicts.