Commit Graph
100 Commits
Author SHA1 Message Date
nodchip ac6e6f73f2 Added EnableTranspositionTable UCI option to enable/disable transposition table. 2020-09-11 09:20:48 +09:00
nodchipandGitHub 1656e419bb Merge pull request #126 from nodchip/prune_at_shallow_depth_on_pv_node-2020-09-09
Set the value of prune_at_shallow_depth_on_pv_node on a UCI option callback
2020-09-10 10:44:23 +09:00
nodchip bb406a4492 Merge branch 'prune_at_shallow_depth_on_pv_node-2020-09-09' of github.com:nodchip/Stockfish into prune_at_shallow_depth_on_pv_node-2020-09-09
# Conflicts:
#	.travis.yml
#	src/search.cpp
2020-09-10 08:25:34 +09:00
nodchip 94f3cae760 Changed a sentence. 2020-09-10 08:23:21 +09:00
nodchip e63b6088ba Changed a option name more descriptive, "Training" -> "PruneAtShallowDepthOnPvNode". The default value was changed but the default behavior is not changed.
Changed to set a global option prune_at_shallow_depth_on_pv_node on a callback function.
2020-09-10 08:19:54 +09:00
nodchip 073d437384 Removed compile warnings. 2020-09-10 08:19:54 +09:00
nodchip 69563aeed9 Remove compile warnings. 2020-09-10 08:19:47 +09:00
nodchip 005009f4e5 Changed a option name more descriptive, "Training" -> "PruneAtShallowDepthOnPvNode". The default value was changed but the default behavior is not changed.
Changed to set a global option prune_at_shallow_depth_on_pv_node on a callback function.
2020-09-09 23:38:00 +09:00
nodchip 9dcadfa642 Removed compile warnings. 2020-09-09 23:02:39 +09:00
nodchip 7bd4688747 Remove compile warnings. 2020-09-09 23:02:39 +09:00
nodchip d993bd36d0 Removed compile warnings. 2020-09-09 21:21:10 +09:00
nodchip 158399da4b Remove compile warnings. 2020-09-09 20:16:09 +09:00
nodchip 4206a1edd0 Renamed parameters to avoid shadowing other parameters. 2020-09-09 10:26:42 +09:00
nodchip 1864845811 Commented out unused parameters. 2020-09-09 10:26:42 +09:00
nodchip 2583f68972 Removed macros for KPP evaluate functions. 2020-09-09 10:26:42 +09:00
nodchip cea17c92f9 Simplified evaluate_common.h. 2020-09-09 10:26:42 +09:00
nodchip 8d763fb503 Removed LEARN_GENSFEN_USE_DRAW_RESULT macro. 2020-09-09 10:26:42 +09:00
nodchip eafa569365 Removed macros for KPP factorization. 2020-09-09 10:26:42 +09:00
nodchip 5e25702672 Removed USE_TRIANGLE_WEIGHT_ARRAY macro. 2020-09-09 10:26:42 +09:00
nodchip f52165e1d3 Removed RESET_TO_ZERO_VECTOR macro. 2020-09-09 10:26:42 +09:00
nodchip dbad9d96e0 Removed LOSS_FUNCTION_IS_ELMO_METHOD macro. 2020-09-09 10:26:42 +09:00
nodchip ef1601218d Removed LOSS_FUNCTION_IS_CROSS_ENTOROPY_FOR_VALUE macro. 2020-09-09 10:26:42 +09:00
nodchip f52fbf8006 Removed LOSS_FUNCTION_IS_CROSS_ENTOROPY macro. 2020-09-09 10:26:42 +09:00
nodchip d37eb63581 Removed LOSS_FUNCTION_IS_WINNING_PERCENTAGE macro. 2020-09-09 10:26:42 +09:00
nodchip f3a158725d Removed SGD_UPDATE macro. 2020-09-09 10:26:42 +09:00
nodchip 0271d70775 Removed ADA_GRAD_UPDATE macro. 2020-09-09 10:26:42 +09:00
nodchip 05d26499b4 Removed LEARN_ELMO_METHOD macro. 2020-09-09 10:26:42 +09:00
nodchip 82dc68ba9f Removed #if for USE_GLOBAL_OPTIONS. 2020-09-09 10:26:42 +09:00
nodchip aa2452caf3 Removed #if for USE_EVAL_HASH. 2020-09-09 10:26:42 +09:00
nodchip ec96409176 Replaced DNDEBUG macro to _DEBUG macro. 2020-09-09 10:26:42 +09:00
nodchip 04a9a951b8 Removed "#if 0" and "#if 1". 2020-09-09 10:26:42 +09:00
nodchip 458771a181 Removed GENSFEN2019 macro. 2020-09-09 10:26:42 +09:00
nodchip 1d00d00241 Removed ENABLE_TEST_CMD macro. 2020-09-09 10:26:42 +09:00
nodchip 21cfead52c Removed unused OMP_ macro. 2020-09-09 10:26:42 +09:00
nodchip e6a6ba5221 Removed USE_BOOK macro. 2020-09-09 10:26:42 +09:00
nodchip a6013557f2 Removed EVAL_NNUE macro. 2020-09-09 10:26:42 +09:00
nodchip 4cc98d80f8 Replaced the utility function to create a directory to std::filesystem. 2020-09-07 18:56:41 +09:00
nodchip e004e47e5a Commented out an unused function parameter to remove a compile warning. 2020-09-07 16:21:40 +09:00
nodchip 7d6668515c Added -static link option to the learn and profile-learn targets. 2020-08-30 14:54:07 +09:00
nodchipandGitHub bc90567e09 Merge pull request #94 from nodchip/nnue-player-merge-2020-08-28
Nnue player merge 2020 08 28
2020-08-30 09:27:12 +09:00
nodchipandGitHub d258662383 Update README.md 2020-08-29 09:12:10 +09:00
nodchip 9f2f31632c Fixed build errors. 2020-08-29 08:17:24 +09:00
nodchip f7bc4e6e45 Fixed compilation errors. 2020-08-29 00:56:05 +09:00
nodchip 906c18eb46 Merge branch 'master' of github.com:official-stockfish/Stockfish into nnue-player-merge-2020-08-28
# Conflicts:
#	README.md
#	src/Makefile
#	src/search.cpp
#	src/types.h
#	src/uci.cpp
#	src/ucioption.cpp
2020-08-28 11:26:11 +09:00
nodchipandGitHub def6ec4d16 Merge pull request #90 from tttak/wdl_20200824
Use winning_percentage_wdl in learn
2020-08-28 10:06:33 +09:00
nodchip 763e72cc9f Changed the default value of use_raw_nnue_eval. Updated a source code comment. 2020-08-27 23:49:58 +09:00
nodchip 9fc3ff4c30 Added use_raw_nnue_eval option to return raw NNUE eval value in evaluate(). 2020-08-27 23:48:28 +09:00
nodchip 7ee8a2bbb7 Merge branch 'master' of github.com:nodchip/Stockfish 2020-08-22 12:19:46 +09:00
nodchip 87633b876c Added an option to convert teacher signals to winning probabilities. 2020-08-22 12:19:29 +09:00
nodchipandGitHub 17d2b5bf17 Merge pull request #88 from tttak/convert_bin_from_pgn-extract_20200819
Modify convert_bin_from_pgn-extract
2020-08-21 23:34:39 +09:00
nodchip e5e5d7d4ab Merge branch 'master' of github.com:nodchip/Stockfish 2020-08-21 21:17:40 +09:00
nodchip 11752d4e63 Added options to scale the scores in training data. #71 2020-08-21 21:16:55 +09:00
nodchip 2646080543 Merge branch 'master' of github.com:nodchip/Stockfish 2020-08-15 11:58:05 +09:00
nodchip 79654ac509 Added winning_probability_coefficient option to specify the coefficient to calculate the winning probability from a value. #71 2020-08-15 11:57:08 +09:00
nodchipandGitHub ee823afdad Deleted a duplicated Readme.md. 2020-08-14 23:33:28 +09:00
nodchip 75b9d6f6b1 Fixed build parameters. 2020-08-11 16:37:47 +09:00
nodchip 35f04aaf24 Removed an unnecessary call for pos.is_draw(). 2020-08-10 19:42:39 +09:00
nodchip c420b327bf Added output messages. 2020-08-10 16:23:04 +09:00
nodchip 8c0429d1e5 Added detect_draw_by_insufficient_mating_material option. 2020-08-10 16:14:56 +09:00
nodchip 84070c02e6 Renamed use_game_draw_adjudication to detect_draw_by_consecutive_low_score. 2020-08-10 16:02:18 +09:00
nodchip 5467ba3c23 Renamed use_hash_in_training to skip_duplicated_positions_in_training. 2020-08-10 15:58:17 +09:00
nodchip 87c50c5cbc Renamed use_draw_in_validation to use_draw_games_in_validation.
Added comments.
2020-08-10 15:55:34 +09:00
nodchip fa5b2aec3a Renamed use_draw_in_training to use_draw_games_in_training. 2020-08-10 15:51:23 +09:00
nodchip a41cbb9ca9 Renamed use_draw_in_training_data_generation option to write_out_draw_game_in_training_data_generation. 2020-08-10 15:49:24 +09:00
nodchip 3bd3ef0aea Implemented the code to detect draw by insufficient mating material. 2020-08-10 15:47:11 +09:00
nodchip 4a87d7b787 Added the use_game_draw_adjudication option. 2020-08-10 15:44:58 +09:00
nodchip 12c6c2f550 Chagned to use the search value instead of the value of the PV leaf to avoid crash by assertion. 2020-08-10 13:07:22 +09:00
nodchip bac96aa04a Changed to use TB in the training data generator. #67 2020-08-10 12:17:26 +09:00
nodchip e65c515d6b Changed to specify the current tick as a random seed. #68 2020-08-10 12:09:21 +09:00
nodchip 643be3c6f9 Changed not to use std::random_device(). Because it always returns the same integers on MingW. #68 2020-08-10 10:45:03 +09:00
nodchipandGitHub 53d15e5ec2 Merge pull request #79 from nodchip/nnue-player-merge
Merge Stockfish master to nodchip's repository
2020-08-10 09:51:44 +09:00
nodchip 4260ed0c7f Merge branch 'master' of github.com:official-stockfish/Stockfish into nnue-player-merge 2020-08-10 08:52:55 +09:00
nodchip 4f97d3446d Cleaned up source code. 2020-08-10 08:52:34 +09:00
nodchip 7f1f08d094 Merge branch 'master' of github.com:official-stockfish/Stockfish into nnue-player-merge
# Conflicts:
#	README.md
2020-08-09 09:19:47 +09:00
nodchip fcd70a3c81 Updated README.md.
Bench: 4067325
2020-08-08 21:00:19 +09:00
nodchip 3b5de9f18b Merge branch 'master' of github.com:official-stockfish/Stockfish into nnue-player-merge 2020-08-08 19:47:32 +09:00
nodchip 22b85810fe Re-added the code to skip loading a net file. 2020-08-08 19:04:08 +09:00
nodchip 4f94f29f39 Revert "Fixed a bug that the training data generation crashes if eval_limit is high."
This reverts commit b0d28ac3ab.
2020-08-08 18:38:02 +09:00
nodchip 9a0b20d3fc Changed to show if NNUE is used in the training data generator. 2020-08-08 18:24:09 +09:00
nodchip b0d28ac3ab Fixed a bug that the training data generation crashes if eval_limit is high. 2020-08-08 18:23:11 +09:00
nodchip 70d88364fe Fixed a bug that the training data generation crashes. 2020-08-08 18:22:29 +09:00
nodchip ed4d007e3c Fixed a bug that the training data generator crahses on memory allocation. 2020-08-08 18:21:38 +09:00
nodchip 2395833c07 Re-added commands for training data generator and trainer. 2020-08-08 16:52:18 +09:00
nodchip fa649ba1e2 Removed a compile warning. 2020-08-08 16:17:55 +09:00
nodchip 2c9075e919 Fixed Makefile to fix build. 2020-08-08 16:05:05 +09:00
nodchip 55a6b2bdc4 Merge branch 'master' of github.com:official-stockfish/Stockfish into nnue-player-merge
# Conflicts:
#	README.md
#	Readme.md
#	src/Makefile
#	src/evaluate.cpp
#	src/evaluate.h
#	src/misc.cpp
#	src/nnue/architectures/halfkp_256x2-32-32.h
#	src/nnue/evaluate_nnue.cpp
#	src/nnue/evaluate_nnue.h
#	src/nnue/features/feature_set.h
#	src/nnue/features/features_common.h
#	src/nnue/features/half_kp.cpp
#	src/nnue/features/half_kp.h
#	src/nnue/features/index_list.h
#	src/nnue/layers/affine_transform.h
#	src/nnue/layers/clipped_relu.h
#	src/nnue/layers/input_slice.h
#	src/nnue/nnue_accumulator.h
#	src/nnue/nnue_architecture.h
#	src/nnue/nnue_common.h
#	src/nnue/nnue_feature_transformer.h
#	src/position.cpp
#	src/position.h
#	src/types.h
#	src/ucioption.cpp
#	stockfish.md
2020-08-08 15:55:42 +09:00
nodchip 1abae04ceb Fixed Makefile. 2020-08-07 23:00:11 +09:00
nodchip bf7d02578e Fixed build errors. 2020-08-07 22:47:45 +09:00
nodchip 1c23465383 Moved the nnue folder. 2020-08-07 22:34:53 +09:00
nodchipandJoost VandeVondele 84f3e86790 Add NNUE evaluation
This patch ports the efficiently updatable neural network (NNUE) evaluation to Stockfish.

Both the NNUE and the classical evaluations are available, and can be used to
assign a value to a position that is later used in alpha-beta (PVS) search to find the
best move. The classical evaluation computes this value as a function of various chess
concepts, handcrafted by experts, tested and tuned using fishtest. The NNUE evaluation
computes this value with a neural network based on basic inputs. The network is optimized
and trained on the evalutions of millions of positions at moderate search depth.

The NNUE evaluation was first introduced in shogi, and ported to Stockfish afterward.
It can be evaluated efficiently on CPUs, and exploits the fact that only parts
of the neural network need to be updated after a typical chess move.
[The nodchip repository](https://github.com/nodchip/Stockfish) provides additional
tools to train and develop the NNUE networks.

This patch is the result of contributions of various authors, from various communities,
including: nodchip, ynasu87, yaneurao (initial port and NNUE authors), domschl, FireFather,
rqs, xXH4CKST3RXx, tttak, zz4032, joergoster, mstembera, nguyenpham, erbsenzaehler,
dorzechowski, and vondele.

This new evaluation needed various changes to fishtest and the corresponding infrastructure,
for which tomtor, ppigazzini, noobpwnftw, daylen, and vondele are gratefully acknowledged.

The first networks have been provided by gekkehenker and sergiovieri, with the latter
net (nn-97f742aaefcd.nnue) being the current default.

The evaluation function can be selected at run time with the `Use NNUE` (true/false) UCI option,
provided the `EvalFile` option points the the network file (depending on the GUI, with full path).

The performance of the NNUE evaluation relative to the classical evaluation depends somewhat on
the hardware, and is expected to improve quickly, but is currently on > 80 Elo on fishtest:

60000 @ 10+0.1 th 1
https://tests.stockfishchess.org/tests/view/5f28fe6ea5abc164f05e4c4c
ELO: 92.77 +-2.1 (95%) LOS: 100.0%
Total: 60000 W: 24193 L: 8543 D: 27264
Ptnml(0-2): 609, 3850, 9708, 10948, 4885

40000 @ 20+0.2 th 8
https://tests.stockfishchess.org/tests/view/5f290229a5abc164f05e4c58
ELO: 89.47 +-2.0 (95%) LOS: 100.0%
Total: 40000 W: 12756 L: 2677 D: 24567
Ptnml(0-2): 74, 1583, 8550, 7776, 2017

At the same time, the impact on the classical evaluation remains minimal, causing no significant
regression:

sprt @ 10+0.1 th 1
https://tests.stockfishchess.org/tests/view/5f2906a2a5abc164f05e4c5b
LLR: 2.94 (-2.94,2.94) {-6.00,-4.00}
Total: 34936 W: 6502 L: 6825 D: 21609
Ptnml(0-2): 571, 4082, 8434, 3861, 520

sprt @ 60+0.6 th 1
https://tests.stockfishchess.org/tests/view/5f2906cfa5abc164f05e4c5d
LLR: 2.93 (-2.94,2.94) {-6.00,-4.00}
Total: 10088 W: 1232 L: 1265 D: 7591
Ptnml(0-2): 49, 914, 3170, 843, 68

The needed networks can be found at https://tests.stockfishchess.org/nns
It is recommended to use the default one as indicated by the `EvalFile` UCI option.

Guidelines for testing new nets can be found at
https://github.com/glinscott/fishtest/wiki/Creating-my-first-test#nnue-net-tests

Integration has been discussed in various issues:
https://github.com/official-stockfish/Stockfish/issues/2823
https://github.com/official-stockfish/Stockfish/issues/2728

The integration branch will be closed after the merge:
https://github.com/official-stockfish/Stockfish/pull/2825
https://github.com/official-stockfish/Stockfish/tree/nnue-player-wip

closes https://github.com/official-stockfish/Stockfish/pull/2912

This will be an exciting time for computer chess, looking forward to seeing the evolution of
this approach.

Bench: 4746616
2020-08-06 16:37:45 +02:00
nodchip c0e1235fef Added a description to Makefile. 2020-07-20 17:36:09 +09:00
nodchip fbdb373b64 Changed to set the binary directory to the current working directory. 2020-07-20 17:17:50 +09:00
nodchip afd7d0ea4d Fixed a bug that Makefile specifies -mpopcnt for armv8-a. 2020-07-19 18:34:35 +09:00
nodchip 36092b855a Removed the x86-64-ssse3-popcnt architecture. 2020-07-19 14:17:35 +09:00
nodchip 3bbe4802b1 Removed the sse41-popcnt architecture. 2020-07-19 14:02:49 +09:00
nodchip c001a4e62d Revert "Removed x86-64-ssse3-popcnt and x86-64-sse41-popcnt."
This reverts commit 92c2167481.
2020-07-19 13:58:19 +09:00
nodchip 92c2167481 Removed x86-64-ssse3-popcnt and x86-64-sse41-popcnt. 2020-07-19 12:52:20 +09:00
nodchip a4786db4c2 Added support for architectures which supports SSE3+POPCNT, SSSE3+POPCNT and SSE41+POPCNT. 2020-07-19 12:41:50 +09:00
nodchip c24ad8d8b5 Supported sse3 build. 2020-07-19 12:26:37 +09:00
nodchip 7a13d4ed60 Changed the default eval file path so that more GUIs can use Stockfish NNUE. 2020-07-17 15:40:01 +09:00