Transformer Decoder-Only 參數量計算

Transformer 的?Decoder-Only?架構(如 GPT 系列模型)是當前大語言模型的主流架構,其參數量主要由以下幾個部分組成:

  1. 嵌入層(Embedding Layer)
  2. 自注意力層(Self-Attention Layers)
  3. 前饋網絡(Feed-Forward Network, FFN)
  4. Layer Normalization 和偏置項
OperationParameters
Embedding( n_vacab +?n_ntx )?× d_model?
Attention:QKV3 × n_layer?× d_model × d_attn
Attention:Projectn_layer?× d_model × d_attn
Feedforward2? ×?n_layer × d_model × d_ff
Layer Normalization 和偏置項4 ×?n_layer × d_model
Total(Attention + Feedforward)

2? ×?n_layer × d_model × ( 2 ×?d_attn +?d_ff )

≈? 12? ×?n_layer? × d_model^2?

假設d_attn =?d_model,d_ff = 4?× d_model

參數定義:

d_mdole:模型維度;

n_layer:層數;

d_attn:注意力輸出維度;

d_ff:前饋網絡維度;

n_ntx:最大上下文長度(token)

n_head:注意力頭數

n_vacab:詞匯表大小

1.?嵌入層(Embedding Layer)

嵌入層的作用是將輸入 token 轉換為高維向量表示。參數量為:n_vacab?× d_model

此外,絕對位置編碼通常由可學習的嵌入矩陣實現,其權重維度為: n_ntx × d_model

此外,在語言模型中,輸出層通常與嵌入層共享權重矩陣(Tie Embedding),因此不需要額外計算輸出層的參數量。

所以嵌入層總參數數:( n_vacab +?n_ntx )?× d_model?

備注:假設輸入 x_i =? (w_1, w_2,..., w_n_ntx),長度為n_ntx,batch 大小為b,則原始輸入維度為:(b,n_ntx),經過embedding后輸出維度為(b, n_ntx, d_model)

2.?自注意力層(Self-Attention Layers)

每個 Transformer 層包含一個多頭自注意力機制(Multi-Head Self-Attention, MHSA),其參數量主要來自以下三部分:

  • 線性變換矩陣:生成 Query、Key、Value
  • 輸出投影矩陣:將多頭結果拼接后進行線性變換

假設:

  • 輸入的維度為?d_model
  • 注意力頭數為?h
  • 每個頭的維度為?d_k(通常滿足?d_k = d_attn / h)
  • QKV輸出維度d_attn,然后經過投影,輸出維度 d_model
(1)?生成 Query、Key、Value 的線性變換矩陣

每個頭的?QKV?都需要一個獨立的線性變換矩陣,因此總的參數量為:

Attention QKV?Parameters = 3 × d_model × d_attn

(2)?輸出投影矩陣

多頭注意力的結果需要通過一個線性投影矩陣轉換回?d_model?維度,因此參數量為:

Attention Project?Parameters =? d_attn × d_model?

(3)?總自注意力層參數量

單個自注意力層的參數量為:

Self-Attention?Parameters = 3 × d_model × d_attn?+ d_attn?× d_model = 4?× d_model × d_attn

如果有?n_layer?個 Transformer 層,則總的自注意力層參數量為:

Total?Self-Attention?Parameters =?4?× n_layer?× d_model × d_attn

備注:嵌入層輸出的 x維度是(b, n_ntx, d_model),W_Q維度是(d_model, d_attn),則Q = x * W_Q維度是(b, n_ntx, d_attn),通過self-attention后,輸出維度為(b, n_ntx, d_attn),然后通過attention project后維度是(b, n_ntx, d_model)

3.?前饋網絡(Feed-Forward Network, FFN)

每個 Transformer 層包含一個兩層的前饋網絡(FFN),其參數量主要來自以下兩部分:

  • 第一層從?d_model?映射到?d_ff(通常是?d_model?的 4 倍)。
  • 第二層從?d_ff?映射回?d_model
(1)?第一層參數量

第一層將?d_model?映射到?d_ff,因此參數量為:

First?Layer?Parameters=d_model × d_ff

(2)?第二層參數量

第二層將?d_ff?映射回?d_model,因此參數量為:

Second?Layer?Parameters=d_ff × d_model

(3)?總前饋網絡參數量

單個前饋網絡的參數量為:

FFN?Parameters=d_model ×d_ff + d_ff × d_model = 2 × d_model × d_ff

如果有?n_layer?個 Transformer 層,則總的前饋網絡參數量為:

Total?FFN?Parameters = 2? × n_layer?× d_model × d_ff

備注:(b, n_ntx, d_model)經過FFN后輸出維度是(b, n_ntx, d_model)

4.?Layer Normalization 和偏置項

每個 Transformer 層包含兩個 Layer Normalization 操作(分別在自注意力和前饋網絡之后),每個 Layer Normalization 包含兩個可學習參數(縮放因子和偏移因子)。

總的 Layer Normalization 參數量為:

LayerNorm?Parameters = n_layer?× 2 × 2 × d_model = 4 × n_layer?× d_model

5. 總參數量

Total?Parameters =?( n_vacab +?n_ntx )?× d_model? ?+?4?× n_layer?× d_model × d_attn ?+?2? × n_layer?× d_model × d_ff +?4 × n_layer?× d_model?

Total?Parameters?≈??4?× n_layer?× d_model × d_attn ?+?2? × n_layer?× d_model × d_ff =?2? ×?n_layer × d_model × ( 2 ×?d_attn +?d_ff )

假設d_attn =?d_model, 以及d_ff = 4?× d_model,則

Total?Parameters ≈? 12? ×?n_layer? × d_model^2

6.?實際例子

以 GPT-3 為例:

  • 詞匯表大小?n_vacab = 50257?
  • 模型維度?d_model = 12288
  • 前饋網絡維度?d_ff=4 × d_model = 49152
  • 層數?n_layer = 96?
  • 最大上下文長度 (token)n_ntx = 2048

代入公式:

Total?Parameters = (50257 +?2048) ×12288 + 96×(4×122882+8×122882) + 4×96×12288

計算結果約為 175B 參數,與 GPT-3 的實際參數量一致。

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

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

相關文章

(自用)Java學習-5.8(總結,springboot)

一、MySQL 數據庫 表關系 一對一、一對多、多對多關系設計外鍵約束與級聯操作 DML 操作 INSERT INTO table VALUES(...) DELETE FROM table WHERE... UPDATE table SET colval WHERE...DQL 查詢 基礎查詢:SELECT * FROM table WHERE...聚合函數:COUNT()…

【日擼 Java 三百行】Day 11(順序表(一))

目錄 Day 11:順序表(一) 一、關于順序表 二、關于面向對象 三、代碼模塊分析 1. 順序表的屬性 2. 順序表的方法 四、代碼及測試 拓展: 小結 Day 11:順序表(一) Task: 在《數…

Spring Boot動態配置修改全攻略

精心整理了最新的面試資料和簡歷模板,有需要的可以自行獲取 點擊前往百度網盤獲取 點擊前往夸克網盤獲取 無需重啟應用,實時更新配置的終極指南 在微服務架構中,動態配置管理是提高系統靈活性的關鍵技術。本文將通過4種主流方案&#xff0c…

精益數據分析(55/126):雙邊市場模式的挑戰、策略與創業階段關聯

精益數據分析(55/126):雙邊市場模式的挑戰、策略與創業階段關聯 在創業和數據分析的學習旅程中,我們持續探索不同商業模式的奧秘。今天,依舊懷揣著與大家共同進步的想法,深入研讀《精益數據分析》&#xf…

linux內核pinctrl/gpio子系統驅動筆記

目錄 一、簡單介紹二、主要源碼文件和目錄gpio子系統pinctrl子系統兩個子系統之間的關系設備樹例子 三、主要的數據結構gpio子系統pinctrl子系統 四、驅動初始化流程五、難點說明 一、簡單介紹 GPIO子系統: Linux GPIO子系統是Linux內核中負責處理GPIO(通用輸入輸出…

Vue 2 項目中配置 Tailwind CSS、Font Awesome和daisyUI

Vue 2 項目中配置 Tailwind CSS 和 安裝 daisyUI 首先重點注意,Vue2中安裝Tailwind和daisyui一定要注意版本。 最佳版本 使用 Vue 2 TailwindCSS v2 DaisyUI v1 的兼容版本 "tailwindcss": "npm:tailwindcss/postcss7-compat^2.2.17", &q…

5.11 - 5.12 JDBC+Mybatis+StringBoot項目配置文件

JDBC: 預編譯SQL優點:安全,性能更高。 在cmd里面輸入java-jar就可以運行jar包。 Mybatis: 持久層框架。用于簡化JDBC的開發。 數據庫連接池里面放置的是一個一個Connection連接對象。(連接池中的連接可以復用&#…

探索科技的前沿動態:科技愛好者周刊

探索科技的前沿動態:科技愛好者周刊 在信息爆炸的時代,我們每時每刻都被新技術、新理念包圍。而如何在這紛繁復雜的信息中找到對自己有價值的內容,成了一大挑戰。今天,我們要介紹的是一個寶貴的資源——科技愛好者周刊,它致力于為科技愛好者提供優質的科技資訊,每周五發…

Vue3 官方宣布淘汰 Axios,擁抱Alova.js

過去十年,Axios 憑借其簡潔的API設計和瀏覽器/Node.js雙環境支持,成為前端開發者的首選請求庫。但隨著現代前端框架的演進和工程化需求的升級,Alova.js 以更輕量、更智能、更符合現代開發范式的姿態登場。 一、Axios的痛點 1,冗余的適配邏輯,比如Axios的通用配置(但實際…

Spring AI 與 Groq 的深度集成:解鎖高效 AI 推理新體驗

Spring AI 與 Groq 的深度集成:解鎖高效 AI 推理新體驗 前言 在人工智能飛速發展的當下,AI 推理的效率和性能成為開發者關注的焦點。Groq 作為一款基于 LPU? 的超快速 AI 推理引擎,憑借其強大的性能,能夠支持各類 AI 模型&…

風車OVF鏡像:解放AI開發限制的Ubuntu精簡系統

風車OVF鏡像:解放AI開發限制的Ubuntu精簡系統 AI白嫖續杯一站式-風車ovf AI白嫖續杯一站式解決-風車ovf 前言 作為一名AI開發者,我經常在Windows和Linux環境之間切換開發。然而,Windows平臺上的各種免費版限制逐漸成為我工作效率的瓶頸。在尋…

第十部分:文件與動靜態庫

目錄 1、文件系統 1.1、磁盤 1.2、文件系統 1.3、文件的增刪查改 2、軟硬鏈接 2.1、軟鏈接 2.2、硬鏈接 3、物理內存與文件 4、動靜態庫 4.1、靜態庫 4.1.1、靜態庫的制作 4.1.2、靜態庫的使用 4.2、動態庫 4.2.1、動態庫的制作 4.2.2、動態庫的使用 4.3、動靜…

android14優化ntp時間同步

簡介 網絡時間協議NTP(Network Time Protocol)是TCP/IP協議族里面的一個應用層協議,用來使客戶端和服務器之間進行時鐘同步,提供高精準度的時間校正。 當機器的ntp時間同步出現問題時,可以從ntp配置方面進行優化&…

ZYNQ筆記(二十):Clocking Wizard 動態配置

版本:Vivado2020.2(Vitis) 任務:ZYNQ PS端 通過 AXI4Lite 接口配置 Clocking Wizard IP核輸出時鐘頻率 目錄 一、介紹 二、寄存器定義 三、配置 四、PS端代碼 一、介紹 Xilinx 的 Clock Wizard IP核 用于在 FPGA 中生成和管理…

服務器帶寬基礎知識

服務器帶寬基礎知識詳解 一、帶寬的定義與基本概念 服務器帶寬(Bandwidth)是指服務器與互聯網之間在單位時間內傳輸數據的能力,通常以 Mbps(兆比特每秒) 或 Gbps(吉比特每秒) 為單位衡量。它決…

OpenCV CUDA 模塊中在 GPU 上對圖像或矩陣進行 翻轉(鏡像)操作的一個函數 flip()

操作系統:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 編程語言:C11 算法描述 cv::cuda::flip 是 OpenCV 的 CUDA 模塊中的一個函數,用于在 GPU 上對圖像或矩陣進行 翻轉(鏡像)操作。它類似…

shell腳本實現docker運行鏡像掛載

根據本文腳本展示內容可以實現多種容器掛載 演示nginx掛載 創建掛載目錄 mkdir -p /data/nginx/{conf,html,logs} 參數含義: docker run -d --name 給運行的鏡像取名 -v /宿主機/目錄:/容器內/目錄 鏡像名 示例: docker啟動nginx(當…

WiseAD:基于視覺-語言模型的知識增強型端到端自動駕駛——論文閱讀

《WiseAD: Knowledge Augmented End-to-End Autonomous Driving with Vision-Language Model》2024年12月發表,來自新加坡國立和浙大的論文。 在快速發展的視覺語言模型(VLM)中,一般人類知識和令人印象深刻的邏輯推理能力的出現&a…

NestJS 知識框架

一、核心概念 1. 架構基礎 基于 Express/Fastify 的 Node.js 框架 采用模塊化設計 使用 TypeScript 構建(也支持 JavaScript) 借鑒 Angular 的設計理念 2. 主要組件 模塊 (Module): 應用的基本組織單元 控制器 (Controller): 處理 HTTP 請求 服務…

深入理解 Istio v1.25.2

要深入理解 Istio 的最新版本(截至 2025 年 5 月,最新版本為 1.25.2,發布Iweb:1?)源碼,我們可以通過分析其核心組件和代碼結構來加深對 Istio 的理解。以下是對 Istio 源碼的解讀,結合其架構和功能&#x…