CoolFace
Modelpublic

hikewa/eisv-lumen-teacher

sourceHugging Faceapache-2.0updated 7mo agoView on Hugging Face
0likes19downloads
Model Card

EISV-Lumen Teacher — LoRA on Qwen3-4B

A LoRA fine-tune of Qwen/Qwen3-4B that maps EISV trajectory shapes to primitive expression tokens. Given a sequence of EISV dimension values and a classified trajectory shape, the model generates a structured expression — a short sequence of emotion-like tokens that a downstream embodied system (Lumen, running on a Raspberry Pi 4) uses to drive LED color, screen drawing, and inner-voice narration.

This is the teacher model in a teacher-student pipeline. Its outputs are distilled into a lightweight RandomForest student that runs on-device.

Model Details

DetailValue
Base modelQwen/Qwen3-4B
MethodLoRA (Low-Rank Adaptation)
Rank (r)16
Alpha32
Dropout0.1
Target modulesqproj, kproj, vproj, oproj, gateproj, upproj, down_proj
Task typeCAUSAL_LM
Training examples2,880 (50% real + 50% synthetic)
Training steps1,260
Adapter size126 MB
PEFT version0.18.1
LicenseApache 2.0

What is EISV?

EISV is a four-dimensional state space computed from real sensor readings on a Raspberry Pi 4 (BrainCraft HAT with BME280, VEML7700, CPU telemetry):

DimensionNameWhat it capturesSource signals
EEnergyWarmth and capacityCPU temperature, ambient temperature, neural beta+gamma
IInformation IntegrityClarity and coherencePrediction accuracy, neural alpha, world light, sensor coverage
SEntropyUncertainty and disorderHumidity deviation, memory usage, missing sensors, pressure deviation
VVoidDisengagement and absenceInverse of memory, CPU, and disk availability

These are not simulated or synthetic dimensions — they are derived from physical sensors and computational telemetry on a real device, sampled every 30 seconds.

Trajectory Shapes

A trajectory is a time-window of EISV values. The shape classifier identifies 9 distinct patterns:

ShapeDescriptionReal-data frequency
settled_presenceStable, grounded state with low entropy and void47%
convergenceDimensions moving toward alignment41%
entropy_spike_recoverySharp entropy increase followed by return to baseline5%
basin_transition_upShift from lower to higher energy basin2%
basin_transition_downShift from higher to lower energy basin2%
rising_entropySustained increase in uncertainty1.5%
falling_energyGradual energy decline1.5%
void_risingIncreasing disengagement0.3%
drift_dissonanceConflicting dimensional movementssynthetic only

The distribution is heavily skewed toward settled_presence and convergence because a well-functioning Pi is usually stable. The training set uses 50/50 real+synthetic blending to ensure the model sees enough rare shapes.

Expression Vocabulary

The model generates structured expressions using 15 primitive tokens and 5 patterns.

Tokens (15)

~warmth~ ~curiosity~ ~resonance~ ~stillness~ ~boundary~ ~reaching~ ~reflection~ ~ripple~ ~deep_listening~ ~emergence~ ~questioning~ ~holding~ ~releasing~ ~threshold~ ~return~

Patterns (5)

PatternStructureExample
SINGLEOne token~stillness~
PAIRTwo tokens~warmth~ ~resonance~
TRIPLEThree tokens~curiosity~ ~reaching~ ~emergence~
REPETITIONRepeated token (intensity)~warmth~ ~warmth~ ~warmth~
QUESTIONToken with ? (uncertainty)~threshold~?

Evaluation Results

Evaluated on 500 real trajectories (no synthetic data in the test set):

MetricScore
Mean coherence0.952
Valid rate100%
Pattern accuracy25.8%

Coherence measures how well the generated expression fits the trajectory shape (semantic alignment between tokens and shape meaning). Valid rate measures whether outputs parse as legal expressions. Pattern accuracy measures exact match of the structural pattern — the relatively low score is expected since multiple patterns can be coherent for a given shape.

Per-Shape Coherence

ShapeCoherence
settled_presence0.993
convergence0.936
void_rising1.000
basintransitiondown1.000
basintransitionup1.000
rising_entropy1.000
falling_energy0.875
entropyspikerecovery0.833

Usage

python
from peft import PeftModel
from transformers import AutoModelForCausalLM, AutoTokenizer

# Load base model
base_model = AutoModelForCausalLM.from_pretrained(
    "Qwen/Qwen3-4B",
    torch_dtype="auto",
    device_map="auto",
)
tokenizer = AutoTokenizer.from_pretrained("Qwen/Qwen3-4B")

# Apply LoRA adapter
model = PeftModel.from_pretrained(base_model, "hikewa/eisv-lumen-teacher")

# Format input prompt
prompt = """You are an EISV expression generator. Given trajectory dynamics, produce a primitive expression.

Trajectory shape: settled_presence
EISV values: E=0.72, I=0.85, S=0.15, V=0.08
Dominant dimension: I (Information Integrity)
Trend: stable

Expression:"""

inputs = tokenizer(prompt, return_tensors="pt").to(model.device)
outputs = model.generate(
    **inputs,
    max_new_tokens=32,
    temperature=0.7,
    do_sample=True,
)
result = tokenizer.decode(outputs[0][inputs["input_ids"].shape[1]:], skip_special_tokens=True)
print(result)
# Example output: ~stillness~ ~resonance~

Related

Citation

bibtex
@misc{eisv-lumen-teacher-2026,
  title={EISV-Lumen Teacher: LoRA Fine-Tune for Trajectory-to-Expression Generation},
  author={hikewa},
  year={2026},
  url={https://huggingface.co/hikewa/eisv-lumen-teacher},
  note={LoRA adapter on Qwen/Qwen3-4B mapping EISV trajectory shapes to primitive expression tokens}
}