Tomasz Sobczyk
570a0f6f3c
Per square stats utility
2021-04-05 16:12:47 +02:00
Tomasz Sobczyk
7d74185d0b
Add max_count parameter to limit the number of positions read.
2021-04-05 14:21:25 +02:00
Tomasz Sobczyk
f85dbc3fe3
Reorder code and add important comments.
2021-04-05 14:21:25 +02:00
fsmosca
5bb6cdf7ba
Update gensfen.cpp
...
* Terminate game by 3-fold repetition.
* Fix segmentation fault by properly initializing the random_multi_pv_depth.
2021-04-05 13:29:49 +08:00
Tomasz Sobczyk
876902070d
Add optional warmup step for training.
...
Specified with `warmup_epochs`, uses `warmup_lr`.
The purpose is to put the net into a somewhat stable state so that the gradients are not as high during the early stages of the training and don't "accidentally" break the net.
2021-03-26 00:26:41 +09:00
Tomasz Sobczyk
bbe338b9fc
Add random move accuracy for comparison.
2021-03-25 22:06:46 +09:00
Tomasz Sobczyk
5fdb48a7cb
Change some learn parameter naming. Update docs.
2021-03-14 22:15:16 +09:00
Tomasz Sobczyk
0ddad45ab2
Add gather_statistics command that allows gathering statistics from a .bin or .binpack file. Initially only support position count.
2021-03-01 00:36:45 +09:00
Tomasz Sobczyk
74774c36e1
Fix wrong multipv depth range. Fixes #291
2021-01-25 21:39:22 +09:00
Tomasz Sobczyk
1f7e5d3861
Add thread sanitized run for instrumented_learn and fix races.
2020-12-28 16:08:34 +09:00
Tomasz Sobczyk
1b560efabd
Correctly handle the last batch of data in sfen_reader
2020-12-25 10:03:24 +09:00
Tomasz Sobczyk
c1e69f450e
Prevent q_ in loss calculation from reaching values that would produce NaN
2020-12-25 00:41:31 +09:00
Tomasz Sobczyk
4f6fdca31f
Reduce the amount of sfens buffered for the validation step.
...
Used to be 10M, now we bound it by a multiple of validation_count, and at most 1M. This reduces the RAM usage greatly.
2020-12-25 00:17:35 +09:00
Tomasz Sobczyk
2061be4730
smart_fen_skipping at gensfen_nonpv level
2020-12-24 21:37:30 +09:00
Tomasz Sobczyk
96b377a90a
Add gensfen_nonpv
2020-12-24 21:37:30 +09:00
Tomasz Sobczyk
3f73c40412
More deterministic move accuracy validation.
2020-12-24 10:16:59 +09:00
Joost VandeVondele
b50dcd7dde
allow for repeated searches in rescoring
...
allows for repeating a depth N search K times.
Repeated searches improve the quality of eval, but don't bring in higher depth info.
Might allow for removing some of the noise in low depth scoring.
2020-12-24 09:46:10 +09:00
Tomasz Sobczyk
8ca82646a9
Use plain nnue eval for validation loss calculation instead of first performing qsearch
2020-12-22 10:35:19 +09:00
Tomasz Sobczyk
6853b4aac2
Simple filtering for validation data.
2020-12-22 09:40:25 +09:00
Tomasz Sobczyk
994eb5e183
rescore_fen -> rescore. Make it work on .bin and .binpack inputs.
2020-12-21 10:48:20 +09:00
Tomasz Sobczyk
a9cfaa4d98
Add a tool for rescoring fens from an epd file with fixed depth search
2020-12-21 10:48:20 +09:00
Tomasz Sobczyk
f56613ebf6
Add 'validation_count' option for 'learn' that specifies how many positions to use for validation
2020-12-20 09:47:30 +09:00
Tomasz Sobczyk
a7378f3249
Make next_fen in opening_book a critical section
2020-12-14 09:03:04 +09:00
Joost VandeVondele
b49fd3ab30
Add -lstdc++fs to the link line of gcc
...
older versions of gcc (<8.1) need this, even if they accept -std=c++17
with this patch, the code can be run on fishtest again,
at least by the majority of workers (fishtest doesn't require c++17 to be available)
See e.g.
https://tests.stockfishchess.org/tests/view/5fcfbf801ac1691201888235
Bench: 3820648
2020-12-09 08:40:34 +09:00
Tomasz Sobczyk
28d6d7cb03
Avoid computing gradient for validation loss.
2020-12-02 08:56:20 +09:00
Tomasz Sobczyk
fafb9557a8
Get train loss from update_parameters.
2020-12-02 08:56:20 +09:00
Tomasz Sobczyk
4eb0e77a2a
Store references instead of copying the results of intermediate autograd computations.
2020-12-02 08:56:20 +09:00
Tomasz Sobczyk
6cd0b03098
Add some comments regarding the current state of autograd loss computation.
2020-12-02 08:56:20 +09:00
Tomasz Sobczyk
99cb869db3
Reintroduce use_wdl.
2020-12-02 08:56:20 +09:00
Tomasz Sobczyk
cf6bc7ecaf
Cleanup around get_loss
2020-12-02 08:56:20 +09:00
Tomasz Sobczyk
256c4b55ec
Properly apply gradient norm clipping after it's scaled in the update_parameters.
2020-12-02 08:56:20 +09:00
Tomasz Sobczyk
de675e3503
Reintroduce optional scaling of the teacher signal.
2020-12-02 08:56:20 +09:00
Tomasz Sobczyk
01ae7b1e2c
Simplify passing constants that may vary between calls.
2020-12-02 08:56:20 +09:00
Tomasz Sobczyk
cbd973fdaa
Detect constant expressions in autograd and return 0 grad early.
2020-12-02 08:56:20 +09:00
Tomasz Sobczyk
e975889132
Move cross_entropy calculation to a separate function.
2020-12-02 08:56:20 +09:00
Tomasz Sobczyk
891abf5511
Make the autograd loss expression chain thread_local.
2020-12-02 08:56:20 +09:00
Tomasz Sobczyk
8adf00ae6e
Identify a single evalation chain by ID in autograd to prevent cache reuse for subsequent evaluations of the same expression tree.
2020-12-02 08:56:20 +09:00
Tomasz Sobczyk
cb812c742c
Add [[nodiscard]] attributes to autograd functions.
2020-12-02 08:56:20 +09:00
Tomasz Sobczyk
26f19e1429
Make automatic differentiation node types constexpr.
2020-12-02 08:56:20 +09:00
Tomasz Sobczyk
aec6017195
When forming an autograd expression only copy parts that are rvalue references, store references to lvalues.
2020-12-02 08:56:20 +09:00
Tomasz Sobczyk
a5c20bee5b
Apply gradient clipping.
2020-12-02 08:56:20 +09:00
Tomasz Sobczyk
d103867558
Add memoization to the autograd expression evaluator.
2020-12-02 08:56:20 +09:00
Tomasz Sobczyk
aa55692b97
Cross entropy loss.
2020-12-02 08:56:20 +09:00
Tomasz Sobczyk
539bd2d1c8
Replace the old loss/grad calculation completely.
2020-12-02 08:56:20 +09:00
Tomasz Sobczyk
5a58eb803a
Loss func with autograd
2020-12-02 08:56:20 +09:00
Tomasz Sobczyk
541fb8177a
More utility in autograd.
2020-12-02 08:56:20 +09:00
Tomasz Sobczyk
6ce0245787
Basic autograd
2020-12-02 08:56:20 +09:00
Tomasz Sobczyk
89294e2e4f
Add transform command. Add transform nudged_static subcommand.
2020-11-27 09:16:22 +09:00
Tomasz Sobczyk
9030020a85
Add smart_fen_skipping option to learn.
2020-11-23 19:22:11 +09:00
Tomasz Sobczyk
ee13cfce67
Fix result assigned for a psvector when the positions are not continuous.
2020-11-23 08:32:08 +09:00