網易大模型算法面經總結第一篇

網友一

  1. MHA的原理,是如何進行加速的,用的什么框架推理。
    回答:
    ①先答一下什么是MHA:Multi-Head Attention(MHA)是 Transformer 的核心機制,并行地關注輸入序列中不同位置的多種信息
    ②回答MHA的原理就是MHA的計算步驟:
  • 第一步進行線性變換與分割: 首先,MHA 會對輸入的 Q、K、V 分別進行 h 次線性變換,生成 h 組新的 Q、K、V。每一組都代表一個“頭”(head),它們相當于在不同的抽象層面上理解輸入。
  • 第二步進行注意力計算:每個頭都會獨立地執行一次縮放點積注意力計算。這個計算包括計算 Q 和 K轉置的點積來衡量詞之間的相關性,然后(這個頭的維度特征)進行縮放,然后通過 Softmax 歸一化得到注意力權重,最后用這些權重對 V 進行相乘,得到每個頭的輸出。
  • 第三步進行結果拼接與最終投影:所有 h 個頭的輸出會被拼接在一起,形成一個更寬的特征向量。最后,這個拼接后的向量會再經過一次線性變換,得到 MHA 的最終輸出。
    在這里插入圖片描述

③MHA是如何進行加速的,這個問題的回答有兩個角度

  • 第一個角度是從MHA這個算法原理本身來回答:
    • 首先MHA有天然的并行行,MHA 的“多頭”設計意味著每個頭之間的計算是獨立的,這使得它們可以完全并行地執行。在 GPU 等并行計算硬件上,這種并行性能夠被充分利用,大大縮短了計算時間。
    • 其次,MHA 的核心操作是大量的矩陣乘法(例如 Q 和 K 的點積,Attention_Weights×V)以及線性變換。現代深度學習框架底層都集成了高度優化的線性代數庫,這些庫通過精巧的算法和硬件指令優化,能以極高的效率完成這些計算。
    • 最后是算法層面的優化:,例如 FlashAttention 這樣的新型算法,它通過減少高帶寬內存(HBM)的訪問(將中間計算結果保存在更快的片上 SRAM 中)和融合多個 GPU 核操作,顯著提升了注意力機制的計算速度。
  • 第二個角度是還可以通過些什么操作使得MHA進行加速:
    • 第一是算子級優化,比如 FlashAttention,通過手寫 CUDA kernel,把 softmax + dropout + matmul 融合成一個操作,減少了中間顯存讀寫,顯著提升了計算速度和內存利用率。
    • 第二是進行結構級優化,采用稀疏 Attention 或低秩近似,比如 Longformer 只對局部窗口做 attention,Performer 用核函數近似 softmax
    • 第三是動態裁剪優化,例如在推理階段使用 Token Pruning 或 Early Exit,提前丟棄對結果影響小的 token,減少計算量。
      ④MHA用什么框架進行推理
  • 第一使用HuggingFace Transformers:最主流的高層推理框架,內部支持了標準 attention 和 FlashAttention 加速。
  • 第二使用ONNX Runtime:框架可以將模型導出為 ONNX,內部使用圖優化,高性能內核,硬件加速來加速推理。
  • 第三使用TensorRT(NVIDIA):TensorRT能夠在NVIDIA上實現推理加速,內部圖優化技術、內核融合、量化壓縮和硬件調度優化來加速推理。
  • 第四使用 vLLM:針對大語言模型推理的優化框架,支持 paged attention,減少 KV 緩存冗余。
  1. 用過vLLM框架嗎?
    回答:是的,用過 vLLM 框架,主要是用來加速大語言模型(比如 LLaMA 和 ChatGLM)的本地推理部署。我使用 vLLM 啟動兼容 OpenAI API 的服務端,加載 Huggingface 格式模型,通過 openai.ChatCompletion 接口實現了高并發請求的響應生成。vLLM 的優勢是支持 PagedAttention,這種機制可以實現 KV Cache 的共享和動態調度,顯著提升多用戶并發下的吞吐量,降低顯存占用。同時,它對調用者非常友好,不需要改代碼就可以用 openai 風格訪問,非常適合構建本地 Chat 服務或微服務部署。

  2. 用過什么數據合成的方法
    回答:我用過的數據合成方法有XX種:
    第一種是基于規則的數據生成方法,就是自己設計模板,生成大量的輸入輸出對。比如先有一個句子模板角色經常在做動作,然后有一個角色和動作的列表,通過循環的方式去填充句子,擴充句子。
    第二種是基于統計模型的方法,就是利用現有數據的統計特性來生成新的數據,像n-gram模型,這種方式是先獲取語料庫,然后用n元詞組來表示,然后訓練根據n-1個詞生成第n個詞的模型,然后再通過滑動窗口生成完整的句子。

  3. PagedAttention原理
    從為什么,是什么,怎么做三個角度來回答:
    ①PagedAttention在出現之前,主流的LLM推理框架在管理KV Cache時通過提前預留空間存在嚴重的內存浪費問題。
    ②PagedAttention將KV Cache的存儲從連續轉變為非連續,他將KVCache分成一個個小的block,然后通過block table來進行索引,用塊表來映射到物理內存中的不同位置。然后系統會動態分配內存,每生成新的token時,只需要分配新的block然后在塊表中給出對應的記錄,來進行按需分配。(就和數據結構中數組和指針的概念類似)
    ③PagedAttention實現了近乎于0的內存浪費,并且擁有有極高的吞吐量。

  4. 投機采樣是什么,什么情況下用投機采樣才能效果好?
    第一個子問題是定義和原理回答:
    投機采用是一種加速大語言模型推理的技術。原理是通過一個更快更小的“草稿模型”來生成候選token,然后用更大的“目標模型”驗證token是否正確,減少大模型的調用次數。
    第二個子問題:
    ①草稿模型和目標模型一致性高的情況下的情況下效果好
    ②生成模型具有一定可預測性,像一些代碼生成,結構化數據生成的任務
    ③草稿模型的速度要顯著大于目標模型,接受率越高越好
    ④在GPU或TPU,或者分布式設備上效果更佳。

  5. LoRA原理,為什么可以低秩微調,rank和阿爾法調參經驗,和數據量有關系嗎

  • LoRA的原理:LoRA是一種高效微調技術,通過在模型原本的權重旁邊附加兩個小矩陣來學習增量知識,解決大模型全量微調問題。首先凍結預訓練權重不進行更新,然后引入A和B兩個低秩矩陣學習增量知識△W,最后前向傳播最后和預訓練權重合并。
  • 為什么可以低秩微調:大語言模型在預訓練階段已經包含了非常豐富的知識,當學習新任務時候,他的改變量是低秩,低秩的理解就是在龐大的知識空間中,進行微調的調整。
  • rank和α調參經驗:他們兩是用來控制BA矩陣最終的大小,變化量是α/r,α值一般設置為rank值或者兩倍,讓α值比較高時,會更多從新知識學習,如果遺忘了通用知識就得調小。可以網格搜索,先搜索r,找到比較好的之后固定,再搜索α。
  • 和數據量有關系嗎:有關系,大數據量小r容易欠擬合,小數據量大r會過擬合。小r一般16以內,大r一般32以外。
  1. PPO原理,為什么需要DPO
    PPO原理回答:PPO是實現RLHF的核心算法,PPO過程有三個模型,一個是SFT初始策略模型,第二個是RM品味模型,用來給回答打分,最后是PPO模型,近端優化策略,對SFT模型進行微調,讓他的RM分數盡可能高。
    為什么需要DPO:因為PPO的需要訓練的模型多,成本高,如果獎勵模型出現問題,PPO就會把缺陷學習到。

  2. MoE原理,具體怎么實現
    MoE的核心思想是“分而治之”,MoE引入了多個“專家”和一個“門控網絡”來解決傳統稠密模型參數量大的問題。具體實現是:假如有N個專家,我們每次選擇Top-K個專家。當Token向量從自注意力層進入MoE層前,先會通過路由計算計算出一個logits向量,對應每個專家的分數,然后選擇最高的K個專家,用softmax進行門控制計算得到每個專家的權重,然后輸入向量輸入這K個專家中進行計算得到的結果和門控值進行加權求和得到輸出。

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

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

相關文章

Vue3 面試題及詳細答案120道(91-105 )

《前后端面試題》專欄集合了前后端各個知識模塊的面試題,包括html,javascript,css,vue,react,java,Openlayers,leaflet,cesium,mapboxGL,threejs&…

SAP-MM-物料進銷存表

ABAP庫存進銷存報表程序摘要 該ABAP程序是一個完整的庫存進銷存報表系統,主要功能包括: 報表類型選擇: 物料庫存進銷存 批次庫存進銷存 寄售庫存進銷存 供應商庫存進銷存 原料庫存進銷存 主要功能: 從歷史數據表(MARDH, MSKAH, MSLBH, MCHBH等)獲取期初庫存 處理物料移動數…

這幾天都是發癲寫的

#include <iostream> #include <vector> #include <unordered_map> #include <algorithm> #include <cmath> // for sqrt// Gen-Sort 實現&#xff08;保持不變&#xff09; void genSort(std::vector<int>& arr) {if (arr.empty()) r…

QT6 源,七章對話框與多窗體(11) 進度對話框 QProgressDialog:屬性,公共成員函數,槽函數,信號函數,與源代碼帶注釋

&#xff08;1&#xff09; 本類的繼承關系 &#xff1a;可見&#xff0c;進度對話框&#xff0c;也是 QDialog 的子類&#xff0c;在其上面又擺放了一些控件&#xff0c;構成了不同用途的對話框。咱們也可以自定義對話框。只是沒有 QT 官方大師們做的好。 人家在定義這 6 個子…

學習游戲制作記錄(技能系統)7.24

1.技能系統概念首先讓我們了解一下游戲的技能本質是什么&#xff0c;以投擲劍為例子&#xff0c;當玩家使用這個技能時&#xff0c;首先會播放玩家的動畫&#xff0c;隨后通過技能腳本創建一個劍的對象&#xff0c;當劍回收時會再次調用腳本&#xff0c;讓它朝向玩家飛來并銷毀…

外部存檔(External Archive)機制

前言 提醒&#xff1a; 文章內容為方便作者自己后日復習與查閱而進行的書寫與發布&#xff0c;其中引用內容都會使用鏈接表明出處&#xff08;如有侵權問題&#xff0c;請及時聯系&#xff09;。 其中內容多為一次書寫&#xff0c;缺少檢查與訂正&#xff0c;如有問題或其他拓展…

MybatisPlus操作方法詳細總結

摘要&#xff1a;本文圍繞 MyBatis-Plus 數據操作展開&#xff0c;涵蓋標準數據層 CRUD 與分頁查詢&#xff1b;以及各種的復雜 SQL 查詢&#xff1b;映射匹配&#xff08;TableField、TableName 注解&#xff09;與 ID 生成策略&#xff08;TableId 五種類型及全局配置&#x…

【C語言進階】動態內存管理的面試題||練習

本節內容專門整理了一些動態內存管理的面試題&#xff0c;配有詳細的解答。 目錄 1. 看代碼說結果 2. 看代碼說結果 3. 看代碼說結果 4.小樂樂與歐幾里得 描述 分析1&#xff1a; 分析2&#xff1a; 代碼&#xff1a; 5. 空心正方形 分析&#xff1a; 1. 看代碼說結…

【圖論】倍增與lca

void dfs(long u,long father){ dep[u]dep[father]1;//只在這里初始化depfor(long i1;(1<<i)<dep[u];i)fa[u][i]fa[fa[u][i-1]][i-1];//只這里用的倍增for(long ihead[u];~i;iedge[i].next){long vedge[i].to;if(vfather)continue;fa[v][0]u;dfs(v,u); }} long lca(lo…

VS Code 美化插件

目錄1. Better Comments 更好的注釋2. indent-rainbow 彩虹的縮進3. Trailing Spaces 尾隨的空格4. Gruvbox Material 護眼的材質5. Md Editor 博客編輯器6. 待補充推薦筆記&#xff1a;VS Code寫代碼必備的五款代碼美化插件 1. Better Comments 更好的注釋 Better Comments Be…

火語言 RPA 在日常運維中的實踐

在系統運維和技術支持工作中&#xff0c;總有一些操作像 “固定程序” 一樣循環往復&#xff1a;定期檢查服務器狀態、批量處理用戶權限申請、手動清理系統日志…… 這些工作步驟固定、邏輯簡單&#xff0c;卻占用了大量本可用于故障排查和系統優化的時間。近期在優化運維團隊的…

FOUPK3system5XOS系統 NTX V2.0發布通知

FOUPK3system5XOS系統NTX V2.0發布通知更新1.系統安全&#xff1a;使用FOUPK3system5XOS NOS X9新內核與FOUPK3system5XOS系統19.63正式版一樣提供更好的安全性2.原生應用&#xff1a;啟用FOUPK3system5XOS ONS X9 API 72服務FOUPK3system5XOS系統 NTX V2.0用戶支持使用FOUPK3…

爬蟲算法原理解析

文章目錄 核心算法原理 1. 圖遍歷算法 廣度優先搜索(BFS) 深度優先搜索(DFS) 2. URL調度算法 優先級隊列調度 3. 頁面去重算法 基于哈希的去重 基于布隆過濾器的去重 4. 鏈接提取與規范化 5. 抓取頻率控制算法 6. 增量爬取算法 高級算法策略 1. PageRank算法在爬蟲中的應用 2. …

探索雙鏈表:C語言中的鏈式結構魔法

目錄 引言 一、雙鏈表基礎 1.1、什么是雙鏈表&#xff1f; 1.2、雙鏈表節點的結構定義 二、雙鏈表的基本操作 2.1、雙鏈表的初始化 2.2、尾插法 2.3、頭插 2.4、判斷雙鏈表是否為空 2.5、尾刪法 2.6、頭刪法 2.7、查找 2.8、雙鏈表在指定位置之前插入 2.9、雙鏈表…

HTML5 + CSS3模擬西門慶、武大郎和潘金蓮的精彩520微信聊天,看完我又相信愛情了

今天520了&#xff0c;我用HTML5 CSS3模擬了西門慶、武大郎和潘金蓮的精彩微信聊天&#xff0c;希望你看完以后可以在緊張的工作中&#xff0c;放松一下&#xff0c;開心一下&#xff0c;同時祝你在這個520可以過得開心快樂。 目錄 1 實現思路 1.1 聊天實現素材 1.2 HTML布…

【Linux】Linux了解與基本指令(1)

hello~ 很高興見到大家! 這次帶來的是C中關于Linux基本指令這部分的一些知識點,如果對你有所幫助的話,可否留下你寶貴的三連呢? 個 人 主 頁: 默|笙 文章目錄一、認識Linux二、操作系統&#xff08;OS&#xff09;三、基本指令1. 目錄與普通文件1.1 目錄1.2 普通文件2. pwd 與…

dify 學習筆記

目錄 啟動項目 瀏覽器訪問&#xff1a; dify刪除工作流 代碼是開源dify 啟動項目 cd E:\project\qwen\dify-main\docker docker compose up -d 瀏覽器訪問&#xff1a; http://127.0.0.1/apps dify刪除工作流 右下角&#xff0c;三個點&#xff0c;點擊彈出框&#xff0…

【YOLOv8改進 - 特征融合】FCM:特征互補映射模塊 ,通過融合豐富語義信息與精確空間位置信息,增強深度網絡中小目標特征匹配能力

YOLOv8目標檢測創新改進與實戰案例專欄 專欄目錄: YOLOv8有效改進系列及項目實戰目錄 包含卷積,主干 注意力,檢測頭等創新機制 以及 各種目標檢測分割項目實戰案例 專欄鏈接: YOLOv8基礎解析+創新改進+實戰案例 文章目錄 YOLOv8目標檢測創新改進與實戰案例專欄 介紹 摘要 文…

算法訓練營day30 貪心算法④ 重疊問題 452. 用最少數量的箭引爆氣球、435. 無重疊區間 、 763.劃分字母區間

貪心算法的第四篇博客&#xff0c;主要是重疊問題的練習&#xff0c;思路都較為簡單&#xff0c;最后一題可能需要著重思考一下 452. 用最少數量的箭引爆氣球 遍歷數組&#xff0c;如果存在重疊則減少一支箭&#xff08;不重疊則增加一支箭&#xff09; 重疊的判定&#xff1a…

Gradio, Streamlit, Dash:AI應用開發的效率之選

在人工智能時代&#xff0c;如何快速將模型原型轉化為交互式應用&#xff0c;是許多開發者面臨的挑戰。Gradio、Streamlit 和 Dash 作為流行的Python框架&#xff0c;各自以其獨特的優勢&#xff0c;幫助我們高效地構建AI應用界面。本文將深入對比這三大框架的優缺點、適用場景…