Torom / BotLi

Lichess Bot
GNU Affero General Public License v3.0
44 stars 82 forks source link

Fairy-Stockfish NNUE #94

Closed EmptikBest closed 1 year ago

EmptikBest commented 1 year ago

How do you use NNUE for Fairy-Stockfish without Docker? I am running windows and I can't find 'EvalFile' in the config.yml. Please help

Torom commented 1 year ago

EvalFile is just an UCI command for Fairy-Stockfish: https://fairy-stockfish.github.io/about-nnue/

https://github.com/fairy-stockfish/Fairy-Stockfish/wiki/Settings#evalfile

So in BotLi you just add it to the uci_options section of the variants engine.

EmptikBest commented 1 year ago

Thank you for the response, after I do the following, I get this when I try to run python user_interface.py: There appears to be a syntax problem with your config.yml Traceback (most recent call last): File "F:\EmptikBot\user_interface.py", line 290, in <module> ui = UserInterface(args.config, args.matchmaking, args.upgrade) File "F:\EmptikBot\user_interface.py", line 40, in __init__ self.config = load_config(config_path) File "F:\EmptikBot\config.py", line 15, in load_config raise e File "F:\EmptikBot\config.py", line 12, in load_config CONFIG = yaml.safe_load(yml_input) File "C:\Users\Vinay Kumar\AppData\Local\Programs\Python\Python310\lib\site-packages\yaml\__init__.py", line 125, in safe_load return load(stream, SafeLoader) File "C:\Users\Vinay Kumar\AppData\Local\Programs\Python\Python310\lib\site-packages\yaml\__init__.py", line 81, in load return loader.get_single_data() File "C:\Users\Vinay Kumar\AppData\Local\Programs\Python\Python310\lib\site-packages\yaml\constructor.py", line 49, in get_single_data node = self.get_single_node() File "C:\Users\Vinay Kumar\AppData\Local\Programs\Python\Python310\lib\site-packages\yaml\composer.py", line 36, in get_single_node document = self.compose_document() File "C:\Users\Vinay Kumar\AppData\Local\Programs\Python\Python310\lib\site-packages\yaml\composer.py", line 55, in compose_document node = self.compose_node(None, None) File "C:\Users\Vinay Kumar\AppData\Local\Programs\Python\Python310\lib\site-packages\yaml\composer.py", line 84, in compose_node node = self.compose_mapping_node(anchor) File "C:\Users\Vinay Kumar\AppData\Local\Programs\Python\Python310\lib\site-packages\yaml\composer.py", line 133, in compose_mapping_node item_value = self.compose_node(node, item_key) File "C:\Users\Vinay Kumar\AppData\Local\Programs\Python\Python310\lib\site-packages\yaml\composer.py", line 84, in compose_node node = self.compose_mapping_node(anchor) File "C:\Users\Vinay Kumar\AppData\Local\Programs\Python\Python310\lib\site-packages\yaml\composer.py", line 133, in compose_mapping_node item_value = self.compose_node(node, item_key) File "C:\Users\Vinay Kumar\AppData\Local\Programs\Python\Python310\lib\site-packages\yaml\composer.py", line 84, in compose_node node = self.compose_mapping_node(anchor) File "C:\Users\Vinay Kumar\AppData\Local\Programs\Python\Python310\lib\site-packages\yaml\composer.py", line 127, in compose_mapping_node while not self.check_event(MappingEndEvent): File "C:\Users\Vinay Kumar\AppData\Local\Programs\Python\Python310\lib\site-packages\yaml\parser.py", line 98, in check_event self.current_event = self.state() File "C:\Users\Vinay Kumar\AppData\Local\Programs\Python\Python310\lib\site-packages\yaml\parser.py", line 428, in parse_block_mapping_key if self.check_token(KeyToken): File "C:\Users\Vinay Kumar\AppData\Local\Programs\Python\Python310\lib\site-packages\yaml\scanner.py", line 116, in check_token self.fetch_more_tokens() File "C:\Users\Vinay Kumar\AppData\Local\Programs\Python\Python310\lib\site-packages\yaml\scanner.py", line 223, in fetch_more_tokens return self.fetch_value() File "C:\Users\Vinay Kumar\AppData\Local\Programs\Python\Python310\lib\site-packages\yaml\scanner.py", line 577, in fetch_value raise ScannerError(None, None, yaml.scanner.ScannerError: mapping values are not allowed here in "config.yml", line 29, column 26

Here is my config.yml with the token removed: https://drive.google.com/file/d/1pgcHKdTLM2qIFIdPbm3fMjQvF6sw14e6/view?usp=sharing

And yes, I renamed the files to the things specified in UCI options and I am on windows 10 that is why I'm using ; to seperate the NNUE files.

The NNUE files are in the same folder as the engine

Torom commented 1 year ago

It would be easier if you just post the config here.

You have formatted your config wrong. The EvalFile parameter must be in the list like the other parameters of the uci_options section. In your case it should look like this:

    uci_options:                          # Arbitrary UCI options passed to the engine. (Commenting allowed)
      Move Overhead: 100                  # Increase if your bot flags games too often.
      Threads: 28                         # Max CPU threads the engine can use.
      Hash: 16384                         # Max memory (in megabytes) the engine can allocate.
      EvalFile: "3check.nnue;antichess.nnue;atomic.nnue;crazyhouse.nnue;horde.nnue;kingofthehill.nnue;racingkings.nnue"

Also, you should make sure that the nnue files are really named like that.

EmptikBest commented 1 year ago

Thank you, it worked