--- title: TokenTrace emoji: πŸ”¬ colorFrom: blue colorTo: purple sdk: docker short_description: Trace how every token shapes an LLM's predictions tags: - nlp - text-analysis - llm-interpretability - visualization - mechanistic-interpretability app_port: 7860 pinned: false license: apache-2.0 --- # TokenTrace πŸ”¬ > *Trace how every token shapes an LLM's predictions.* **🌐 Live Demo**: [huggingface.co/spaces/Girlz/TokenTrace](https://huggingface.co/spaces/Girlz/TokenTrace) **TokenTrace** is an interactive toolbox for exploring **how and why LLMs predict what they do**. It visualizes token-level attributions, layer-by-layer information flow, semantic relevance, and generation branching β€” all through a beautiful web UI. --- ## ✨ Features ### 🎯 Prediction Attribution See which tokens in your input most influenced the model's next-token prediction. Uses gradient-based saliency (L2 norm of embedding gradients) to rank each token's contribution. ### πŸ”ͺ Ablation Attribution Measure the impact of each token by occluding it and observing the probability change (Ξ”P = baseline βˆ’ occluded). A counterfactual approach to understanding token importance. ### πŸ“Š Logit Lens Watch how the model's prediction "crystallizes" layer by layer. Each Transformer layer's hidden state is projected back to vocabulary space, revealing how information accumulates through the network depth. ### 🌳 Branch Tree Visualize the top-k candidate tokens at every step of generation. Explore alternative paths the model could have taken β€” a probability tree that reveals the model's uncertainty and decision landscape. ### πŸ“ Information Density Analysis Analyze which tokens carry the most "information content" using gradient-based methods. Distinguish high-information tokens (nouns, verbs) from low-information ones (stop words, punctuation). ### πŸ” Semantic Relevance Analysis Given a query, score every token in a text by its relevance to that query. Uses logits gradient with a fill-in-the-blank prompt strategy to extract fine-grained relevance scores. ### πŸ’¬ Chat & Generation OpenAI-compatible completions endpoint with SSE streaming. Supports chat templates, tool calling visualization, and multi-turn causal flow tracing. ### πŸ”„ Causal Flow Multi-turn generation with per-token attribution at every step. Trace the full causal chain from input to output across multiple rounds of tool calling and generation. --- ## πŸš€ Quick Start ### Run Locally with Docker ```bash # 1. Build the image docker build -t tokentrace . # 2. Run the container docker run -p 7860:7860 tokentrace # 3. Visit http://localhost:7860 ``` ### Local Development ```bash # Backend pip install -r requirements.txt python run.py --no_auto_load --base_model qwen3-0.6b --instruct_model qwen3-0.6b-instruct # Frontend (separate terminal) cd client/src && npm install && npm run build ``` --- ## 🧠 How It Works ```mermaid flowchart LR U[User Input] --> A[TokenTrace Backend] A --> M1[Base Model Slot
Qwen3-0.6B-Base] A --> M2[Instruct Model Slot
Qwen3-0.6B] M1 -->|forward + backward| G[Gradient Attribution] M1 -->|forward pass| L[Logit Lens] M1 -->|forward + occlusion| AB[Ablation Attribution] M1 -->|forward + softmax| BT[Branch Tree] M2 -->|chat template + generate| C[Chat / Completion] M2 -->|gradient + prompt| S[Semantic Analysis] G --> V[JSON Result β†’ Frontend Visualization] L --> V AB --> V BT --> V C --> V S --> V ``` The backend runs two model slots in PyTorch: - **Base slot**: For analysis tasks (attribution, logit lens, branching) β€” Qwen3-0.6B-Base - **Instruct slot**: For chat and semantic analysis β€” Qwen3-0.6B All analysis is done locally on CPU (free tier) or GPU (if available), with gradient checkpointing to minimize memory usage. --- ## πŸ—ΊοΈ Feature Map | Page | Path | Purpose | Requires | |------|------|---------|----------| | Home | `/` | Overview & navigation | Static | | Analysis | `/client/analysis.html` | Information density & semantic analysis | Base slot | | Attribution | `/client/attribution.html` | Prediction & ablation attribution | Base slot | | Chat | `/client/chat.html` | Chat completion with tool calling | Instruct slot | | Logit Lens | `/client/logit_lens.html` | Layer-by-layer prediction projection | Base slot | | Branch Tree | `/client/branch_tree.html` | Next-token probability tree | Base slot | | Causal Flow | `/client/causal_flow.html` | Multi-turn generation + attribution | Both slots | --- ## βš™οΈ Configuration Key environment variables: | Variable | Purpose | |----------|---------| | `FORCE_INT8=1` | Enable INT8 quantization (CPU, saves ~50% memory) | | `FORCE_CPU=1` | Force CPU mode | | `HF_HUB_ENABLE_HF_TRANSFER=1` | Accelerate model downloads | | `INFORADAR_ADMIN_TOKEN` | Admin token for model switching & demo management | --- ## πŸ“œ License [Apache 2.0](LICENSE). Copyright and attribution notices remain in [NOTICE](NOTICE). --- ## πŸ™ Fork Attribution This project is forked from [InfoLens](https://huggingface.co/spaces/dqy08/InfoLens) by [dqy08](https://huggingface.co/dqy08), with enhancements and adaptations for the Hugging Face Spaces free tier.