Babel Tribes: A Four-Faction Survival Experiment on a 9ร—9 Map

This public training snapshot was released for demonstration. Training was paused on September 27, 2026, after 8 completed updates. This is an early experimental checkpoint; convergence has not been established.

Four factions interact on a shared 9ร—9 map, starting with 20 units each. Each faction has its own LoRA adapters and Kev action heads. Units choose actions using local observations, private memory, and received symbols. The frozen base model is Qwen3.5-0.8B-Base, pinned to revision dc7cdfe2ee4154fa7e30f5b51ca41bfa40174e68.

Weights and files

File Contents
adapters.safetensors LoRA adapters and action heads for all four factions: 1,504 tensors and 23,744,512 trainable parameters; approximately 95 MB
update-0008.pt Full resumable training checkpoint, including all four adapter banks, four optimizer states, RNG states, configuration, and base-model provenance; approximately 287 MB
latest.json / config.json Checkpoint metadata and experiment configuration
evaluation-0000.json / evaluation-0008.json Baseline and update-8 evaluations using the same world seed
metrics.jsonl Training records; any update left incomplete at the pause is not represented by committed weights
code/ Experiment source code, dependency lockfile, and configurations for this snapshot
export-verification.json / upload-manifest.json Tensor verification results, file sizes, and SHA-256 checksums

Base-model weights and the tokenizer are loaded from the pinned upstream revision. These adapters use the project's custom format and must be loaded with the included code. This is an environment action policy with no chat interface. Direct loading through PEFT's PeftModel.from_pretrained is not supported.

Loading

The original runtime used Linux, Python 3.13, PyTorch 2.9.0 with CUDA 13, and four NVIDIA H100 80 GB GPUs. The checkpoint uses a four-GPU topology. Dependencies are pinned in code/uv.lock; code/README.md describes the CUDA kernel setup.

After downloading this repository, run the following from its root directory:

cd code
uv sync --extra hopper
export TRIBES_DISABLE_CUDNN_SDPA=1
uv run babel-tribes evaluate \
  --checkpoint ../update-0008.pt \
  --out ../evaluation-reproduced.json \
  --episodes 1 --seed 1000000000

To load only the Safetensors weights, run this Python code from code/ in the environment above:

from pathlib import Path
from safetensors.torch import load_file
from demo.tribes.config import Config
from demo.tribes.policy import build_policy

root = Path("..").resolve()
config = Config.load(root / "config.json")
policy = build_policy(config.model)
policy.load_adapter_state_dict(load_file(str(root / "adapters.safetensors")))
policy.eval()

To resume training, explicitly run the following from code/:

uv run babel-tribes train \
  --resume ../update-0008.pt \
  --out ../resumed-run --updates 1000

Publishing this snapshot did not resume training.

Experiment scope and limitations

The 9ร—9 experiment was initialized from the first update of an earlier 32ร—32 experiment, with optimizer states and update counters reset. See warm-start.json for provenance. This snapshot contains eight completed updates in the new environment. The four factions assign weights of 0.1, 0.3, 0.7, and 0.9 to individual returns, respectively; the remaining weight is assigned to faction returns.

Evaluation covers only one world with a fixed seed. It does not establish generalization, stable cooperation, or the emergence of language. Raw evaluation files include survival metrics, action counts, and resource changes for inspection. Before publication, all adapter tensors were checked for finite values, and the Safetensors export was verified to match the original checkpoint tensor by tensor.

The upstream base model and bundled third-party code retain their respective licenses and attribution notices.

Downloads last month
15
Video Preview
loading

Model tree for QRTN/babel-tribes-9x9-memory-20260927

Adapter
(63)
this model