Downloads · 30 days
0
aminwoo/bughouse-rise-v3
bughouse-rise-v3 is a reinforcement learning model from aminwoo. Use it for the reinforcement learning task on the model card, and read the license before you ship it in a product. The card lists the license as mit.
Neural network weights for Hivemind, a UCI engine for Bughouse chess — the four-player variant played on two boards, where captured pieces are passed to your partner. The network drives a Monte Carlo Graph Search (MCG…
Downloads · 30 days
0
Access
Public
Updated Oct 3, 2026
Repo size
336 MB
Likes
0
Public
Click a slice to open those files.
.tar223 MB · 73%
From the Hugging Face model README
Neural network weights for Hivemind, a UCI engine for Bughouse chess — the four-player variant played on two boards, where captured pieces are passed to your partner. The network drives a Monte Carlo Graph Search (MCGS) that evaluates both boards jointly.
This is RL iteration 04, trained by self-play reinforcement learning.
A smaller, faster network distilled from this one and improved by self-play lives at aminwoo/bughouse-twin-s.
| Architecture | CrossBoardRiseV3 (RISEv3.3 with cross-board attention) |
| Parameters | 13.57 M (ONNX, BatchNorm folded) · 14.18 M (checkpoint) |
| Validation loss | 1.556 |
| Policy accuracy | 82.0 % |
| Input representation | version 3 |
| File | Size | Purpose |
|---|---|---|
hivemind-it04-crossboard-risev33-loss1.556-p82.0.onnx | 27.3 MB | Inference — load in ONNX Runtime, or build a TensorRT engine from it |
hivemind-it04-crossboard-risev33-loss1.556-p82.0.tar | 111.4 MB | Training checkpoint — model + optimizer state, for resuming RL |
Note on the
.tar: despite the extension (inherited from the CrazyAra-derived training code) this is not a tar archive — it is atorch.savezip. Usetorch.load, nottar -x.
Exported with PyTorch 2.9.1 · opset 18 · IR version 8 · dynamic batch dimension.
Input
| Name | Shape | Notes |
|---|---|---|
data | [batch, 74, 8, 8] | 74 input planes encoding both boards, pockets, and side-to-move context |
Outputs
| Name | Shape | Notes |
|---|---|---|
value | [batch, 1] | Scalar position evaluation |
pi_a | [batch, 4672] | Policy logits, board A |
pi_b | [batch, 4672] | Policy logits, board B |
wdl_out | [batch, 3] | Win / draw / loss head |
moves_left | [batch, 1] | Plies-to-end head |
The two policy heads are what make this a bughouse network rather than two independent chess networks:
the body reasons over both boards at once and emits a move distribution for each. The 4672 policy size is
the standard AlphaZero chess move encoding.
import numpy as np, onnxruntime as ort
sess = ort.InferenceSession("hivemind-it04-crossboard-risev33-loss1.556-p82.0.onnx")
planes = np.zeros((1, 74, 8, 8), dtype=np.float32) # your encoded position
value, pi_a, pi_b, wdl, moves_left = sess.run(None, {"data": planes})
Input planes must be built with the version 3 representation (src/domain/board2planes.py in the
engine repo). Feeding a different plane encoding will produce silently wrong evaluations — this is the
detail the old -v3.0 filename suffix used to carry.
import torch
ck = torch.load("hivemind-it04-crossboard-risev33-loss1.556-p82.0.tar",
map_location="cpu", weights_only=False)
model.load_state_dict(ck["model_state_dict"])
optimizer.load_state_dict(ck["optimizer_state_dict"])
# ck["training_iteration"] == 13315, ck["evaluation_step"] == 34, ck["batch_steps"] == 400
The engine builds FP16 TensorRT plans from this ONNX at runtime. Prebuilt .engine files are not
published here — they are specific to a GPU architecture, TensorRT version, and batch size, so they must be
built on the target machine.
Filenames follow the training loop's convention
(hivemind-rl-{iter}-{architecture}-loss{val_loss}-p{policy_acc}):
it04 — RL iteration 4crossboard-risev33 — architectureloss1.556 — validation lossp82.0 — policy accuracy, percentMIT, matching the Hivemind repository.