:從注意力機制到大模型微調(diào))
1. 從神經(jīng)元到Transformer為什么第8章是分水嶺寫這個系列的時候我就想過20個模型排下來真正能稱得上“分水嶺”的節(jié)點沒幾個第8章這個位置恰好踩在了一個極其關(guān)鍵的時間點上。前7章我們聊了從MP神經(jīng)元到感知機、多層感知機、BP反向傳播、CNN卷積網(wǎng)絡(luò)、RNN循環(huán)網(wǎng)絡(luò)、LSTM長短期記憶網(wǎng)絡(luò)基本把深度學習的“前Transformer時代”捋了一遍。而到了第8章我們終于要正面迎戰(zhàn)那個如今被反復提及、幾乎成為大模型代名詞的結(jié)構(gòu)——Transformer正式拉開“從神經(jīng)網(wǎng)絡(luò)到大模型”最關(guān)鍵的一環(huán)。為什么說這一章是分水嶺因為Transformer的出現(xiàn)不是一次普通的模型迭代而是一次范式級的轉(zhuǎn)換。在它之前序列建模的主流思路是RNN和LSTM靠的是“一步一步按順序讀數(shù)據(jù)”記憶力和并行能力都不太行。在它之后序列建模變成了“一次性全看、按重要程度分配注意力”這直接解鎖了兩個史詩級能力超長序列建模和GPU大規(guī)模并行訓練。今天大家掛在嘴邊的GPT、BERT、LLaMA、通義千問、DeepSeek底層清一色全是Transformer。如果你只是想跑個現(xiàn)成的大模型API可能確實不需要深究Transformer內(nèi)部原理。但如果你想搞本地部署、微調(diào)、模型選型或者想理解為什么大模型會有“幻覺”、為什么顯存那么吃緊、為什么推理速度有時候會卡在瓶頸那Transformer的細節(jié)你是繞不開的。本章就從“神經(jīng)元如何一步步演化成Transformer”的視角把這條技術(shù)演進線徹底打通同時也把熱搜詞里大家最關(guān)心的本地部署、大模型微調(diào)、推理優(yōu)化等問題一并交代清楚。這篇博文適合的人很明確已經(jīng)對神經(jīng)網(wǎng)絡(luò)有基本概念知道什么是神經(jīng)元、什么是梯度但還沒系統(tǒng)理解Transformer和大模型原理的開發(fā)者以及已經(jīng)在用Ollama、vLLM這類工具部署開源模型但遇到性能問題、想進一步弄明白原理的同學。2. 第8章到底講的是哪個模型以及它為什么能代表“大模型起點”2.1 20個模型序列中的關(guān)鍵定位先交代一下20個模型的整體排布邏輯。前7個基本是“經(jīng)典神經(jīng)網(wǎng)絡(luò)”范疇MP神經(jīng)元、感知機、多層感知機、反向傳播、CNN、RNN、LSTM。從第8章開始進入“現(xiàn)代架構(gòu)”階段我個人在規(guī)劃系列時把第8章定位為Transformer的全面拆解。有朋友可能會問第8章為什么不講講BERT或者GPT我的想法是你連地基都沒打牢就聊上層建筑很容易陷入“知其然不知其所以然”的狀態(tài)。BERT和GPT都只是Transformer的不同應(yīng)用方式BERT是Transformer Encoder的產(chǎn)物GPT是Transformer Decoder的產(chǎn)物。搞清楚Transformer本身后續(xù)章節(jié)拆B(yǎng)ERT、GPT、T5、LLaMA就會非常輕松甚至可以說是一通百通。2.2 為什么是Attention機制撬動了大模型時代Transformer的核心不是“深”而是“注意力機制”——Attention。這玩意兒的思想極其樸素當你讀一段話的時候你的眼睛不會逐字逐詞地平均用力而是會聚焦在更關(guān)鍵的字詞上。比如“蘋果公司在2024年發(fā)布了新款手機”你一眼掃過去注意力自動分配給了“蘋果公司”“發(fā)布”“新款手機”“在”“了”這些詞基本被跳過。Attention干的事就是這個只不過它把“注意力分配”數(shù)學化、可微分化了。具體來說Transformer中的Self-Attention自注意力會對輸入序列中的每一對位置計算一個相關(guān)性權(quán)重然后用這個權(quán)重對所有位置的向量做加權(quán)求和。這意味著每個詞在編碼時都能直接“看到”序列里的所有其他詞并且根據(jù)相關(guān)性決定從誰那里吸取更多信息。這就是傳說中的“全局感受野”。對比一下RNN就能感受到差距。RNN處理“我昨天在公園里看到了一只…”這種句子如果想記住“昨天”和“公園”這兩個詞對句尾預(yù)測的影響需要經(jīng)過很多時間步的信息傳遞中間只要稍有丟失效果就大打折扣。LSTM加了門控機制改善了長期記憶但本質(zhì)上還是串行處理而且一旦序列長度到了幾百甚至幾千訓練效率和效果都會衰減。Transformer的Self-Attention一步到位不管詞與詞之間隔了多遠計算量都是一樣的這直接解決了長距離依賴問題。2.3 從“單個神經(jīng)元”到“多頭注意力”的演化邏輯這里我習慣用一個等式來幫助理解從神經(jīng)元到Transformer 線性變換 非線性激活 特征交互重構(gòu)。單個神經(jīng)元做的事情是輸入經(jīng)過加權(quán)求和后過激活函數(shù)。多層感知機做的事情是把多個神經(jīng)元堆成層再把層堆疊起來增強非線性擬合能力。CNN做的事情是通過卷積核強制提取局部特征讓相鄰位置共享權(quán)重。RNN做的事情是在時間維度上共享一套參數(shù)按順序建模序列。Transformer做的事情看似“突變”其實本質(zhì)也逃不出上面的框架。一個注意力頭內(nèi)部做的事情是把輸入向量分別通過三個權(quán)重矩陣映射成Query、Key、Value然后用Query和Key做點積計算相似度再用相似度對Value做加權(quán)求和。這個過程里有線性變換映射成Q、K、V有非線性雖然沒有傳統(tǒng)激活函數(shù)但Softmax歸一化在某種意義上扮演了類似角色也有特征交互不同位置之間的信息融合。多個注意力頭并行執(zhí)行同樣的操作但使用不同的權(quán)重就是多頭注意力。這相當于從多個角度同時觀察序列中的關(guān)系——“語法角度”“語義角度”“指代角度”可能分別由不同的頭負責。最后把多頭的輸出拼起來再經(jīng)過一層線性變換完成特征整合。這個機制比前面任何模型都更靈活因為它完全讓數(shù)據(jù)自己決定“哪些位置關(guān)系重要”而不是像CNN那樣預(yù)設(shè)局部性也不像RNN那樣預(yù)設(shè)時序性。3. Transformer的核心細節(jié)每個關(guān)鍵環(huán)節(jié)的“為什么”3.1 輸入嵌入與位置編碼的互補關(guān)系Transformer并行處理序列的特性帶來一個直接問題模型本身不天然知道“詞序”。RNN是挨個處理的天然攜帶位置信息Transformer是一次性全部輸入如果不告訴它“這個詞在第幾個位置”信息就會全部亂套。位置編碼就是解決這個問題的。Transformer原文用的是正弦余弦函數(shù)方式公式長這樣PE(pos, 2i) sin(pos / 10000^(2i/d_model)) PE(pos, 2i1) cos(pos / 10000^(2i/d_model))這里pos是詞在序列里的位置索引i是向量維度下標d_model是輸入向量的維度。這個設(shè)計很巧妙不同位置的編碼向量不同但維度之間的相對位置差異是固定的模型可以通過線性變換從某個位置的編碼推導出另一個位置的編碼這比直接學一套絕對位置參數(shù)更容易泛化到更長的序列上。后來很多模型改用可學習位置嵌入比如BERT直接學習512個位置向量優(yōu)點是在訓練長度范圍內(nèi)更靈活缺點是遇到超長文本時外推能力弱。這也是為什么現(xiàn)在很多大模型會引入RoPE旋轉(zhuǎn)位置編碼等更復雜的位置編碼方案——它們本質(zhì)上是同一個問題的不同解法在不破壞注意力計算的前提下把位置信息優(yōu)雅地揉進向量表示里。3.2 層歸一化與殘差連接穩(wěn)定訓練的隱形守護者模型一旦深了訓練就會變得非常不穩(wěn)定。梯度可能爆炸也可能消失損失曲線可能震蕩到讓人懷疑人生。Transformer里有兩個設(shè)計聯(lián)手解決了這個問題殘差連接Residual Connection和層歸一化Layer Normalization。殘差連接的做法很粗暴——“我先記一份輸入副本然后在副本之上做變換”。這樣即使深層變換對梯度不友好梯度至少可以通過“抄近道”的殘差路徑直接回流到淺層相當于給梯度修了一條高速公路。層歸一化則是對每個樣本的所有特征維度做歸一化讓數(shù)據(jù)分布始終保持在合理的范圍內(nèi)避免因網(wǎng)絡(luò)加深而出現(xiàn)分布漂移。這里有一個實操中容易忽略的點Transformer原始論文用的是Post-LN歸一化放在殘差連接之后而很多現(xiàn)代大模型比如GPT-2之后都改成Pre-LN歸一化放在子層之前。Pre-LN訓練的時候更穩(wěn)收斂也更快熱身后用很大的學習率也不容易崩。你在用HuggingFace加載開源模型的時候如果注意觀察會發(fā)現(xiàn)大部分新模型的代碼實現(xiàn)都已經(jīng)默認用Pre-LN了。3.3 為什么需要Mask以及兩種Mask的差別面試大模型崗位的人基本都會被問到一個經(jīng)典問題Transformer里有哪些Mask我在這里直接說清楚一共有兩種用途完全不同。第一種是Padding Mask。一個batch里的序列長度往往是不同的但矩陣運算要求所有序列一樣長所以短的序列需要padding到和最長序列一樣的長度。這些padding的位置沒有真實語義信息在計算注意力權(quán)重時需要把它們遮住不讓模型去看這些無效位置。第二種是Causal Mask也就是因果關(guān)系掩碼只在Decoder里出現(xiàn)。Decoder做的是“給定前面的詞預(yù)測下一個詞”生成第t個詞時絕對不能看到第t1及以后的詞否則就相當于“作弊偷看了答案”。所以會有個上三角矩陣把未來位置全部mask成負無窮softmax之后權(quán)重變成0。我之前帶過一個實習生用Transformer做生成任務(wù)時忘記加Causal Mask結(jié)果訓練loss低得離譜但推理時生成的內(nèi)容全是亂的。我當時讓他打印了一下注意力矩陣他才反應(yīng)過來——模型在訓練時已經(jīng)“偷窺”了未來推理時沒有未來可看表現(xiàn)自然一落千丈。3.4 從編碼器-解碼器到僅解碼器大模型的主流路線Transformer原文是一個Encoder-Decoder結(jié)構(gòu)Encoder負責把輸入序列編碼成上下文表示Decoder負責逐詞生成輸出序列。這個設(shè)計對機器翻譯這種“輸入輸出都是文本”的任務(wù)非常合適。但后來大家發(fā)現(xiàn)做語言模型也就是“給前文預(yù)測后文”其實只需要一個Decoder就夠了——用Causal Mask遮住未來讓模型不斷預(yù)測下一個token這就是GPT系列的做法?,F(xiàn)在的開源大模型比如LLaMA、Qwen、DeepSeek、Mistral底層結(jié)構(gòu)幾乎都是“僅Decoder的Transformer”然后在細節(jié)上做各種優(yōu)化有的改位置編碼有的改激活函數(shù)比如SwiGLU有的調(diào)整歸一化位置。所以如果你把第8章的Transformer吃透了再去看任何開源大模型的技術(shù)報告都會覺得親切得不得了因為大方向就那幾板斧只是工程細節(jié)持續(xù)精進。4. 從理論到實踐大模型本地部署、微調(diào)與推理的真實經(jīng)驗4.1 本地部署大模型的工具選型思路聊完了Transformer的原理我們回到熱搜詞里出現(xiàn)頻率極高的一類需求本地部署大模型。很多朋友被各種工具名搞暈了Ollama、vLLM、llama.cpp、text-generation-webui、LM Studio到底應(yīng)該用哪個我的建議是先按使用場景分清楚。如果你只是想在個人電腦上跑跑模型、體驗一下或者做原型驗證首選Ollama它封裝得極其友好一條命令就能跑起來一個模型。如果你要做生產(chǎn)環(huán)境推理或者面對比較高的并發(fā)請求那首選vLLM它基于PagedAttention做了顯存管理和連續(xù)批處理優(yōu)化吞吐量比樸素的HuggingFace推理高一截。如果你要在MacBook或者樹莓派這類設(shè)備上跑模型llama.cpp這類C實現(xiàn)的推理框架值得考慮它做了大量CPU端優(yōu)化16G內(nèi)存的MacBook Air也能跑7B量級的量化模型。以O(shè)llama舉例下載安裝之后跑起一個模型的體驗是這樣的# 安裝完畢之后拉取一個模型qwen2.5:7b很經(jīng)典 ollama pull qwen2.5:7b # 直接交互式對話 ollama run qwen2.5:7b就這么簡單模型已經(jīng)在本地跑起來了。Ollama底層用的是llama.cpp那一套推理邏輯做了量化處理和內(nèi)存映射優(yōu)化所以體驗非常順滑。但Ollama畢竟更適合單機場景做高并發(fā)的服務(wù)就不太行了這時候就需要vLLM出場。用vLLM部署同樣一個Qwen2.5模型邏輯也很直接pip install vllm python -m vllm.entrypoints.openai.api_server \ --model Qwen/Qwen2.5-7B-Instruct \ --dtype auto \ --max-model-len 8192 \ --gpu-memory-utilization 0.9啟動之后它會直接暴露一個OpenAI兼容的API接口你在代碼里可以像調(diào)用OpenAI一樣去調(diào)用本地的模型服務(wù)。4.2 顯存不夠怎么辦量化與Ollama部署到D盤這類問題本地部署大模型時被問得最多的問題就是我的顯卡顯存不夠怎么辦普通玩家最常見的選擇是量化模型。量化的本質(zhì)是降低參數(shù)精度從FP16的16位浮點數(shù)降到INT8甚至INT4這樣模型占用空間和推理顯存都大幅縮小。7B模型FP16精度大約需要14GB顯存才能跑而4bit量化之后4GB左右顯存就能運行。代價是模型質(zhì)量會有輕微下降但日常對話、代碼生成這些場景下感知并不明顯。還有“怎么把Ollama模型安裝到D盤”這種非常具體的問題。Ollama默認會把模型下載到C盤用戶目錄下路徑類似C:\Users\你的用戶名\.ollama\models如果C盤空間吃緊用環(huán)境變量就能搞定# Windows的PowerShell里執(zhí)行 $env:OLLAMA_MODELS D:\ollama\models [Environment]::SetEnvironmentVariable(OLLAMA_MODELS, D:\ollama\models, User) # 重啟終端之后生效 ollama list這里有個小坑修改環(huán)境變量之后一定要完全關(guān)閉當前終端再重新打開有時候甚至需要重啟Ollama服務(wù)否則不生效。如果你發(fā)現(xiàn)改了之后模型還是下到C盤十有八九就是這個“應(yīng)用層緩存”沒刷新。在MacBook Air M3 16G的機器上跑模型我的經(jīng)驗是選4bit甚至3bit量化后的7B/8B模型比如Qwen2.5-7B-Instruct的Q4_K_M版本。實測下來M3的8核CPU加統(tǒng)一內(nèi)存架構(gòu)跑起來吞吐量不錯對話場景完全夠用而且因為M芯片內(nèi)存帶寬大跑大模型比同價位Windows輕薄本舒服很多。4.3 微調(diào)GPU要滿足什么條件以及數(shù)據(jù)準備清單如果說部署是在“開車”那微調(diào)就是在“改裝車”。大模型微調(diào)是指在預(yù)訓練好的基礎(chǔ)上用特定領(lǐng)域的數(shù)據(jù)再訓練幾步讓模型掌握特定知識或風格。微調(diào)的理想武器是LoRALow-Rank Adaptation。LoRA的核心思路是凍結(jié)原模型的全部參數(shù)不去動那個龐大的“主干”而是在每一層旁邊掛一個小小的可訓練矩陣。這個可訓練矩陣的參數(shù)量大概是原模型的0.1%~1%訓練時只需要更新這一小部分。這樣7B模型的微調(diào)顯存需求從“訓練全量參數(shù)需要80GB以上”降到“16GB~24GB就能做”。硬件方面我的經(jīng)驗是7B模型用LoRA微調(diào)24GB顯存的RTX 3090/4090已經(jīng)很舒適13B~14B模型LoRA微調(diào)需要32GB以上顯存或者在量化基礎(chǔ)上做微調(diào)比如QLoRA。沒有N卡但又想折騰的話Apple Silicon的MacBook Pro也能跑但速度確實不如同價位N卡來得爽快。還有一個容易被新手忽略的點最低支持CUDA的N卡驅(qū)動版本和PyTorch版本要匹配否則你會在“CUDA out of memory”和“CUDA driver too old”之間反復橫跳。微調(diào)的數(shù)據(jù)準備也有講究。公式化的數(shù)據(jù)格式大概長這樣{instruction: 解釋一下Transformer中的殘差連接, input: , output: 殘差連接... }這是最經(jīng)典的“指令微調(diào)”三字段格式。對于對話模型的微調(diào)可能需要chat格式也就是多輪對話結(jié)構(gòu)。我見過太多人一上來就亂標一堆數(shù)據(jù)塞給模型結(jié)果模型反而學會了胡說八道。建議先把數(shù)據(jù)質(zhì)量搞上去一個清晰的任務(wù)指令、一份干凈準確的回答比海量的垃圾數(shù)據(jù)更有用。5. 推理優(yōu)化與常見問題排查從量化緩存到“投毒”風險5.1 推理緩存命中率為什么重要熱搜詞里有一句“vLLM如何優(yōu)化大模型的緩存命中率”這個問題問得非常內(nèi)行。大模型的推理開銷大頭其實在于歷史KV緩存也就是之前計算好的Key和Value中間結(jié)果。每生成一個新token都需要和漫長的歷史信息做一次注意力計算。vLLM拿內(nèi)存換速度自動把KV緩存管理得很好但如果是自己寫推理腳本不加緩存每個請求就算一遍“從零開始”那效率會非常感人。提升命中率的實用手段包括用前綴緩存Prefix Caching把系統(tǒng)提示詞和固定上下文的中間計算結(jié)果緩存住多次相同的請求只算一次。批量推理時盡量保證序列長度一致減少padding浪費。使用PagedAttention這類顯存管理機制減少KV緩存的碎片化和浪費。選擇SGLang或vLLM這類支持RadixAttention和Prefix Cache的框架而不是自己從零擼推理邏輯。5.2 大模型“投毒測試”是什么謹慎下載開源模型熱搜詞里還有一個“大模型投毒測試”。這個說法聽起來很科幻其實指的是模型在訓練階段被人為注入惡意數(shù)據(jù)或者模型被植入特定后門導致特定觸發(fā)條件下模型會輸出攻擊性內(nèi)容、錯誤信息甚至泄露數(shù)據(jù)。實操中比較少見到真正意義上的大規(guī)模投毒但確實存在非官方渠道發(fā)布的“鏡像模型”被篡改的情況。所以這里必須給一個極其重要的安全建議下載開源大模型時只認官方渠道。HuggingFace上的官方組織賬號、ModelScope上的官方倉庫這兩個是常用渠道。不要在不明來路的網(wǎng)盤、個人博客分享鏈接里下載所謂“原版模型”真的有風險。同樣微調(diào)時用的訓練數(shù)據(jù)也要審查干凈別從一些來路不明的爬蟲數(shù)據(jù)里直接灌給模型——這也是一種“數(shù)據(jù)投毒”的形式。安裝腳本也要留意有些所謂的“一鍵部署包”會夾帶奇怪的Python腳本執(zhí)行之前先肉眼掃一眼內(nèi)容看看有沒有訪問不明URL或者改動系統(tǒng)設(shè)置的操作。這一條不僅對模型適用對所有開源軟件都通用。5.3 常見報錯與排查速查表實際部署推理模型時有四個典型報錯我整理成一個速查表方便大家收藏參考現(xiàn)象常見原因解決辦法CUDA out of memory模型過大或并發(fā)過多換量化模型調(diào)低max-model-len用vLLM優(yōu)化顯存管理Could not find model to load模型路徑寫錯或本地沒有模型文件檢查模型名先執(zhí)行ollama pull下載RuntimeError: Tensor Size mismatch模型權(quán)重與加載config不匹配確認模型版本與框架版本對應(yīng)推理速度極慢沒有GPU加速或CPU推理且量化不當確認CUDA可用用llama.cpp的量化版跑CPU推理這幾個問題我?guī)缀趺看螏氯硕紩龅揭槐?。尤其是“CUDA out of memory”新手第一反應(yīng)往往是“我的顯卡不行”其實很多時候只是沒開量化、上下文長度設(shè)置得太長導致KV緩存爆掉了。把max-model-len從32768干到8192顯存占用立刻下降一大截。5.4 實戰(zhàn)小結(jié)先在CPU/小顯存上把原理跑通很多人都以為自己買個4090才能用大模型事實并非如此。我見過太多入手顯卡之后依然一頭霧水的朋友因為硬件到位不代表理解到位。更合理的路徑是先用Ollama這種工具在筆記本電腦上跑一個7B量化模型感受一下“從下載到對話”的全流程然后用HuggingFace Transformers寫一個幾十行的推理腳本加載同樣一個模型看看tokenizer和model API是怎么工作的最后再去看微調(diào)、部署和性能優(yōu)化這樣每一步都有真實體感不容易學成空中樓閣。很多熱詞比如“大模型下載”“大模型部署”“大模型學習路線”歸根結(jié)底都指向同一個核心能力能不能把一個開源模型從HuggingFace或者ModelScope拉下來在本地跑起來然后按照自己的需求改進它。這條鏈路一旦打通所謂大模型開發(fā)的底層邏輯你基本上就已經(jīng)掌握了六七成。6. 第8章之外后續(xù)最值得關(guān)注的模型演進方向Transformer掀開大模型時代的大幕之后整個領(lǐng)域就進入了一場持續(xù)迭代的馬拉松。踩過Transformer這條主線之后接下來第9章往后會沿著這條主線走得更遠。從原理上看有三個方向特別值得關(guān)注。第一是稀疏注意力Sparse Attention和線性注意力它們主要目的是解決Transformer的O(n2)復雜度問題讓模型在幾十萬字的長文本場景下也能高效運行。第二是混合架構(gòu)比如Mamba這類狀態(tài)空間模型、RWKV這類線性Transformer變體它們試圖在“和Transformer效果一樣好”的同時把推理成本徹底打下來。第三是MoEMixture of Experts架構(gòu)也就是Mixtral、DeepSeek-V3這類模型采用的技術(shù)路線用“每層多個專家網(wǎng)絡(luò)按路由選擇激活部分專家”的思路來擴大模型體量同時保持單次推理的計算量不變。如果你不想繼續(xù)追熱點那么還有一個絕對不過時的基礎(chǔ)功把本章的Transformer轉(zhuǎn)錄成自己的代碼。自己實現(xiàn)一遍注意力頭、位置編碼、殘差連接和層歸一化哪怕只是跑一個最小規(guī)模的demo對底層邏輯的理解都會比單純看文章深不止一個量級。7. 一些個人心得和實操建議寫到這兒關(guān)于Transformer和大模型部署的核心知識已經(jīng)基本鋪完了。最后說幾句掏心窩的話。模型原理很重要但別被原理淹沒了動手的熱情。我在指導別人的時候經(jīng)常強調(diào)一句話“跑通一次勝過看十篇?!辈还苣阌玫氖荗llama還是HuggingFace第一次在本地聽到模型回話的那一刻你對大模型的體感會和讀文章完全不一樣。那種“它是一個真實的系統(tǒng)它在我的電腦上運行”的實感是任何文章都給不了的。技術(shù)棧更新極快但底層根基穩(wěn)得很。做AI這一行最不缺的就是“新詞”。今天這個框架最火明天那個框架就release新版本。但如果你把Transformer的注意力機制、QKV變換、位置編碼這些底子吃透了就會發(fā)現(xiàn)所有新模型到腦子的路都特別短。新東西往往是老東西的排列組合加優(yōu)化看透底層之后你甚至能預(yù)判下一個所謂“顛覆性架構(gòu)”大概會往哪個方向走。還有一點數(shù)據(jù)質(zhì)量永遠大于模型大小。很多人以為“大模型生成得不好換個更大的模型就能解決”其實大部分情況都是輸入數(shù)據(jù)和指令沒設(shè)計好或者微調(diào)數(shù)據(jù)一團糟。把數(shù)據(jù)清洗干凈、指令描述清楚往往比盲目追求大模型劃算得多。在大模型真正落地到生產(chǎn)環(huán)境之前記得花點時間做模型安全評估。無論是模型輸出的內(nèi)容審核還是防止用戶通過Prompt Injection讓模型做出異常行為這些問題在實際工程里都會遇到。配合上合適的風險控制方案一個能用的大模型和一個好用的產(chǎn)品之間差的往往就是這些工程細節(jié)。第8章的Transformer講透了剩下的路就是一步一步往前走。希望這篇內(nèi)容能幫你在“從一個神經(jīng)元到大模型”的路上踩實這一腳關(guān)鍵的臺階。