CoolFace
Datasetpublic

thomas-schweich/stockfish-nodes1

Stockfish Self-Play (nodes=1) 1M games of Stockfish 17 self-play at 1 node per move. Pre-tokenized in the PAWN training format. At nodes=1, Stockfish evaluates each position with a single NNUE forward pass (no tree search). Despite the lack of search, the NNUE evaluation head produces surprisingly strong play — far from random. Games exhibit coherent openings, reasonable piece development, and tactical awareness, though blunders are more frequent than at higher node counts. This… See the full description on the dataset page: https://huggingface.co/datasets/thomas-schweich/stockfish-nodes1.

sourceHugging Facemitupdated 6mo agoView on Hugging Face
0likes21downloads
Dataset Card

Stockfish Self-Play (nodes=1)

1M games of Stockfish 17 self-play at 1 node per move. Pre-tokenized in the PAWN training format.

At nodes=1, Stockfish evaluates each position with a single NNUE forward pass (no tree search). Despite the lack of search, the NNUE evaluation head produces surprisingly strong play — far from random. Games exhibit coherent openings, reasonable piece development, and tactical awareness, though blunders are more frequent than at higher node counts. This makes the dataset a useful intermediate between fully random games and strong engine play.

Schema

ColumnTypeDescription
tokenslist[int16]PAWN token IDs per ply (variable length, max 255)
game_lengthuint16Number of half-moves
resultstringGame result (1-0, 0-1, 1/2-1/2, *)

Token vocabulary: 4,278 tokens (1 PAD + 4,096 grid moves + 176 promotions + 5 outcomes). See the PAWN architecture docs for details.

Usage

python
from datasets import load_dataset

ds = load_dataset("thomas-schweich/stockfish-nodes1")
game = ds["train"][0]
print(game["tokens"])       # [919, 3300, 659, ...]
print(game["result"])       # "0-1"
print(game["game_length"])  # 74

Or with Polars:

python
import polars as pl

df = pl.scan_parquet("hf://datasets/thomas-schweich/stockfish-nodes1/data/*.parquet")
print(df.head(5).collect())

Generation

Games were generated with Stockfish 17 using the Rust UCI engine interface in the PAWN repository (engine/src/engine_gen.rs).

Parameters:

  • —Nodes per move: 1 (single NNUE evaluation, no search)
  • —Opening diversity: MultiPV=5 with softmax temperature sampling throughout the full game
  • —Temperature: 1.0 (1 pawn difference ≈ e-fold probability ratio)
  • —Max ply: 500 (games exceeding this are drawn)
  • —Workers: 16 parallel engines, deterministic seeds (10000–10015)
  • —Format: zstd-compressed Parquet

License

MIT. Stockfish self-play data — no human game data.