| from __future__ import annotations |
|
|
| from pathlib import Path |
|
|
| import gradio as gr |
| import torch |
| from model import NeuralModelMachine |
| from safetensors.torch import load_file |
| from schema import ACTIONS, CAPABILITY_NAMES, STATE_NAMES, reference_transition |
|
|
| ARTIFACT_DIR = ( |
| Path(__file__).resolve().parent / "artifacts" / "kernelmind-model-machine" |
| ) |
| MODEL = NeuralModelMachine() |
| MODEL.load_state_dict(load_file(ARTIFACT_DIR / "model_machine.safetensors")) |
| MODEL.eval() |
|
|
|
|
| @torch.inference_mode() |
| def run_transition( |
| action: str, |
| active_state: list[str], |
| active_capabilities: list[str], |
| ) -> tuple[dict, dict]: |
| state = [int(name in active_state) for name in STATE_NAMES] |
| capabilities = [int(name in active_capabilities) for name in CAPABILITY_NAMES] |
| action_index = ACTIONS.index(action) |
| predicted, blocked_probability = MODEL.transition( |
| torch.tensor([state], dtype=torch.float32), |
| torch.tensor([capabilities], dtype=torch.float32), |
| torch.tensor([action_index]), |
| ) |
| reference_state, reference_blocked = reference_transition( |
| state, capabilities, action |
| ) |
| learned_state = predicted[0].int().tolist() |
| learned = { |
| "next_state": dict(zip(STATE_NAMES, learned_state, strict=True)), |
| "blocked_probability": float(blocked_probability[0]), |
| } |
| reference = { |
| "next_state": dict(zip(STATE_NAMES, reference_state, strict=True)), |
| "blocked": bool(reference_blocked), |
| "exact_match": learned_state == reference_state |
| and int(blocked_probability[0] >= 0.5) == reference_blocked, |
| } |
| return learned, reference |
|
|
|
|
| with gr.Blocks(title="KernelMind Neural Model Machine") as demo: |
| gr.Markdown( |
| "# KernelMind Neural Model Machine\n" |
| "A trained world model predicts how an OS action changes virtual machine " |
| "state. Compare its transition directly with the deterministic reference." |
| ) |
| action = gr.Dropdown(ACTIONS, value="WRITE_BACKUP", label="Action") |
| state = gr.CheckboxGroup( |
| STATE_NAMES, |
| value=["file_exists", "service_running"], |
| label="Current state bits", |
| ) |
| capabilities = gr.CheckboxGroup( |
| CAPABILITY_NAMES, |
| value=["network"], |
| label="Capabilities", |
| ) |
| initial = run_transition( |
| "WRITE_BACKUP", ["file_exists", "service_running"], ["network"] |
| ) |
| with gr.Row(): |
| learned = gr.JSON(value=initial[0], label="Learned transition") |
| reference = gr.JSON(value=initial[1], label="Reference transition") |
| button = gr.Button("Advance the model machine", variant="primary") |
| button.click( |
| run_transition, |
| inputs=[action, state, capabilities], |
| outputs=[learned, reference], |
| ) |
|
|
|
|
| if __name__ == "__main__": |
| demo.launch() |
|
|
|
|