Skip to content

v0.19.0-rc1

Pre-release
Pre-release
Compare
Choose a tag to compare
@mooskagh mooskagh released this 03 Nov 16:51
· 738 commits to master since this release
43e6764
  • 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