Appearance
概念卡片
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。