symbolic-ai-001

One agent architecture trained across a heterogeneous task distribution through a single symbolic interaction protocol:

observation symbols → agent → action symbols → environment → reward + next observation symbols

A 13.97M-parameter decoder-only transformer that sees only symbolic observations and emits only symbolic actions, trained through one interface on web-corpus next-token prediction, a real supervised dataset, symbolic worlds, a Gymnasium MiniGrid task, reasoning environments and structured tool calls.

Note on framing. This checkpoint is the neural member of the project. It exists as the baseline against which non-neural, genuinely symbolic learning algorithms (rule/operator induction, program synthesis, variable-order symbolic prediction) are measured in the same framework. See the design note in code/docs/.

Provenance

source repository symbolic-ai-001 (full snapshot included in code/)
source commit 3b46de309a53f5afc2c5018a1116096de95fbf31 (3b46de3)
adapter version 0.1.0
corpus HuggingFaceFW/fineweb-edu, config sample-10BT, revision 87f09149ef4734204d70ed1d046ddc9ca3f2b8f9, shard sample/10BT/000_00000.parquet
corpus split rule sha256("symbolic-ai-001|" + doc_id) < 0.01 → validation (40,000,362 train / 400,482 validation tokens)
dataset SetFit/sst2 (train for collection, validation for evaluation)
hardware 1× NVIDIA GB10, CUDA 13.0, torch 2.13.0+cu130 (shared with an unrelated job)
training wall-clock 16.0 min

Files

file what it is
model.pt the checkpoint (weights + GPTConfig + train config + full training record)
tokenizer.json byte-level BPE, 8,192 merges, trained on FineWeb-Edu text plus serialized symbolic structures
symbolic-ai-001.yaml the exact training mixture config
train_info.json per-source step counts, token counts, losses, held-out perplexity
matrix.json, matrix_sampled.json full evaluation matrices (greedy and stochastic decoding)
lm_protocol_check.json the protocol-equivalence measurement described below
code/ complete source snapshot at commit 3b46de3

Architecture

Decoder-only transformer — 6 layers, 6 heads, d_model 384, context 512, tied embeddings — 13.97M parameters (13.77M non-embedding). 8,000 steps, batch 24 × 512, AdamW, cosine schedule, bf16.

The agent inspects the environment's declared symbol spaces (never the task) and binds one of three internal encodings: stream (token-stream prediction), score (enumerable action space), generate (structured/open action space, free-decoded then parsed back into symbols).

Objective

One loss for every environment family — the weighted log-likelihood of the action segment of a symbolic step:

L(θ) = − Σᵢ wᵢ · log p_θ(aᵢ | oᵢ) / Σᵢ wᵢ·|aᵢ|

The update rule is a choice of w: w = 1 on a token stream is ordinary next-token pretraining; w = exp((G − b)/β) on episodes is advantage-weighted regression. Corpus and dataset components used w = 1; interactive components used advantage weighting with β = 0.5.

Protocol equivalence (measured)

Running language modelling through Environment.step — action = predictive distribution, reward = log p(x_{t+1}|x_{≤t}) — gives the same number as ordinary batched cross-entropy over the same held-out positions:

model positions Σ log p through the env loop Σ log p batched |Δ|
symbolic-ai-001 512 −2398.2746 −2398.2747 1.9·10⁻⁵
baseline-lm-only 512 −2324.7483 −2324.7480 2.3·10⁻⁴

Training mixture

component family weight steps data teacher
lm/fineweb-edu HF corpus 0.50 3961 40.0M tokens — (max-likelihood)
gridworld native 0.10 807 500 eps / 7392 steps best-first search
minigrid Gymnasium 0.08 650 800 eps / 8984 steps relational rule policy
logic native 0.08 632 1200 eps / 1564 steps forward-chaining rules
tool_call native 0.08 644 1200 eps / 2400 steps tool rule policy
arithmetic native 0.06 505 600 eps / 2066 steps best-first search
proof native 0.05 397 600 eps / 753 steps best-first search
hf/sst2 HF dataset 0.05 404 1500 rows label is the target

Evaluation (50 held-out episodes per cell, seeds ≥ 10 000, sampled policy)

environment native metric symbolic-ai-001 best specialist LM-only baseline random
gridworld success 0.40 0.44 0.00 0.02
MiniGrid-Empty-Random-5x5 success 0.70 0.70 0.28 0.40
logic solved 0.60 0.94 0.44 0.56
arithmetic exact 0.78 0.78 0.00 0.00
proof proved 1.00 1.00 0.40 1.00 †
tool_call solved 0.98 1.00 0.00 0.00
SST-2 (validation) accuracy 0.56 0.42 0.56 0.58 ‡
scene_qa (family held out of training) accuracy 0.18 0.10 0.02 0.16
FineWeb-Edu (held-out split) perplexity 89.1 51.9

† the proof environment is solved by the random policy, so that column carries no signal. ‡ every arm is at chance on SST-2 at this scale; the reward column (log p) is the honest one there: random −0.693, symbolic-ai-001 −0.683.

The companion baseline checkpoint is jacob-valdez/symbolic-ai-001-lm-baseline-3b46de3.

Known failure modes

  • Greedy deadlock. With arg-max decoding the policy can re-choose an illegal move forever in a deterministic environment with a Markov observation (gridworld 0.00 greedy → 0.40 sampled). Use temperature=1.0.
  • No cross-family transfer. On a family absent from the mixture it is indistinguishable from random.
  • Language-modelling cost. Step-matched training halves the corpus tokens seen; perplexity is 1.7× the LM-only baseline.
  • LM pretraining barely transfers to these symbolic tasks at this scale: scratch-initialized specialists nearly match LM-initialized ones.

Use

git clone https://huggingface.co/jacob-valdez/symbolic-ai-001-3b46de3
cd symbolic-ai-001-3b46de3/code && uv pip install -e .

symbolic-agent run --env tool_call --agent autoregressive \
  --agent-args checkpoint=../model.pt temperature=1.0 --show 4
#  [0] act=calc(expr="28 * 4")   r=+0.0800
#  [1] act=answer(text=112)      r=+0.9800  TERM

License

MIT (code and weights). Trained from random initialization; no pretrained weights were used.

Downloads last month

-

Downloads are not tracked for this model. How to track
Video Preview
loading

Datasets used to train jacob-valdez/symbolic-ai-001-3b46de3