lc0
supports several operating modes, each on which has different set of
command line flags (although there are common ones).
Currently lc0
has the following modes:
Mode | Description |
---|---|
uci (default) | Acts as UCI chess engine |
selfplay | Plays one or multiple games with itself and optionally generates training data |
debug | Generates debug data for a position |
To run lc0
in any of those modes, specify a mode name as a first argument (uci
may be omitted).
For example:
$ ./lc0 selfplay ... # for selfplay mode
$ ./lc0 ... # for uci mode
In any of those modes it's possible to get help using --help
command line argument:
$ ./lc0 --help # help for uci mode
$ ./lc0 selfplay --help # help for selfplay mode
In UCI engine mode all of command line parameters can also be changed using UCI parameter.
List of command line flags:
Flag | Uci parameter | Description |
---|---|---|
-w PATH, --weights=PATH |
Network weights file path | Path to load network weights from. Default is <autodiscover> , which makes it search for the latest (by file date) file in ./ and ./weights/ subdirectories which looks like weights. |
-t NUM, --threads=NUM |
Number of worker threads | Number of (CPU) threads to use. Default is 2 . There's no use of making it more than 3 currently as it's limited by mutex contention which is yet to be optimized. |
--nncache=SIZE | NNCache size | Number of positions to store in cache. Default: 200000 |
--backend=BACKEND --backend-opts=OPTS |
NN backend to use NN backend parameters |
Configuration of backend parameters. Described in details here. Default depends on particular build type (cuDNN, tensorflow, etc). |
--slowmover=NUM | Scale thinking time | Parameter value X means that whole remaining time is split in such a way that current move gets X×Y seconds, and next moves will get 1×Y seconds. However, due to smart pruning, the engine usually doesn't use all allocated time. Default: 2.2 |
--move-overhead=NUM | Move time overhead in milliseconds | How much overhead should the engine allocate for every move (to counteract things like slow connection, interprocess communication, etc). Default: 100 ms. |
--minibatch-size=NUM | Minibatch size for NN inference | Now many positions the engine tries to batch together for computation. Theoretically larger batches may reduce strengths a bit, especially on small number of playouts. Default is 256 . Every backend/hardware has different optimal value (e.g. 1 if batching is not supported). |
--max-prefetch=NUM | Max prefetch nodes, per NN call | When engine cannot gather large enough batch for immediate use, try to prefetch up to X positions which are likely to be useful soon, and put them into cache. Default: 32 . |
--cpuct=NUM | Cpuct MCTS option | C_puct constant from "Upper confidence trees search" algorithm. Higher values promote more exploration/wider search, lower values promote more confidence/deeper search. Default: 1.2 . |
--temperature=NUM | Initial temperature | Tau value from softmax formula. If equal to 0, the engine also picks the best move to make. Larger values increase randomness while making the move. Default: 0 |
--tempdecay-moves=NUM | Moves with temperature decay | Reduce temperature for every move linearly from initial temperature to 0, during this number of moves since game start. 0 disables tempdecay.Default: 0 |
-n, --[no-]noise |
Add Dirichlet noise at root node | Add noise to root node prior probabilities. That allows engine to explore moves which are known to be very bad, which is useful to discover new ideas during training. Default: false |
--[no-]verbose-move-stats | Display verbose move stats | Display Q, V, N, U and P values of every move candidate after each move. Default: false |
--[no-]smart-pruning | Enable smart pruning | Default: true |
--virtual-loss-bug=NUM | Virtual loss bug | Default: 0 |
--fpu-reduction=NUM | First Play Urgency Reduction | Default: 0.2 |
--cache-history-length=NUM | Length of history to include in cache | Default: 7 |
--extra-virtual-loss=NUM | Extra virtual loss | Default: 0 |
-l, --debuglog=FILENAME |
Do debug logging into file | Default if off. (empty string) |
To be written. That's the most interesting and undocumented!
TBD
TBD