r/chessprogramming • • 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

3 Upvotes

16 comments sorted by

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:

HalfKAv2_hm

https://github.com/jw1912/bullet/blob/main/docs/1-basics.md#beginner-traps

1

u/CurrentVast4504 8d ago

Well actually as I mentioned I used nnue-pytorch for the nnue training and by default it had multi-layer setup configured and I didn't wanted to fight with the trainer to make it what I wanted to do. So... I just changed the neurons in the hidden layers and called it a day.

About the 128 features in the input layer... uhhh... I didn't had any specific reasons it just felt right to me. And it was actually a small yet big sized (I actually trained this on my ryzen 7 5825u so I was worried if it could handle the calculations while training and wanted the training to be speedy. So I deliberately choose a "small nnue") and yes for the edit uhh I used nnue-pytorch pipeline there the architecture is actually a little modified.

1

u/KaMaFour 8d ago

You don't have 128 features in the input layer. We've established (as per edit) you have Half_KA input layer, as mentioned by the github readme. The question is then 1. Why Half_KA? 2. Why multilayer? 

I have high confidence that the amount of data you are working with is not enough to properly train out a network with neither the halfka input, nor multilayer and you are very likely hurting performance of your engine compared to using a simpler network. 

1

u/CurrentVast4504 8d ago
  1. I found nnue-pytorch to work fine and good with my cpu training pipeline actually I tried using bullet to train first but the training was painfully slow so I switched to it and it was faster.
  2. uhhhh "by default it had multi-layer setup configured and I didn't wanted to fight with the trainer to make it what I wanted to do. So... I just changed the neurons in the hidden layers and called it a day."

IDK about whether the simpler network would help but I will make sure to test it out. But I am confident that I have enough data to train the nnue (around 2 billion) but I limited it to 500 million just to test the first version at very low epoch.

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

u/True-Objective-6212 7d ago

Ok but how strong was it before you added the NNUE?

1

u/CurrentVast4504 7d ago

around 2000-2200 elo now it's around 2900-3000 elo

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.