renegade-net-36
This is a neural network for evaluating chess positions, used in versions 1.3.0 and 1.3.1 of the Renegade chess engine.
The architecture is a shallow NNUE with shape (768x14hm -> 1600)x2 -> 1x8, which allows for incremental operations and extremely fast CPU inference.
The input features are tuples of (king bucket, friend/opponent, piece, square), and each one correspond to a 1600-dimensional vector.
The output is a single integer which describes the evaluation of the board.
Note that due to how chess engines rely on their search algorithms to uncover tactics, the neural network works best for evaluating positions where there are no possible winning captures.
Net architecture
- Single hidden layer perspective net
- 14 input buckets based on the position of the king
- 8 output buckets based on the number of pieces on the board
- Horizontal mirroring of pieces
- Weights quantized to int16
Usage
network = ChessNeuralNet("model.safetensors")
score = network.evaluate_position("rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1")
print(f"Evaluation for the starting position: {round(score)} units")
Evaluation for the starting position: 94 units
Scores are relative to the side to move: positive values signal an advantage, while negative values imply a losing position. Outputs in the high triple digits and above typically represent a won game, whereas near-zero values indicate a drawish position.
Other information
- Parameter count: 17.2 million
- Training data size: 8.4 billion positions (post-filtering)
- Training time: few hours
- Training script: here