Coda is a rewrite of GoChess in Rust, 100% vibe-coded with Claude Code. The initial implememntation - board representation, search, NNUE evaluation, SIMD, and UCI protocol — was written from scratch in a single session - building on top of the work done in gochess.
Author: Adam Twiss Rating Chess Engines Diary CEDR=3808
Coda 0.9.4 what's new?
New network
Switched the training dataset to BT4-scored LC0 training data.
First hidden layer after FT (what we call L1) switched from 32-wide to 16-wide with dual-activation.
Added an L1 penalty on the feature-transformer's output activations, a regulariser that significantly sharpens eval quality.
Various other changes to the training recipe.
Search Improvements
Margin-aware LMP -- late-move pruning gains a predictive margin dimension
Time Management - stop allocating less time when the eval is rising.
Increased MAX_PLY to increase the depth cap.
Added scaling of eval as our internal scoring to the externally reported score.
Fixed various points where we could report a truncated PV.
After an extensive set of ablation tests, removed a range of search and move-gen features that were now net-negative.
Performance
Better pre-fetching support in the feature transformer and in correction-history.
Skip eager threat-delta generation in low-piece searchers.
Added fused kernel support for AVX2 at L1=16.
Explicit hugetlb tier for the big weight matrices.
Strength Gain
+38.3 vs 0.9.3 at STC (https://ob.atwiss.com/test/3274/)
Elo | 38.27 +- 1.14 (95%)
Conf | 10.0+0.10s Threads=1 Hash=64MB
Games | N: 100006 W: 30860 L: 19890 D: 49256
Penta | [279, 7766, 23378, 17866, 714]
+36.5 vs 0.9.3 at LTC (https://ob.atwiss.com/test/3275/)
Elo | 36.49 +- 2.12 (95%)
Conf | 40.0+0.40s Threads=1 Hash=256MB
Games | N: 25000 W: 7471 L: 4855 D: 12674
Penta | [16, 1828, 6226, 4384, 46]
Internal cross-engine testing in a pool of the top engines at various TC shows 15-25 Elo gains over 0.9.3.
Comments
Post a Comment