介紹一下 RetNet

RetNet(Retention Network)是微軟亞洲研究院于 2023 年提出的一種新型序列建模架構,旨在解決 Transformer 架構在長序列處理中存在的計算復雜度高、內存占用大、推理速度慢等核心問題。它通過創新的 “循環注意力機制”,實現了 “訓練時并行高效、推理時線性快速” 的雙重優勢,在保持與 Transformer 相當性能的同時,顯著提升了長序列任務的效率。

核心動機:破解 Transformer 的效率瓶頸


Transformer 的自注意力機制需要對序列中所有 token 對進行計算,復雜度為O(n2)(n 為序列長度),這導致:

  • 長序列(如 10K+ token)訓練時內存占用激增;
  • 推理時需緩存全部鍵值對(KV Cache),內存隨序列長度線性增長;
  • 并行計算依賴矩陣乘法,硬件適配性有限。

RetNet 的目標是設計一種新架構,既能保留 Transformer 的建模能力(如長程依賴捕捉、并行訓練),又能實現線性復雜度(O (n)) 的推理,同時降低內存消耗。

核心技術:三種計算范式的協同設計


RetNet 的核心創新是 “循環注意力機制”,通過統一的數學表達支持三種計算范式,兼顧訓練效率與推理速度:

1. 并行訓練(Parallel Representation)

  • 設計目的:在模型訓練階段保持高并行性,加速收斂(與 Transformer 一致)。
  • 實現邏輯:將序列按時間步展開,通過 “retention 函數” 計算每個位置對歷史信息的 “保留權重”,替代自注意力的全局兩兩交互。
    • retention 函數:R(i,j)=K(j)?Q(i)?S(i?j),其中S是衰減函數(控制歷史信息的衰減速率),確保計算可并行展開。

  • 優勢:訓練時復雜度與 Transformer 相同(O (n2)),但通過結構化矩陣運算(如 Toeplitz 矩陣)優化,實際計算效率更高。

2. 循環推理(Recurrent Representation)

  • 設計目的:在模型推理階段(生成式任務)實現線性復雜度,降低內存占用。
  • 實現邏輯:推理時無需緩存全部歷史 KV 對,而是通過 “狀態循環更新” 保留關鍵信息:
    • 每個新 token 僅依賴上一步的 “隱藏狀態”(而非全部歷史);
    • 狀態更新公式:st?=st?1??γ+Kt??Vt?γ為衰減因子,控制歷史信息的遺忘速率)。

  • 優勢:推理復雜度降至 O (n),內存占用恒定(不隨序列長度增長),生成速度比 Transformer 快 3-5 倍。

3. 分塊遞歸(Chunkwise Recurrent Representation)

  • 設計目的:平衡長序列處理與計算效率,適合文檔級理解等非生成任務。
  • 實現邏輯:將超長序列分割為固定長度的塊(Chunk),塊內用并行計算,塊間用循環更新傳遞狀態。
  • 優勢:兼顧并行性與線性復雜度,在 100K+ token 長文檔任務上,效率比 Transformer 高 10 倍以上。

性能優勢:效率與精度的雙重突破


在公開基準測試中,RetNet 展現出超越 Transformer 的綜合性能:

  1. 效率提升

    • 推理速度:在相同硬件下,生成 10K token 的速度是 Transformer 的 4 倍,且隨序列長度增加優勢更明顯;
    • 內存占用:100K token 序列推理時,內存占用僅為 Transformer 的 1/10;
    • 訓練效率:與 Transformer 訓練速度相當,但支持更大的批次和更長的序列。

  2. 性能保持

    • 語言建模:在 WikiText-103、C4 等數據集上,困惑度(Perplexity)與同等規模 Transformer 相當;
    • 長文本理解:在 LAMBADA(長距離依賴預測)任務上準確率達 76.5%,超越 Transformer(74.2%);
    • 下游任務:在 GLUE、SQuAD 等基準上,微調后性能與 BERT 系列模型持平。


與其他替代架構的區別


架構核心機制推理復雜度長序列優勢場景局限性
RetNet循環注意力O(n)長文檔生成、對話系統衰減函數設計依賴任務特性
Transformer自注意力O(n2)多模態對齊、復雜推理長序列效率低
Mamba選擇性狀態空間模型O(n)超長序列(1M+ token)短序列建模能力略弱于 Transformer
RWKVRNN-Transformer 混合O(n)邊緣設備部署并行訓練效率低于 RetNet

應用場景


RetNet 特別適合對長序列、實時性、低資源有要求的任務:

  • 長文檔生成:如法律合同、學術論文(10K+ token),生成速度比 Transformer 快 3 倍以上;
  • 對話系統:支持無限輪對話歷史,內存占用恒定,適合多輪閑聊或客服場景;
  • 代碼補全:處理大型代碼庫(如 10 萬行代碼)時,上下文理解更高效;
  • 邊緣設備部署:在手機、嵌入式設備上實現輕量級大模型推理(如 7B 參數模型可在 24GB 顯存運行)。

開源與生態


RetNet 的開源生態正在快速發展:

  • 官方實現:微軟已開源 RetNet 的 PyTorch 基礎代碼(GitHub - microsoft/RetNet),包含模型定義和訓練腳本;
  • Hugging Face 集成:社區已將 RetNet 納入transformers庫,支持用AutoModel快速加載預訓練模型;
  • 擴展應用:衍生出多模態版本(如 RetNet-Vision 用于圖像長序列處理)和量化版本(4-bit 量化后顯存降低 75%)。

總結


RetNet 通過 “循環注意力機制” 的創新設計,首次實現了 “并行訓練 - 循環推理” 的無縫銜接,在保持 Transformer 性能的同時,徹底解決了長序列處理的效率瓶頸。它不僅是 Transformer 的高效替代方案,更重新定義了大模型在長上下文場景中的技術標準,尤其在對話系統、長文檔處理等領域具有廣闊的應用前景。隨著開源生態的完善,RetNet 有望成為繼 Transformer 之后,序列建模的新一代基礎架構。

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

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

相關文章

CANopen - PDO映射

CiA402為什么不放到一個PDO中。而是分成幾個PDO? 簡短答案:裝不下 解耦時序。 PDO負載上限:經典CAN的每個PDO只有8字節。TargetPosition(607A:0032bit) ProfileVelocity(60FF:0032bit) ModesOfOperation(6060:008bit) 共9字節,單個PDO放不…

北理工提出僅依賴機載傳感器針對IAP的控制與狀態估計框架

近日,度量用戶、北京理工大學俞玉樹老師團隊在IEEE RAL,IEEE TRO和IEEE TASE期刊上分別發表論文,研究著力于解決多飛行器集聯平臺(Integrated Aerial Platforms, IAPs)的相對位姿和全局定位問題,提出IAP的控…

13年測試老鳥,性能測試-618與雙11大促銷壓測(二)

目錄:導讀 前言一、Python編程入門到精通二、接口自動化項目實戰三、Web自動化項目實戰四、App自動化項目實戰五、一線大廠簡歷六、測試開發DevOps體系七、常用自動化測試工具八、JMeter性能測試九、總結(尾部小驚喜) 前言 1、準備工作 準備…

StreamCap(直播錄制) v1.0.2 綠色版

StreamCap 是一個基于FFmpeg和StreamGet的多平臺直播流錄制客戶端,覆蓋 40 國內外主流直播平臺,支持批量錄制、循環監控、定時監控和自動轉碼等功能。軟件特色 多端支持:支持Windows/MacOS/Web運行。循環監控:實時監控直播間狀態&…

OpenCV:圖像拼接(SIFT 特征匹配 + 透視變換)

目錄 一、核心技術原理與對應 API 解析 1.1 SIFT 特征檢測與描述(尺度不變特征提取) 1.1.1 灰度圖轉換:cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) 1.1.2 SIFT 檢測器初始化:cv2.SIFT_create() 1.1.3 特征點檢測與描述符計算&…

日語學習-日語知識點小記-進階-JLPT-N1階段藍寶書,共120語法(10):91-100語法+考え方13

日語學習-日語知識點小記-進階-JLPT-N1階段藍寶書,共120語法(10):91-100語法1、前言(1)情況說明(2)工程師的信仰(3)高級語法N1語法和難點2、知識點-語法&…

繼承與組合:C++面向對象的核心

C 繼承:從基礎到實戰,徹底搞懂面向對象的 “代碼復用術” 在面向對象編程(OOP)的世界里,“繼承” 是實現代碼復用的核心機制 —— 就像現實中孩子會繼承父母的特征,C 的子類也能 “繼承” 父類的成員&#…

Matplotlib定制:精解顏色、字體、線型與標記

Matplotlib定制:精解顏色、字體、線型與標記導語 Matplotlib 是 Python 數據可視化領域的基石。雖然它的默認樣式足以滿足快速分析的需求,但要創作出具有專業水準、信息清晰、視覺美觀的圖表,就必須掌握其強大的定制功能。本文將深入探討 Mat…

Qt開發經驗 --- Qt監聽文件/文件夾改變(17)

文章目錄[toc]1 概述2 演示效果3 簡單使用示例4 帶界面的使用示例5 源代碼地址更多精彩內容👉內容導航 👈👉Qt開發經驗 👈1 概述 QT實現實時監控文件的創建、修改、刪除操作 跟蹤文件夾內容的增刪改變化 可用于文件發生變化時自…

數據分析:合并一

🔷 DA37:統計運動會項目報名人數(僅輸出有人報名的項目)? 題目描述給定兩個 CSV 文件:items.csv:包含項目信息(item_id, item_name, location)signup.csv:包含員工報名信…

WWW‘25一通讀 |圖Anomaly/OOD檢測相關文章(1)

寫在前面:進入新一輪學習階段,從閱讀開始。 本文分享的是WWW2025收錄的與作者研究相近的graph-based xx相關paper的閱讀筆記,含個人理解,僅供參考😄 0x01 HEI:利用不變性原理實現異配圖結構分布偏移學習 J…

static_cast:C++類型系統的“正經翻譯官”

1. 背景與核心概念 1.1 C的“類型安全”哲學 想象一下,你所在的世界突然失去了所有規則:文字可以隨意變成數字,人可以瞬間變成椅子,汽車能飛上天變成飛機… 這聽起來像是瘋狂的夢境,但對于早期C語言來說,這…

【嵌入式原理系列-第八篇】USART從原理到配置全解析

目錄 一.通信領域基礎知識介紹 1.1 串行和并行通信 1.2 同步和異步傳輸 1.3 串口和COM口 1.4 通信協議標準以及物理層定義 1.5 物理層協議之TTL / RS-232 / RS-485 二.USART介紹 2.1 USART特點介紹 2.2 UART和TTL / RS-232 / RS-485 2.3 USART硬線流控介紹 2.4 USAR…

MariaDB介紹和MariaDB包安裝

文章目錄MariaDB介紹和安裝1.MariaDB介紹1.1 起源與背景1.2 核心特性1.2.1 高度兼容 MySQL1.2.2 優化的存儲引擎1.2.3 企業級功能增強1.2.4 性能優化1.2.5 安全增強1.3 社區與生態1.4 應用場景1.5 總結2.MariaDB安裝2.1 主機初始化2.1.1 設置網卡名2.1.2 設置ip地址2.1.3 配置鏡…

雙指針與滑動窗口算法精講:從原理到高頻面試題實戰

引言:算法選擇的十字路口 在算法面試中,雙指針和滑動窗口如同兩把瑞士軍刀,能高效解決80%以上的數組和字符串問題。本文將深入解析這兩種技術的核心差異,結合力扣高頻題目,提供可直接復用的代碼。 一、算法核心思想解析…

蘋果MAC、MacBook air和pro安裝windows雙系統與iOS分發

文章目錄1. main1.1 準備工作1.2 啟動轉換助理1.3 Windows安裝1.4 蘋果電腦安裝Windows雙系統切換2. 蘋果(iOS)分發/上架2.1 上架App Store2.2 上架TestFlight2.3 webClip免簽上架2.4 超級簽名2.5 企業證書2.6 app分發系統Reference1. main 蘋果電腦安裝windows雙系統 https:…

ArcGIS定向影像(1)——非傳統影像輕量級解決方案

常常聽到這樣的需求,ArcGIS能讓用戶自己低成本的做出谷歌街景嗎?現在 _ArcGIS Pro 3.2 和 ArcGIS Enterprise 11.2 _能夠讓用戶不使用任何插件和擴展的情況下完成街景數據集的構建,數據管理,發布服務和調用的完整解決方案。非常體…

uni-app 網絡之封裝實戰HTTP請求框架

前言在uniapp開發中,網絡請求是每個應用都必不可少的功能模塊。一個優秀的網絡請求封裝不僅能提高開發效率,還能增強代碼的可維護性和可擴展性。本文將基于實際項目經驗,詳細介紹如何封裝一個高效、可維護的Uniapp網絡請求框架,并…

架構師成長之路-架構方法論

文章目錄前言一、先搞懂:架構師不僅僅是“技術大佬”,更是“問題解決者”1.1 架構師的分類:不止“開發架構師”一種1.2 架構師要關注什么?別只盯著技術1.3 架構師解決問題的4步心法:從定義到落地1.4 架構師的成長攻略&…

uniapp在微信小程序中實現 SSE 流式響應

前言 最近需要使用uniapp開發一個智能對話頁面,其中就需要使用SSE進行通信。 本文介紹下在uniapp中如何基于uni.request實現SSE流式處理。 在線體驗 #小程序:yinuosnowball SSE傳輸格式 返回輸出的流式塊: Content-Type為text/event-stream 每個流式塊均為 d…