[1mModel:[0m [36mtest.apr[0m ([33mencoder-decoder (Whisper/T5)[0m, [36mApr[0m)

[2m═══════════════════════════════════════════════════════════════[0m
[1m                     FULL MODEL DATA FLOW[0m
[2m═══════════════════════════════════════════════════════════════[0m

[1;32mINPUT[0m  audio [N, samples]
   │
   ▼
[34m┌─────────────────┐[0m  mel_spectrogram()
[34m│[0m  [N, 80, T]      [34m│[0m
[34m└────────┬────────┘[0m
         │
         ▼
┌─────────────────────────────────────────────────────────────┐
│  [1;36mENCODER[0m                                               │
├─────────────────────────────────────────────────────────────┤
│            │                                                │
│            ▼                                                │
│  ┌─────────────────────────────────────────────────┐        │
│  │  [36mEncoder Layers[0m × 4                                   │        │
│  │  ┌─────────────────────────────────────────┐    │        │
│  │  │ ln1 → self_attn → + residual            │    │        │
│  │  │ ln2 → ffn → + residual                  │    │        │
│  │  └─────────────────────────────────────────┘    │        │
│  └─────────────────────────────────────────────────┘        │
│            │                                                │
│            ▼                                                │
│  [32mencoder_output[0m [N, T', d_model]                          │
└─────────────────────────────────────────────────────────────┘
             │
             │ (used as K,V for cross-attention)
             ▼
┌─────────────────────────────────────────────────────────────┐
│  [1;35mDECODER[0m                                               │
├─────────────────────────────────────────────────────────────┤
│  tokens [N, seq_len]                                        │
│       │                                                     │
│       ▼                                                     │
│  ┌──────────────────┐                                       │
│  │ [33mToken Embed[0m │ + positional_embedding              │
│  └────────┬─────────┘                                       │
│            │                                                │
│            ▼                                                │
│  ┌─────────────────────────────────────────────────┐        │
│  │  [35mDecoder Layers[0m × 4                                   │        │
│  │  ┌─────────────────────────────────────────┐    │        │
│  │  │ ln1 → [33mself_attn (causal)[0m → + residual      │    │        │
│  │  │ ln2 → [36mcross_attn[0m → + residual          │    │        │
│  │  │       └── Q from decoder                │    │        │
│  │  │       └── K,V from [32mencoder_output[0m │    │        │
│  │  │ ln3 → ffn → + residual                  │    │        │
│  │  └─────────────────────────────────────────┘    │        │
│  └─────────────────────────────────────────────────┘        │
│            │                                                │
│            ▼                                                │
│  ┌──────────────────┐                                       │
│  │ [33mLM Head[0m │ → logits [N, seq_len, vocab]           │
│  └────────┬─────────┘                                       │
└─────────────────────────────────────────────────────────────┘
         │
         ▼
[1;32mOUTPUT[0m  tokens [N, seq_len]
