Hypersion 3.1 - new version chess engine


Hypersion a free, open-source UCI chess engine.
Hypersion uses an NNUE network for evaluation (Stockfish 18 SFNNv10 architecture: HalfKAv2_hm features + FullThreats, big network 1024-d FT, small network 128-d FT) on top of an alpha-beta search with PVS, transposition table, aspiration windows, late-move reductions, singular extensions, ProbCut, futility/razoring/SEE pruning, and lazy-SMP infrastructure (single-threaded by default — multi-thread is currently unstable).
Author: RenCopp

Hypersion 3.1 what's new?

Hypersion 3.1 — drop-in upgrade over v3.0 with this session's improvements baked in. Same NNUE network (SF18 SFNNv10), same bench (1,273,328 nodes T1 d=13), AVX-VNNI-PGO build now the recommended download.

What's new vs v3.0

Bullet TC fixes (commits 74d5b49, 15d7f2a)

The "engine panics at <2s remaining" issue is resolved. Two-part time-manager fix:

  • Cap moveOverhead at wtime/2 so the engine always has at least half its remaining time after overhead.
  • SF18-style mtg scaling under 1s: mtg = max(2, remaining/20) so very-low-time positions get proportionally more per move.

K+R+P vs K+P conversion test went from 1207ms/move (80% of clock) to 184ms/move (12%) — should noticeably reduce lichess bullet flag-outs.

KQK Syzygy hang fixed (commit b6e44df)

Specific KQK positions (kings on same file, e.g. 8/8/8/4k3/8/8/8/Q3K3 w - - 0 1) hung the engine indefinitely when Syzygy was loaded — a Fathom-library probe_dtz recursion bug. Workaround in src/syzygy.cpp::probe_root_dtz: skip root DTZ probe for KX-vs-K with ≤4 pieces and no pawns (the regular search trivially finds the win in <1s). WDL probes at internal nodes still fire.

After fix: all 4 test_bullet_conversion.py scenarios pass (was 3/4).

Cross-session opening variety (commit f31f6a5)

Ported from Kirin V8's OpeningBook. The bot tracks its last 16 first-moves played at startpos across sessions in hypersion_recent_openings.txt. Book probe at startpos filters out recently-played moves with progressive window shrink. Bot now rotates through e2e4 / d2d4 / c2c4 / g1f3 naturally instead of repeating one opening every game.

PGO release builds (this session)

All 3 architecture variants now ship as PGO builds. NPS gains on Alder Lake i7:

BuildNon-PGO NPSPGO NPSGain
avx2430,760449,939+4.5%
avxvnni420,934453,464+7.7%
bmi2431,490453,141+5.0%

PGO is gated to single-instance production use (lichess-bot, analysis). Don't use for high-concurrency SPRT testing — i-cache pressure causes PGO to regress at concurrency ≥ 4.

Classical eval expansion (R20-R37, commits 3bbe494 + apply)

Classical eval grew from 14 to 145 tunable scalars across 16 feature rounds, tuned on a 16M-position master-game dataset:

  • R20 Mop-up eval (drives lone king to corner)
  • R21 OCB scaling (opposite-colour-bishop drawish recognition)
  • R22 Initiative bonus (SF7-style, joint-tuned via --new-only)
  • R23 KBNK mating drive (Push-To-Corners by bishop colour)
  • R25 Drawish endgame scaling (wrong-bishop rook-pawn, KNP)
  • R26 KPK bitbase (24KB retrograde-built lookup, probed at eval)
  • R27-R31 Knight rim, Pawn islands, Bishop-pair openness, Rook on 8th, Queen tropism
  • R32-R37 ConnectedPasser, TradeDown, BadBishopBlocked, RookTrappedByKing, BackwardOnHalfOpen, Imbalance polynomial (in code, disabled-at-0 — master-game MSE optimum regressed WAC tactically)

Project-best WAC depth-8 classical: 184/198 (92.9%) — up from 177 at session start.

Lichess-bot config additions

  • Draw offer/accept: offer_draw_enabled=true, offer_draw_score=50 (was 0 — never fired). Bot now offers/accepts draws when |score| ≤ 50 cp for 10 consecutive moves with ≤10 pieces on board.
  • Takebacks: max_takebacks_accepted=3 (was 0). Bot auto-accepts up to 3 takebacks per game.

Tombstones (failed experiments)

Documented in source comments + CHANGELOG.md:

  • T1.1 material-aware draw contempt — bench shifted, WAC dropped
  • Tactical-aligned Texel re-tune (WAC anchor) — overfit, WAC -10
  • R22 widened-ceiling re-tune — WAC -3
  • R32-R37 master-game tuned values — WAC -3 to -8
  • Joint A+B SPSA (RFP+LMR+SEE+FUTIL+NMP+ProbCut, 7 params, 300 iters) — -20.9 ± 41.9 ELO @ SPRT 200g. Confirms history.h:103-160 finding: Hypersion search at tight local optimum jointly tuned for SF18 NNUE.

Bench / verification

TestResult
NNUE bench T1 d=131,273,328 nodes (unchanged from v3.0)
WAC depth-8 classical184/198 (project best)
All 3 archive variantsbench match
Bullet conversion test4/4 pass (was 3/4 in v3.0)



Comments

Post a Comment

Popular posts from this blog

Torch-4 UCI v 1.01 - new version chess engine

Reckless 0.10.0 - new version super strong chess engine

Reckless 0.9.0 - new version super strong chess engine

We already have the new Fritz 20 program - what does it look like and how does it work?