-
Notifications
You must be signed in to change notification settings - Fork 42
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Contribute/Donate GPU time to CrazyAra enhancement #37
Comments
Thank you for the proposal. I'm also primarily working on classical chess support right now. Which area are you most interested in? Crazyhouse, other lichess variants or classical chess? There is also the option to host CrazyAra more regularly on lichess.org (e.g. ones a week). |
Perhaps support for CrazyHouse960 is a good idea. Beside Chess960. Support for 960 may be complicated. Afaik Lc0 has not started training for 960 yet. Do it has to be limited to what lichess support? Cutechess GUI support majority of the variants pychess supports. S-Chess or Seirawan-Chess is maybe unrealistic. For instance https://pychess-variants.herokuapp.com/variant |
Adding 960 support isn't too difficult for this project because move generating routines and the position representation has been integrated from Multi-Variant Stockfish.
I implemented the remaining parts to convert the neural network policy to chess960 and let it play one game vs Sjakii 1.3.1: The network used in this game was generated by supervised learning on chess960 lichess.org games. Generally, these networks seem to be a bit too careless about material due to the loss weighting during training. One issue in converting an already trained network to the 960 variant is that castling is presented differently and there are no special castling moves For parsing pgn files in python and preparing supervised training data, the python chess library is used. The python chess library supports the same variants as Multi-Variant Stockfish at the time of writing: If Seirawan-Chess were supported, then one would need to train the network fully from selfplay and define an extended input representation with 4 additional layers to describe the position of the hawk and elephant pieces. Moreover, the MCTS back-end would need to be changed. CrazyAra shouldn't lose as much playing strength if the Fairy-Stockfish back-end were used because the main bottleneck is the neural network inference. I think before providing support for Seirawan-Chess it would make more sense to support traditional chess variants, like Shogi. Generally, extending CrazyAra to other variants doesn't require manually fine-tuning of evaluation functions as for other engines but it is computational extensive to train a neural network and to generate selfplay games. Furthermore, if a different input and output representation of the neural network is used, then one needs to maintain different network definitions and weights which are mutually incompatible with each other. To address this problem, I proposed a unified multi variant plane representation in my master thesis which at least supports all lichess variants. I could prepare the reinforcement learning loop for crazyhouse960 and give you instructions on how to start it. Then you can run it for some days and see how it develops starting from the already trained network for regular crazyhouse. After every network update it will play the previous network to measure the progress. |
Is this available or planned to be available at a later point as of now?
The text was updated successfully, but these errors were encountered: