--- title: "LLM Scope" emoji: 🔭 short_description: "Explore the inners of your favorite LLMs" colorFrom: gray colorTo: blue sdk: docker license: mit tags: - deepseek - gemma - gpt-oss - kimi - llama - llm - mistral - nemotron - qwen - transformer - trinity - visualization --- # LLM Scope — Explore the inners of your favorite LLMs Explore the inners of your favorite LLMs. Visualize transformer architectures and parameter counts without downloading weights. **Space:** https://huggingface.co/spaces/omarkamali/llm-scope **Contact:** omarkamali.com · omneitylabs.com · hf:omarkamali · x.com/omarkamali · linkedin.com/in/omar-kamali --- ## About / Model Inspector A beautiful, interactive treemap visualizer for transformer model architectures. Enter a HuggingFace model ID or upload a config.json to see a proportional visualization of the model's structure - all without downloading weights. ## Features - **No Weights Required**: Calculates parameter counts mathematically from config dimensions only - **Interactive Treemap**: D3.js zoomable treemap with area proportional to parameter count - **Multiple Architectures**: Supports LLaMA, Mistral, Mixtral, GPT-2, BERT, T5, Falcon, Gemma, Qwen, and more - **Beautiful Dark Theme**: Modern, minimal UI designed for ML/AI workflows - **Drag & Drop Upload**: Upload your own config.json files for analysis ## Local Development ### Prerequisites - Python 3.9+ - Node.js (for serving frontend during development) ### Setup 1. Clone the repository: ```bash git clone https://huggingface.co/omarkamali/llm-scope.git cd model-inspector ``` 2. Install Python dependencies: ```bash cd backend pip install -r requirements.txt ``` 3. Run the server: ```bash uvicorn main:app --reload --port 7860 ``` 4. Open http://localhost:7860 in your browser ### Running with Docker ```bash docker build -t model-inspector . docker run -p 7860:7860 model-inspector ``` ## API Endpoints ### POST /api/inspect Inspect a model by HuggingFace model ID or config object. **Request Body:** ```json { "model_id": "qwen/qwen3-4b-instruct-2507" } ``` or ```json { "config": { /* config.json contents */ } } ``` **Response:** ```json { "tree": { "name": "Qwen Model", "type": "model", "params": 1234, "children": [...] }, "metadata": { "model_id": "qwen/qwen3-4b-instruct-2507", "model_type": "llama", "total_params": 1234, "formatted_params": "...", "config": {...} } } ``` ### POST /api/upload Upload a config.json file for inspection. **Request:** `multipart/form-data` with `file` field ### GET /api/health Health check endpoint. ## Parameter Calculation Parameters are calculated mathematically from config dimensions: | Component | Formula | |-----------|---------| | Embedding | vocab_size × hidden_size | | Attention Q/K/V | hidden_size × (num_heads × head_dim) | | Attention Output | (num_heads × head_dim) × hidden_size | | MLP Up | hidden_size × intermediate_size | | MLP Gate (SwiGLU) | hidden_size × intermediate_size | | MLP Down | intermediate_size × hidden_size | | LayerNorm | 2 × hidden_size (weight + bias) | | RMSNorm | hidden_size (weight only) | | LM Head | hidden_size × vocab_size (if not tied) | ## Tech Stack - **Backend**: FastAPI (Python) - **Frontend**: Vanilla JS + D3.js - **Deployment**: Docker-based HuggingFace Space ## License MIT