Nova - Transformer Engine for Human-Like Chess

Discussion of anything and everything relating to chess playing software and machines.

Moderator: Ras

natedawg
Posts: 2
Joined: Tue Apr 28, 2026 11:01 pm
Full name: Nathan Johnson

Nova - Transformer Engine for Human-Like Chess

Post by natedawg »

Hi everyone,

I haven't seen too many threads about NN engines, but I build a transformer model trained on 500M Lichess positions across a diverse range of ratings. One thing I realized during the process is that it's important to have fairly balanced cohorts (meaning underrepresented cohorts, such as 2300+, need to have a lot more positions than appear in the natural distribution, so I had to go through more monthly files for these positions). The engine "Nova" is a searchless, policy-only model; this distinguishes it from projects like Maia-2 and Maia-3, trained on a much larger position sample, and containing a value head.

In terms of performance, Nova clearly beats Maia-2 and basically matches the Maia-3 model in human-move prediction. Note that I did validation with the Maia-3 model available at http://maiachess.com, which may not be a full version, but it’s the only source I could find for now. I didn’t compare against ALLIE, which is a non-Markovian model (prior game history is required for move prediction, not a standalone position; Maia and Nova are Markovian).

I ran validation on 6 rating cohorts with 100k positions each (out of sample, from Lichess March 2026 database). The key results are:
- Hit-rate (top model move = move played by human): Maia-3: 54.8% / Nova: 54.6% / Maia-2: 50.3%
- Average probability mass placed on move played: Nova: 42.5% / Maia-3: 42.1% / Maia-2: 38.4%
- Maia-3 performs relatively better in late-opening through middlegame; Nova performs better in early opening and late-middlegame through endgame
- Nova performs relatively better for under-1700, Maia-3 for above-1700 ELO

For more details, you can see the writeup: https://novachess.ai/articles/nova_engine_release.html. Full model documentation, validation results, and open weights are available on GitHub and Hugging Face, and the license is permissive for your own use or fine-tuning:
- https://github.com/novachessai/novachess-engine
- https://huggingface.co/novachess/novachess-engine

I also calibrated Nova to play at all strengths from 500-2500 Elo, using a filtering layer which preserves the organic Nova move policy, but at each target rating selectively (probabilistically) filters out some low-quality moves, unless Nova is highly confident in them (in which case they can’t be filtered). I ran thousands of self matches with Nova models of different strengths in order to determine their relative ELO differences, and calibrated their assigned ratings (for play purposes) to match very closely to Chess.com blitz equivalents. For example, Nova-1500 will make a similar frequency of 1.0 to 2.0-pawn level mistakes in each game phase as a Chess.com 1500-rated blitz player would, on average.

The rating-calibrated versions are available to play, completely free and unlimited, at http://novachess.ai. The platform also lets you play Nova from custom positions, selected openings lines, and has a conditioned “aggression” parameter. There's an optional eval bar and option to see threats or get a hint in the position. There is also a Training mode where you can play out common theoretical endgames, curated Master games from all 28 of Rios’ defined pawn structures, and selected positions from your own games where you could have played a better move (auto-generated from your Lichess/Chess.com games).

Thanks for taking a look, and if anyone else is looking to build a NN engine, I'd be happy to share some more about what I've learned during the process.
Image
User avatar
AdminX
Posts: 6396
Joined: Mon Mar 13, 2006 2:34 pm
Location: Acworth, GA

Re: Nova - Transformer Engine for Human-Like Chess

Post by AdminX »

Thank you. I downloaded from instructions on the git repo. I did have to rename file "nova.onnx.data" to "nova_v3b.onnx.data". Any chance of GPU support in later release?
"Good decisions come from experience, and experience comes from bad decisions."
__________________________________________________________________
Ted Summers
natedawg
Posts: 2
Joined: Tue Apr 28, 2026 11:01 pm
Full name: Nathan Johnson

Re: Nova - Transformer Engine for Human-Like Chess

Post by natedawg »

AdminX wrote: Thu Apr 30, 2026 9:51 am Thank you. I downloaded from instructions on the git repo. I did have to rename file "nova.onnx.data" to "nova_v3b.onnx.data". Any chance of GPU support in later release?
Thanks for checking it out and the heads-up on the filenames. I've renamed the files (nova_v3b.onnx + nova_v3b.onnx.data) and updated the docs so the embedded sidecar reference is consistent now. No rename should be needed going forward.

On GPU support: it already works with the existing ONNX file via onnxruntime's CUDA provider. You'll need:

pip install onnxruntime-gpu # replaces onnxruntime

Then:

import onnxruntime as ort
session = ort.InferenceSession(
"nova_v3b.onnx",
providers=["CUDAExecutionProvider", "CPUExecutionProvider"],
)
print(session.get_providers()) # should print ['CUDAExecutionProvider', 'CPUExecutionProvider']
CUDA toolkit needs to be installed on your system for the GPU provider to register. If get_providers() only shows the CPU one, the CUDA setup isn't picking up (CUDA / cuDNN version mismatch with the onnxruntime-gpu build). I may also publish an fp16 build later if there's demand for smaller / faster GPU inference.

Thanks again for the feedback!