CoolFace
Modelpublic

anakin87/tiny-doom-defender

sourceHugging Faceapache-2.0updated 26d agoView on Hugging Face
5likes39downloads
Model Card

tiny-doom-defender

A 1.1M-parameter ModernBERT encoder that plays VizDoom's Defend the Center in real time on a CPU from pixels alone.

๐Ÿ“ Read the full story/see the model play live ยท ๐Ÿ’ป GitHub repo

[image]

Inspired by VAGOsolutions/SauerkrautLM-Doom-MultiVec-1.3M.

The model underwent SFT from a programmatic oracle and has been refined with PPO.

Checkpoints in this repo

CheckpointPathTrainingMean killsฯƒSize
tiny-doom-defender (default)rootSFT + PPO23.122.814.4 MB
tiny-doom-defender-sftsft/SFT only22.193.764.4 MB
tiny-doom-defender-int8int8/SFT + PPO, int823.132.781.1 MB

SauerkrautLM-Doom-MultiVec-1.3M (the inspiration) kills 20.38 enemies, with a standard deviation of 5.35.

Evaluation on 1000 episodes, seeds 10000โ€“10999.

Usage

Install the package, download the repo, and let it play:

bash
pip install git+https://github.com/anakin87/tiny-doom-defender
hf download anakin87/tiny-doom-defender --local-dir tiny-doom-defender

# watch it play in a live DOOM window
play-doom --ckpt tiny-doom-defender

# score it on the held-out test seeds
eval-model --ckpt tiny-doom-defender --episodes 100

Point --ckpt at a subfolder to use the other checkpoints:

bash
eval-model --ckpt tiny-doom-defender/sft  --episodes 100
eval-model --ckpt tiny-doom-defender/int8 --episodes 100

Architecture

Parameters1,096,134
Observation3 stacked 160ร—100 RGB frames (t, tโˆ’1, tโˆ’2) + the 2 previous actions
Stemtwo stride-2 3ร—3 convs, 32 channels โ†’ a 40ร—25 = 1000-token grid
Encoder4-layer ModernBERT, hidden size 128, 4 heads, fed via inputs_embeds
Headlearned attention pooling โ†’ turn (3) / shoot (2) / value heads
Action spaceMultiDiscrete([3, 2]) โ€” turn left/none/right ร— shoot/no-shoot

[image]