Skip to content

Releases: LeelaChessZero/lc0

v0.19.0-rc5

17 Nov 15:27
Compare
Choose a tag to compare
v0.19.0-rc5 Pre-release
Pre-release

Changes

  • OpenCL: replace thread_local with a resource pool. (#516)
  • optional wtime and btime (#515)
  • Make convolve1 work with workgroup size of 128 (#514)
  • adjust average depth calculation for multivisits (#510)

v0.19.0-rc4

12 Nov 21:11
Compare
Choose a tag to compare
v0.19.0-rc4 Pre-release
Pre-release

Changelog

  • Microseconds have 6 digits, not 3! (#505)
  • use bestmove_is_sent_ for Search::IsSearchActive() (#502)

v0.19.0-rc3

07 Nov 09:10
Compare
Choose a tag to compare
v0.19.0-rc3 Pre-release
Pre-release

Changelog

  • Fix OpenCL tuner always loading the first saved tuning (#491)
  • Do not show warning when ComputeBlocking() takes too much time. (#494)
  • Output microseconds in log rather than milliseconds. (#495)
  • Add benchmark features (#483)
  • Fix EncodePositionForNN test failure (#490)

v0.19.0-rc2

03 Nov 18:46
Compare
Choose a tag to compare
v0.19.0-rc2 Pre-release
Pre-release

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

03 Nov 16:51
43e6764
Compare
Choose a tag to compare
v0.19.0-rc1 Pre-release
Pre-release
  • 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 --help

    Some 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 --help

    Also, 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

v0.18.1

02 Oct 12:18
Compare
Choose a tag to compare

Updated to fix a bug in tablebase dtz support which could result in lc0 drawing via 3 fold repetition from a winning position.

v0.18.0

30 Sep 11:26
a4273d3
Compare
Choose a tag to compare

No changes from rc2 except the version.

v0.18.0-rc2

26 Sep 20:54
e41def5
Compare
Choose a tag to compare
v0.18.0-rc2 Pre-release
Pre-release
  • 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

24 Sep 19:24
f285ff2
Compare
Choose a tag to compare
v0.18.0-rc1 Pre-release
Pre-release

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.

v0.17.0

27 Aug 08:25
62035fe
Compare
Choose a tag to compare

No changes from rc2 except the version.