Core library for Retro Speedlab: A high-performance RL toolkit for classic games.
Project description
datenwissenschaften
The reinforcement-learning engine behind Retro Speedlab.
datenwissenschaften turns classic-game emulators into reproducible training systems. It provides visual and
state-aware environments, recurrent and evolutionary agents, parallel execution, durable checkpoints, episode
recording, and a live browser dashboard in one focused Python package.
This repository contains the reusable engine. For game runners, end-to-end examples, and user-facing documentation, start with Retro Speedlab.
Why this engine
- Exploration for sparse rewards — multi-input CNN-LSTM PPO combines visual frames, normalized RAM, temporal memory, and normalized, clipped, annealed Random Network Distillation (RND).
- State-aware neuroevolution — NEAT trains and routes independent controllers across declared game states.
- Efficient execution — vectorized environments, automatic worker selection, CUDA tuning, and CPU fallback.
- Reliable training runs — atomic checkpoints, resumable model state, automatic savestates, and
.bk2replay capture. - Operational visibility — a local Vue dashboard reports episode outcomes, reward distributions, environment details, PPO parameters, RND progress, and NEAT generations.
- Game-oriented infrastructure — ROM discovery, RAM models, state machines, visual encoders, and configurable action translation.
Model choices
| Model | Best suited to | Characteristics |
|---|---|---|
RecurrentRNDModel |
Sparse-reward NES games and partially observable state | Automatic visual + RAM inputs, NES-tuned recurrent PPO, LSTM memory, intrinsic RND exploration |
NEATModel |
Compact engineered features and explicit state-by-state evolution | Separate populations and winning controllers per training state |
| Custom SB3 model | Experiments that need a standard Stable-Baselines3 algorithm | Integrates through the same builder, trainer, callbacks, and dashboard |
RecurrentRNDModel is the recommended starting point for visual agents. RND encourages the policy to visit novel
observations, while its influence decays during training so learned external rewards increasingly drive behavior.
The predictor, fixed target, optimizer, reward statistics, and annealing progress are all preserved in checkpoints.
Selecting it also clears incompatible per-game NEAT artifacts before loading or creating the recurrent model.
Environment wrappers always use RGB observations and one emulator step per selected action; these are fixed engine
defaults rather than game-level options.
The default profile uses longer 512-step rollouts, a 512-unit LSTM, gamma=0.999, gae_lambda=0.98, and a slower
10-million-step RND decay. These settings preserve more temporal context and delayed reward information than the
shorter arcade baseline while retaining conservative PPO updates.
Installation
The package requires Python 3.12.
pip install datenwissenschaften
For local development:
git clone https://github.com/datenwissenschaften/datenwissenschaften.git
cd datenwissenschaften
poetry install
cp config.example.yaml config.yaml
Training dashboard
Enable the dashboard with ui.enable: true, then open http://127.0.0.1:18080. It refreshes
live training telemetry without interrupting the learners and distinguishes between PPO + RND and NEAT runs.
Dashboard history is restored from and atomically persisted to
models/<game>/<savestate>/history.json. The ui mapping accepts enable, host, port, and max_episodes.
Episode history is unlimited by default; set max_episodes to a positive integer to impose a limit.
Binding to 0.0.0.0 makes the dashboard reachable on the local network; use that only on a trusted network and open
it through the machine's actual IP address.
How a run fits together
- A game package defines RAM structures, training states, rewards, and action translation.
- The environment factory creates vectorized emulator workers and processed visual observations.
- A model builder creates or restores the selected policy.
- The trainer coordinates learning, checkpoints, replay capture, telemetry, and optional uploads.
- The dashboard exposes the active run without coupling the learner to a separate monitoring service.
Development
Run Python quality checks:
ruff check src
black --check src
python -m compileall -q src
Build the dashboard assets after changing the Vue frontend:
cd src/datenwissenschaften/ui/frontend
npm ci
npm run build
License
Copyright © datenwissenschaften contributors. Distributed under the GNU General Public License v3.0.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file datenwissenschaften-1.10.11.tar.gz.
File metadata
- Download URL: datenwissenschaften-1.10.11.tar.gz
- Upload date:
- Size: 112.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/2.4.1 CPython/3.12.13 Linux/6.17.0-1018-azure
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8d0e3cbb3cb5bd0148a3777f0ebcad034328a5b0c64344762bcd8da61b6b97cb
|
|
| MD5 |
6c8d6b2a809d042d4d009a48641ab4a3
|
|
| BLAKE2b-256 |
ebee9d213f1b390ff8a2740a54d9f250a34a66af28a550a61dad6490c11ee1ee
|
File details
Details for the file datenwissenschaften-1.10.11-py3-none-any.whl.
File metadata
- Download URL: datenwissenschaften-1.10.11-py3-none-any.whl
- Upload date:
- Size: 136.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/2.4.1 CPython/3.12.13 Linux/6.17.0-1018-azure
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
06d2fb02b8b4dd4989e8c9c41acfa6bf97d6dd8dec76f28d194b6a132551bf63
|
|
| MD5 |
d708159e4832acdef2f14123abebcc87
|
|
| BLAKE2b-256 |
86582d47876c696c1849254ff76409c6e6a298c2a97a72bccae4b7bd86c88e5f
|