Last month I posted Sable 1.6 here (~3200, built by an AI under my direction - that thread). Two updates since then, one small and one big.
The small one: the engine is now called Onyx - it turned out "Sable" already belonged to another engine, so it was renamed to avoid stepping on anyone's toes. Same project, same lineage; new repo:
https://github.com/dylan2554/onyx (MIT - source, net, binaries, training pipeline)
The big one: Onyx 2.0 is roughly +190 Elo stronger than the 1.6 I posted, and this time the development process itself might be the most interesting part. The work was done by two AI agents (Anthropic's Claude and OpenAI's Codex) working in alternating shifts, auditing each other's changes, with every single change gated by SPRT before acceptance. The full log - every accepted AND rejected experiment with games, Elo, and LLR - ships in the repo as EXPERIMENT_LOG.md. Roughly 45 experiments; about a quarter survived. Things that famously work elsewhere (ProbCut, TT buckets, 2-ply continuation history) measurably failed here and are documented failing.
What changed from 1.6 to 2.0, briefly:
- Search: qsearch TT, correction histories (pawn-structure, previous-move, non-pawn placement, pawn-king), quiet-SEE pruning with check guards, SEE-filtered quiet checks in qsearch, depth-8 LMP, a TT replacement fix that alone was worth ~+30, and two full SPSA re-tunes of all constants (margins and structural constants like depth ceilings and the null-move formula).
- NNUE: new 768x2 net ("gen8") trained on ~100M self-play positions. The interesting part: the entire data generation and training pipeline now runs on free Kaggle compute (CPU sessions for datagen, one T4 GPU session for training - the final net trained in about 65 minutes at 200k pos/s). Nothing external: Onyx generates its own data, labels it with its own search, and trains its own successor. The pipeline notebooks are in the repo.
Code: Select all
Opponent (CCRL Blitz) Onyx score Games Implied
Stash v34.0 (3328) 58.95% 1000 ~3390
Notes:
- Keep onyx.nnue next to the exe - it loads automatically. The release has an AVX2 build (recommended) and a generic x64 fallback.
- Binaries are unsigned, so SmartScreen will warn; or build from source: [c]g++ -O3 -march=native -pthread onyx.cpp[/c]
- Old Sable nets still load (the file format kept backward compatibility).
Thanks!