LLM 中增量解碼與模型推理解讀

在【LLM】LLM 中 token 簡介與 bert 實操解讀一文中對 LLM 基礎定義進行了介紹,本文會對 LLM 中增量解碼與模型推理進行解讀。

一、LLM 中增量解碼定義

增量解碼(Incremental Decoding)是指在自回歸文本生成過程中,模型每次只計算并生成一個新的 token,并且會利用之前計算得到的中間結果,而不需要重新計算整個序列的表示,以此來提高生成效率和減少計算資源消耗。

在 GPT 系列模型生成對話回復、文章續寫等場景中廣泛應用了增量解碼。

二、增量解碼工作過程

  1. 初始輸入:在生成文本時,首先輸入一個初始的文本序列(比如一個問題或者提示詞 ),模型通過 Prefill 階段計算這個初始序列的隱藏狀態,同時生成并緩存與注意力機制相關的鍵(Key)和值(Value)矩陣,即 KV 緩存(KV Cache) 。
  2. 逐個生成 token:接下來進入解碼階段,模型會基于上一步生成的 token 和緩存的 KV 矩陣,計算當前位置的隱藏狀態,然后預測下一個 token。例如,在生成第一個 token 后,將其與之前緩存的 KV 矩陣結合,計算得到第二個 token 的隱藏狀態,進而預測第二個 token 。每生成一個新的 token,模型就更新相關的計算狀態,但不需要重新計算整個輸入序列的隱藏狀態,只是在之前計算結果的基礎上增量式地進行計算。
  3. 循環直至結束:重復上述步驟,直到達到預設的結束條件,比如生成了特定的結束標記、達到了最大文本長度限制或者滿足了其他停止生成的條件 。 總之,增量解碼通過復用計算結果和 KV 緩存,可以有效提升自回歸模型文本生成的效率和性能。

注意:當 KV cache 的長度超出閾值(例如 1024KB)會進行清理,清理策略取決于大模型的處理策略,有滑動窗口(清理最早的)和全部清理等。

三、新 token 選擇

模型在生成新 token 時,從可能的下一個詞表(token)中選擇一個特定的詞。詞表中有多個詞,詞的個數可以理解為 vocab size,其中每個位置的大小表示選取這個 token 的概率,如何基于這個信息選擇合適的 token 作為本次生成的 token。

  • 貪婪采樣(Greedy Sampling) 在每一步,模型選擇概率最高的詞作為下一個詞。這種方法快速且計算成本低,但它可能導致重復。
  • 隨機采樣(Random Sampling) 模型根據概率分布隨機選擇下一個詞。這種方法能夠引入隨機性,從而生成更多樣化的文本。但是,隨機性也可能導致文本質量下降,因為模型可能選擇低概率但不相關的詞。
  • Top-k 采樣(Top-k Sampling) 這種方法首先選擇 k 個最可能的詞,然后從這個子集中隨機選擇下一個詞。這種方法旨在平衡貪婪采樣的確定性和隨機采樣的多樣性。

四、Prompt(提示詞)

Prompt 是用戶與 LLM 交互的入口,Prompt 進入 Prefill 階段處理,并成為生成后續內容的“上下文語境”。其核心作用是引導模型生成特定類型、風格或內容的輸出。簡單來說,Prompt 就是你告訴模型 “要做什么” 的一段話。

在大模型推理中,Prompt 是用戶與模型交互的起點,它在 Prefill 階段被模型處理,作為生成后續內容的基礎。例如:

Prompt: "請寫一首關于秋天的詩。"

LLM 根據此提示生成對應內容。

設計優質 Prompt 是激發 LLM 能力的關鍵,需要明確任務、約束條件和期望輸出,例如:明確任務指令/給出格式規范/提供上下文例子

五、模型推理:Prefill 與 Decode

參考鏈接:https://blog.csdn.net/firehadoop/article/details/146341556

LLM 推理分為兩個階段:

  1. Prefill 階段(批量處理)
  • 輸入 token 序列一次性通過所有層。
  • 并行計算生成每個 token 的 Key-Value (KV) 緩存,用于后續的高效生成。
  1. Decode 階段(自回歸處理)
  • 每次生成一個新 token,需要經過模型所有層。
  • 依賴 Prefill 階段生成的 KV 緩存。
  • 推理過程是串行的,需等待前一個 token 生成完畢。

通過 KV Cache,避免了重復計算,提高生成效率。

Description

prefill 與 decode 的關系類似于接力賽:Prefill 階段跑完第一棒,然后 Decode 階段接過接力棒,一個接一個地完成余下的路程。

以查詢 “介紹一下愛因斯坦” 為例,其核心流程如下:

5.1 初始化階段(Prefill)

  • 輸入完整 prompt:“介紹一下愛因斯坦”
  • 模型處理輸入并生成初始 KV 緩存(存儲注意力機制的鍵值對)
  • 生成第一個輸出 token:“愛”

5.2 循環迭代解碼階段(Deocde)

Description

  • 關鍵機制:每次循環僅處理單個新 token,復用之前緩存的 KV 矩陣,計算復雜度從 O(N^2) 降至 O(N)。
  • 輸出連貫性:新 token 的生成依賴于歷史所有 token (原始輸入+已生成內容)的語義信息,確保上下文邏輯一致。

5.3 小結

Description

未來會再介紹 LLM 中評價指標與訓練部署~

六、MoE 簡介

一般來說,一個 MoE layer 包含 N 個 Experts(FFN 網絡)和一個 Gating Network。其中 Gating Network 可以將一個 token routing(Token 路由)到少數的專家進行計算。可參考下圖:

Description

  • 把不同領域專家模型(比如數學專家 LLM、編程專家 LLM ),抽象成 “專家 Token” 塞進一個 “元模型(meta LLM)” 的詞表。
  • 用戶輸入問題時,元模型生成特殊 Token 來 “路由”(決定調用哪個專家模型 )。比如遇到數學題,就觸發 “數學專家 Token”,讓數學專家 LLM 處理;遇到編程問題,調用 “編程專家 Token”。

總結:Token routing 就是給不同重要性、不同功能的 Token,規劃調用不同專家模型,讓大模型更聰明分配算力、協同專家能力,最終實現 “又快又準又省資源” 的推理。

從整體看,MoE 在 LLM 模型的什么位置呢?如下圖:

參考 https://github.com/jingyaogong/minimind?tab=readme-ov-file

在這里插入圖片描述

Description

me-ov-file

[外鏈圖片轉存中…(img-yOYHNEwg-1756030828642)]

[外鏈圖片轉存中…(img-wwGuNHge-1756030828642)]

以上就是本文的全部介紹啦~

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/94458.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/94458.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/94458.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

1.Spring Boot:超越配置地獄,重塑Java開發體驗

目錄 一、Spring框架:偉大的基石 歷史背景與挑戰 Spring的革命性貢獻 新的挑戰:配置地獄 二、Spring Boot:約定大于配置的革命 四大核心特性 1. 快速創建獨立應用 2. 自動配置:智能化的魔法 3. 起步依賴:依賴管…

assert使用方法

assert 是 Python 中用來進行 調試 和 驗證 的一個關鍵字,它用于測試一個 條件表達式 是否為真。如果條件為假,assert 會拋出一個 AssertionError 異常,通常帶有錯誤信息。語法:assert condition, "Error message"condi…

【實習總結】快速上手Git:關鍵命令整理

目錄 git的四大工作區域 git首次配置 克隆遠程倉庫 提交代碼到遠程倉庫 查看文件狀態(可選) 添加文件到暫存區 將暫存區的內容提交到本地倉庫 將本地的提交上傳到遠程倉庫 拉取并合并代碼 第一種方式 第二種方式 分支管理 查看與創建分支 …

02-開發環境搭建與工具鏈

第2課:開發環境搭建與工具鏈 📚 課程目標 掌握DevEco Studio的下載、安裝和配置熟悉HMS Core(華為移動服務)的使用了解鴻蒙模擬器與真機調試環境掌握必備開發工具的使用 🛠? DevEco Studio環境搭建 2.1 下載與安裝…

刪掉一個元素以后全為1的最長子數組-滑動窗口

1493. 刪掉一個元素以后全為 1 的最長子數組 - 力扣&#xff08;LeetCode&#xff09; Solution #include<iostream> #include<vector> using namespace std;class Solution { public://滑動窗口//動態維護一個窗口&#xff0c;窗口內只能有1個0&#xff0c;記錄窗…

【計算機網絡 | 第8篇】編碼與調制

文章目錄通信系統中的編碼與調制&#xff1a;從信道基礎到信號傳輸技術一、信道與通信電路&#x1f342;二、三種基本通信方式&#x1f4d6;1. 單向通信&#xff08;單工通信&#xff09;2. 雙向交替通信&#xff08;半雙工通信&#xff09;3. 雙向同時通信&#xff08;全雙工通…

當AI遇上終端:Gemini CLI的技術魔法與架構奧秘

"代碼不僅僅是指令的集合&#xff0c;更是思想的載體。當AI與終端相遇&#xff0c;會碰撞出怎樣的火花&#xff1f;" 在這個AI技術日新月異的時代&#xff0c;Google推出的Gemini CLI無疑是一顆璀璨的明星。它不僅僅是一個命令行工具&#xff0c;更是一個將人工智能無…

ViLU: Learning Vision-Language Uncertainties for Failure Prediction

研究方向&#xff1a;Image Captioning1. 論文介紹本文提出ViLU&#xff08;Vision-Language Uncertainties&#xff09;&#xff0c;一個用于學習視覺語言不確定性量化&#xff08;UQ&#xff09;和檢測視覺語言模型故障的事后框架。使用VLMs進行量化&#xff08;UQ&#xff0…

數據集筆記:百度地圖高德地圖坐標互轉

1 為什么會有高德坐標系和百度坐標系&#xff1f;根據《測繪法》和國家保密法規&#xff0c;在中國大陸范圍內的地理坐標數據必須做加密處理&#xff0c;不允許直接使用 WGS84&#xff08;openstreetmap&#xff09;所以出現了GCJ-02 和 BD-09高德、騰訊、谷歌中國都遵循 GCJ-0…

SkyWalking高效線程上下文管理機制:確保調用鏈中traceId來自同一個請求

SkyWalking Agent 能確保獲取到“正確”的 traceId,其核心在于它建立并維護了一套高效的線程上下文管理機制。這套機制確保了即使在復雜的多線程、異步環境下,也能將正確的上下文(包含 traceId)與當前正在執行的代碼邏輯關聯起來。 其工作原理可以概括為下圖所示的流程: …

Kafka-Eagle安裝

目錄Eagle環境安裝Mysql環境準備Kafka環境準備Eagle安裝Kafka-Eagle框架可以監控Kafka集群的整體運行情況&#xff0c;在生產環境中經常使用 Eagle環境安裝 Mysql環境準備 Eagle的安裝依賴于Mysql&#xff0c;Mysql主要用來存儲可視化展示的數據 將mysql文件夾及里面所有內…

Matlab系列(005) 一 歸一化

目錄1、前言2、什么是歸一化&#xff1f;3、為什么要進行歸一化4、歸一化方法詳解與Matlab實現5、總結1、前言 ? ??歸一化技術是數據預處理的核心環節&#xff0c;本文將深度解析主流歸一化方法&#xff0c;提供可復現Matlab代碼&#xff0c;并探討其在各領域中的應用場景。…

【K8s】整體認識K8s之namespace

命名空間將資源劃分為相互隔離的組。kubectl get namespace/ns系統默認創建四個namespace&#xff0c;分別是default、kube-node-lease、kube-public、kube-system。default 沒有指明使用其它命名空間的對象所使用的默認命名空間、kube-system 系統創建對象所使用的命名空間。…

rust語言 (1.88) egui (0.32.1) 學習筆記(逐行注釋)(十八) 使用表格

使用表格egui_extras::TableBuilder // Cargo.toml [dependencies] eframe "0.32.1" egui "0.32.1" egui_extras "0.32.1"egui_extras::Column::auto() 列寬根據內容自動計算.resizable(true) 允許用戶手動拖動調整列寬 fn main() -> efra…

【C#】構造函數實用場景總結

文章目錄前言一、構造函數是什么&#xff1f;二、構造函數的用法1.初始化對象&#xff0c;避免無效狀態2 初始化靜態成員3 構造函數重載4.構造函數鏈5. 單例模式&#xff0c;多次實例化保持一個對象6. 依賴注入7. 初始化只讀對象前言 構造函數是我們平常編程里經常能碰到的老伙…

LLM預訓練架構全解析:從零構建一個語言世界的“操作系統”

導讀&#xff1a;作為開發者&#xff0c;我們每天都在import或#include各種庫&#xff0c;我們信任這些由無數代碼構成的底層依賴。那么&#xff0c;當我們調用一個LLM時&#xff0c;它所依賴的那個更底層的、無形的**“語言操作系統”**&#xff0c;又是如何被“編譯”出來的&…

Linux服務測試題(DNS,NFS,DHCP,HTTP)

一&#xff0c;實驗拓撲&#xff1a;二&#xff0c;需求APPSRV&#xff1a;主機名&#xff1a;appsrv.example.comip地址&#xff1a;192.168.100.10網關&#xff1a;192.168.100.254網卡為NAT模式STORAGESRV&#xff1a;主機名&#xff1a;storagesrv.example.comip地址&#…

DevOps 簡介及就業前景

DevOps 簡介及就業前景 目錄 DevOps簡介核心概念重難點解析具體場景使用就業前景學習路徑最佳實踐 DevOps簡介 什么是DevOps DevOps是Development&#xff08;開發&#xff09;和Operations&#xff08;運維&#xff09;的組合詞&#xff0c;是一種軟件開發和IT運維的文化…

《CF1120D Power Tree》

題目描述 給定一棵有 n 個頂點的有根樹&#xff0c;樹的根為頂點 1。每個頂點都有一個非負的價格。樹的葉子是指度為 1 且不是根的頂點。 Arkady 和 Vasily 在樹上玩一個奇怪的游戲。游戲分為三個階段。第一階段&#xff0c;Arkady 購買樹上的一些非空頂點集合。第二階段&…

CPTS-Agile (Werkzeug / Flask Debug)

枚舉 nmap -sC -sV -T4 -Pn -n -p- 10.10.11.203進行常規的網頁枚舉和測試發現報錯信息&#xff0c;‘Werkzeug / Flask Debug’ 測試Export導出功能發現存在路徑遍歷查看這篇文章 https://book.hacktricks.wiki/zh/network-services-pentesting/pentesting-web/werkzeug.html#…