這是一篇關於大型語言模型(如 ChatGPT)如何建構的完整導覽,從原始的網路文本到對話式助手。內容基於 Andrej Karpathy 的技術深度解析。
代表性的 2024 年前沿模型數據——確切數字會隨著每次發布而變化。重點在於規模,而非精確度。
第一步是收集大量的文本。像 Common Crawl 這樣的組織自 2007 年以來一直在爬取網路——到 2024 年已索引了 27 億個網頁。然後將這些原始數據過濾成高品質的數據集,例如 FineWeb。
目標:大量高品質、多樣化的文件。經過嚴格過濾後,大約剩下 44 TB 的數據——相當於約 10 個消費級硬碟的文本量——代表約 15 兆個 token。
神經網路無法處理原始文本——它們需要數字。解決方案是 Tokenization:將文本分解成「tokens」(子詞片段)並為每個 token 分配一個 ID。
GPT-4 使用了 100,277 個 tokens 的詞彙表,該詞彙表是透過位元組對編碼(BPE)演算法建立的。BPE 從單個位元組(256 個符號)開始,然後迭代地合併最頻繁的相鄰對——在擴展詞彙表的同時壓縮序列長度。
Transformer 神經網路以隨機參數初始化——數十億個「旋鈕」。訓練會調整這些旋鈕,使網路在預測任何序列中的下一個 token 時變得更好。
每個訓練步驟:取樣一個 token 窗口 → 輸入網路 → 將預測與實際的下一個 token 進行比較 → 將所有參數稍微調整到正確的方向。重複數十億次。
損失——一個衡量預測錯誤的單一數字——隨著模型學習人類語言的統計模式而穩定下降。
選擇一個訓練階段來查看模型的輸出品質
訓練完成後,網路會自迴歸地生成文本:輸入一個 token 序列 → 獲得所有 100K 個可能下一個 token 的機率分佈 → 抽樣一個 → 追加 → 重複。
這個過程是隨機的——相同的提示每次都會產生不同的輸出,因為我們在拋擲一枚有偏差的硬幣。機率較高的 tokens 更可能被選中,但並非必然。
Temperature(溫度)控制隨機性。低溫度(0.1)→ 模型總是選擇機率最高的 token。高溫度(2.0)→ 統一的混亂。0.7–1.0 是連貫但具創意的文本的甜蜜點。
觀察模型如何選擇下一個詞。每個條形顯示候選 token 的機率。
預訓練後,你就得到了一個基礎模型——一個複雜的自動完成引擎。它不是一個助手。它不回答問題。它根據在網路上看到的内容來延續 token 序列。
給它一個維基百科句子,它會從記憶中完成它。問它「2+2 是多少?」它可能會給你一篇數學教科書頁面、一個測驗答案鑰匙,或者離題萬里——任何在其訓練數據中統計上常見的內容。
基礎模型的知識存在於其 4050 億個參數中——這是對網路的一種有損壓縮,就像一個近似而非完美儲存資訊的 zip 文件一樣。
基礎模型是一個 token 模擬器。要將其轉變為一個有用的助手,我們需要後訓練——一個便宜得多但同樣關鍵的階段。這是模型學習對話的地方。
人類標籤員根據詳細的標籤說明創建一個理想對話的數據集:要樂於助人、要誠實、要無害。然後,模型會在這些對話上進行訓練——不是從頭開始,而是透過在新數據上繼續調整預訓練的權重。
現代 SFT 數據集(如 UltraChat)包含數百萬個對話——大部分是合成的(由 LLM 生成),並經過人類審核。模型透過模仿來學習:它採用數據中反映的理想助手的角色。
每次對話都必須編碼為一個平坦的 token 序列。特殊 tokens 標記結構:
然後 RLHF 進一步完善助手的行為:
人類評級員對多個模型回應進行排名。一個獎勵模型學習預測人類偏好。然後,語言模型透過強化學習進行訓練,以生成獎勵模型評分高的回應。
理解 LLM 的行為方式需要思考它們的心理學——被訓練來統計模仿人類文本所產生的湧現屬性。
LLM 有知識截止日期和有限的上下文窗口。RAG 透過將你的文件嵌入到向量儲存中,在查詢時檢索最語義相關的片段,並將其注入到上下文中來解決這個問題——將模型的預測分佈轉向基於事實的、最新的資訊,而不是記憶中的訓練數據。
每個文件都由一個嵌入模型轉換為一個密集向量(約 1,536 個數字)。語義上相似的文本在這個高維空間中彼此靠近——無需關鍵字匹配。
用戶的問題也以相同的方式進行嵌入。餘弦相似度找到最近的文件向量——與查詢語義上最相關的片段——通常是前 2-5 個。
檢索到的片段在 LLM 看到問題之前被預先添加到提示中。模型從注入的事實生成內容,而不是依賴記憶中的訓練數據——大大減少了在知識密集型任務上的幻覺。
使 LLM 強大的相同屬性——遵循指令、完成模式、根據上下文行動——也創造了新的攻擊面。在這種新的計算範式中,攻擊與防禦之間的貓鼠遊戲正在上演。
從原始網路爬取到你互動的 ChatGPT 的完整旅程——跨越兩個主要階段、數月的計算和數十億個參數。
LLM 不僅僅是一個聊天機器人——它是正在興起的作業系統的核心進程。它透過自然語言協調記憶、計算和工具。
基於 Andrej Karpathy 的「大型語言模型導論」講座構建——所有事實、數據和框架都追溯到該來源。互動式視覺化由 AI 輔助構建。最重要的收穫:生成的每個詞都是一個機率樣本——一個有偏差的硬幣拋擲,以 100K 維度規模,重複數十億次。
這篇文章發布在 Hacker News 上,引發了關於其是否由 LLM 生成的激烈辯論。這是一個合理的觀察——實現過程是 AI 輔助的。但內容不是 AI 的:本指南中的每個聲明、數據和框架都直接來自 Karpathy 的講座,而不是來自模型對 LLM 的幻覺。
HN 討論 · GitHub · 完整講座記錄 · HN 更新說明 · LLM 委員會報告 · v1(原始) · 第二部分:如何使用 LLM →