Spaces:
Runtime error
Runtime error
| # Neural MRI Scanner โ Implementation Specification | |
| ## Model Resonance Imaging for AI Interpretability | |
| **Project Codename:** NeuralMRI | |
| **Full Name:** Neural MRI โ Model Resonance Imaging | |
| **Version:** 0.1 (MVP) | |
| **Date:** 2026-02-24 | |
| **Author:** JJ (Asia2G Capital / ModuLabs) | |
| --- | |
| ## 1. Executive Summary | |
| Neural MRI Scanner๋ ์คํ์์ค LLM ๋ด๋ถ๋ฅผ ๋ MRI์ฒ๋ผ ์๊ฐํํ๊ณ , ์ค์๊ฐ์ผ๋ก ์๊ทน(perturbation)์ ๊ฐํด ๋ณํ๋ฅผ ๊ด์ฐฐํ ์ ์๋ AI ๋ชจ๋ธ ํด์ ๋๊ตฌ(interpretability tool)๋ค. MRI๋ **Model Resonance Imaging**์ ์ฝ์๋ก, ์๋ฃ MRI(Magnetic Resonance Imaging)๊ฐ ๋์ ๋ด๋ถ๋ฅผ ๋ค์ฌ๋ค๋ณด๋ฏ AI ๋ชจ๋ธ ๋ด๋ถ์์ ํน์ ์ ๋ ฅ์ "๊ณต๋ช (resonate)"ํ๋ ๋ด๋ฐ๊ณผ ํ๋ก๋ฅผ ์ฐพ์ ์์ํํ๋ค๋ ์๋ฏธ๋ฅผ ๋ด๊ณ ์๋ค. | |
| **ํต์ฌ ์์ด๋์ด:** ์๋ฃ ์์(T1, T2, fMRI, DTI, FLAIR)์ ๋ฉํฐ๋ชจ๋ฌ ์ค์บ ํจ๋ฌ๋ค์์ ๊ทธ๋๋ก AI ๋ชจ๋ธ ๋ด๋ถ ๋ถ์์ ๋งคํํ๋ค. ์ฐ๊ตฌ์๋ฟ ์๋๋ผ ์์ง๋์ด, ์์ฌ๊ฒฐ์ ์๋ "์ด ๋ชจ๋ธ ๋ด๋ถ์์ ๋ฌด์จ ์ผ์ด ์ผ์ด๋๋์ง" ์ง๊ด์ ์ผ๋ก ํ์ ํ ์ ์๊ฒ ํ๋ค. | |
| **๋์ ์ฌ์ฉ์:** | |
| - AI ์์ง๋์ด (๋ชจ๋ธ ๋๋ฒ๊น , ํ์ธํ๋ ๋ฌธ์ ์ง๋จ) | |
| - ์ฐ๊ตฌ์ (mechanistic interpretability ์ฐ๊ตฌ ๋ณด์กฐ) | |
| - ๊ธฐ์ ๋ฆฌ๋/์์ฌ๊ฒฐ์ ์ (๋ชจ๋ธ ํ๋์ ๋ํ ์ง๊ด ํ๋ณด) | |
| --- | |
| ## 2. MRI Modality โ AI Interpretability ๋งคํ | |
| ์ด ํ๋ก์ ํธ์ ํต์ฌ ํ๋ ์์ํฌ. ๊ฐ ์๋ฃ ์์ ๊ธฐ๋ฒ์ด AI ๋ชจ๋ธ์ ์ด๋ค ์ธก๋ฉด์ ๋ณด์ฌ์ฃผ๋์ง ์ ์ํ๋ค. ์๋ฃ MRI์ ์ฉ์ด ์ฒด๊ณ๋ฅผ AI ๋งฅ๋ฝ์ผ๋ก ์์ ํ ์ฌ์ ์ํ์ฌ ํ๋ก์ ํธ ๊ณ ์ ์ ์ฉ์ด ์ธ๊ณ๊ด์ ๊ตฌ์ถํ๋ค. | |
| ### Terminology Map | |
| | ์๋ฃ ์๋ณธ | Neural MRI ์ฌ์ ์ | ํ๋ค์ | ์๋ฏธ | | |
| |-----------|-------------------|--------|------| | |
| | MRI (Magnetic Resonance Imaging) | **MRI** | **Model Resonance Imaging** | AI ๋ชจ๋ธ ๋ด๋ถ ๊ณต๋ช ์์ | | |
| | T1-weighted | **T1** | **Topology Layer 1** | 1์ฐจ ๊ตฌ์กฐ โ ์ ์ ์ํคํ ์ฒ ํ ํด๋ก์ง | | |
| | T2-weighted | **T2** | **Tensor Layer 2** | 2์ฐจ ๊ตฌ์กฐ โ ํ ์(๊ฐ์ค์น) ๋ถํฌ | | |
| | fMRI (functional Magnetic Resonance Imaging) | **fMRI** | **functional Model Resonance Imaging** | ๊ธฐ๋ฅ์ ํ์ฑํ ์์ | | |
| | DTI (Diffusion Tensor Imaging) | **DTI** | **Data Tractography Imaging** | ๋ฐ์ดํฐ ํ๋ฆ ๊ฒฝ๋ก ์ถ์ | | |
| | FLAIR (Fluid-Attenuated Inversion Recovery) | **FLAIR** | **Feature-Level Anomaly Identification & Reporting** | ํผ์ฒ ์์ค ์ด์ ํ์ง ๋ฐ ๋ณด๊ณ | | |
| ### 2.1 T1 โ Topology Layer 1 (Model Architecture) | |
| | ํญ๋ชฉ | ์ค๋ช | | |
| |------|------| | |
| | **์๋ฃ ์๋ณธ** | T1-weighted MRI: ์กฐ์ง์ ํด๋ถํ์ ๊ตฌ์กฐ๋ฅผ ๋ณด์ฌ์ค | | |
| | **AI ๋งคํ** | ๋ชจ๋ธ์ ์ ์ ๊ตฌ์กฐ โ ๋ ์ด์ด ์, ๊ฐ ๋ ์ด์ด์ ๋ด๋ฐ/head ์, ํ๋ผ๋ฏธํฐ ์นด์ดํธ | | |
| | **์๊ฐํ** | ๊ฐ ๋ ์ด์ด๋ฅผ ๋ ธ๋ ํด๋ฌ์คํฐ๋ก, ํฌ๊ธฐ๋ ํ๋ผ๋ฏธํฐ ์์ ๋น๋ก. ๊ทธ๋ ์ด์ค์ผ์ผ ํค | | |
| | **๋ฐ์ดํฐ ์์ค** | `model.config` ์์ ์ง์ ์ถ์ถ (์ ์ ) | | |
| | **์ธํฐ๋์ ** | ํธ๋ฒ ์ ๋ ์ด์ด ์์ธ ์ ๋ณด ํ์ (hidden_size, num_heads, intermediate_size ๋ฑ) | | |
| ### 2.2 T2 โ Tensor Layer 2 (Weight Distribution) | |
| | ํญ๋ชฉ | ์ค๋ช | | |
| |------|------| | |
| | **์๋ฃ ์๋ณธ** | T2-weighted MRI: T1๊ณผ ๋ค๋ฅธ ํ์ด๋ฐ์ผ๋ก ๋ค๋ฅธ ์กฐ์ง ๋์กฐ๋ฅผ ๋ณด์ฌ์ค | | |
| | **AI ๋งคํ** | ๊ฐ์ค์น(weight)์ ๋ถํฌ, magnitude, ํต๊ณ์ ํน์ฑ | | |
| | **์๊ฐํ** | ๊ฐ ๋ด๋ฐ/head์ weight magnitude๋ฅผ ๋ธ๋ฃจ ์ค์ผ์ผ ํํธ๋งต์ผ๋ก ํํ. ๋ฐ์์๋ก ํฐ ๊ฐ์ค์น | | |
| | **๋ฐ์ดํฐ ์์ค** | `model.state_dict()`์์ ๊ฐ ๋ ์ด์ด์ weight tensor โ ํต๊ณ (mean, std, max, L2 norm) | | |
| | **์ธํฐ๋์ ** | ๋ ์ด์ด๋ณ/head๋ณ weight ํ์คํ ๊ทธ๋จ ํ์. ์ด์์น(outlier) ๊ฐ์ค์น ํ์ด๋ผ์ดํธ | | |
| ### 2.3 fMRI โ functional Model Resonance Imaging (Activation Patterns) | |
| | ํญ๋ชฉ | ์ค๋ช | | |
| |------|------| | |
| | **์๋ฃ ์๋ณธ** | fMRI: ํ๋ฅ ๋ณํ๋ก ๋์ ํ์ฑํ ์์ญ์ ์ค์๊ฐ์ผ๋ก ๋ณด์ฌ์ค | | |
| | **AI ๋งคํ** | ํน์ ์ ๋ ฅ(prompt)์ ๋ํ ๊ฐ ๋ ์ด์ด/๋ด๋ฐ์ ํ์ฑํ(activation) ํจํด | | |
| | **์๊ฐํ** | Cool-to-Hot ์ปฌ๋ฌ๋งต (ํ๋โ๋ ธ๋โ๋นจ๊ฐ). ํ์ฑํ๊ฐ ๋์ ๋ด๋ฐ์ด "๋จ๊ฒ๊ฒ" ํ์. ์ค์๊ฐ ํ์ค ์ ๋๋ฉ์ด์ | | |
| | **๋ฐ์ดํฐ ์์ค** | TransformerLens์ `run_with_cache()` โ ๊ฐ ๋ ์ด์ด๋ณ activation tensor | | |
| | **์ธํฐ๋์ ** | ํ๋กฌํํธ๋ฅผ ๋ฐ๊พธ๋ฉด activation์ด ์ค์๊ฐ์ผ๋ก ๋ณํ. ํ ํฐ๋ณ step-through ๊ฐ๋ฅ | | |
| | **ํต์ฌ ๊ธฐ์ ** | `hook_resid_post`, `hook_attn_out`, `hook_mlp_out` ์์ ์บ์ฑ | | |
| ### 2.4 DTI โ Data Tractography Imaging (Circuit Tracing) | |
| | ํญ๋ชฉ | ์ค๋ช | | |
| |------|------| | |
| | **์๋ฃ ์๋ณธ** | DTI: ๋ฐฑ์ง์ ์ ๊ฒฝ์ฌ์ ํธ๋์ ์ถ์ ํ์ฌ ๋ ์์ญ ๊ฐ ์ฐ๊ฒฐ์ ๋ณด์ฌ์ค | | |
| | **AI ๋งคํ** | ์ ๋ณด๊ฐ ์ด๋ค ๊ฒฝ๋ก(attention head โ MLP โ ๋ค์ ๋ ์ด์ด)๋ก ํ๋ฅด๋์ง ์ถ์ | | |
| | **์๊ฐํ** | ๋ฐฉํฅ๋ณ ์์ ์ธ์ฝ๋ฉ(directional color encoding). ์ ์๋ฏธํ ์ ๋ณด ํ๋ฆ ๊ฒฝ๋ก๋ง ๊ตต์ ๊ณก์ ์ผ๋ก ํ์. ํ๋ฆ ๋ฐฉํฅ ์ ๋๋ฉ์ด์ | | |
| | **๋ฐ์ดํฐ ์์ค** | (1) Attention pattern: ๊ฐ head์ attention matrix. (2) Attribution patching: ๊ฐ ์ปดํฌ๋ํธ์ ์ถ๋ ฅ ๊ธฐ์ฌ๋ | | |
| | **์ธํฐ๋์ ** | ํน์ ์ถ๋ ฅ ํ ํฐ ์ ํ ์ ํด๋น ํ ํฐ์ ๊ฐ์ฅ ๊ธฐ์ฌํ ๊ฒฝ๋ก๊ฐ ํ์ด๋ผ์ดํธ๋จ | | |
| | **ํต์ฌ ๊ธฐ์ ** | TransformerLens์ activation patching, attention pattern ์ถ์ถ | | |
| ### 2.5 FLAIR โ Feature-Level Anomaly Identification & Reporting (Bias & Hallucination Detection) | |
| | ํญ๋ชฉ | ์ค๋ช | | |
| |------|------| | |
| | **์๋ฃ ์๋ณธ** | FLAIR: ๋ณ๋ณ(lesion)์ ๊ฐ์กฐํ์ฌ ์ด์ ๋ถ์๋ฅผ ๋ช ํํ๊ฒ ๋ณด์ฌ์ค | | |
| | **AI ๋งคํ** | ๋ชจ๋ธ์ "๋ฌธ์ ์ง์ " โ ํ ๋ฃจ์๋ค์ด์ , ํธํฅ, ๋ถํ์ค์ฑ์ด ๋์ ์์ญ | | |
| | **์๊ฐํ** | ์ ์ ์์ญ์ ์ด๋ก๊ฒ, ์ด์ ์์ญ์ ๋นจ๊ฐ์/ํํฌ์์ผ๋ก ํ์ค. ์ด์ ์ ์์ ๋ฐ๋ฅธ ๊ฐ๋ | | |
| | **๋ฐ์ดํฐ ์์ค** | (1) Logit lens: ์ค๊ฐ ๋ ์ด์ด์ ์์ธก์ด ์ต์ข ์์ธก๊ณผ ์ผ๋ง๋ ๋ค๋ฅธ์ง. (2) Entropy: ๊ฐ ์์น์ ๋ค์ ํ ํฐ ์์ธก ๋ถํ์ค์ฑ. (3) SAE feature ์ค ์๋ ค์ง ํธํฅ/ํ ๋ฃจ์๋ค์ด์ ๊ด๋ จ feature์ ํ์ฑํ | | |
| | **์ธํฐ๋์ ** | ์ด์ ๋ ธ๋ ํด๋ฆญ ์ ํด๋น ๋ด๋ฐ/feature์ ์์ธ ์ ๋ณด, ๊ด๋ จ ํ์ต ๋ฐ์ดํฐ ํจํด ์ถ์ | | |
| --- | |
| ## 3. System Architecture | |
| ``` | |
| โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ | |
| โ Frontend (React) โ | |
| โ โโโโโโโโโโโโโ โโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโ โ | |
| โ โ MRI Canvas โ โ Mode Tabs โ โ Control Panels โ โ | |
| โ โ (D3 / SVG) โ โ T1~FLAIR โ โ Stim, Perturb, โ โ | |
| โ โ โ โ โ โ Layer Summary โ โ | |
| โ โโโโโโโฌโโโโโโ โโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโ โ | |
| โ โ WebSocket (real-time activation stream) โ | |
| โโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค | |
| โ โผ Backend (FastAPI + Python) โ | |
| โ โโโโโโโโโโโโโ โโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโ โ | |
| โ โ Model โ โ Analysis โ โ Perturbation โ โ | |
| โ โ Manager โ โ Engine โ โ Engine โ โ | |
| โ โ (load/ โ โ (Trans- โ โ (activation โ โ | |
| โ โ swap) โ โ formerLensโ โ patching, etc.) โ โ | |
| โ โโโโโโโโโโโโโ โโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโ โ | |
| โ โ โ | |
| โ โโโโโโโผโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ | |
| โ โ Model Registry (HuggingFace Hub cache) โ โ | |
| โ โ Llama-3.2-3B, Qwen-2.5-3B, Gemma-2-2B, etc. โ โ | |
| โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ | |
| โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ | |
| ``` | |
| ### 3.1 Frontend | |
| | ํญ๋ชฉ | ๊ธฐ์ | | |
| |------|------| | |
| | **Framework** | React 18+ (Vite) | | |
| | **์๊ฐํ ์์ง** | D3.js (SVG ๊ธฐ๋ฐ) โ ๋ด๋ฐ/์ฐ๊ฒฐ ๋ ๋๋ง | | |
| | **์ค์๊ฐ ํต์ ** | WebSocket (activation ์คํธ๋ฆฌ๋ฐ) | | |
| | **์ํ ๊ด๋ฆฌ** | Zustand (๊ฒฝ๋) | | |
| | **์คํ์ผ** | Tailwind CSS + CSS Variables (DICOM ํ ๋ง) | | |
| | **์ ๋๋ฉ์ด์ ** | requestAnimationFrame (์บ๋ฒ์ค ํ์ค), CSS transitions (UI) | | |
| ### 3.2 Backend | |
| | ํญ๋ชฉ | ๊ธฐ์ | | |
| |------|------| | |
| | **์๋ฒ** | FastAPI (Python 3.11+) | | |
| | **๋ชจ๋ธ ์ธํธ๋ก์คํ์ ** | TransformerLens (`HookedTransformer`) | | |
| | **SAE ๋ถ์** | SAELens (์ ํ์ฌํญ, Phase 2) | | |
| | **ํ ์ ์ฐ์ฐ** | PyTorch 2.x | | |
| | **๋ชจ๋ธ ๋ก๋ฉ** | HuggingFace `transformers` + `accelerate` | | |
| | **WebSocket** | `fastapi[websockets]` | | |
| | **์๋ฆฌ์ผ๋ผ์ด์ฆ** | `orjson` (๋์ฉ๋ ํ ์ ๋ฐ์ดํฐ ์ง๋ ฌํ) | | |
| ### 3.3 ์ง์ ๋ชจ๋ธ (MVP) | |
| | ๋ชจ๋ธ | ํ๋ผ๋ฏธํฐ | TransformerLens ์ง์ | ์ฐ์ ์์ | | |
| |------|---------|---------------------|---------| | |
| | GPT-2 small (124M) | 124M | โ ๊ณต์ ์ง์ | P0 (๊ฐ๋ฐ/ํ ์คํธ์ฉ) | | |
| | GPT-2 medium (355M) | 355M | โ ๊ณต์ ์ง์ | P0 | | |
| | Pythia-1.4B | 1.4B | โ ๊ณต์ ์ง์ | P0 | | |
| | Gemma-2-2B | 2B | โ ์ง์ | P1 | | |
| | Llama-3.2-3B | 3.21B | โ ๏ธ ์ปค๋ฎค๋ํฐ ์ง์ | P1 | | |
| | Qwen-2.5-3B | 3B | โ ๏ธ ์ปค๋ฎค๋ํฐ/์ปค์คํ | P1 | | |
| | Mistral-7B-v0.3 | 7.24B | โ ๏ธ ์ปค๋ฎค๋ํฐ ์ง์ | P2 (GPU ํ์) | | |
| | Phi-3-mini-3.8B | 3.8B | โ ๏ธ ์ปค์คํ ํ์ | P2 | | |
| > **์ฐธ๊ณ :** TransformerLens๋ GPT-2, Pythia ๊ณ์ด์ด ๊ฐ์ฅ ์์ ์ . Llama/Qwen ๋ฑ์ `HookedTransformer.from_pretrained()` ํธํ์ฑ ํ์ธ ํ์. ๋ฏธ์ง์ ๋ชจ๋ธ์ nnsight๋ก ๋์ฒด ๊ฐ๋ฅ. | |
| --- | |
| ## 4. API Design | |
| ### 4.1 REST Endpoints | |
| ``` | |
| POST /api/model/load ๋ชจ๋ธ ๋ก๋ (HuggingFace ID ๋๋ ๋ก์ปฌ ๊ฒฝ๋ก) | |
| GET /api/model/info ํ์ฌ ๋ก๋๋ ๋ชจ๋ธ์ ๊ตฌ์กฐ ์ ๋ณด (T1 ๋ฐ์ดํฐ) | |
| DELETE /api/model/unload ๋ชจ๋ธ ์ธ๋ก๋ (๋ฉ๋ชจ๋ฆฌ ํด์ ) | |
| POST /api/scan/structural T1 ์ค์บ: ์ ์ ๊ตฌ์กฐ ๋ฐ์ดํฐ ๋ฐํ | |
| POST /api/scan/weights T2 ์ค์บ: weight ํต๊ณ ๋ฐํ | |
| POST /api/scan/activation fMRI ์ค์บ: ํ๋กฌํํธ ๊ธฐ๋ฐ activation ๋ฐํ | |
| POST /api/scan/circuits DTI ์ค์บ: attention + attribution ๊ฒฝ๋ก ๋ฐํ | |
| POST /api/scan/anomaly FLAIR ์ค์บ: ์ด์ ํ์ง ๊ฒฐ๊ณผ ๋ฐํ | |
| POST /api/perturb/zero ํน์ ์ปดํฌ๋ํธ zero-out | |
| POST /api/perturb/amplify ํน์ ์ปดํฌ๋ํธ amplify (factor) | |
| POST /api/perturb/ablate ํน์ ์ปดํฌ๋ํธ ablate (์ ๊ฑฐ) | |
| POST /api/perturb/inject ํน์ ์์น์ activation ์ฃผ์ | |
| POST /api/perturb/patch activation patching (causal tracing) | |
| POST /api/perturb/reset perturbation ์ด๊ธฐํ (์๋ณธ ๋ณต์) | |
| GET /api/features/list SAE feature ๋ชฉ๋ก (Phase 2) | |
| POST /api/features/activate ํน์ SAE feature ํ์ฑํ/๋นํ์ฑํ (Phase 2) | |
| ``` | |
| ### 4.2 WebSocket Endpoint | |
| ``` | |
| WS /ws/stream | |
| ํด๋ผ์ด์ธํธ โ ์๋ฒ: | |
| { | |
| "type": "scan_stream", | |
| "mode": "fMRI", | |
| "prompt": "The capital of France is", | |
| "token_step": true // true๋ฉด ํ ํฐ๋ณ๋ก ์คํธ๋ฆฌ๋ฐ | |
| } | |
| ์๋ฒ โ ํด๋ผ์ด์ธํธ: | |
| { | |
| "type": "activation_frame", | |
| "token_idx": 3, | |
| "token": "capital", | |
| "layers": [ | |
| { | |
| "layer_id": "blocks.0.attn", | |
| "type": "attention", | |
| "activations": [0.12, 0.87, ...], // ์์ฝ๋ per-head ๊ฐ | |
| "attention_pattern": [[...], ...] // DTI ๋ชจ๋ ์ ํฌํจ | |
| }, | |
| ... | |
| ] | |
| } | |
| ``` | |
| ### 4.3 ์์ฒญ/์๋ต ์คํค๋ง ์์ | |
| #### POST /api/scan/activation | |
| **Request:** | |
| ```json | |
| { | |
| "prompt": "The Eiffel Tower is located in", | |
| "layers": "all", // ๋๋ ["blocks.3.mlp", "blocks.4.attn"] | |
| "aggregation": "l2_norm", // "l2_norm" | "max" | "mean" | "raw" | |
| "include_residual": true, | |
| "token_positions": "all" // ๋๋ [0, 1, 5] (ํน์ ํ ํฐ ์์น) | |
| } | |
| ``` | |
| **Response:** | |
| ```json | |
| { | |
| "model": "gpt2-small", | |
| "prompt_tokens": ["The", " Eiff", "el", " Tower", " is", " located", " in"], | |
| "scan_mode": "fMRI", | |
| "data": { | |
| "embed": { | |
| "type": "embedding", | |
| "shape": [7, 768], | |
| "activations_summary": [0.45, 0.52, 0.48, 0.61, 0.33, 0.55, 0.41] | |
| }, | |
| "blocks.0.attn": { | |
| "type": "attention", | |
| "num_heads": 12, | |
| "per_head_activation": [0.12, 0.87, 0.34, ...], | |
| "attention_patterns": { | |
| "shape": [12, 7, 7], | |
| "data_url": "/api/tensor/attn_0_patterns" | |
| } | |
| }, | |
| "blocks.0.mlp": { | |
| "type": "mlp", | |
| "activation_summary": [0.22, 0.91, 0.45, ...], | |
| "top_neurons": [ | |
| {"idx": 1247, "activation": 3.82, "label": null}, | |
| {"idx": 892, "activation": 2.91, "label": null} | |
| ] | |
| } | |
| }, | |
| "metadata": { | |
| "compute_time_ms": 342, | |
| "gpu_memory_mb": 1240 | |
| } | |
| } | |
| ``` | |
| #### POST /api/perturb/patch | |
| **Request:** | |
| ```json | |
| { | |
| "prompt": "The Eiffel Tower is located in", | |
| "target_token_idx": -1, | |
| "target_component": "blocks.5.mlp", | |
| "method": "zero", | |
| "compare_logits": true | |
| } | |
| ``` | |
| **Response:** | |
| ```json | |
| { | |
| "original_prediction": { | |
| "token": " Paris", | |
| "logit": 12.34, | |
| "prob": 0.87 | |
| }, | |
| "perturbed_prediction": { | |
| "token": " the", | |
| "logit": 8.12, | |
| "prob": 0.23 | |
| }, | |
| "logit_diff": -4.22, | |
| "affected_components": [ | |
| {"id": "blocks.5.mlp", "impact_score": 0.92}, | |
| {"id": "blocks.6.attn.head_3", "impact_score": 0.45} | |
| ] | |
| } | |
| ``` | |
| --- | |
| ## 5. Frontend Specification | |
| ### 5.1 ์ ์ฒด ๋ ์ด์์ | |
| ``` | |
| โโ Top Bar โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ | |
| โ [โ] NEURAL MRI โ Model Resonance Imaging โ Model: [Dropdown โพ] โ GPU: 2.1GB/8GB โ | |
| โโ Mode Tabs โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค | |
| โ [ T1 Topology ] [ T2 Tensor ] [ fMRI ] โ | |
| โ [ DTI ] [ FLAIR ] โ | |
| โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค | |
| โ โ Layer Summary โ | |
| โ DICOM Header โ โโ Embed: โโโโโโ 0.45 โ | |
| โ โโโโโโโโโโโโโโโโโโโโโโโโ โ โโ Attn1: โโโโโโ 0.87 โ | |
| โ โ โ โ โโ MLP1: โโโโโโ 0.34 โ | |
| โ โ Main Scan Canvas โ โ โโ ... โ | |
| โ โ (SVG/D3) โ โ โ | |
| โ โ โ โ โ Stimulation Panel โ | |
| โ โ - neurons โ โ ID: blocks.3.attn.h7 โ | |
| โ โ - connections โ โ Activation: 0.8721 โ | |
| โ โ - flow animations โ โ [Zero] [Amp] [Inv] โ | |
| โ โ โ โ [Noise] [Ablate] โ | |
| โ โโโโโโโโโโโโโโโโโโโโโโโโ โ โ | |
| โ โ Comparison Panel โ | |
| โ PROMPT: [________________] โ Original: "Paris" (0.87) โ | |
| โ [โถ SCAN] [โธ PAUSE] [โบ RESET]โ Perturbed: "the" (0.23) โ | |
| โ โ โ | |
| โโโ Log Panel โโโโโโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค | |
| โ [00:12] Scan complete โ Mode: fMRI, 7 tokens processed โ | |
| โ [00:14] Perturbation: Zero-out on blocks.3.attn.head_7 โ | |
| โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ | |
| ``` | |
| ### 5.2 ๋์์ธ ์์คํ | |
| **ํ ๋ง: "Medical Dark" โ DICOM ๋ทฐ์ด + ์์ ์ค ๋ชจ๋ํฐ ๋ฏธํ** | |
| ```css | |
| /* Color Palette */ | |
| --bg-primary: #0a0c10; /* ๊ฑฐ์ ๊ฒ์ , ์ฝ๊ฐ ๋ธ๋ฃจ */ | |
| --bg-secondary: #0c0e14; /* ํจ๋ ๋ฐฐ๊ฒฝ */ | |
| --bg-surface: #12151c; /* ์นด๋/์ ๋ ฅ ๋ฐฐ๊ฒฝ */ | |
| --border: rgba(100, 170, 136, 0.15); /* ์๋ฃ ๊ทธ๋ฆฐ ๋ณด๋ */ | |
| --text-primary: #66aa88; /* ์๋ฃ ๊ทธ๋ฆฐ ํ ์คํธ */ | |
| --text-secondary: #556; /* ํ์ ๋ณด์กฐ ํ ์คํธ */ | |
| --text-data: #aabbcc; /* ๋ฐ์ดํฐ ๊ฐ */ | |
| --accent-active: #00ffaa; /* ์ ํ/ํ์ฑ ํ์ด๋ผ์ดํธ */ | |
| --scan-line: rgba(255, 255, 255, 0.04); /* ์ค์บ๋ผ์ธ ์ค๋ฒ๋ ์ด */ | |
| /* Mode-specific Colors (T1=Topology, T2=Tensor, fMRI=functional MRI, DTI=Data Tractography, FLAIR=Feature-Level Anomaly) */ | |
| --t1-base: #8899aa; --t1-accent: #e0e0e0; | |
| --t2-base: #4488cc; --t2-accent: #aaccee; | |
| --fmri-cold: #1a2a5a; --fmri-warm: #cc8830; --fmri-hot: #ff4420; | |
| --dti-green: #44ddaa; --dti-purple: #8866ff; | |
| --flair-normal:#334; --flair-hot: #ff4466; | |
| /* Typography โ Monospace only */ | |
| --font-primary: 'JetBrains Mono', 'Fira Code', 'Courier New', monospace; | |
| --font-size-xs: 9px; /* ๋ก๊ทธ, ๋ฒ๋ก */ | |
| --font-size-sm: 10px; /* ๋ผ๋ฒจ, ํญ */ | |
| --font-size-md: 11px; /* ๋ณธ๋ฌธ ๋ฐ์ดํฐ */ | |
| --font-size-lg: 14px; /* ํ์ดํ */ | |
| ``` | |
| **ํ์ ๋น์ฃผ์ผ ์์:** | |
| 1. **์ค์บ๋ผ์ธ ์ค๋ฒ๋ ์ด** โ ์บ๋ฒ์ค ์์ 1px ๊ฐ๊ฒฉ์ ์ํ์ . opacity 0.03~0.05. CRT ๋ชจ๋ํฐ ๋๋ | |
| 2. **DICOM ํค๋** โ ์บ๋ฒ์ค ์๋จ์ ์๋ฃ ์์ ์คํ์ผ์ ๋ฉํ๋ฐ์ดํฐ (๋ชจ๋ธ๋ช , ์ํ์ค, ๋ ์ง/์๊ฐ, FOV, "Model Resonance Imaging" ํ๊ธฐ) | |
| 3. **Vignette ํจ๊ณผ** โ ์บ๋ฒ์ค ๊ฐ์ฅ์๋ฆฌ๊ฐ ์ด์ง ์ด๋์์ง๋ ํจ๊ณผ | |
| 4. **Pulse ์ ๋๋ฉ์ด์ ** โ fMRI ๋ชจ๋์์ ํ์ฑํ๋ ๋ด๋ฐ์ ํฌ๊ธฐ์ ๋ฐ๊ธฐ๊ฐ ์ฃผ๊ธฐ์ ์ผ๋ก ๋ฏธ์ธํ๊ฒ ๋ณ๋ | |
| 5. **Flow ์ ๋๋ฉ์ด์ ** โ DTI ๋ชจ๋์์ ์ฐ๊ฒฐ์ ์ ๋ฐ๋ผ ์์ ์ ์/๋ฐ๊ธฐ๊ฐ ํ๋ฅด๋ ํจ๊ณผ | |
| ### 5.3 Canvas ๋ ๋๋ง ์ฌ์ | |
| #### ๋ด๋ฐ(๋ ธ๋) ๋ ๋๋ง | |
| ``` | |
| ๊ฐ ๋ด๋ฐ์ ์(circle)์ผ๋ก ํํ. | |
| ์์น ๊ฒฐ์ : | |
| - Y์ถ: ๋ ์ด์ด ์์ (์๋จ = embedding, ํ๋จ = output) | |
| - X์ถ: ๊ฐ์ ๋ ์ด์ด ๋ด ๋ด๋ฐ๋ค์ด ์ํ์ผ๋ก ๋ถํฌ | |
| - ๋ ์ด์ด ๊ฐ ๊ฐ๊ฒฉ: 60~80px | |
| - ๋ด๋ฐ ๊ฐ ๊ฐ๊ฒฉ: ๋ ์ด์ด ๋ด ๋ด๋ฐ ์์ ๋ฐ๋ผ ์๋ ์กฐ์ | |
| ํฌ๊ธฐ ๊ฒฐ์ (๋ชจ๋๋ณ): | |
| - T1: ํ๋ผ๋ฏธํฐ ์์ ๋น๋ก (4~10px ๋ฐ์ง๋ฆ) | |
| - T2: weight magnitude์ ๋น๋ก | |
| - fMRI: base ํฌ๊ธฐ ร (0.5 + activation ร 1.0) ร pulse_factor | |
| - DTI: ์ผ์ ํฌ๊ธฐ, ์์์ผ๋ก ๋ฐฉํฅ ์ธ์ฝ๋ฉ | |
| - FLAIR: ์ ์=์๊ฒ, ์ด์=ํฌ๊ฒ + ํ์ค | |
| ์์ ๊ฒฐ์ (๋ชจ๋๋ณ): | |
| - T1: ๊ทธ๋ ์ด์ค์ผ์ผ (rgb(v,v,v+10), v = 160~220) | |
| - T2: ๋ธ๋ฃจ ์ค์ผ์ผ (weight ์์ผ๋ฉด ์ด๋์ด ๋จ์, ํฌ๋ฉด ๋ฐ์ ํ๋์) | |
| - fMRI: cool-to-hot colormap | |
| - activation < 0.3: ์ด๋์ด ํ๋ rgb(30+a*80, 30+a*100, 80+a*120) | |
| - activation 0.3~0.6: ๋ ธ๋/์ฃผํฉ rgb(a*200, a*160, 40+a*60) | |
| - activation > 0.6: ๋นจ๊ฐ/ํฐ rgb(200+a*55, a*120, a*30) | |
| - DTI: HSL, hue = (x/width)*120 + (y/height)*120, saturation 70%, lightness 55% | |
| - FLAIR: ์ ์=rgb(60,65,75), ์ด์=rgb(255, 50+a*60, 80+a*40) ํ์ค | |
| ``` | |
| #### ์ฐ๊ฒฐ(์ฃ์ง) ๋ ๋๋ง | |
| ``` | |
| ์ฐ๊ฒฐ์ ๋ ์ด์ด ๊ฐ ์ ๋ณด ํ๋ฆ์ ํํ. | |
| ๋ชจ๋๋ณ ํํ: | |
| - T1: ์์ ํ์ ์ (opacity 0.15, width 0.5) | |
| - T2: weight ํฌ๊ธฐ์ ๋ฐ๋ผ opacity์ ๋๊ป ๋ณํ | |
| - fMRI: ์๋ ๋ด๋ฐ์ ํ๊ท activation์ ๋ฐ๋ผ ์์/๋๊ป ๋ณํ | |
| - ๋์ activation: ํซ ์ปฌ๋ฌ, ๊ตต์ ์ | |
| - ๋ฎ์ activation: ๊ฑฐ์ ํฌ๋ช | |
| - DTI: ์ ์๋ฏธํ pathway๋ง ํ์ | |
| - ๊ณก์ (quadratic bezier) ์ฌ์ฉ | |
| - ๋ฐฉํฅ์ ๋ฐ๋ฅธ HSL ์์ | |
| - flow ์ ๋๋ฉ์ด์ (sin wave๋ก opacity ๋ณ๋) | |
| - ๋น-pathway ์ฐ๊ฒฐ์ ๊ฑฐ์ ํฌ๋ช | |
| - FLAIR: ์ด์ ๋ ธ๋์ ์ฐ๊ฒฐ๋ ์ฃ์ง๋ง ๋นจ๊ฐ์ ํ์ด๋ผ์ดํธ | |
| ``` | |
| #### ํ ํด๋ก์ง ๋ ์ด์์ ์ต์ (Phase 2 ์ดํ) | |
| ``` | |
| MVP: ์์ง ๋ ์ด์ด ์คํ (์โ์๋) | |
| Phase 2: ์ฌ์ฉ์๊ฐ ๋ ์ด์์ ๋ชจ๋๋ฅผ ์ ํ ๊ฐ๋ฅ | |
| - Stack (๊ธฐ๋ณธ): ์์ง ๋ ์ด์ด ์คํ | |
| - Brain: ํ์ํ ๋ ๋ชจ์์ผ๋ก ๊ฐ์ธ์ ๋ฐฐ์น (์ฝ๋ฅดํฐ์ปฌ ๋งคํ ๋น์ ) | |
| - Network: force-directed ๊ทธ๋ํ (D3 force simulation) | |
| - Radial: ์ค์ฌ์์ ๋ฐ๊นฅ์ผ๋ก ๋ ์ด์ด๊ฐ ํ์ฅ | |
| ``` | |
| ### 5.4 ์ธํฐ๋์ ์ฌ์ | |
| #### ๋ด๋ฐ ์ ํ (Stimulation Mode) | |
| ``` | |
| 1. ๋ด๋ฐ ํด๋ฆญ โ ์ ํ ์ํ ์ง์ | |
| 2. ์ ํ๋ ๋ด๋ฐ ์ฃผ์์ ๋์ฌ์ ์ ๋๋ฉ์ด์ (green glow) | |
| 3. ์ฐ์ธก ํจ๋์ ์์ธ ์ ๋ณด ํ์: | |
| - Node ID (layer.component.index) | |
| - Layer type (attention / mlp / embedding / output) | |
| - ํ์ฌ ๋ชจ๋์ ์ฃผ์ ๊ฐ (activation, weight, anomaly score) | |
| - Top-k ์ฐ๊ฒฐ๋ ๋ด๋ฐ (๊ฐ์ฅ ๊ฐํ ์ฐ๊ฒฐ) | |
| 4. Perturbation ๋ฒํผ ํ์ฑํ: | |
| - Zero-out: ํด๋น ์ปดํฌ๋ํธ ์ถ๋ ฅ์ 0์ผ๋ก | |
| - Amplify 2ร: ์ถ๋ ฅ์ 2๋ฐฐ๋ก | |
| - Invert: ์ถ๋ ฅ ๋ถํธ ๋ฐ์ | |
| - Noise ยฑฯ: ๊ฐ์ฐ์์ ๋ ธ์ด์ฆ ์ถ๊ฐ | |
| - Ablate: ์์ ์ ๊ฑฐ (zero + gradient ์ฐจ๋จ) | |
| 5. Perturbation ์ ์ฉ ์: | |
| - ๋ฐฑ์๋์ perturbation ์์ฒญ โ ์๋ก์ด activation ์์ | |
| - ์บ๋ฒ์ค ์ ์ฒด๊ฐ 0.3์ด๊ฐ ์ฌ์ค์บ ์ ๋๋ฉ์ด์ | |
| - ๋ณํ๋ ๋ถ๋ถ์ด ์ ์ ํ์ด๋ผ์ดํธ | |
| - ์ฐ์ธก Comparison Panel์ before/after ํ์ | |
| ``` | |
| #### ํ๋กฌํํธ ์ ๋ ฅ & ์ค์บ | |
| ``` | |
| 1. ํ๋กฌํํธ ์ ๋ ฅ โ SCAN ๋ฒํผ ํด๋ฆญ (๋๋ Enter) | |
| 2. ์ค์บ ํ๋ก๊ทธ๋ ์ค ๋ฐ ํ์ (์ค์ ๋ฐฑ์๋ ์ฒ๋ฆฌ ์๊ฐ ๋ฐ์) | |
| 3. WebSocket์ผ๋ก ํ ํฐ๋ณ activation ์คํธ๋ฆฌ๋ฐ | |
| 4. ํ ํฐ step-through ๊ฐ๋ฅ: | |
| - ํ๋กฌํํธ ์์ญ์ ๊ฐ ํ ํฐ์ด ์นฉ(chip)์ผ๋ก ํ์ | |
| - ํ ํฐ ์นฉ ํด๋ฆญ โ ํด๋น ํ ํฐ ์์ ์ activation๋ง ํ์ | |
| - โ โ ํ์ดํ๋ก ํ ํฐ ๊ฐ ์ด๋ | |
| - ์๋ ์ฌ์ (0.5์ด ๊ฐ๊ฒฉ) | |
| ``` | |
| #### ๋ชจ๋ ์ ํ | |
| ``` | |
| 1. ๋ชจ๋ ํญ ํด๋ฆญ โ 0.3์ด ํฌ๋ก์คํ์ด๋ ์ ํ | |
| 2. ๋์ผํ ํ ํด๋ก์ง(๋ด๋ฐ ์์น)๋ฅผ ์ ์งํ๋ฉด์ ์์/ํฌ๊ธฐ/์ฐ๊ฒฐ ํํ๋ง ๋ณ๊ฒฝ | |
| 3. ์ด๋ ์ค์ MRI์์ ๊ฐ์ ํ์์ T1โfMRI ์ ํ๊ณผ ๋์ผํ ๊ฒฝํ | |
| ``` | |
| ### 5.5 ๋ฐ์ํ ๊ณ ๋ ค์ฌํญ | |
| ``` | |
| - ์ต์ ์ง์ ํด์๋: 1280ร720 | |
| - ๊ถ์ฅ ํด์๋: 1920ร1080 | |
| - ์บ๋ฒ์ค ํฌ๊ธฐ: ์ปจํ ์ด๋์ ๋ง๊ฒ ์ค์ผ์ผ๋ง (SVG viewBox ์ฌ์ฉ) | |
| - ๋ชจ๋ฐ์ผ: ๋ฏธ์ง์ (๋ฐ์คํฌํฑ ์ ์ฉ ๋๊ตฌ) | |
| ``` | |
| --- | |
| ## 6. Backend Specification | |
| ### 6.1 ๋ชจ๋ธ ๋งค๋์ (ModelManager) | |
| ```python | |
| class ModelManager: | |
| """๋ชจ๋ธ ๋ก๋ฉ, ์ค์, ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ""" | |
| def load_model(self, model_id: str, device: str = "auto") -> ModelInfo: | |
| """ | |
| HuggingFace ๋ชจ๋ธ์ TransformerLens HookedTransformer๋ก ๋ก๋. | |
| - model_id: "gpt2", "EleutherAI/pythia-1.4b", "meta-llama/Llama-3.2-3B" ๋ฑ | |
| - device: "cpu", "cuda", "mps", "auto" | |
| - ๋ฐํ: ๋ชจ๋ธ ๋ฉํ๋ฐ์ดํฐ (๋ ์ด์ด ์, hidden size, head ์ ๋ฑ) | |
| """ | |
| def unload_model(self) -> None: | |
| """ํ์ฌ ๋ชจ๋ธ ์ธ๋ก๋ + GPU ๋ฉ๋ชจ๋ฆฌ ํด์ (gc + torch.cuda.empty_cache)""" | |
| def get_model_info(self) -> ModelInfo: | |
| """ํ์ฌ ๋ก๋๋ ๋ชจ๋ธ์ ์ํคํ ์ฒ ์ ๋ณด ๋ฐํ (T1 ๋ฐ์ดํฐ)""" | |
| def get_model(self) -> HookedTransformer: | |
| """ํ์ฌ ๋ก๋๋ ๋ชจ๋ธ ์ธ์คํด์ค ๋ฐํ""" | |
| ``` | |
| ### 6.2 ๋ถ์ ์์ง (AnalysisEngine) | |
| ```python | |
| class AnalysisEngine: | |
| """๊ฐ ์ค์บ ๋ชจ๋์ ๋ํ ๋ถ์ ์ํ""" | |
| def scan_structural(self) -> StructuralData: | |
| """T1: model.cfg์์ ์ ์ ๊ตฌ์กฐ ์ถ์ถ""" | |
| def scan_weights(self, layers: list[str] | None = None) -> WeightData: | |
| """T2: state_dict์์ weight ํต๊ณ ์ถ์ถ""" | |
| def scan_activation(self, prompt: str, **kwargs) -> ActivationData: | |
| """ | |
| fMRI: prompt์ ๋ํ activation ์บ์. | |
| TransformerLens run_with_cache() ์ฌ์ฉ. | |
| ํต์ฌ ๊ตฌํ: | |
| logits, cache = model.run_with_cache(prompt) | |
| ์ถ์ถ ๋์ hook points: | |
| - hook_embed: ์๋ฒ ๋ฉ ๋ ์ด์ด | |
| - blocks.{i}.hook_resid_pre: ๊ฐ ๋ธ๋ก ์ ๋ ฅ residual | |
| - blocks.{i}.attn.hook_result: attention ์ถ๋ ฅ | |
| - blocks.{i}.hook_mlp_out: MLP ์ถ๋ ฅ | |
| - blocks.{i}.hook_resid_post: ๊ฐ ๋ธ๋ก ์ถ๋ ฅ residual | |
| aggregation ์ต์ : | |
| - "l2_norm": L2 norm per position (์ค์นผ๋ผ) | |
| - "max": max absolute value | |
| - "mean": mean absolute value | |
| - "raw": ์ ์ฒด ํ ์ ๋ฐํ (๋์ฉ๋, ์ ํ์ ) | |
| """ | |
| def scan_circuits(self, prompt: str, target_token: int = -1) -> CircuitData: | |
| """ | |
| DTI: attention pattern + attribution ๊ฒฝ๋ก ์ถ์ถ. | |
| (1) Attention Pattern: | |
| _, cache = model.run_with_cache(prompt) | |
| attn_patterns = cache["blocks.{i}.attn.hook_pattern"] | |
| โ shape: [num_heads, seq_len, seq_len] | |
| (2) Attribution (๊ฐ์ด ๋ฒ์ ): | |
| ๊ฐ head/mlp์ ์ถ๋ ฅ์ zero-out ํ์ ๋ target logit ๋ณํ๋ ๊ณ์ฐ. | |
| โ ์ ๋๊ฐ์ด ํฐ ์ปดํฌ๋ํธ = ์ค์ ๊ฒฝ๋ก | |
| """ | |
| def scan_anomaly(self, prompt: str) -> AnomalyData: | |
| """ | |
| FLAIR: ์ด์ ํ์ง. | |
| (1) Logit Lens: | |
| ๊ฐ ์ค๊ฐ ๋ ์ด์ด์ residual stream์ unembedํ์ฌ | |
| ์ค๊ฐ ์์ธก vs ์ต์ข ์์ธก์ KL divergence ๊ณ์ฐ. | |
| ํฐ divergence = ํด๋น ๋ ์ด์ด์์ "์๊ฐ์ด ํฌ๊ฒ ๋ฐ๋" = ์ ์ฌ์ ์ด์ | |
| (2) Entropy: | |
| ๊ฐ ์์น์ logit์์ softmax โ entropy ๊ณ์ฐ. | |
| ๋์ entropy = ๋ชจ๋ธ์ด ๋ถํ์ค = ํ ๋ฃจ์๋ค์ด์ ์ํ | |
| (3) ์ด์ ์ ์: | |
| anomaly_score = ฮฑ * normalized_kl_div + ฮฒ * normalized_entropy | |
| ฮฑ = 0.6, ฮฒ = 0.4 (ํ๋ ๊ฐ๋ฅ) | |
| """ | |
| ``` | |
| ### 6.3 Perturbation ์์ง (PerturbationEngine) | |
| ```python | |
| class PerturbationEngine: | |
| """๋ชจ๋ธ ๋ด๋ถ์ ์๊ทน/๋ณํ์ ๊ฐํ๊ณ ๊ฒฐ๊ณผ๋ฅผ ๋น๊ต""" | |
| def zero_out(self, component: str, prompt: str) -> PerturbResult: | |
| """ | |
| ํน์ ์ปดํฌ๋ํธ์ ์ถ๋ ฅ์ 0์ผ๋ก ๋ง๋ค๊ณ ์ฌ์คํ. | |
| ๊ตฌํ: | |
| def zero_hook(value, hook): | |
| value[:, :, :] = 0 # ๋๋ ํน์ head๋ง | |
| return value | |
| model.run_with_hooks(prompt, fwd_hooks=[(component, zero_hook)]) | |
| """ | |
| def amplify(self, component: str, factor: float, prompt: str) -> PerturbResult: | |
| """์ถ๋ ฅ์ factor๋ฅผ ๊ณฑํ์ฌ ์ฆํญ""" | |
| def ablate(self, component: str, prompt: str) -> PerturbResult: | |
| """์ปดํฌ๋ํธ๋ฅผ ์์ ํ ์ ๊ฑฐ (mean ablation: ํ๊ท ๊ฐ์ผ๋ก ๋์ฒด)""" | |
| def inject_activation(self, component: str, values: list, prompt: str) -> PerturbResult: | |
| """ํน์ activation ๊ฐ์ ์ง์ ์ฃผ์ """ | |
| def activation_patch( | |
| self, | |
| clean_prompt: str, | |
| corrupt_prompt: str, | |
| component: str | |
| ) -> PatchResult: | |
| """ | |
| Activation Patching (Causal Tracing). | |
| clean_prompt์ ํน์ ์ปดํฌ๋ํธ activation์ | |
| corrupt_prompt ์คํ ์ค์ ๊ต์ฒดํ์ฌ ๋ณต๊ตฌ ์ ๋๋ฅผ ์ธก์ . | |
| ๊ตฌํ: | |
| _, clean_cache = model.run_with_cache(clean_prompt) | |
| clean_activation = clean_cache[component] | |
| def patch_hook(value, hook): | |
| value[:] = clean_activation | |
| return value | |
| patched_logits = model.run_with_hooks( | |
| corrupt_prompt, | |
| fwd_hooks=[(component, patch_hook)] | |
| ) | |
| recovery = (patched_logit - corrupt_logit) / (clean_logit - corrupt_logit) | |
| """ | |
| def compare_results(self, original: Logits, perturbed: Logits) -> ComparisonData: | |
| """์๋ณธ๊ณผ ๋ณํ ๊ฒฐ๊ณผ ๋น๊ต: top-k ์์ธก, logit diff, KL divergence""" | |
| ``` | |
| ### 6.4 ๋ฐ์ดํฐ ์์ฝ ์ ๋ต | |
| ๋์ฉ๋ ํ ์๋ฅผ ํ๋ก ํธ์๋๋ก ์ ์กํ ๋์ ์์ฝ ์ ๋ต: | |
| ``` | |
| ๋ฌธ์ : GPT-2 small๋ง ํด๋ ๋จ์ผ ํ๋กฌํํธ์ ๋ํ ์ ์ฒด activation cache๊ฐ ์๋ฐฑMB. | |
| ํด๊ฒฐ: | |
| 1. ๊ธฐ๋ณธ ์๋ต: ๋ ์ด์ด๋ณ/head๋ณ ์์ฝ ํต๊ณ๋ง ์ ์ก (L2 norm, max, mean โ ์ค์นผ๋ผ ๋ฐฐ์ด) | |
| 2. ์จ๋๋งจ๋: ์ฌ์ฉ์๊ฐ ํน์ ๋ ์ด์ด/head๋ฅผ ์ ํํ๋ฉด ํด๋น ๋ถ๋ถ๋ง ์์ธ ๋ฐ์ดํฐ ์ ์ก | |
| 3. ์ดํ ์ ํจํด: full attention matrix๋ ์์ฒญ ์์๋ง ์ ์ก (shape: [heads, seq, seq]) | |
| 4. ์คํธ๋ฆฌ๋ฐ: ํ ํฐ๋ณ step-through ์ ๊ฐ ํ ํฐ์ ๋ฐ์ดํฐ๋ง ์ฆ๋ถ ์ ์ก | |
| 5. ์บ์ฑ: ๋์ผ ํ๋กฌํํธ์ ๋ํ ์บ์๋ ์๋ฒ ๋ฉ๋ชจ๋ฆฌ์ ๋ณด๊ด (LRU, ์ต๋ 5๊ฐ ํ๋กฌํํธ) | |
| ``` | |
| --- | |
| ## 7. Implementation Phases | |
| ### Phase 0: Foundation (1~2์ฃผ) | |
| ``` | |
| ๋ชฉํ: ํ๋ก์ ํธ ๊ตฌ์กฐ ์ ์ + GPT-2 small๋ก T1/T2 ๋ชจ๋ ์๋ | |
| Backend: | |
| - [ ] FastAPI ํ๋ก์ ํธ ์ ์ (poetry/uv ๊ธฐ๋ฐ dependency ๊ด๋ฆฌ) | |
| - [ ] ModelManager ๊ตฌํ (GPT-2 small ๋ก๋) | |
| - [ ] scan_structural() ๊ตฌํ โ T1 ๋ฐ์ดํฐ ๋ฐํ | |
| - [ ] scan_weights() ๊ตฌํ โ T2 ๋ฐ์ดํฐ ๋ฐํ | |
| - [ ] ๊ธฐ๋ณธ REST API ์๋ํฌ์ธํธ (/model/load, /model/info, /scan/structural, /scan/weights) | |
| Frontend: | |
| - [ ] Vite + React ํ๋ก์ ํธ ์ ์ | |
| - [ ] DICOM ํ ๋ง CSS ๋ณ์ ์ ์ | |
| - [ ] ๊ธฐ๋ณธ ๋ ์ด์์ ๊ตฌํ (Top Bar, Mode Tabs, Canvas, Panels) | |
| - [ ] T1 Canvas ๋ ๋๋ง: ๋ชจ๋ธ ๊ตฌ์กฐ๋ฅผ ๋ ธ๋/์ฃ์ง๋ก ์๊ฐํ | |
| - [ ] T2 Canvas ๋ ๋๋ง: weight ํํธ๋งต | |
| - [ ] Model selector dropdown | |
| ํ ์คํธ: | |
| - [ ] GPT-2 small ๋ก๋ โ T1 ๋ฐ์ดํฐ ํ์ โ T2 ๋ชจ๋ ์ ํ ๊ฒ์ฆ | |
| ``` | |
| ### Phase 1: Core Scanning (2~3์ฃผ) | |
| ``` | |
| ๋ชฉํ: fMRI + DTI ๋ชจ๋ ์๋. ํ๋กฌํํธ ์ ๋ ฅ โ activation ์๊ฐํ | |
| Backend: | |
| - [ ] TransformerLens ํตํฉ (HookedTransformer.from_pretrained) | |
| - [ ] scan_activation() ๊ตฌํ โ fMRI ๋ฐ์ดํฐ ๋ฐํ | |
| - [ ] scan_circuits() ๊ตฌํ โ DTI ๋ฐ์ดํฐ ๋ฐํ | |
| - [ ] WebSocket ์๋ํฌ์ธํธ (ํ ํฐ๋ณ activation ์คํธ๋ฆฌ๋ฐ) | |
| - [ ] ๋ฐ์ดํฐ ์์ฝ/์ง๋ ฌํ ํ์ดํ๋ผ์ธ (orjson) | |
| Frontend: | |
| - [ ] fMRI Canvas: cool-to-hot ์ปฌ๋ฌ๋งต, ํ์ค ์ ๋๋ฉ์ด์ | |
| - [ ] DTI Canvas: ๊ณก์ ๊ฒฝ๋ก, ๋ฐฉํฅ๋ณ ์์, flow ์ ๋๋ฉ์ด์ | |
| - [ ] Prompt ์ ๋ ฅ UI + SCAN ๋ฒํผ + ํ๋ก๊ทธ๋ ์ค ๋ฐ | |
| - [ ] ํ ํฐ step-through UI (ํ ํฐ ์นฉ + ํ์ดํ ๋ด๋น๊ฒ์ด์ ) | |
| - [ ] Layer Summary ๋ฐ ์ฐจํธ (๋ชจ๋๋ณ ์ ์) | |
| - [ ] WebSocket ์ฐ๊ฒฐ + ์ค์๊ฐ ์ ๋ฐ์ดํธ | |
| ํ ์คํธ: | |
| - [ ] "The capital of France is" โ fMRI์์ "France" ํ ํฐ ์ ๊ด๋ จ ๋ด๋ฐ ํ์ฑํ ํ์ธ | |
| - [ ] DTI์์ ์ ์๋ฏธํ information flow ๊ฒฝ๋ก ์๊ฐํ ํ์ธ | |
| ``` | |
| ### Phase 2: Perturbation + FLAIR (2~3์ฃผ) | |
| ``` | |
| ๋ชฉํ: ์๊ทน/๋ณํ ์คํ + ์ด์ ํ์ง | |
| Backend: | |
| - [ ] PerturbationEngine ์ ์ฒด ๊ตฌํ (zero, amplify, ablate, inject, patch) | |
| - [ ] scan_anomaly() ๊ตฌํ (logit lens + entropy) | |
| - [ ] compare_results() ๊ตฌํ (before/after ๋น๊ต) | |
| - [ ] Activation patching (causal tracing) ๊ตฌํ | |
| Frontend: | |
| - [ ] FLAIR Canvas: ์ด์ ์์ญ ํ์ด๋ผ์ดํธ, ํ์ค ์ ๋๋ฉ์ด์ | |
| - [ ] Stimulation Panel: ๋ด๋ฐ ํด๋ฆญ โ ์์ธ ์ ๋ณด + perturbation ๋ฒํผ | |
| - [ ] Comparison Panel: ์๋ณธ vs ๋ณํ ๊ฒฐ๊ณผ ๋๋ํ ํ์ | |
| - [ ] Perturbation ์ ์ฉ ์ ์ฌ์ค์บ ์ ๋๋ฉ์ด์ | |
| - [ ] Reset ๊ธฐ๋ฅ (๋ชจ๋ perturbation ์ด๊ธฐํ) | |
| - [ ] ์ค์บ๋ผ์ธ ์ค๋ฒ๋ ์ด + vignette ํจ๊ณผ | |
| ํ ์คํธ: | |
| - [ ] ํน์ attention head zero-out โ ์์ธก ๋ณํ ํ์ธ | |
| - [ ] "The Eiffel Tower is in" โ ์ฌ์ค ๊ด๋ จ ์ปดํฌ๋ํธ ablation โ ํ ๋ฃจ์๋ค์ด์ ์ ๋ ํ์ธ | |
| - [ ] FLAIR์์ entropy๊ฐ ๋์ ์์น๊ฐ ์ฌ๋ฐ๋ฅด๊ฒ ํ์ด๋ผ์ดํธ๋๋์ง ํ์ธ | |
| ``` | |
| ### Phase 3: Polish + Multi-Model (2์ฃผ) | |
| ``` | |
| ๋ชฉํ: ๋ค์ค ๋ชจ๋ธ ์ง์ + UX ์์ฑ | |
| Backend: | |
| - [ ] Pythia-1.4B, Gemma-2-2B ์ง์ ์ถ๊ฐ ๋ฐ ํ ์คํธ | |
| - [ ] Llama-3.2-3B ์ง์ (TransformerLens ํธํ์ฑ ํ์ธ, ํ์ ์ nnsight ๋์ฒด) | |
| - [ ] ๋ชจ๋ธ ์ค์ ์ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ ์ต์ ํ | |
| - [ ] API ์๋ต ์บ์ฑ ๋ ์ด์ด | |
| Frontend: | |
| - [ ] ๋ชจ๋ ์ ํ ํฌ๋ก์คํ์ด๋ ์ ๋๋ฉ์ด์ | |
| - [ ] ๋ด๋ฐ ํธ๋ฒ ํดํ | |
| - [ ] ์ ์ฒด ์ค์บ๋ผ์ธ + CRT ๋ฏธํ ์์ฑ | |
| - [ ] ์ฑ๋ฅ ์ต์ ํ (large graph์์ 60fps ์ ์ง) | |
| - [ ] ์๋ฌ/๋ก๋ฉ ์ํ UX | |
| ํ ์คํธ: | |
| - [ ] ๋ชจ๋ธ ๊ฐ ์ค์ ์ ๋ฉ๋ชจ๋ฆฌ ๋์ ์์ ํ์ธ | |
| - [ ] 3B ๋ชจ๋ธ์์ ์ ์ฒด ์ค์บ ํ์ดํ๋ผ์ธ e2e ํ์ธ | |
| ``` | |
| ### Phase 4: Advanced Features (ํฅํ) | |
| ``` | |
| - [ ] SAE Feature ํ์๊ธฐ (SAELens ํตํฉ) | |
| - [ ] Brain ๋ ์ด์์ ๋ชจ๋ (์ฝ๋ฅดํฐ์ปฌ ๋งคํ) | |
| - [ ] Multi-prompt ๋น๊ต (๊ฐ์ ๋ชจ๋ธ์ ๋ค๋ฅธ ์ ๋ ฅ ์ activation ์ฐจ์ด) | |
| - [ ] ์๊ณ์ด ๋ นํ/์ฌ์ (์ค์บ ์ธ์ ์ ์ฅ) | |
| - [ ] Export: ์ค์บ ๊ฒฐ๊ณผ๋ฅผ ์ด๋ฏธ์ง/์์์ผ๋ก ๋ด๋ณด๋ด๊ธฐ | |
| - [ ] ํ์ : ์ฌ๋ฌ ์ฌ์ฉ์๊ฐ ๊ฐ์ ์ค์บ ์ธ์ ์ ๊ณต์ | |
| - [ ] ์๋ ์ง๋จ: "์ด ๋ชจ๋ธ์ ์ด๋ฐ ๋ฌธ์ ๊ฐ ์์ ์ ์์ต๋๋ค" ๋ณด๊ณ ์ ์์ฑ | |
| ``` | |
| --- | |
| ## 8. Development Environment | |
| ### 8.1 ํ์ ์๊ตฌ์ฌํญ | |
| ``` | |
| - Python 3.11+ | |
| - Node.js 20+ | |
| - GPU: NVIDIA GPU with 8GB+ VRAM (๊ถ์ฅ). CPU ์ ์ฉ๋ ๊ฐ๋ฅ (GPT-2 small ํ์ ) | |
| - CUDA 12.x (GPU ์ฌ์ฉ ์) | |
| - ๋ฉ๋ชจ๋ฆฌ: 16GB+ RAM | |
| ``` | |
| ### 8.2 Backend ์์กด์ฑ | |
| ```toml | |
| [project] | |
| name = "neural-mri" | |
| requires-python = ">=3.11" | |
| dependencies = [ | |
| "fastapi>=0.110", | |
| "uvicorn[standard]>=0.27", | |
| "websockets>=12.0", | |
| "transformer-lens>=2.0", | |
| "torch>=2.2", | |
| "transformers>=4.40", | |
| "accelerate>=0.28", | |
| "sae-lens>=3.0", # Phase 2 | |
| "orjson>=3.9", | |
| "numpy>=1.26", | |
| "pydantic>=2.6", | |
| ] | |
| ``` | |
| ### 8.3 Frontend ์์กด์ฑ | |
| ```json | |
| { | |
| "dependencies": { | |
| "react": "^18.3", | |
| "react-dom": "^18.3", | |
| "d3": "^7.9", | |
| "zustand": "^4.5", | |
| "use-websocket": "^4.8" | |
| }, | |
| "devDependencies": { | |
| "vite": "^5.4", | |
| "@vitejs/plugin-react": "^4.2", | |
| "tailwindcss": "^3.4", | |
| "autoprefixer": "^10.4", | |
| "postcss": "^8.4" | |
| } | |
| } | |
| ``` | |
| ### 8.4 ํ๋ก์ ํธ ๊ตฌ์กฐ | |
| ``` | |
| neural-mri/ | |
| โโโ README.md | |
| โโโ docker-compose.yml | |
| โ | |
| โโโ backend/ | |
| โ โโโ pyproject.toml | |
| โ โโโ neural_mri/ | |
| โ โ โโโ __init__.py | |
| โ โ โโโ main.py # FastAPI app entry | |
| โ โ โโโ config.py # ์ค์ (๋ชจ๋ธ ๊ฒฝ๋ก, ์บ์, GPU) | |
| โ โ โโโ api/ | |
| โ โ โ โโโ __init__.py | |
| โ โ โ โโโ routes_model.py # /api/model/* ๋ผ์ฐํธ | |
| โ โ โ โโโ routes_scan.py # /api/scan/* ๋ผ์ฐํธ | |
| โ โ โ โโโ routes_perturb.py # /api/perturb/* ๋ผ์ฐํธ | |
| โ โ โ โโโ ws_stream.py # WebSocket ํธ๋ค๋ฌ | |
| โ โ โโโ core/ | |
| โ โ โ โโโ __init__.py | |
| โ โ โ โโโ model_manager.py | |
| โ โ โ โโโ analysis_engine.py | |
| โ โ โ โโโ perturbation_engine.py | |
| โ โ โโโ schemas/ | |
| โ โ โ โโโ __init__.py | |
| โ โ โ โโโ model.py # ModelInfo, ModelConfig | |
| โ โ โ โโโ scan.py # ActivationData, CircuitData ๋ฑ | |
| โ โ โ โโโ perturb.py # PerturbResult, PatchResult | |
| โ โ โโโ utils/ | |
| โ โ โโโ __init__.py | |
| โ โ โโโ tensor_summary.py # ํ ์ โ ์์ฝ ๋ณํ | |
| โ โ โโโ serialization.py # orjson ์ปค์คํ ์ง๋ ฌํ | |
| โ โโโ tests/ | |
| โ โโโ test_model_manager.py | |
| โ โโโ test_analysis.py | |
| โ โโโ test_perturbation.py | |
| โ | |
| โโโ frontend/ | |
| โ โโโ package.json | |
| โ โโโ vite.config.js | |
| โ โโโ tailwind.config.js | |
| โ โโโ index.html | |
| โ โโโ src/ | |
| โ โ โโโ main.jsx | |
| โ โ โโโ App.jsx | |
| โ โ โโโ theme/ | |
| โ โ โ โโโ variables.css # DICOM ํ ๋ง CSS ๋ณ์ | |
| โ โ โ โโโ globals.css | |
| โ โ โโโ store/ | |
| โ โ โ โโโ useModelStore.js | |
| โ โ โ โโโ useScanStore.js | |
| โ โ โ โโโ usePerturbStore.js | |
| โ โ โโโ components/ | |
| โ โ โ โโโ TopBar.jsx | |
| โ โ โ โโโ ModeTabs.jsx | |
| โ โ โ โโโ DicomHeader.jsx | |
| โ โ โ โโโ ScanCanvas/ | |
| โ โ โ โ โโโ ScanCanvas.jsx # ๋ฉ์ธ SVG ์บ๋ฒ์ค | |
| โ โ โ โ โโโ NeuronRenderer.jsx # ๋ด๋ฐ ๋ ๋๋ง ๋ก์ง | |
| โ โ โ โ โโโ ConnectionRenderer.jsx # ์ฃ์ง ๋ ๋๋ง ๋ก์ง | |
| โ โ โ โ โโโ ScanLineOverlay.jsx # CRT ์ค์บ๋ผ์ธ | |
| โ โ โ โ โโโ colorMaps.js # ๋ชจ๋๋ณ ์์ ํจ์ | |
| โ โ โ โโโ Panels/ | |
| โ โ โ โ โโโ LayerSummary.jsx # ๋ ์ด์ด๋ณ ๋ง๋ ์ฐจํธ | |
| โ โ โ โ โโโ StimPanel.jsx # ๋ด๋ฐ ์ ํ + perturbation | |
| โ โ โ โ โโโ ComparisonPanel.jsx # before/after ๋น๊ต | |
| โ โ โ โ โโโ LogPanel.jsx # ํ๋จ ๋ก๊ทธ | |
| โ โ โ โโโ PromptInput.jsx | |
| โ โ โ โโโ TokenStepper.jsx # ํ ํฐ๋ณ step-through | |
| โ โ โโโ hooks/ | |
| โ โ โ โโโ useWebSocket.js | |
| โ โ โ โโโ useAnimationFrame.js | |
| โ โ โโโ api/ | |
| โ โ โโโ client.js # REST API ํด๋ผ์ด์ธํธ | |
| โ โ โโโ ws.js # WebSocket ํด๋ผ์ด์ธํธ | |
| โ โโโ public/ | |
| โ โโโ fonts/ # JetBrains Mono | |
| โ | |
| โโโ docs/ | |
| โโโ SPEC.md # ์ด ๋ฌธ์ | |
| โโโ API.md # API ์์ธ ๋ฌธ์ | |
| โโโ ARCHITECTURE.md # ์ํคํ ์ฒ ๋ค์ด์ด๊ทธ๋จ | |
| ``` | |
| --- | |
| ## 9. Key Technical Decisions & Risks | |
| ### 9.1 TransformerLens ํธํ์ฑ | |
| ``` | |
| ๋ฆฌ์คํฌ: TransformerLens๋ GPT-2, Pythia ๋ฑ ์ผ๋ถ ๋ชจ๋ธ๋ง ๊ณต์ ์ง์. | |
| Llama, Qwen ๋ฑ์ ์ปค๋ฎค๋ํฐ ๊ตฌํ์ ์์กดํ๋ฉฐ ๋ฒ์ ์ ๋ฐ๋ผ ๊นจ์ง ์ ์์. | |
| ๋์: | |
| 1. MVP๋ GPT-2 small/medium + Pythia๋ก ์์ (ํ์คํ ์ง์) | |
| 2. ์ ๋ชจ๋ธ ์ถ๊ฐ ์ from_pretrained() ํธํ์ฑ ํ ์คํธ ์คํฌ๋ฆฝํธ ์์ฑ | |
| 3. TransformerLens ๋ฏธ์ง์ ๋ชจ๋ธ์ nnsight ๋ฐฑ์๋๋ก ํด๋ฐฑ | |
| 4. ๋ชจ๋ธ๋ณ hook point ์ด๋ฆ์ด ๋ค๋ฅผ ์ ์์ผ๋ฏ๋ก ์ถ์ํ ๋ ์ด์ด ํ์ | |
| ``` | |
| ### 9.2 ์ฑ๋ฅ | |
| ``` | |
| ๋ฆฌ์คํฌ: 3B+ ๋ชจ๋ธ์ full activation cache๊ฐ ์GB์ ๋ฌํ ์ ์์. | |
| ๋์: | |
| 1. ์์ฝ ์ฐ์ ์ ๋ต: ์ ์ฒด ํ ์ ๋์ per-layer/per-head ํต๊ณ๋ง ๊ธฐ๋ณธ ์ ์ก | |
| 2. Lazy loading: ์ฌ์ฉ์๊ฐ ํน์ ๋ ์ด์ด ์ ํ ์์๋ง ์์ธ ๋ฐ์ดํฐ ์ ์ก | |
| 3. ์๋ฒ์ฌ์ด๋ ์บ์ฑ: ๋์ผ ํ๋กฌํํธ์ ๋ํ ์บ์ ์ ์ง (LRU 5๊ฐ) | |
| 4. ํ ํฐ ์คํธ๋ฆฌ๋ฐ: ์ ์ฒด ์ํ์ค๋ฅผ ํ๋ฒ์ ์ฒ๋ฆฌํ๋, ํ๋ก ํธ์๋์๋ ํ ํฐ๋ณ ์ ์ก | |
| 5. GPU ๋ฉ๋ชจ๋ฆฌ: ๋ชจ๋ธ + ์บ์๊ฐ VRAM ์ด๊ณผ ์ ์๋์ผ๋ก CPU ์คํ๋ก๋ | |
| ``` | |
| ### 9.3 ์๊ฐํ ์ฑ๋ฅ | |
| ``` | |
| ๋ฆฌ์คํฌ: ๋ ธ๋/์ฃ์ง๊ฐ ์๋ฐฑ ๊ฐ์ผ ๋ SVG ๋ ๋๋ง์ด ๋๋ ค์ง ์ ์์. | |
| ๋์: | |
| 1. ์ง์ฝ ํํ: ๊ฐ๋ณ ๋ด๋ฐ์ด ์๋ "head" ๋๋ "layer component" ๋จ์๋ก ๋ ธ๋ ํํ | |
| (GPT-2 small: 12 layers ร 3 components = ~36 nodes + embedding + output) | |
| 2. Viewport culling: ํ๋ฉด์ ๋ณด์ด๋ ๋ ธ๋๋ง ๋ ๋๋ง | |
| 3. ์ฃ์ง ๊ฐ์ํ: ๋ชจ๋์ ๋ฐ๋ผ ๋นํ์ฑ ์ฃ์ง๋ฅผ ์์ ๋ ๋๋งํ์ง ์์ | |
| 4. Canvas ์ ํ: SVG ์ฑ๋ฅ ํ๊ณ ์ WebGL (Three.js) ๋๋ Canvas 2D๋ก ์ ํ | |
| ``` | |
| ### 9.4 Perturbation ์์ ์ฑ | |
| ``` | |
| ๋ฆฌ์คํฌ: perturbation์ด ๋ชจ๋ธ weight ์์ฒด๋ฅผ ์์ ํ๋ฉด ๋ณต๊ตฌ๊ฐ ์ด๋ ค์. | |
| ๋์: | |
| 1. run_with_hooks()๋ง ์ฌ์ฉ: ๋ชจ๋ธ weight๋ ์ ๋ ์์ ํ์ง ์์. Hook์ผ๋ก activation๋ง ๋ณํ. | |
| 2. Reset ๋ฒํผ: ๋ชจ๋ hook์ ์ ๊ฑฐํ๊ณ ์๋ณธ ์ํ๋ก ๋ณต๊ท | |
| 3. ๋ชจ๋ perturbation์ stateless: ๊ฐ ์์ฒญ๋ง๋ค ์๋ก hook์ ์ค์ | |
| ``` | |
| --- | |
| ## 10. Success Metrics | |
| ### MVP (Phase 0~2 ์๋ฃ ๊ธฐ์ค) | |
| ``` | |
| 1. GPT-2 small์ ๋ํด 5๊ฐ ๋ชจ๋ ๋ชจ๋ ์๋ | |
| 2. ํ๋กฌํํธ ์ ๋ ฅ โ ์ค์บ ์๋ฃ๊น์ง 2์ด ์ด๋ด (GPU ๊ธฐ์ค) | |
| 3. ํ ํฐ step-through๊ฐ smoothํ๊ฒ ์๋ (ํ๋ ์ ๋๋กญ ์์ด) | |
| 4. perturbation ์ ์ฉ โ ๊ฒฐ๊ณผ ๋น๊ต๊ฐ 1์ด ์ด๋ด | |
| 5. ๋ชจ๋ ์ ํ ์ ํ ํด๋ก์ง ์ ์งํ๋ฉด์ 0.3์ด ์ด๋ด ์ ํ | |
| ``` | |
| ### ํ์ฅ (Phase 3 ์ดํ) | |
| ``` | |
| 1. 3B ๋ชจ๋ธ์์ ์ ์ฒด ํ์ดํ๋ผ์ธ 5์ด ์ด๋ด | |
| 2. ์ต์ 3๊ฐ ์ด์์ ์คํ์์ค ๋ชจ๋ธ ์ง์ | |
| 3. Activation patching (causal tracing) ์๊ฐํ๊ฐ ๋ ผ๋ฌธ Figure ์์ค | |
| ``` | |
| --- | |
| ## 11. References | |
| ### ํต์ฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ | |
| - TransformerLens: https://github.com/TransformerLensOrg/TransformerLens | |
| - SAELens: https://github.com/jbloomAus/SAELens | |
| - nnsight: https://github.com/ndif-team/nnsight | |
| ### ํต์ฌ ๋ ผ๋ฌธ/์๋ฃ | |
| - Elhage et al. (2022) "Toy Models of Superposition" โ ์ค์ฒฉ(superposition) ์ด๋ก | |
| - Wang et al. (2022) "Interpretability in the Wild: IOI Circuit" โ ํ๋ก ๋ถ์ | |
| - Meng et al. (2022) "ROME: Rank-One Model Editing" โ ์ฌ์ค ์ ์ฅ ์์น ์ถ์ | |
| - Anthropic (2024) "Scaling Monosemanticity" โ SAE feature ์ถ์ถ | |
| - Neel Nanda's TransformerLens tutorials: https://neelnanda.io/ | |
| ### ์๊ฐ | |
| - 3D Slicer (์๋ฃ ์์ ์๊ฐํ): https://www.slicer.org/ | |
| - FreeSurfer (๋ ์์ ๋ถ์): https://surfer.nmr.mgh.harvard.edu/ | |
| - Neuronpedia (SAE feature ํ์๊ธฐ): https://www.neuronpedia.org/ | |
| --- | |
| *End of Specification* | |