現代 AI 模型架構導讀

A Visual Guide to Frontier Model Architectures

← → 方向鍵切換章節 · 點下方圓點快速跳轉 ↓

課程地圖

Lesson 1

影像生成的革命

  • Diffusion (DDPM)
  • DETR
  • DiT / Sora

Lesson 2

影像理解的進化

  • SAM / SAM 2
  • VLM (LLaVA, Qwen-VL)

Lesson 3

LLM 的效率革命

  • MoE
  • Mamba / SSM
  • RoPE & FlashAttention

Lesson 4

聲音 + 全局視野

  • Whisper
  • SeamlessM4T
  • Audio-LLM
  • Scaling Law
  • Multimodality
⚗ 暖身互動

AI 如何「選字」?— Softmax 溫度

語言模型每跨出一步,都會在所有候選的下一個字之間做機率分配溫度 temperature把 logits 除以 T 再做 softmax。T→0 幾乎只挑最高分(貪婪);T 越大分布越平坦,輸出越隨機、越有創意。 控制它有多「大膽」。拖動滑桿,看看同一組分數如何變成不同的選字傾向:

T 低 → 保守(幾乎只選最高分);T 高 → 有創意(分布更平均)

1 影像生成的革命

Topic 1:Diffusion Model (DDPM) — 從噪聲長出圖像

💡 直覺
想像你拿一張清晰的照片,往上面慢慢撒鹽巴,撒了一千次之後,整張照片變成純粹的雜訊。Diffusion 在做的事情,就是「學會把這個過程倒帶回去」。

Forward Process(加噪)

每一步加一點高斯噪聲,經過 $T=1000$ 步後,任何圖片都會變成純噪聲:

$$x_t = \sqrt{\bar\alpha_t} \cdot x_0 + \sqrt{1 - \bar\alpha_t} \cdot \varepsilon, \quad \varepsilon \sim \mathcal{N}(0, I)$$

其中 $\bar\alpha_t = \prod_{s=1}^{t} \alpha_s$ 是累積保留率。$t$ 越大,原始訊號越少,噪聲越多。

Reverse Process(去噪)

訓練一個神經網路 $\varepsilon_\theta(x_t, t)$ 來預測加在圖片上的噪聲:

$$\mathcal{L} = \mathbb{E}_{t, x_0, \varepsilon}\left[ \|\varepsilon - \varepsilon_\theta(x_t, t)\|^2 \right]$$

就是個簡單的 MSE loss!模型學會了「看到 $t$ 時刻的雜訊圖,預測裡面藏的噪聲是什麼」。

架構:U-Net

DDPM 使用 U-Net 作為去噪網路。U-Net 是 Encoder-Decoder 結構加上 skip connectionsEncoder 壓縮圖片時會丟掉高頻細節(邊緣、紋理)。Skip connection 直接把 Encoder 各層的高頻資訊「捷徑」傳給 Decoder 對應的層,確保細節不遺失。

時間步 $t$ 透過 sinusoidal embeddingemb(t) = [sin(t/10000^(0/d)), cos(t/10000^(0/d)), ...] 跟 Transformer 的 positional encoding 一樣的公式,經過兩層 MLP 後加進 U-Net 每一層。 注入網路。

為什麼 Diffusion 能打敗 GAN?
  • 沒有 mode collapse:GAN 的 Generator 可能只學會生成少數幾種「看起來真」的圖,Diffusion 不會。
  • 訓練穩定:不需要平衡 Generator 和 Discriminator,只需最小化 MSE。
  • 多樣性高:每次從不同的隨機噪聲出發,結果都不同。
Classifier-Free Guidance (CFG)

同時訓練有條件和無條件的去噪,推理時混合兩者:

$$\varepsilon_{\text{guided}} = \varepsilon_{\text{uncond}} + w \cdot (\varepsilon_{\text{cond}} - \varepsilon_{\text{uncond}})$$

$w=1$ 正常生成,$w=7.5$ 是 Stable Diffusion 的預設值。

變體比較

模型改進效果
DDIM非 Markov 過程,可以跳步1000 步壓到 50 步,速度提升 20 倍
Latent Diffusion先用 VAE 壓縮到 latent space256×256×3 → 32×32×4,運算省 48 倍
⚗ 動手玩

Diffusion Canvas

拖動滑桿觀察噪聲如何覆蓋一隻像素貓。$t=0$ 是原始圖,$t=1000$ 是純噪聲。

點擊畫布可更換噪聲種子

📝 作業

Homework 1

diffusers 載入 stable-diffusion-v1-5,印出 $t=0, 250, 500, 750, 999$ 的雜訊圖。

from diffusers import DDPMScheduler
import torch

scheduler = DDPMScheduler(num_train_timesteps=1000)
for t in [0, 250, 500, 750, 999]:
    noise = torch.randn_like(x0)
    x_t = scheduler.add_noise(x0, noise, torch.tensor([t]))

Q: Diffusion Model 的訓練 loss 是什麼?

Topic 2:DETR — 偵測 = 集合預測

💡 直覺
傳統物件偵測需要 anchor boxes + NMS 後處理,非常複雜。DETR 用 Transformer 做端到端偵測:輸入圖片,直接輸出所有物體的類別和位置。

架構

CNN Backbone → Transformer Encoder → Decoder(含 100 個 Object Queries100 個可學習向量。每個 query 透過 cross-attention 問 image features「你在哪裡?你是什麼?」,並透過 self-attention 跟其他 query 互相協調。)→ FFN heads → N 組 (class, bbox)

Object Queries 的具體運作方式

100 個 query 每個都是 256 維的隨機初始化向量。訓練後:query #1 可能「負責」偵測圖片中央的大物體,query #47 可能專門找右下角的小物體。

透過 cross-attention 去「查看」image features,再透過 self-attention 互相協調。

Bipartite Matching(匈牙利匹配)

100 個預測要跟真實物體配對。用 Hungarian AlgorithmO(n³) 複雜度的最佳化演算法。把 100 個預測和真值做一對一最佳配對。 找到 cost 最低的一對一配對。

為什麼不用 NMS?

NMS 有幾個問題:

  • 不可微分,無法端到端訓練
  • 有手調超參(IoU threshold)
  • 在密集物體時容易誤殺

Hungarian matching 保證每個 GT 恰好配對一個 prediction。

⚗ 動手玩

Hungarian Matching 視覺化

左邊是模型預測,右邊是 Ground Truth。連線顯示最佳配對結果。

📝 作業

Homework 2

使用 scipy.optimize.linear_sum_assignment 實作簡易 Hungarian matching。

Topic 3:DiT — Sora 背後的 Transformer

💡 直覺
U-Net 不太 scale。Transformer 有 proven scaling laws — 加大就會變強。那為什麼不把 Diffusion 的骨幹從 U-Net 換成 Transformer?

架構

Latent (32×32×4) → Patchify把 latent map 切成 P×P 的 patch,每個 patch 攤平成一個 token。P=2 時,32×32 → 16×16 = 256 個 tokens。 (P=2) → 256 tokens → + Positional Embedding → Transformer Block × N → Predicted noise

adaLN-Zero

DiT 用 adaLN-ZeroCondition(時間步 + class label)生成 γ, β, α 來控制 LayerNorm。Zero-init 讓初始狀態等同 identity mapping。 將條件資訊注入 Transformer。

從 DiT 到 Sora

  • 2D patches → 3D spacetime patches
  • Spatial VAE → Spatial-Temporal VAE
  • 2D positional encoding → 3D positional encoding
  • 支援任意長度、解析度的影片生成
⚗ 動手玩

Patchify 滑桿

調整 patch size,觀察 token 數和 attention cost 如何變化。

Patch 2×2 → Token count: 256 → Attention cost: O(65,536)

📝 作業

Homework 3

實作 patchify 函式:輸入 (B, C, H, W) tensor 和 patch_size P,輸出 (B, N, P²C) 的 token 序列。

Q: DiT 相比 U-Net 的主要優勢是什麼?

2 影像理解的進化

Topic 4:SAM / SAM 2 — 可提示分割之王

💡 直覺
一個基底模型,使用者透過「提示」(點、框、文字)告訴它要分割什麼。就像 GPT 用 prompt 控制輸出,SAM 用 visual prompt 控制分割。

架構

  • Image Encoder:ViT-H,632M 參數,~0.15s(只需跑一次)
  • Prompt Encoder:編碼點、框、mask、文字等各種提示
  • Mask Decoder:4M 參數,~10ms → 即時互動

每次預測輸出 3 個候選 masks,對應不同粒度。

訓練資料:SA-1B

11M 張圖片,1.1B 個 masks。史上最大的分割資料集。

SAM 2:影片版

  • Memory Encoder:把過去幀的預測結果編碼
  • Memory Bank:儲存最近 N 幀的記憶
  • Memory Attention:當前幀可以 attend 過去幀
Hiera vs ViT-H

SAM 2 改用 Hiera(分層式 ViT),比 ViT-H 更快更小。

遮擋恢復機制

當物體被遮擋時,Memory Attention 可以跨過遮擋幀,直接 attend 到遮擋前的特徵。

⚗ 動手玩

SAM 模擬器

點擊場景中的物體,觀察 SAM 如何即時生成分割遮罩。

點擊物體來分割 · Mask Decoder: ~10ms

📝 作業

Homework 4

segment-anything 套件載入 SAM ViT-B,對一張圖片分別用「點」和「框」做提示。

Topic 5:VLM — 讓 LLM 長出眼睛

💡 核心問題

如何把 visual embeddings 連接到 LLM 的 token space?三種主要方法:

方法 1:MLP 投影 (LLaVA)

CLIP ViT-L/14 → 576 個 image tokens → MLP Projector(2 層 FC + GELU)→ LLM 空間

兩階段訓練

  1. Pre-training:凍結 ViT + LLM,只訓練 MLP projector
  2. Instruction tuning:解凍 LLM + MLP,微調回答能力

方法 2:Cross-Attention (Qwen-VL)

256 個可學習 query → Cross-Attention → 256 個壓縮後 visual tokens → LLM

想像圖書館比喻:256 個筆記格去書架找最相關的書來做摘要。

方法 3:原生多模態 (GPT-4o, Gemini)

所有模態從頭一起訓練,混在一起做 next-token prediction。

方法代表優點缺點
MLP 投影LLaVA簡單易訓練吃 context window(576 tokens/圖)
Cross-AttentionQwen-VLtoken 數可控(256)訓練更複雜
原生統一Gemini端到端,最完整計算量極大
⚗ 動手玩

VLM 架構切換器

📝 作業

Homework 5

使用 transformers 載入 LLaVA-1.5-7B,輸入一張圖片問「描述這張圖片」。

3 LLM 的效率革命

Topic 6:MoE — 稀疏激活的專家系統

💡 直覺
不要每次都叫所有人上工,只叫「相關的專家」就好。Mixtral 8×7B:8 個專家中每次啟動 2 個。總參數 47B,但每個 token 只跑 13B。

架構

Self-Attention(共享)→ Router一個 linear layer + softmax,輸入 token embedding,輸出每個 expert 的機率。選 top-2 expert 加權求和。(linear + softmax)→ top-2 Experts(各是一個 FFN)→ 加權求和輸出

挑戰

  • Load Balancing:加入 auxiliary loss $\mathcal{L}_{aux} = N \cdot \sum_i f_i \cdot p_i$
  • Memory:47B × 2 bytes = 94 GB
  • Communication:Expert Parallelism,不同 expert 放不同 GPU
參數計算

Mixtral 8×7B:每個 expert ~5.6B,8 個 = 44.8B + attention ~2B = 46.7B 總參數。每 token 只經過 2 個 expert + attention = ~13B active params。

DeepSeek V3:256 experts,每 token 啟動 8 個。

⚗ 動手玩

MoE Token Routing

每個 token 下方的色點代表被分配到的 2 個 expert

⚗ Load Balance

MoE Load Balance 模擬器

8 個 expert 的使用率。點「Route batch」隨機路由一批 tokens,觀察 load balance。

點擊 Route batch 開始模擬

📝 作業

Homework 6

實作一個簡易 Router:輸入 (batch, seq_len, d_model),輸出 top-2 expert indices 和 weights。加入 load balancing loss。

Q: MoE 架構中 auxiliary loss 的目的是什麼?

Topic 7:Mamba / SSM — 挑戰 Transformer 的線性架構

💡 痛點
Transformer 的 self-attention 是 O(n²) 的計算量和記憶體。序列長度翻倍,成本就翻四倍。能不能做到 O(n)?

State Space Model (SSM)

連續形式:

$$h'(t) = Ah(t) + Bx(t), \quad y(t) = Ch(t)$$

離散化後(ZOH):

$$h_t = \bar{A} h_{t-1} + \bar{B} x_t, \quad y_t = C h_t$$

關鍵洞見

訓練時像 CNN(平行計算):可轉成 convolution kernel。

推理時像 RNN(線性時間):O(1) per step。

Mamba 的 Selective Scan

原始 SSM 的 A, B, C 是固定的。Mamba 讓 $B, C, \Delta$ 都依賴輸入

  • $\Delta$ 大 → 遺忘多舊 state,寫入多新資訊
  • $\Delta$ 小 → 保留舊 state,忽略當前輸入
Selective Scan 的直覺解釋

想像你在聽一場演講,大腦會自動過濾掉填充詞,但關鍵結論會特別記住。Mamba 的 Selective Scan 做同一件事。

為什麼 Mamba 檢索能力弱於 Transformer?

Transformer:透過 attention 直接「翻到」KV cache 中任意位置。

Mamba:只有固定大小的 state,100 頁全壓縮在一頁筆記裡。

Transformer

  • O(n²) 計算
  • 精確檢索任意位置
  • KV Cache 隨序列增長
VS

Mamba

  • O(n) 計算
  • 有損壓縮成固定 state
  • 固定大小的 state

當前趨勢:Hybrid 架構。Jamba = 80% Mamba + 20% Attention。

⚗ 動手玩

SSM State Viewer

輸入文字,觀察 hidden state(8 維)如何隨 token 輸入而更新。

輸入文字後觀察 state 如何變化

⚗ 複雜度

複雜度比較圖

32k
📝 作業

Homework 7

實作最簡單的 SSM:A=-1, B=1, C=1,逐步計算 output。畫出 hidden state 隨時間的變化。

Topic 8:RoPE & FlashAttention — 長文本的兩大支柱

RoPE(旋轉位置編碼)

核心觀念

把 query 和 key 向量切成 2 維一組,每組在複平面上旋轉 $m\theta$ 角度:

$$q_m \cdot k_n = q^T R_{n-m} k$$

內積只依賴相對位置 $(n-m)$!

頻率組:高頻捕捉短距離關係,低頻捕捉長距離關係。

外推方法:從 4K 擴展到 128K+
  • NTK Scaling:增大 base frequency
  • YaRN:高頻維度不變,低頻維度做 NTK scaling

FlashAttention

核心觀念

問題不在計算量,在記憶體搬運(IO):

  • SRAM:20 MB,19 TB/s(超快但超小)
  • HBM:40 GB,1.5 TB/s(大但慢)

標準 attention 要把 n×n matrix 寫到 HBM,IO 是計算的 12 倍瓶頸。

解法:Tiling + Online Softmax

  • 把 Q, K, V 切成小塊 tiles,每塊載入 SRAM 運算
  • 用 online softmax,邊算邊累積,不需寫完整 n×n matrix
  • 結果是 exact,2-4x speedup,O(n) memory
⚗ 動手玩

Attention Heatmap 模擬器

Hover 一個 token,觀察它對其他 token 的 attention 強度(越深色 = 越高 attention)。

將滑鼠移到任一 token 上

⚗ Memory

FlashAttention Memory 比較

調整序列長度,比較 Standard Attention vs FlashAttention 的 HBM 使用量。

Standard Attention
0 MB
FlashAttention
0 MB
2048

Standard: O(n²) HBM | Flash: O(n) HBM

⚗ RoPE

RoPE 旋轉視覺化

0

角度 = 0 × θ = 0°

📝 作業

Homework 8

實作 RoPE:給定 d_model=64, 位置 m,計算旋轉後的 query 向量。驗證 $q_m \cdot k_n$ 只跟 $|m-n|$ 有關。

Q: FlashAttention 為什麼能加速?

4 聲音的世界 + 全局視野

Topic 9:Whisper — ASR 的業界標準

💡 為何強大
68 萬小時弱監督資料。不靠精心標註,而是靠海量的「大概對」的網路字幕。量變造成質變。

架構

30s 音訊 chunks → Log-Mel Spectrogram(80 mel × 3000 frames)→ 2 層 Conv1D(stride=2 → 1500 frames)→ Encoder Transformer → Decoder(帶 special tokens)

多任務 Special Tokens

<|startoftranscript|><|en|><|transcribe|><|notimestamps|> Hello world...

同一個模型可以做:語音辨識、翻譯、語言偵測、時間戳記對齊。

Large-v3 改進

  • 128 mel bins(v2 是 80)
  • 1M 小時人工標註 + 4M 小時 pseudo-labeled

限制

  • 30 秒切段
  • 不辨認情緒、不做說話者辨識
  • 延遲較高(非 streaming)

Topic 10:SeamlessM4T — 統一語音與翻譯

5 大任務

一個模型搞定:ASR、S2TT、T2TT、T2ST、S2ST

UnitY 架構

w2v-BERT encoder + NLLB encoder → 共享語意空間 → Text Decoder + T2U + HiFi-GAN vocoder

離散語音單元

HuBERT / w2v-BERT → k-means 聚類 → 離散語音 token

把連續的音訊波形轉成離散的「語音字母」,就能像處理文字一樣處理語音。

Topic 11:Audio-LLM (GPT-4o)

舊版語音模式

Whisper(語音→文字)→ GPT-4(文字→文字)→ TTS(文字→語音)

延遲:2.8 - 5.4 秒。中間轉文字時,丟失了所有聲音特徵

GPT-4o:原生語音

單一 Transformer,所有模態都是 tokens,端到端處理。延遲:232 - 320 ms

為什麼端到端重要?

保留 paralinguistic features語言之外的聲音特徵:音高、節奏、能量、語氣、停頓。轉成文字時會完全丟失。:音高、節奏、能量。可以唱歌、模仿口音、表達情緒。

開源替代

  • Mini-Omni:端到端語音對話
  • Qwen2-Audio:30+ 種音訊理解任務

Topic 12:Google Chirp 3

USM(Universal Speech Model)

2B 參數,self-supervised pretrain + small-data fine-tune 策略。

特色功能

  • Speaker Diarization
  • Language Detection
  • Denoising
  • 31 種語言的 TTS

三大公司比較

公司模型核心策略
OpenAIWhisper + GPT-4o弱監督 → 原生多模態
MetaSeamlessM4T統一架構,多任務一體
GoogleChirp 3 / USMSelf-supervised pretrain

Topic 13:Scaling Law — 為什麼變大就會變聰明

核心公式

Kaplan et al. 2020

$$L(N, D, C) = a \cdot N^{-\alpha} + b \cdot D^{-\beta} + L_\infty$$

$\alpha \approx 0.076$,$\beta \approx 0.095$,$C \approx 6ND$

Loss 隨模型大小 N 和資料量 D 呈冪律下降。

Power Law 的具體數字

參數量每增加 10×,loss 下降約 16%。這個 power law 跨了 6 個數量級都成立。

C ≈ 6ND:forward ≈ 2ND,backward ≈ 4ND,總共 ≈ 6ND FLOPs。

為什麼工業界選擇 overtrain?

70B 模型每次推理需 ~140GB、~80ms。8B 只需 ~16GB、~15ms。即使多花 10× 訓練成本,部署幾個月就回本。

Chinchilla (2022):最佳配比

N 和 D 應等比例增長。最佳:~20 tokens/param

GPT-3 欠訓練了! 175B × 300B = 1.7 tokens/param。Chinchilla:70B × 1.4T = 20 tokens/param。

Overtraining 時代

Llama 3-8B:15T tokens = 1875 tokens/param。推理時省成本。

三種 Scaling

類型代表做法
Pretrain ScalingKaplan / Chinchilla加大 N 和 D
Inference Scalingo1 / R1推理時 CoT thinking
Data ScalingPhi-3Synthetic data
⚗ 動手玩

Scaling Law 計算器

Loss ≈ 2.85 | Chinchilla ratio: 20 tokens/param ✓

Q: Chinchilla optimal 的 tokens/param 比例大約是多少?

Topic 14:Multimodality — 把眼睛、耳朵掛到大腦上

三代架構

世代方式代表特點
第一代CascadeWhisper→GPT→TTS各模組獨立,會丟資訊
第二代Bolted-onLLaVA, Qwen-VL用 projector 把視覺掛上 LLM
第三代NativeGPT-4o, Gemini所有模態 token 混合訓練

5 種接入方法

  1. MLP Projector(LLaVA)
  2. Cross-Attention Resampler(Qwen-VL)
  3. Perceiver(Flamingo)
  4. Gated Cross-Attention(Flamingo)
  5. Native Tokens(GPT-4o)

未來方向

  • Any-to-any modality
  • Streaming:即時處理
  • World Models:理解物理世界因果
課程總結

架構積木組合圖

Diffusion Transformer MoE SSM/Mamba RoPE FlashAttn DiT / Sora GPT-4o Llama 3 Jamba

5 個關鍵概念

  1. 任何任務都可以重寫成「序列預測」 — Transformer 是最強的序列預測引擎。
  2. Scaling 是真正的 SOTA — 架構創新只能領先 6 個月。
  3. 模組化 = 可組合 — 現代 AI 模型是樂高,自由拆裝。
  4. 效率不是 nice-to-have,是 must-have — FlashAttention、MoE、Mamba。
  5. 多模態是必然的方向 — 所有模態最終會統一在一個模型中。

延伸閱讀

  1. DDPM — Ho et al. 2020
  2. DETR — Carion et al. 2020
  3. DiT — Peebles & Xie 2022
  4. SAM — Kirillov et al. 2023 → SAM 2 — Ravi et al. 2024
  5. LLaVA — Liu et al. 2023 → Qwen2-VL — Wang et al. 2024
  6. Mixtral — Jiang et al. 2024
  7. Mamba — Gu & Dao 2023
  8. FlashAttention — Dao et al. 2022
  9. RoFormer / RoPE — Su et al. 2021
  10. Whisper — Radford et al. 2022
  11. Chinchilla — Hoffmann et al. 2022
把這些架構當成你工具箱裡的工具。你不需要全部精通,但下次看到新論文時,你能說出「啊,這就是 DiT + MoE + RoPE 的組合」。那就夠了。