從小 GPT 到大模型
我們的小 GPT 會寫詩,卻不會回答問題。從它到一個能對話的大模型,中間隔著規模、預訓練、指令微調和偏好對齊。這一課用論文裡的真實數字,把每一步講清楚。
- 約 30 分鐘
- 難度:進階
- 實測:2026-09-15 數字均引自論文摘要,標註了出處
程式碼和執行結果保留原樣(簡體中文),與實際執行時完全一致。
我們的小 GPT 能寫出"江山古館響幽幽,山鳥無人見白頭"這樣的句子。可你要是問它"床前明月光的下一句是什麼",它只會接著這幾個字往下寫一首詩,因為它只會做一件事:接著往下寫。
DeepSeek、ChatGPT 的底子也是同樣的結構,卻能回答問題、寫程式碼、按要求改文章。中間差了什麼?這一課不寫程式碼,把這段路分成幾步講清楚。
第一步:規模
先對比一下數字(大模型的數字引自論文摘要):
参数 训练数据
我们的小 GPT 161 万 155 万个字符,训练了约 8 遍
GPT-3(2020) 1750 亿 (论文正文给出了数据量,这里不展开)
DeepSeek-V3(2024) 6710 亿, 14.8 万亿个词元
每个词元用 370 亿
DeepSeek-V3 的參數是我們的四十多萬倍,訓練資料大約是一千萬倍。它的完整訓練用了 278.8 萬個 H800 GPU 小時。我們的模型在一個 CPU 上訓練了 7 分鐘。
規模帶來的不只是"寫得更好"。GPT-3 的論文(《Language Models are Few-Shot Learners》)發現:模型足夠大之後,不用專門訓練,只要在提示詞裡給幾個例子,它就能完成翻譯、問答、算術這些任務。這就是第 02 模組第 2 課的少樣本提示,它能工作,是規模帶來的。
多大算夠?2022 年 DeepMind 的 Chinchilla 論文研究了這個問題。結論是:在算力一定的情況下,模型的參數和訓練資料應該同比例增長。他們訓練了一個 700 億參數的模型,用了 4 倍的資料,結果全面超過了 2800 億參數的 Gopher 和 1750 億參數的 GPT-3。之前的很多大模型,是"模型太大、資料太少"。
我們在第 08 模組第 6 課也看到了類似的事:資料從 100 張圖增加到 898 張,效果的提升遠超任何其他技巧。
第二步:預訓練
我們在唐詩上做的事,就叫預訓練:拿大量的文字,讓模型一個詞元一個詞元地預測下去。真實的預訓練用的是網頁、書籍、程式碼、論文等等各種文字,經過大量的清洗和去重。
預訓練結束後,得到的叫基座模型(base model)。它從海量文字裡學到了語言、知識,以及一定的推理能力,但它的行為仍然只是"接著往下寫"。你給它一個問題,它可能接著寫更多的問題,因為網頁上一個問題後面常常跟著另一個問題。
這就是我們的小 GPT 現在的狀態,只是它只讀過唐詩。
第三步:指令微調
要讓模型"回答"而不是"續寫",就要教它對話的格式。做法很直接:準備大量"問題 → 好的回答"的例子,接著訓練。
<用户>床前明月光的下一句是什么?
<助手>疑是地上霜。出自李白的《静夜思》。
訓練的方法和預訓練完全一樣,還是預測下一個詞元,只是資料換成了這種對話,而且通常只在"助手"那部分計算損失。這一步叫指令微調,也叫監督微調(Supervised Fine-Tuning,SFT)。
指令微調的資料比預訓練少得多,但質量要求很高。模型的知識主要來自預訓練,指令微調教的是"怎麼用這些知識來回應人"。
第 10 模組會親手做一次微調。
第四步:偏好對齊
指令微調之後,模型會回答問題了,但回答的質量參差不齊:有時囉嗦,有時編造,有時有害。
"好的回答"很難全部寫成例子,但人很容易比較兩個回答哪個更好。於是有了第四步:讓模型對同一個問題生成幾個回答,由人來排序,再用這些排序去訓練模型,讓它更傾向於寫出人喜歡的回答。這一步叫對齊(alignment),最早廣為人知的方法是基於人類反饋的強化學習(RLHF)。
它的效果有多大?OpenAI 在 2022 年的論文裡(《Training language models to follow instructions with human feedback》)報告:經過指令微調和人類反饋訓練的 13 億參數的 InstructGPT,在人工評價中比 1750 億參數的 GPT-3 更受歡迎,參數少了 100 倍。ChatGPT 就是沿著這條路做出來的。
大模型"會聊天",主要靠的是後面這兩步;它"懂得多",主要靠的是第一步。
第五步:用強化學習練推理
2025 年的 DeepSeek-R1 論文(《DeepSeek-R1: Incentivizing Reasoning Capability in LLMs via Reinforcement Learning》)又往前走了一步。它的做法是:給模型出數學題、程式設計題這類答案可以自動檢查的題目,答對了就獎勵,答錯了就不獎勵,用強化學習反覆訓練。
論文報告,只靠這種獎勵,不需要人寫好的解題過程,模型就自己發展出了反思、驗證、換一種思路之類的推理方式。第 01 模組裡提到的"思考模式",模型先輸出一段推理再給答案,就是這類訓練的產物。
我們的小 GPT 還差什麼
回頭看我們的 GPT,它做完了第二步,只是規模小得多、資料只有唐詩。按照這一課的步驟,想讓它變得更像一個"助手",還需要:
- 更多、更多樣的資料:只讀唐詩,它就只會寫唐詩。
- 更大的模型:161 萬個參數裝不下多少知識。
- 指令微調和對齊:讓它學會按要求回應,而不是一味地往下寫。
另外還有大量工程上的問題:怎麼在幾千張 GPU 上同時訓練,怎麼讓訓練過程幾個月不出故障,怎麼清洗十幾萬億個詞元的資料。這些超出了這門課的範圍。但是模型本身,你已經親手搭過了。
練習
- 找一個開源模型的模型卡片(比如 Hugging Face 上的 Qwen 或 DeepSeek 模型),找出它的參數量、訓練資料量,並看看它區分了哪些版本(基座、指令、推理等)。
- 如果你能訪問一個基座模型(很多開源模型都同時釋出了基座版本),給它和對應的指令版本發同一個問題,比較它們的回答。
- 按 Chinchilla 論文的結論,模型參數翻倍時訓練資料也應該翻倍。我們的小 GPT 如果參數增加 10 倍,你覺得只用這 3.5 萬首詩還夠嗎?可以試著訓練一下,看看驗證損失。
自測
1. 基座模型和指令模型有什麼不同?
基座模型只經過預訓練,行為是根據前文接著往下寫,給它一個問題,它不一定會回答。指令模型在基座模型之上,用大量"問題 → 回答"的對話資料做了微調,學會了按對話的格式回應使用者。
2. 指令微調和預訓練的訓練方法有什麼區別?
方法基本一樣,都是預測下一個詞元、用交叉熵作損失。區別在資料:預訓練用海量的普通文字,指令微呼叫數量少得多但質量很高的對話資料,而且通常只在回答的部分計算損失。
3. InstructGPT 的實驗說明了什麼?
13 億參數的 InstructGPT,經過指令微調和人類反饋訓練後,在人工評價中比 1750 億參數的 GPT-3 更受歡迎。說明對"好不好用"來說,訓練的方法和資料有時比模型的規模更重要。