Views
No views yet
sentiance-fused)A small language model that thinks through a cognitive architecture's numeric state. ⚠️ Needs the Sentiance runtime to run — the adapter alone is just a Qwen2.5-0.5B fine-tune; the hybrid behaviour comes from feeding the live state vectorm_tthrough the trained state encoder. Author: Dr. Sanjay Anbu.
m_t into
soft-prefix tokens, so generation is causally conditioned on the numeric state — not
on state described in words.Honest stance (non-negotiable). This is a functional artifact.m_tis a vector of functional variables (a valence, a drive level, a bond strength) named for the roles they play in the architecture. Conditioning a transformer on them buys integration and end-to-end learnability — not phenomenal experience. No claim of consciousness or sentience is made or implied. See ADR 0002.
Qwen/Qwen2.5-0.5B-Instruct (Apache-2.0).m_t → n_prefix (default 16)
soft-prefix embeddings, trained jointly with the LoRA on the next-token loss.m_t encodes one tick of the cognitive cycle: valence/arousal/mood, a 14-way
emotion one-hot, four drives, the attention source, goal presence, and 13
per-faculty signals (frustration, longing, empathy, grief, curiosity, anticipation…).
See sentiance/mind/state_vector.py.m_t is
the model's only state channel. (This is essential — see Results.)Mind: SENTIANCE_COGNITION_BACKEND=fused.AutoModelForCausalLM — the adapter alone is just a Qwen
fine-tune. The fused behavior needs the Sentiance runtime to compute m_t each tick
and inject it through the state encoder:1pip install -e ".[finetune]" # from the Sentiance repo
2# place the model dir at models/sentiance-fused (adapter + state_encoder.pt + fused_config.json)
3SENTIANCE_COGNITION_BACKEND=fused python -m sentiance chatm_t actually steer it?scripts/eval_fused.py (deterministic ablation over a 12-state
battery spanning valence −0.80…+0.85; prompt held identical, only the vector
changed) on a 12-state battery spanning valence −0.80…+0.85. 234 blended training
examples.| conditioning | per-seed r(valence, ΔAffect) | mean ± std | strong (r≥0.5, p≤0.05) | mean KL(real‖zero) |
|---|---|---|---|---|
| prefix (soft tokens) | +0.82, +0.74, −0.46 | +0.37 ± 0.59 | 2/3 | 0.004 |
| FiLM (per-layer γ/β) | +0.83, −0.26, +0.63 | +0.40 ± 0.47 | 2/3 | 0.10 |
r ≈ 0: a shuffled m_t (structure destroyed), and the
state-in-prompt model (state left in the words, so the vector is redundant and
ignored). So the core claim holds as an ablation: state-as-vector conditions the
model; state-as-text does not.m_t deep (FiLM,
into every layer) makes its influence on the distribution ~25× larger (KL 0.10 vs
0.004) but does not improve seed-to-seed reliability — both are noisy at this data
scale. The bottleneck is data, not conditioning depth.scripts/eval_fused.py (single) or
scripts/robustness_fused.py (across seeds).r ≈ 0.4 across seeds with large std;
~1 seed in 3 does not learn the mapping. Not yet seed-robust — needs more data.society / live / chat),
deduplicated (incl. near-echo filtering), prepared state-blind. The full
pipeline (collect → prepare → train → eval) and the ablation control are documented
in the repo README and reproducible on a 6 GB laptop GPU.Qwen/Qwen2.5-0.5B-Instruct: Apache-2.0 — retain its notice; this
is a derivative. See the Qwen model card for details.@software{sentiance_fused,
title = {Sentiance: a functional cognitive architecture with a
cognition-conditioned language model (the fused mind)},
author = {Dr. Sanjay Anbu},
year = {2026},
url = {https://github.com/sanjaydoc/Sentiance}
}