言模型底層原理全解析:從Token生成到智能體演進(jìn)】流食般投喂)
大語(yǔ)言模型底層原理全解析從Token生成到智能體演進(jìn)當(dāng)我們熟練地調(diào)用 ChatGPT、DeepSeek 或千問(wèn)的 API 時(shí)可曾想過(guò)模型背后并非“思考”而是在進(jìn)行一場(chǎng)精密且瘋狂的數(shù)學(xué)運(yùn)算這一系列課堂筆記將帶大家穿透黑盒看清 LLM 從“說(shuō)第一個(gè)字”到“進(jìn)化為機(jī)器人”的完整旅程。一、核心工作原理一場(chǎng)“滾雪球”式的概率游戲大語(yǔ)言模型LLM interaction 的流程可以極度簡(jiǎn)化為三段式Prompt → LLM → Token。用戶輸入的指令叫做提示詞Prompt。比如問(wèn)“什么是大語(yǔ)言模型”這句話就是 Prompt。模型拿到后并不會(huì)直接“理解”這句話而是做一道數(shù)學(xué)題基于當(dāng)前詞表計(jì)算下一個(gè)最應(yīng)該出現(xiàn)的詞元Token。1.1 Token 的本質(zhì)“詞”而非“字”這里老師特別強(qiáng)調(diào)了一個(gè)易錯(cuò)點(diǎn)模型生成的最小單位是Token詞元/代幣它通常是一個(gè)詞而非單個(gè)漢字。例如“我愛(ài)北京天安門(mén)”中每個(gè)詞可能對(duì)應(yīng)一個(gè)或多個(gè) Token“西紅柿炒雞蛋”里“西紅柿”“炒”“雞蛋”各自可能是獨(dú)立的 Token。老師用“這件衣服很漂亮”與“這件衣服很帥氣”舉例說(shuō)明模型會(huì)根據(jù)上文計(jì)算概率為后續(xù)拼接不同的詞語(yǔ)。1.2 自回歸生成像滾雪球一樣循環(huán)模型的工作方式是自回歸Auto-regressive用老師的話說(shuō)就是“滾雪球”。以“中國(guó)的首都是哪里”為例課堂上的推演非常經(jīng)典模型一通概率計(jì)算發(fā)現(xiàn)下一個(gè)概率最高的 Token 是“北”但它不會(huì)停而是把“中國(guó)的首都是哪里 北”作為新的輸入再次喂給自己模型繼續(xù)算得出下一個(gè)高概率 Token 是“京”再把“中國(guó)的首都是哪里 北京”拼回去模型判斷句子完整于是輸出句號(hào)或特殊的EOSEnd of Sentence結(jié)束標(biāo)記最終整段回答是由這一個(gè)個(gè) Token 依次拼接而成的。老師形象地說(shuō)道這個(gè)過(guò)程如同滾雪球上一步生成的內(nèi)容會(huì)反饋回模型成為生成下一步的語(yǔ)境。1.3 Token 的選擇策略不只“選最像的”那么模型如何從動(dòng)輒 10 萬(wàn) 的詞表中挑選下一個(gè) Token課堂上介紹了從“最老實(shí)”到“最天馬行空”的幾種策略貪婪策略Greedy Search每次都選概率最高的那個(gè)。好處是結(jié)果固定、穩(wěn)定壞處是缺乏多樣性無(wú)法解釋為什么同一個(gè)問(wèn)題偶爾會(huì)給出不同回答。隨機(jī)策略像擲骰子、抽撲克牌一樣完全隨機(jī)選。極具不確定性現(xiàn)實(shí)里基本不單獨(dú)使用。溫度系數(shù)Temperature這是控制“貪婪”與“隨機(jī)”之間平衡的旋鈕。低溫傾向選高概率 Token適合數(shù)學(xué)題等邏輯性強(qiáng)、答案唯一的場(chǎng)景高溫增加低概率詞被選中的機(jī)會(huì)回答更發(fā)散適合創(chuàng)意寫(xiě)作。老師補(bǔ)充很多可視化平臺(tái)里的“邏輯性強(qiáng)”或“發(fā)散思維”選項(xiàng)底層其實(shí)就是調(diào)節(jié) Temperature只是加了一層遮罩。Top-K 采樣只從概率最高的前 K 個(gè)如前 50 個(gè)Token 里選縮小候選范圍過(guò)濾掉極低概率的不合理詞匯。Top-P 核采樣Nucleus Sampling動(dòng)態(tài)選擇累積概率達(dá)到閾值 P如 0.9的最小 Token 集合。與 Top-K 固定數(shù)量不同Top-P 固定的是“概率質(zhì)量”。老師舉了一個(gè)直觀的例子如果是“112”“2”的概率可能占 99%此時(shí) Top-P 可能只選 1 個(gè)詞如果概率分布均勻則可能選數(shù)千個(gè)詞。綜合流程課堂零碎知識(shí)點(diǎn)實(shí)際應(yīng)用中往往是組合拳——先 Top-P 縮小范圍再 Top-K 篩選最后結(jié)合 Temperature 做加權(quán)隨機(jī)選擇。在選定候選集后還會(huì)對(duì)其概率進(jìn)行重新歸一化放大至 100%再依據(jù)溫度系數(shù)抽樣。這個(gè)“概率重校準(zhǔn)”的細(xì)節(jié)是很多初學(xué)者容易忽略的。二、認(rèn)識(shí) Token模型的“原子”與經(jīng)濟(jì)賬本理解了生成機(jī)制后課程進(jìn)入了更微觀的層面Token 到底是什么為什么模型非得用 Token 說(shuō)話2.1 Token 的形態(tài)與分詞差異Token 是模型處理的最小基本單位不可再分。它的形態(tài)多樣一個(gè)完整的英文單詞如 believe中文里的一個(gè)字單詞的一部分子詞單元標(biāo)點(diǎn)符號(hào)、表情符號(hào)老師特別提到“一個(gè)笑臉也是一個(gè) Token”所以模型能生成表情。課堂上用實(shí)際工具對(duì)比了分詞差異這些例子非常經(jīng)典值得記住英文“Believe”在 GPT-4 和 GPT-5 中都被切分為 3 個(gè) Token但切分位置和 Token ID 并不完全相同中文“我愛(ài)大模型開(kāi)發(fā)”在 GPT-4 中是 4 個(gè) Token老師提到當(dāng)時(shí)測(cè)試還出現(xiàn)了亂碼而在千問(wèn)Qwen模型中則是 5 個(gè) Token。這說(shuō)明不同模型擁有獨(dú)立的詞表和分詞策略Token ID 對(duì)應(yīng)的就是模型內(nèi)部的“字典頁(yè)碼”。2.2 為什么非要引入 Token 機(jī)制老師歸納了兩大核心原因第一數(shù)字化與語(yǔ)義保留。大模型底層是復(fù)雜的矩陣運(yùn)算必須把文本轉(zhuǎn)成向量。如果直接把整句“我愛(ài)你”映射為一個(gè) ID會(huì)丟失內(nèi)部詞匯的組合關(guān)系。拆成“我”“愛(ài)”“你”三個(gè) Token模型才能學(xué)會(huì)“我”和“你”之間可以放“愛(ài)”或“喜歡”從而保留語(yǔ)義靈活性。第二避免計(jì)算量與詞表爆炸。若以單個(gè)字母為基本單位雖然基數(shù)只有 26 個(gè)但任意長(zhǎng)度拼接會(huì)導(dǎo)致組合數(shù)量天文數(shù)字般增長(zhǎng)計(jì)算效率極低若以完整單詞為基本單位英語(yǔ)單詞本就數(shù)十萬(wàn)再加上多語(yǔ)言混合詞表規(guī)模會(huì)極其龐大。Token 是介于“字/字母”與“完整單詞”之間的折中方案既控制詞表規(guī)模如 LLaMA 約 12 萬(wàn)、Qwen 可達(dá) 25 萬(wàn)又保證計(jì)算效率因此被稱(chēng)為“詞元”。2.3 輸入 Token 為什么比輸出 Token 便宜課堂后半段揭秘了一個(gè)行業(yè)現(xiàn)象輸出 Token 的價(jià)格通常遠(yuǎn)高于輸入 Token比如某旗艦?zāi)P洼敵黾s 6 元/百萬(wàn) Token輸入僅約 3 元/百萬(wàn)若緩存命中輸入甚至低至 0.025 元/百萬(wàn)。根本原因不在軟件而在GPU 硬件計(jì)算特性顯存帶寬瓶頸GPU 計(jì)算需要把數(shù)據(jù)從顯存VRAM搬運(yùn)到高速內(nèi)存SRAM/SM中運(yùn)算。輸入階段所有 Token 一次性并行加載耗時(shí)極短但輸出階段是自回歸的每生成一個(gè) Token 都要把之前的歷史上下文從顯存反復(fù)搬運(yùn)到 SRAM。這種頻繁的“搬運(yùn)-計(jì)算-等待”導(dǎo)致 GPU 算力閑置且占用了昂貴的顯存帶寬。KV Cache(鍵值緩存) 累積為避免重復(fù)計(jì)算模型會(huì)把已算好的 Key-Value 緩存到顯存中。隨著輸出長(zhǎng)度增加KV Cache 不斷累積占用大量顯存空間。每次生成新 Token 都要讀取這些龐大的 KV 數(shù)據(jù)進(jìn)一步加劇資源消耗。老師用了一個(gè)生活化比喻輸入就像把一車(chē)貨一次性拉到工地輸出則是每砌一塊磚都要把之前砌好的所有磚再搬過(guò)來(lái)參考一遍自然又慢又貴。三、詞表LLM 的“新華字典”與 OOV 困境如果說(shuō) Token 是原子那詞表Vocabulary就是元素周期表。老師將其本質(zhì)一語(yǔ)道破詞表是一個(gè)映射字典類(lèi)比 Java/C 里的 Map或 Python 里的 Dict。3.1 詞表的工作流輸入端文本先被分詞為 Token再轉(zhuǎn)為唯一的數(shù)字 ID如“LM”對(duì)應(yīng) 10001因?yàn)槟P椭徽J(rèn)數(shù)字輸出端模型輸出的是一系列 ID系統(tǒng)再查詞表把 ID 翻譯回人類(lèi)可讀的 Token。老師特別強(qiáng)調(diào)了一個(gè)邊界模型無(wú)法生成詞表范圍之外的內(nèi)容。所有輸出都受限于這張“字典”。3.2 字節(jié)級(jí)回退遇到生僻字的“兜底方案”課堂上拋出了一個(gè)現(xiàn)實(shí)問(wèn)題如果遇到詞表沒(méi)收錄的新詞、生僻字甚至“火星文”怎么辦這就是 OOVOut-of-Vocabulary問(wèn)題。解決方案是字節(jié)級(jí)回退Byte-level Fallback系統(tǒng)將 0x00 到 0xFF 的所有字節(jié)值預(yù)設(shè)為獨(dú)立的 Token遇到未知字符時(shí)將其拆成單個(gè)字節(jié)如一個(gè) UTF-8 字符可能由多個(gè)字節(jié)組成每個(gè)字節(jié)映射為已知 Token再基于這些字節(jié) Token 做預(yù)測(cè)。優(yōu)點(diǎn)保證模型遇到任何字符都不會(huì)完全失效。缺點(diǎn)效率低。一個(gè)常規(guī) Token 可能被拆成多個(gè)字節(jié) Token老師舉例說(shuō)“一個(gè)字符可能消耗 5 個(gè) Token”Token 消耗量顯著增加既拖慢速度又增加成本。四、多人對(duì)話的真相模型沒(méi)有記憶只有“上下文拼接”課程進(jìn)入應(yīng)用層首先打破了一個(gè)常見(jiàn)幻覺(jué)大模型沒(méi)有記憶力。4.1 無(wú)狀態(tài)本質(zhì)y 2x 1老師用了一個(gè)極其精準(zhǔn)的數(shù)學(xué)比喻大模型就像函數(shù)y 2x 1它不會(huì)對(duì)輸入值有任何記憶只負(fù)責(zé)對(duì)當(dāng)前輸入做復(fù)雜計(jì)算。課堂實(shí)驗(yàn)也很直接先問(wèn)模型“我叫小明今年 6 歲”再問(wèn)“我叫什么”它能答出來(lái)但新開(kāi)一個(gè)會(huì)話直接問(wèn)“我叫什么”模型完全不知道。這就是所謂的“記憶”把歷史對(duì)話記錄History與當(dāng)前新問(wèn)題拼接后一并發(fā)送給模型。用戶感覺(jué)模型記住了其實(shí)只是因?yàn)樗诿看翁釂?wèn)時(shí)都讀到了完整的“劇本”。4.2 為什么人類(lèi)需要多輪對(duì)話既然模型沒(méi)記憶那為什么要設(shè)計(jì)多輪對(duì)話老師總結(jié)了三個(gè)深層原因上下文依賴(lài)Context Dependency自然語(yǔ)言充滿代詞和隱喻。比如先問(wèn)“龍是什么”再問(wèn)“它的頭像”單輪對(duì)話無(wú)法解決這種指代關(guān)系。復(fù)雜問(wèn)題的澄清與拆解人類(lèi)溝通遵循“省力原則”初始指令往往信息不全。老師舉了一個(gè)非常貼近實(shí)際的例子讓 AI 做“用戶管理系統(tǒng)”。模型不會(huì)直接上手寫(xiě)代碼而是會(huì)通過(guò)多輪反問(wèn)來(lái)明確需求——包含哪些字段需要新增/刪除/修改/查詢嗎經(jīng)過(guò)多輪對(duì)齊最終才輸出完整方案。糾錯(cuò)與對(duì)齊大模型是概率模型會(huì)犯錯(cuò)。比如課堂上討論的數(shù)學(xué)問(wèn)題0.999... 1引發(fā)的爭(zhēng)論。用戶需要通過(guò)多輪對(duì)話指出錯(cuò)誤、要求修正才能對(duì)齊結(jié)果。4.3 引入多輪后的三大挑戰(zhàn)與解決方案這部分是課程的“干貨中的干貨”老師講得非常細(xì)致挑戰(zhàn) 1上下文管理瓶頸模型有上下文長(zhǎng)度上限如 DeepSeek 支持 1M tokens輸出限制 384k。若對(duì)話過(guò)長(zhǎng)會(huì)撐爆這個(gè)“容器”。對(duì)話摘要讓模型把長(zhǎng)對(duì)話壓縮成核心信息。老師舉了代碼工程的例子先讓 AI 分析整個(gè)項(xiàng)目目錄并形成摘要后續(xù)開(kāi)發(fā)時(shí)只攜帶摘要而非千萬(wàn)行代碼?;瑒?dòng)窗口只保留最近 N 輪如 20-30 輪丟棄早期記錄。老師提示這個(gè) N 可以通過(guò)運(yùn)營(yíng)數(shù)據(jù)統(tǒng)計(jì)出合理值不是拍腦袋定的。RAG檢索增強(qiáng)生成把海量數(shù)據(jù)如《西游記》全文存入向量數(shù)據(jù)庫(kù)。問(wèn)“牛魔王與孫悟空的關(guān)系”時(shí)只把相關(guān)片段如牛魔王結(jié)拜、紅孩兒章節(jié)檢索出來(lái)喂給模型避免全量投喂。挑戰(zhàn) 2推理效率與成本上下文越長(zhǎng)生成每個(gè)字都要重算前文速度慢、電費(fèi)高。KV Cache緩存已計(jì)算好的 Key-Value 值生成新字時(shí)無(wú)需重復(fù)計(jì)算前文剪枝Pruning直接刪除對(duì)話中的冗余信息和廢話減少輸入長(zhǎng)度。挑戰(zhàn) 3中間遺忘Lost in the Middle老師引用了一篇經(jīng)典論文模型對(duì)上下文首尾信息記憶較好但容易遺忘中間部分呈 U 型記憶曲線。根本解決把上下文長(zhǎng)度從 1M 擴(kuò)展到 10M——但這訓(xùn)練成本極高動(dòng)輒數(shù)百萬(wàn)美金周期長(zhǎng)。外掛狀態(tài)存儲(chǔ)終極方案引入外部數(shù)據(jù)庫(kù)如 PG、MySQL。老師舉了旅游計(jì)劃的例子當(dāng)家庭出游計(jì)劃發(fā)生變更爸爸要看老虎兒子要看斑馬AI 助手檢測(cè)到狀態(tài)變化后不把希望寄托在模型回憶上而是將最新計(jì)劃寫(xiě)入數(shù)據(jù)庫(kù)。后續(xù)查詢時(shí)直接從數(shù)據(jù)庫(kù)讀取最新?tīng)顟B(tài)注入 Prompt徹底規(guī)避遺忘問(wèn)題。五、提示詞工程給模型設(shè)定“人設(shè)”與“邊界”課程接下來(lái)剖析了提示詞的分類(lèi)與系統(tǒng)提示詞System Prompt的核心作用。5.1 用戶提示詞 vs 系統(tǒng)提示詞User Prompt用戶直接說(shuō)的話如“北京的天氣怎么樣”System Prompt預(yù)先設(shè)定且置于最前端的頂層指令由開(kāi)發(fā)者設(shè)定對(duì)用戶不可見(jiàn)且貫穿整個(gè)對(duì)話始終。5.2 系統(tǒng)提示詞的四大作用1. 定義角色和行為邊界可以把“全科博士”塑造成特定專(zhuān)家。老師演示了引導(dǎo)式教學(xué)人設(shè)設(shè)定模型為“一步步引導(dǎo)小朋友且不直接給出答案的老師”。面對(duì)2x 3 7模型不會(huì)直接報(bào)答案而是像教小朋友一樣提問(wèn)“觀察天平右邊是什么我們第一步先做什么”邊界劃定設(shè)定為“數(shù)學(xué)老師”并規(guī)定“不回答其他科目問(wèn)題”。當(dāng)用戶要求寫(xiě)一篇春天的作文時(shí)模型幽默拒絕“抱歉你走錯(cuò)教室了?!?. 穩(wěn)定模型行為模型基于概率生成本質(zhì)上帶有“搖色子”般的隨機(jī)性回復(fù)風(fēng)格可能波動(dòng)。通過(guò)系統(tǒng)提示詞限定“回復(fù)非常專(zhuān)業(yè)”或“語(yǔ)氣溫柔”可以約束輸出保持一致。3. 安全與合規(guī)充當(dāng)安全護(hù)欄拒絕制作炸彈、涉黃涉政等請(qǐng)求。同時(shí)防御提示詞攻擊如用戶試圖套取系統(tǒng)提示詞本身。4. 彌補(bǔ)知識(shí)短板和提供上下文模型訓(xùn)練數(shù)據(jù)有截止日期。老師展示了 ClaudeSOP 公司公開(kāi)的系統(tǒng)提示詞案例其中明確寫(xiě)入了當(dāng)前美國(guó)總統(tǒng)及其就職時(shí)間等實(shí)時(shí)政治信息以彌補(bǔ)模型訓(xùn)練數(shù)據(jù)的滯后。此外還包含模型名稱(chēng)、官網(wǎng)、兒童安全策略、惡意代碼處理原則等。5.3 開(kāi)發(fā)框架的抽象在實(shí)際開(kāi)發(fā)框架如 LangChain中這些概念被抽象為MessageSystem Message系統(tǒng)提示User Message用戶輸入AI Message模型回復(fù)注意回復(fù)本身不屬于 Prompt所以統(tǒng)稱(chēng) MessageTool Message工具調(diào)用及返回六、聊天模板格式化的“安全藍(lán)圖”當(dāng)用戶輸入變得復(fù)雜、模型版本快速迭代時(shí)直接把 JSON 發(fā)給模型會(huì)很危險(xiǎn)——如果用戶輸入里帶了引號(hào)極易導(dǎo)致模型把用戶內(nèi)容和系統(tǒng)指令搞混。這就是聊天模板Chat Template存在的意義。6.1 核心機(jī)制用特殊 Token 劃定邊界聊天模板本質(zhì)上是一種格式藍(lán)圖。它把 JSON 轉(zhuǎn)換成帶特殊標(biāo)記的字符串例如用|start|表示系統(tǒng)指令開(kāi)始|end|表示結(jié)束。模型只需識(shí)別這些特定標(biāo)記就能清晰區(qū)分“哪里是系統(tǒng)指令、哪里是用戶輸入”避免沖突。6.2 模型間的格式鴻溝不同模型家族的模板差異巨大甚至同一系列不同版本如 Qwen 2.5 與 2.7都有細(xì)微差別。硬編碼 Python 字符串拼接來(lái)適配維護(hù)成本極高。6.3 為什么推薦 Jinja2課堂上力薦Jinja2作為模板引擎三大優(yōu)勢(shì)解耦通用性模型格式微調(diào)時(shí)只需改模板文件無(wú)需改動(dòng)核心業(yè)務(wù)代碼動(dòng)態(tài)邏輯控制支持 if-else 判斷可根據(jù)是否有系統(tǒng)指令、是否有工具調(diào)用靈活生成不同結(jié)構(gòu)安全防護(hù)防注入Jinja2 的自動(dòng)轉(zhuǎn)義Escape能力能處理用戶輸入中的復(fù)雜特殊字符防止惡意構(gòu)造字符串破壞解析邏輯。6.4 實(shí)際應(yīng)用路徑云端調(diào)用如 LangChain 阿里云 QwenJSON 到模板的轉(zhuǎn)換在服務(wù)端黑盒完成開(kāi)發(fā)者無(wú)感知本地復(fù)現(xiàn)/調(diào)試建議使用 Hugging Face Transformers 庫(kù)的apply_chat_template方法輸入 JSON 消息列表觀察渲染后的完整字符串驗(yàn)證 Start/End Token 格式。七、從“大腦”到“機(jī)器人”大模型的未來(lái)演進(jìn)課程最后做了一次系統(tǒng)性回顧并指明了演進(jìn)方向。7.1 機(jī)制閉環(huán)一條完整的 LLM 交互鏈?zhǔn)怯脩糨斎?→ 系統(tǒng)提示詞注入 → 聊天模板格式化 → 詞表數(shù)字化/概率計(jì)算 → 自回歸生成 Token → 查表解碼 → 多輪上下文循環(huán)7.2 可能性之海老師用一組驚人的數(shù)字解釋了為什么 LLM 能不斷“創(chuàng)造”新內(nèi)容假設(shè)詞表 10 萬(wàn)10?生成第一個(gè)字有 10? 種可能第二個(gè)字又有 10? 種可能……生成 500 字時(shí)累積的可能性呈指數(shù)級(jí)增長(zhǎng)甚至遠(yuǎn)超宇宙原子總數(shù)約 10??。有限的詞表通過(guò)組合產(chǎn)生了近乎無(wú)窮的回答空間。7.3 當(dāng)前局限與智能體Agent目前的大模型主要局限于“回答問(wèn)題”相當(dāng)于只有大腦缺乏對(duì)外部世界的實(shí)際操作能力。下一步的核心演進(jìn)路徑是掛載工具Tools——為大模型裝上“四肢”讓它不僅能思考還能調(diào)用API、查詢數(shù)據(jù)庫(kù)、執(zhí)行代碼。屆時(shí)語(yǔ)言模型將從單純的問(wèn)答系統(tǒng)進(jìn)化為能夠完成任務(wù)的類(lèi)機(jī)器人智能體。寫(xiě)在最后回望這一系列課程從“中國(guó)的首都是哪里”的 Token 拼接到旅游計(jì)劃變更時(shí)的外掛數(shù)據(jù)庫(kù)從詞表里一個(gè)生僻字的字節(jié)回退到 Claude 系統(tǒng)提示詞里對(duì)總統(tǒng)信息的精準(zhǔn)修補(bǔ)——大語(yǔ)言模型看似“聰明”的背后其實(shí)是一套極其嚴(yán)謹(jǐn)?shù)母怕使こ獭?nèi)存工程與提示工程的綜合體。理解這些底層邏輯不僅能幫我們更高效地調(diào)用模型更是在為即將到來(lái)的 Agent 時(shí)代打下認(rèn)知地基。畢竟只有先理解大腦如何工作才能真正設(shè)計(jì)出四肢與大腦協(xié)調(diào)的機(jī)器人。