Releases: LeelaChessZero/lc0
v0.19.0
v0.19.0-rc5
v0.19.0-rc4
v0.19.0-rc3
v0.19.0-rc2
Version v0.19.0-rc1 mistakenly reported own version as v0.19.0-dev.
Because of that we had to have another release, which is v0.19.0-rc2
A changelog for RC1 is here.
v0.19.0-rc1
-
Search algorithm changes
When visiting terminal nodes and collisions, instead of counting that as one
visit, estimate how many subsequent visits will also go to the same node, and
do a batch update.That should slightly improve nps near terminal nodes and in multithread
configurations. Command line parameters that control that:--max-collision-events – number of collision events allowed per batch.
Default is 32. This parameter is roughly equivalent to
--allowed-node-collisions in v0.18.--max-collision-visits – total number of estimated collisions per NN batch.
Default is 9999. -
Time management
Multiple changes have been done to make Leela track used time more precisely
(particularly, the moment when to start timer is now much closer to the moment
GUIs start timer).For smart pruning, Leela's timer only starts when the first batch comes from
NN eval. That should help against instamoves, especially on non-even GPUs.Also Leela stops the search quicker now when it sees that time is up (it could
continue the search for hundreds of milliseconds after that, which caused time
trouble if opponent moves very fast).Those changes should help a lot in ultra-bullet configurations.
-
Better logging
Much more information is outputted now to the log file. That will allow us to
easier diagnose problems if they occur. To have debug file written, add a
command line option:--logfile=/path/to/logfile
(or short option "-l /path/to/logfile", or corresponding UCI option "LogFile")
It's recommended to always have logging on, to make it easier to report bugs
when it happens. -
Configuration parameters change
Large part of parameter handling has been reworked. As the result:
All UCI parameters have been changed to have more "classical" look.
E.g. was "Network weights file path", became "WeightsFile".Much more detailed help is shown than before when you run
./lc0 --helpSome flags have been renamed, e.g.
--futile-move-aversion
is renamed back to
--smart-pruning-factor.After setting a parameter (using command line parameter or uci setoption
command), uci command "uci" shows updated result. That way you can check the
current option values.Some command-line and UCI options are hidden now. Use --show-hidden command
line parameter to unhide them. E.g.
./lc0 --show-hidden --helpAlso, in selfplay mode the per player configuration format has been changed
(although probably noone knew that anyway):
Was: ./lc0 selfplay player1: --movetime=14
Became: ./lc0 selfplay --player1.movetime=14 -
Other
"go depth X" uci command now causes search to stop when depth information in
uci info line reaches X. Not that it makes much sense for it to work this way,
but at least it's better than noting.Network file size can now be larger than 64MB.
There is now an experimental flag --ramlimit-mb. The engine tries to estimate
how much memory it uses and stops search when tree size (plus cache size)
reaches RAM limit. The estimation is very rough. We'll see how it performs and
improve estimation later.
In situations when search cannot be stopped (go infinite
or ponder),
bestmove
is not automatically outputted. Instead, search stops progress and
outputs warning.Benchmark mode has been implemented. Run run, use the following command line:
./lc0 benchmark
This feature is pretty basic in the current version, but will be expanded later.As Leela plays much weaker in positions without history, it now is able to
synthesize it and do not blunder in custom FEN positions. There is a
--history-fill flag for it. Setting it to "no" disables the feature, setting
to "fen_only" (default) enables it for all positions except chess start
position, and setting it to "always" enables it even for startpos.Instead of output current win estimation as centipawn score approximation,
Leela can how show it's raw score. A flag that controls that is --score-type.
Possible values:- centipawn (default) – approximate the win rate in centipawns, like Leela
always did. - win_percentage – value from 0 to 100.0 which represents expected score in
percents. - Q – the same, but scales from -100.0 to 100.0 rather than from 0 to 100.0
- centipawn (default) – approximate the win rate in centipawns, like Leela
v0.18.1
v0.18.0
v0.18.0-rc2
-
Severe bug fixed: Race condition when out-of-order-eval was enabled (and it was enabled by default)
-
Windows 32-bit builds are now possible (CPU only for now)
v0.18.0-rc1
KNOWN BUG!
- We have credible reports that in some rare cases Lc0 crashes!
However, we were not able to reproduce it reliably. If you see the crash, please report to devs! What seems to increase crash probability:- Very short move time (milliseconds)
- Proximity to a checkmate (happens 1-3 moves before the checkmate)
New features:
-
Endgame tablebases support! Both WDL and DTZ now.
-
Added MultiPv support.
Time management changes:
-
Introduced --immediate-time-use flag. Yes, yet another time management flag. Posible values are between 0.0 and 1.0. Setting it closer to 1.0 makes Leela use time saved from futile search aversion earlier.
-
Some time management parameters were changed:
- Slowmover is 1.0 now (was 2.4)
- Immediate-time-use is 0.6 now (didn't exist before, so was 0.0)
-
Fixed a bug, because of which futile search aversion tolerance was incorrectly applied, which resulted in instamoves.
-
Now search stops immediately when it runs out of budgeted time.
Should help against timeouts, especially on slow backends (e.g. BLAS). -
Move overhead now is a fixed time, doesn't depend on number of remaining moves.
Other:
-
Out of order eval is on by default. That brings slight nps improvement.
-
Default FPU reduction is 1.2 now (was 0.9)
-
Cudnn backend now has max_batch parameter.
(can be set for example like this --backend-opts=max_batch=100).
This is needed for lower end GPUs that didn't have enough VRAM for a buffer of size 1024. Make sure that this setting is not lower than --minibatch-size. -
Small memory usage optimizations.
-
Engine name in UCI response is shorter now. Fritz chess UI should be able
to work with Leela now -
Added flag --temp-visit-offset, will allow to offset temperature during training.
-
Command line and UCI parameter values are now checked for validity.
-
You can now build for older processors that don't support the popcnt instruction by passing -Dpopcnt=false to meson when building.
-
32-bit build is possible now. CPU only and we were only able to build it in Linux for now, including Raspberry Pi.
-
Threading issue which caused crash in heavily multithreaded environment with slow backends was fixed.