Lingtai: What Concept Geometry Reveals--and Does Not Reveal--About LLM Inference
Organizations: Chengdu Beiluoshimen Technology Co., Ltd.
Abstract
Observing what a large language model computes during autoregressive inference--online and without training probes--remains difficult. We introduce Lingtai, a training-free concept telemetry layer: at each generation step, residual states are projected onto a domain-specific bank of named concept anchors, constructed without labeled concept examples, outcome labels, gradient fitting, or activation-space optimization, producing a structured per-step concept-coordinate signal. Across code generation and grade-school mathematical reasoning, this signal exhibits a robust association with predictive uncertainty: the association survives problem-identity and token-position controls and is not attributable to a single token type, is not explained by a simple correct/incorrect mixture on GSM8K, and is not reproduced by matched random anchors; it is markedly weaker or direction-inconsistent in K-means and PCA projections. Two structures emerge: a recurring uncertainty-linked activity signal whose functional geometry is task-conditioned (distinct activity-entropy shapes on HumanEval, MBPP, and GSM8K), and an execution-specific trajectory identity with strong local inertia but weak re-instantiation invariance--under completion-only elastic alignment, corruption at k=32 (approximately a median quarter of the completion) on the matched re-execution subset still retrieves the archived episode at 62.0%, while a fresh execution retrieves it only 11.7-16.0% of the time. Finally, a matched audit finds no evidence that the scalar concept-activity signal used here supplies a stable correctness coordinate under the tested protocol; we therefore treat correctness as externally supplied. Telemetry adds 0.7-1.6% per-token decode overhead for the 161-anchor code implementation, with unchanged generated tokens.
Figures & tables
| Representation | Dim | Training | Named coordinates | Token | AUROC | Mean problem [CI] |
|---|---|---|---|---|---|---|
| Concept telemetry (ours) | 161 | none | yes | 0.297 | 0.722 | 0.284 [0.238, 0.329] |
| Raw hidden | 3584 | none | no | 0.384 | 0.736 | 0.387 [0.356, 0.417] |
| K-means | 161 | unsup. | no | 0.102 | 0.630 | 0.140 [0.085, 0.192] |
| PCA top-10 | 10 | unsup. | no | 0.551 | 0.026 [ , 0.073] | |
| PCA top-20 | 20 | unsup. | no | 0.573 | 0.078 [0.031, 0.122] | |
| PCA top-161 | 161 | unsup. | no | 0.033 | 0.570 | 0.118 [0.071, 0.164] |
Appendix figures & tables6 assets
Supplementary material from the paper’s appendix.
Appendix
| Benchmark | Model (precision), layer | Trajectory source | |
|---|---|---|---|
| HumanEval, MBPP | Qwen2.5-Coder-7B-Instruct (NF4), L23 | 50 each | recorded greedy completion |
| HumanEval | Qwen2.5-Coder-14B (INT8), L40 | 50 | recorded greedy completion |
| GSM8K | Phi-2 (FP16), L28 | 50 | stored own completion (replay) |
| MBPP fingerprints | OpenCoder-1.5B-Base (FP16), L10 | 402; 94 2; 30 2 | Panel A teacher-forced; B re-sampled |
| Matched audit | OpenCoder-1.5B-Base (FP16), L23 | 163 | recorded + re-generation check |
| Setting | Problems with positive paired | Token |
|---|---|---|
| HumanEval / Qwen2.5-Coder-7B-Instruct | 47/50 | 0.297 |
| MBPP / Qwen2.5-Coder-7B-Instruct | 47/50 | 0.236 |
| HumanEval / Qwen2.5-Coder-14B | 40/50 | 0.235 |
| GSM8K / Phi-2 | 50/50 | 0.443 |
| Token | Mean problem | Mean | |
|---|---|---|---|
| 0.25 | 0.295 | 0.282 | 0.874 |
| 0.5 | 0.297 | 0.283 | 0.867 |
| 1.0 | 0.297 | 0.284 | 0.865 |
| 2.0 | 0.297 | 0.284 | 0.855 |
| 4.0 | 0.296 | 0.284 | 0.844 |
| Layer | Token | Mean problem [CI] |
|---|---|---|
| 5 | [ , ] | |
| 13 | 0.115 | 0.131 [0.102, 0.160] |
| 20 | 0.262 | 0.249 [0.206, 0.286] |
| 23 | 0.297 | 0.284 [0.238, 0.328] |
| 26 | 0.306 | 0.307 [0.268, 0.347] |
| Concept | Deg. | Source snippet nearest anchors |
|---|---|---|
| typer app name | 100 | import typer; app = typer.Typer() order data list (0.69); import license module (0.68) |
| int float list | 78 | class FocalNetConfig(...) order data list (0.83); node none list (0.82) |
| parser args add_argument | 38 | parser = argparse.ArgumentParser() args parser add_argument (0.98) |
| license import lightning | 32 | # Copyright 2025 the HuggingFace Team torch import license (0.54) |
| tensor self torch | 32 | def _quantize_tensor(...) model self torch (0.94) |
| 00 hours minutes | 8 | “Josh has soccer practice on Monday…” hours hour minutes (0.83) |
| Learned probe | SAE | TCAV/CAV | Lingtai | |
|---|---|---|---|---|
| Outcome/property labels | usually yes | no | concept exemplars | no |
| Activation-space fitting | yes | yes | yes | no |
| Model/layer-specific learned representation | yes | yes | yes | anchors re-embedded |
| Named coordinates | property-specific | post-hoc | yes | by construction |
| Goal | prediction | sparse decomposition | attribution | runtime telemetry |