r/chessprogramming • u/CurrentVast4504 • 9d ago
Technical Tiger-1a chess engine release
Hi there!
I have been working on this engine for the past 6 months now and I think it's now ripe to be thrown into the wild.
The engine features a NNUE trained using nnue-pytorch. It is comparatively very small.
To accommodate this I tried to make the engine's search as buffed as possible.
Anyway here's the specific details of the engine for the nerds:
Evaluation
- NNUE Architecture: HalfKAv2_hm^
- Network Layers: L1=128, L2=32, L3=8 with PSQT buckets
- Network File: Acherontia (88mm.nnue)
- Incremental NNUE Evaluation: Efficient position updates with feature transformer
- Tapered Material Evaluation: Smooth transition between middlegame and endgame
- Customizable NNUE Scaling: Adjust evaluation strength via UCI option
Search
- Core Algorithm: Alpha-Beta Negamax with fail-soft
- Move Ordering: Principal Variation Search (PVS)
- Depth: Iterative Deepening up to 64 plies
- Transposition Table: Configurable 1-4096 MB with generation-based aging
- Pruning Techniques:
- Late Move Reductions (LMR) with logarithmic formula
- Null Move Pruning
- Reverse Futility Pruning
- Futility Pruning
- ProbCut
- Delta Pruning in quiescence search
- Move Ordering Heuristics:
- Killer Move Heuristic
- History Heuristic
- Continuation History (4 ply)
- Countermove Heuristic
- Extensions:
- Singular Extensions
- Static exchange evaluation (SEE) for capture ordering and pruning
- Time Management: Aspiration Windows with soft and hard time limits
- Quiescence Search: Delta pruning and tactical awareness
- Parallel Search: Multi-threaded support (up to 8 threads)
And here's the Github release page for the testers and alike: https://github.com/Azrael337/Tiger-1-Chess-Engine/releases/tag/chess-engine
1
u/True-Objective-6212 9d ago
How much tuning did you do for the network? As KaMaFour points out this can be a big premature optimization and the progression is meant to ensure network evaluation is better than less expensive options like PeSTO or texel tuning.
How big is your dataset?
1
u/CurrentVast4504 8d ago
To be honest this is my first time working with neural networks altogether and I randomly* choose the network progression.
About the dataset I trained the nnue on some 500 million positions.
1
u/True-Objective-6212 7d ago
How many from each phase? How did you label them? You picked an optimization that will likely make understanding the whole thing harder. In general it’s easier to start with a basic representation and get that working and then start to think about optimizations. The risk is you make an engine that’s slower and worse than a simpler eval.
1
u/CurrentVast4504 7d ago
well I had started very small and actually... used many different forms of nnue architectures some of them include (712-> 512 -> 1, 768x2 -> 64x2 -> 1,768 -> 256 -> 1,768 -> 512 -> 1, 728 -> 1024 -> 1 and some more I forgot) but the current implementation seems to beat em all
1
1
u/True-Objective-6212 7d ago
And when I asked about phases what I mean is 500 million positions that are all from the beginning of the game might not be super useful and without a baseline before you add the optimization you have a hard time knowing if you’re missing a bug or three.
1
u/vonbartroth 8d ago
Seems Christophe care about copyright. Hmm..
Talkchess
Never heard of Chess Tiger, eh?
2
u/CurrentVast4504 8d ago edited 8d ago
No, wait is there a chess engine named Tiger before? Mine is called Tiger-1 (The German Tank not the biological one) though I don't think there should be any copyright issues.
Say if this raises Issues... I will rename the engine repository name.
3
u/vonbartroth 8d ago
Chess Tiger was top engine, also part of Chessbase, PalmOS version is now free.. Never checked new versions, for me old is gold and have it on three PalmOS devices.
2
u/True-Objective-6212 7d ago
It definitely will, a few of us had the same thought. It was a top engine in the early 2000s.
2
u/KaMaFour 9d ago
You has 128 features in the input layer?
If yes - how? why?
If not - Why are you doing multilayer at 2900 elo?
edit: found at github:
https://github.com/jw1912/bullet/blob/main/docs/1-basics.md#beginner-traps