Skip to content

概念卡片

Pre-training(預訓練)

LLM 訓練的第一階段。在大量無標註文字上進行 autoregressive language modeling 任務(預測下一個 token)。nanochat 的 base_train.py 使用 ClimbMix-400B 資料集和 cross-entropy loss。

SFT(Supervised Fine-Tuning)

監督式微調。在已 instruction-tuned 的對話資料上繼續訓練,讓模型學會遵循指令和進行對話。nanochat 的 chat_sft.py 混合 SmolTalk、MMLU、GSM8K 等多種資料來源。

DPO / RL(Reinforcement Learning)

強化學習階段。透過獎勵信號(如 GSM8K 答案正確性)進一步優化模型。nanochat 的 chat_rl.py 實作簡化版 GRPO(無 KL 正則化、無 PPO clip)。

RLHF(Reinforcement Learning from Human Feedback)

從人類回饋中學習的強化學習。傳統 RLHF 需要訓練 reward model,nanochat 的簡化版本直接使用 task reward(如答案是否正確)。

Tokenizer

將文字轉換為 token ID 序列的工具。nanochat 使用 GPT-4 風格的 BPE tokenizer(詞彙量 32K),支援特殊 tokens 來標記對話結構和工具使用。

Chat Template

將結構化對話(user/assistant 輪流訊息)轉換為 tokens 序列的格式。nanochat 使用 <|user_start|><|assistant_start|> 等特殊 tokens 劃分角色,並用 mask 區分訓練目標。

GQA(Group-Query Attention)

注意力機制的變體,多個 query head 共享同一組 key/value head,在推論時減少 KV cache 大小。

Rotary Embedding(RoPE)

一種相對位置編碼,透過旋轉矩陣將位置資訊編入 query 和 key 向量中。無需學習參數,支援序列長度外推。

Flash Attention 3

NVIDIA Hopper GPU 上的高效 attention 實作,透過 tiling 和 async 機制大幅減少 memory reads/writes,並原生支援 KV cache 管理。

Muon Optimizer

結合 SGD-momentum 與正交化步驟的優化器。每次更新前先對梯度矩陣做 Polar Express 近似 SVD,得到「最接近的正交矩陣」作為更新方向。

Scaling Laws

描述模型大小、資料量和計算量之間冪律關係的經驗法則。nanochat 利用這些法則自動計算最佳 batch size、learning rate 和訓練步數。

MFU(Model FLOPS Utilization)

實際計算量與理論峰值計算量的比值,衡量 GPU 利用效率。nanochat 記錄 bf16_mfu 作為訓練效率指標。

BOS-aligned Best-fit Packing

資料打包策略:每個訓練序列以 BOS token 開頭,用 best-fit 演算法從 buffer 中挑選最適合的文件來填滿上下文。減少「混淆性」token 的數量。

Sliding Window Attention

每個 token 只關注固定視窗內的 token(而非全部上下文)。nanochat 支援 SSL 等交替模式,部分層用長上下文、部分層用短上下文。

CORE Metric

DCLM 論文定義的綜合評估指標,透過多項任務(MC、Schema、LM)的加權平均分數衡量 base model 能力。GPT-2 的基準值為 0.256525。