Back to browse
I trained a chess engine to play like humans

I trained a chess engine to play like humans

by hazard·May 10, 2026·14 points·3 comments

AI Analysis

●●●BangerBig BrainCrowd Pleaser

Separate clock-burn models make bots blunder under time pressure like real humans.

Strengths
  • Three-model architecture separates move selection, clock usage, and win probability for realistic behavior.
  • Training on 1 billion Lichess games provides massive dataset coverage across all skill levels.
  • Bots degrade performance under time pressure rather than playing instantly like standard engines.
Weaknesses
  • Requires account creation just to try the demo, adding friction to initial exploration.
  • Hard to verify if the 'human-like' blunders feel authentic without playing multiple rated bots.
Category
Target Audience

Chess players seeking realistic practice opponents

Similar To

Maia Chess · Lichess Bots · Chess.com AI

Post Description

I built 1e4.ai - a chess web app where you play against neural networks trained to mimic human Lichess players at specific Elo ranges. There's a separate model for each 100-point rating bucket from ~800 to 2200+, and the bots not only choose human-like moves but also burn clock time, play worse under time pressure, and blunder in human-like ways.

Live demo: https://1e4.ai Code: https://github.com/thomasj02/1e4_ai

A few things that might be interesting:

- Trained on almost a full year of Lichess blitz games, around 1B total games

- Architecture is an a small (~9MM parameters) transformer-based network that takes the board, recent move history, the player's rating, and remaining clock time as input. Three separate models per rating bucket: move, clock-usage, and win probability. The clock model is what makes the bots feel humanish under time pressure rather than instant. Because the move model takes the clock as one input parameter, it also learns to blunder under time pressure like a human might.

- Because the network is so tiny, no GPU is needed for inference - it runs easily on a local CPU

- Downside of the tiny network is that it's a bit weak as you turn up the rating past around 1700. It can spot short tactics but not long multi-move combinations.

- Initial training on a rented 8xH100 cluster, then fine-tunes on my local GPU for different rating ranges

- Inspired by Maia-2 and DeepMind's "Grandmaster-Level Chess Without Search". On a held-out Lichess blitz benchmark, the it beats Maia-2 blitz on top-1 move prediction (56.7% vs 52.7%) and pretty substantially on win-probability calibration (Brier 0.176 vs 0.272). Numbers and code in https://github.com/thomasj02/1e4_ai/tree/master/experiments/...

- The data pipeline is C++ via nanobind, then training with Pytorch. Getting this right was actually the thing I spent the most time on. Pre-shuffling the dataset and then being able to read the shuffled dataset sequentially at training time kept the GPU utilization high. Without this it spent a huge percentage of time on I/O while the GPU sat idle.

Happy to answer questions about the rating-conditioning, the clock model, or the data pipeline.

Similar Projects

GamingMid

Play Bang Bang against a neural network

You play a minimalist web game while a neural net trains in real time, so the opponent starts weak and adapts to your playstyle. The landing page is extremely spare — the demo is quick to load and oddly charming, but there’s little signposting about the model, implementation details, or source code. Fun as a curiosity or teaching toy, but not novel enough to wow ML folks who’ve seen in-browser learning demos before.

Niche GemCozy
atum47
104mo ago