Death Mountain PPO Small

A 351,104-parameter game policy with MIT-licensed weights and standalone CPU inference. On 16,000 fresh games it scored 390.86 mean XP, versus 375.63 for its unchanged same-size parent: +15.22 XP, paired 95% interval [+8.85, +21.75]. Median 213 versus 209; zero timeouts. Against the 2,068,352-parameter teacher on the same bank it scored +0.74 XP, interval [-3.80, +5.43], while using 83.02% fewer parameters. Full model card, lineage and limitations.

python -m pip install huggingface_hub
hf download rvorias/death-mountain-small --revision v1.0 --local-dir death-mountain-small
cd death-mountain-small
python -m pip install -r requirements.txt
python policy_api.py --self-test

This custom PyTorch policy uses the included DeathMountainPolicy API. To play, supply compatible observations and legal-action masks from your environment. Numeric observation/action interface. The package contains no game simulator. Scores use the recorded corrected simulator and do not establish superiority over humans.

Inference API

No game engine, C compiler, dmfast, Triton, CUDA driver, or original source checkout is needed. Install requirements.txt, then provide observations and legal-action masks from your environment. When exported with --validate, run the included real-observation self-test without a simulator:

python policy_api.py --self-test

The test checks artifact hashes, exact-feature bitwise equality, and raw-input equality within atol=1e-4/rtol=1e-5 against saved CPU outputs. Both tests cover logits, value, and recurrent state. Bitwise reproduction targets the recorded package versions and CPU numerical behavior; different PyTorch versions or CPU backends may require investigating numerical differences. The numeric interface is 463 raw float32 observation fields and 57 bool action-mask fields. Observations must include the existing combat-simulation fields; this model does not compute game dynamics.

import torch
from policy_api import DeathMountainPolicy

policy = DeathMountainPolicy()
state = policy.initial_state(batch_size)
# raw_obs: (batch_size, 463); legal_mask: (batch_size, 57)
logits, value, state = policy.step(raw_obs, legal_mask, state)
actions = torch.distributions.Categorical(logits=logits).sample()
# After your environment advances, reset memory for ended episodes.
state = policy.reset_state(state, done)

The default excludes macro actions 7–10 with the canonical nonempty-mask fallback. Pass primitive_actions=False to use exactly your supplied legal mask. Use logits.argmax(-1) for greedy actions; PPO score reports ordinarily use sampling. A NumPy reference derives semantic features from raw observations. Its floating-point rounding can differ slightly from native C features. An optional semantic_features argument accepts the exact 88/90 features from an external evaluator for exact checkpoint equivalence. The raw-input validation report records actual numerical differences; it does not claim bit-identical sampled trajectories or certify benchmark scores across implementations.

Weights are safetensors without optimizer state; full architecture and original checkpoint metadata are retained. See manifest.json for hashes and LICENSE for MIT terms.

Downloads last month

-

Downloads are not tracked for this model. How to track
Safetensors
Model size
352k params
Tensor type
F32
·
Video Preview
loading

Collection including rvorias/death-mountain-small