關于deepseek R1模型分布式推理效率分析

1、引言

? ? ? ?DeepSeek R1 采用了混合專家(Mixture of Experts,MoE)架構,包含多個專家子網絡,并通過一個門控機制動態地激活最相關的專家來處理特定的任務 。DeepSeek R1 總共有 6710 億個參數,但在每個前向傳播過程中僅激活 370 億個參數 。模型的每一層都包含 256 個專家 ,并且每個 token 會并行路由到其中 8 個不同的專家("num_experts_per_tok": 8)進行評估 。

2、DeepSeek R1 的混合專家架構

? ? ? DeepSeek R1 由 61 個 Transformer 層組成 。MoE 架構主要在 Transformer 模塊的前饋網絡(Feed-Forward Network,FFN)層中實現 。每個 FFN 層都包含 256 個專家 。理解 MoE 位于 Transformer 層的 FFN 中,有助于理解計算的結構以及如何應用分布式。Transformer 層是像 DeepSeek R1 這樣的模型的基本構建模塊。DeepSeek R1模型的671B總參數中,并不是所有參數都在專家層中。MoE模型的參數可以分為兩類:

  1. 稀疏參數:只在特定token激活的專家層參數
  2. 密集參數:每個token都會使用的共享參數
  • 在DeepSeek R1中每次激活的37B參數具體如下:
  • 1個共享專家(所有token都激活同一個共享專家)
  • 門控網絡選擇的8個普通專家(從255個普通專家中選擇)
  • 所以總共是9個專家

參數計算:

  • 共享專家的參數量與普通專家相當(約2.6B參數)
  • 總共激活的參數 = 1個共享專家(~2.6B) + 8個普通專家(~21B) + 稠密層參數(~13.4B) ≈ 37B

DeepSeek R1專家分布分析

從配置文件中可以看到關鍵參數:

  1. MoE層的分布

    • "moe_layer_freq": 1 - 這表明每一層都是MoE層,而不是我之前猜測的隔層分布
    • "num_hidden_layers": 61 - 總共有61層Transformer塊
    • 所有61層都包含MoE結構
  2. 專家配置

    • "n_routed_experts": 256 - 256個常規路由專家
    • "n_shared_experts": 1 - 1個共享專家
    • "num_experts_per_tok": 8 - 每個token激活8個路由專家(不包括共享專家)
  3. 專家參數量:

    • "hidden_size": 7168 - 隱藏層維度
    • "intermediate_size": 18432 - 稠密前饋網絡的中間層大小
    • "moe_intermediate_size": 2048 - MoE專家內部的中間層大小

MoE計算細節

根據配置:

  • 專家參數主要集中在FFN部分,計算每個專家大小約為:
    • 7168 × 2048 × 2 ≈ 29.4M參數(輸入和輸出矩陣)
  • 257個專家(256常規+1共享)×61層 ≈ 約462B參數僅在專家部分

MoE層結構:
[共享專家(1個)] + [普通專家(255個)]
? ? ↑ ? ? ? ? ? ? ? ? ?↑
? 總是激活 ? ? ? ? 選擇8個激活
? ? ↓ ? ? ? ? ? ? ? ? ?↓
? ?每個token激活9個專家(1+8)?

共享專家能接觸到所有數據,學習通用模式,而普通專家則專注于特定類型的輸入,兩者結合提高了模型的整體能力和效率。共享專家相當于是一個"通用底層處理器",確保即使路由決策不理想,每個token也能得到基本處理。

3. 推理過程的分解:理解預填充和解碼階段

特征預填充階段解碼階段
計算強度中等
并行化程度
內存需求高內存帶寬中等(KV 緩存訪問)
關鍵指標吞吐量延遲
典型硬件優化多 GPU,高計算能力快速內存訪問,低延遲互連

預填充階段在計算上受限且受內存帶寬限制,特別是對于長輸入序列 。它需要大量的并行處理能力和內存帶寬來處理整個輸入。解碼階段通常受內存限制,因為它主要涉及訪問 KV 緩存并一次執行單個 token 的計算 。延遲是此階段的關鍵問題。在預填充期間,模型一次性處理整個輸入序列。這允許跨輸入的不同部分以及跨模型的不同層進行并行計算。在分布式環境中,不同的節點可以并行處理輸入的不同片段或不同的層,從而可能顯著提高速度。

解碼階段以自回歸方式逐個生成輸出 token [用戶查詢。每個新 token 的預測都基于先前生成的 token 和來自預填充階段的 KV 緩存 。由于 token 生成的順序性質,此階段通常比預填充階段慢且并行化程度較低 。解碼階段的順序性質給并行化帶來了挑戰。

通過分布專家,仍然可以通過減少每個節點在每個 token 生成步驟中的計算負載來提高效率。與預填充不同,解碼是按順序發生的。每個生成的 token 都依賴于前一個 token。這使得跨序列長度進行并行化變得更加困難。然而,在每個 token 生成步驟中,激活專家的計算仍然可以分布在多個節點上,從而降低每個步驟的延遲。

token在transformer層中傳遞的流程

  1. 每一層中,token首先通過自注意力機制
  2. 然后該層的門控網絡會獨立評估這個token
  3. 門控網絡動態選擇8個最相關的路由專家
  4. token同時也會通過1個共享專家處理
  5. 9個專家(8個路由+1個共享)的輸出被加權合并
  6. 合并后的結果傳遞到下一層
  7. 在下一層,這個過程完全重復,重新選擇專家

關鍵點是:

  • 所有層共享同一個專家池(257個專家)
  • 每層都有獨立的門控網絡做出獨立的專家選擇
  • 專家選擇是動態的,完全基于token在當前層的表示
  • 不同層可能選擇完全不同的專家組合

?

?4、DeepSeek R1 的分布式部署策略

通過將 256 個專家分布在不同的節點上,每個節點僅存儲一部分專家的參數 。在推理期間,當一個 token 被路由到一組特定的 8 個專家時,只有托管這些專家的節點才需要執行涉及其參數的大量計算。這避免了每個節點都需要訪問整個 6710 億個參數,從而顯著減少了需要本地獲取和處理的數據量。這種有針對性的參數訪問降低了內存帶寬需求以及傳輸到每個節點的數據量。

?通過將計算負載分布到多個節點上,可以并行處理更多的 token 和請求,從而實現更高的吞吐量 。專家并行通過啟用更大的批處理大小,進一步提高了 GPU 矩陣計算效率并提升了吞吐量 。DeepSeek 報告每個 H800 節點在預填充期間的平均輸入 token 吞吐量約為 73.7k/s,在解碼期間的平均輸出 token 吞吐量約為 14.8k/s 。處理更大的批次和并行化計算的能力直接轉化為在給定時間內服務更多用戶或處理更多數據。當工作負載分布化時,系統的總處理能力會增加。

DeepSeek R1 推理并行策略

策略描述DeepSeek R1 的優勢DeepSeek R1 中的應用
專家并行 (EP)將模型專家分布在節點上,允許每個節點處理模型參數的一個子集。擴展批處理大小,減少每個節點的內存訪問,降低延遲。跨節點的 EP 用于預填充和解碼,具有不同的配置。
數據并行 (DP)將輸入數據分布在多個設備上,每個設備都持有模型的副本(或在某些情況下是分區)。通過避免注意力層中的 KV 緩存重復來提高內存效率(在 MLA 的上下文中)。DP 與 EP 結合使用,例如預填充期間的 MLA/共享專家 DP32。

?5、單機部署deepseek r1的局限性

主要性能影響排序

  1. 吞吐量嚴重受限(最主要影響)
    • 并發請求處理能力達到硬性上限,無法超越8卡能力
    • 無法通過增加節點橫向擴展處理更多并發請求
    • 在高負載場景下,請求隊列迅速增長
  2. 高負載下延遲不穩定
    • 隨著并發請求增加,熱門專家爭搶造成性能波動
    • 無法通過分布式部署分散負載壓力
    • 專家訪問不均衡導致部分GPU成為系統瓶頸
  3. 上下文長度與批量處理互斥
    • 長上下文需要占用大量顯存存儲KV緩存
    • 在固定顯存條件下,上下文越長,能處理的批次越少
    • 這種權衡限制了同時支持長上下文和高吞吐量的能力
  4. 資源利用率不均衡
    • 熱門專家所在GPU可能負載過重
    • 冷門專家所在GPU可能相對閑置
    • 無法通過動態調整優化全局資源利用

單機部署的資源利用情況

  • 總顯存: 8×141GB = 1128GB
  • FP8模型參數: ~671GB
  • 剩余顯存在KV緩存與批處理空間之間權衡
  • 關鍵規律: 上下文長度增加→可處理批次減少→吞吐量下降

專家在H20 8卡上的實際分布

在H20 8卡(每卡141GB)部署時,專家分布如下:

  1. 專家分配策略
    • 256個路由專家均勻分布在8個GPU上
    • 每張GPU分配32個路由專家
    • 共享專家可能放在其中一張GPU上或復制到多個GPU
  2. 顯存占用計算
    • 模型總參數:671B
    • 單個專家估算參數量:~2.62B (FP8精度下約2.62GB)
    • 每張GPU存儲32個專家:~84GB
    • 基礎模型部分(張量并行切分):~10-20GB
    • 總計每卡顯存占用:~94-104GB
    • 剩余顯存(~37-47GB):用于KV緩存、激活值等?

vLLM/SGLang加載流程

推理引擎加載過程:

  1. 解析模型結構:識別出總共257個專家
  2. 專家分配:將256個路由專家均勻分配到8張GPU
  3. 張量并行:基礎層(注意力機制等)通過張量并行分布
  4. 專家并行:專家通過專家并行分布
  5. 建立路由表:創建專家ID到GPU位置的映射

推理過程中的專家調用

推理時:

  1. 門控決策:門控網絡為每個token選擇8個最相關專家
  2. 跨GPU通信:若選中的專家分布在不同GPU上,需要跨GPU通信
  3. 共享專家處理:所有token都通過共享專家
  4. 結果合并:9個專家(8個路由+1個共享)的結果合并形成輸出

?適合的應用場景

單機部署適合以下場景:

  1. 穩定低并發環境
    • 用戶數量少且穩定可預測
    • 無需處理流量高峰
  2. 對單次請求延遲敏感
    • 需要穩定的響應時間
    • 單機內部通信可能優于跨機通信
  3. 開發測試環境
    • 降低部署復雜度
    • 簡化系統調試
  4. 中等上下文長度應用
    • 不要求極長的上下文窗口
    • 顯存可以合理分配
  5. 預算有限場景
    • 避免多機集群的高成本
    • 減少網絡設備投入

不適合的應用場景

單機部署不適合以下場景:

  1. 高并發生產環境
    • 需要同時服務大量用戶
    • 需要高吞吐量處理能力
  2. 流量波動大的服務
    • 需要彈性擴展能力
    • 高峰期需要動態增加資源
  3. 極長上下文應用
    • 需要處理數萬token的輸入
    • 同時要求保持較高吞吐量
  4. 需要高可用性服務
    • 不能容忍單點故障
    • 需要冗余部署保障服務連續性
  5. 大規模批處理
    • 需要處理海量并行請求
    • 要求高計算吞吐能力

結論

H20單機8卡部署DeepSeek R1的最主要性能影響是吞吐量受限,而非長上下文處理能力。顯存總量(1128GB)理論上足以支持較長的上下文,但會以犧牲吞吐量為代價。

該部署方式適合對延遲敏感、并發量可預測且不太高的場景,不適合需要大規模并發處理、高可用性或極長上下文同時保持高吞吐量的生產環境。在選擇部署方案時,應根據實際應用特點和性能需求權衡單機與分布式方案。

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

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

相關文章

二叉樹算法題實戰:從遍歷到子樹判斷

目錄 一、引言 二、判斷兩棵二叉樹是否相同 思路 代碼實現 注意點 三、二叉樹的中序遍歷 思路 代碼實現 注意點 四、判斷一棵樹是否為另一棵樹的子樹 思路 代碼實現 注意點 ?編輯 五、補充 一、引言 作者主頁:共享家9527-CSDN博客 作者代碼倉庫&am…

【開原寶藏】30天學會CSS - DAY1 第一課

下面提供一個由淺入深、按步驟拆解的示例教程,讓你能從零開始,逐步理解并實現帶有旋轉及懸停動畫的社交圖標效果。為了更簡單明了,以下示例僅創建四個圖標(Facebook、Twitter、Google、LinkedIn),并在每一步…

HarmonyOS第22天:解鎖鴻蒙服務開發

走進鴻蒙服務開發的世界 在移動應用開發的領域中,HarmonyOS 以其獨特的分布式理念和強大的系統能力,為開發者們開辟了一片嶄新的天地。其中,服務開發作為 HarmonyOS 應用開發的關鍵環節,猶如一把神奇的鑰匙,能夠幫助開…

鴻蒙應用程序包HAP的開發與使用

1、HAP是什么? HAP(Harmony Ability Package)是應用安裝和運行的基本單元。HAP包是由代碼、資源、第三方庫、配置文件等打包生成的模塊包,其主要分為兩種類型:entry和feature。 entry:應用的主模塊&#x…

解決qt中自定插件加載失敗,不顯示問題。

這個問題斷斷續續搞了一天多,主要是版本不匹配問題。 我們先來看下 Based on Qt 6.6.0 → 說明 Qt Creator 本身 是基于 Qt 6.6.0 框架構建的。MSVC 2019, 64-bit → 說明 Qt Creator 是使用 Microsoft Visual C 2019 編譯器(64 位) 編譯的。…

進程間通信--匿名管道

進程間通信介紹 進程間通信目的 數據傳輸:一個進程需要將它的數據發送給另一個進程資源共享:多個進程之間共享同樣的資源。通知事件:一個進程需要向另一個或一組進程發送消息,通知它(它們)發生了某種事件&…

vue computed 計算屬性簡述

Vue 的 ?計算屬性(Computed Properties)? 是 Vue 實例中一種特殊的屬性,用于?聲明式地定義依賴其他數據動態計算得出的值?。它的核心優勢在于能夠自動追蹤依賴關系,并緩存計算結果,避免重復計算,提升性…

CSS塊元素、行內元素、行內塊元素詳解

一、塊元素(Block Elements) 1.定義與特點 獨占一行:默認情況下,塊元素會從新的一行開始,并且其后的元素也會被推到下一行。可設置寬高:可以自由設置寬度(width)和高度&#xff08…

Vue3項目中可以嘗試封裝那些組件

在 Vue 3 項目中,組件的封裝可以根據功能、復用性和業務需求進行劃分。以下是一些常見的組件類型,適合封裝為獨立組件: 1. 基礎 UI 組件 按鈕 (Button) 封裝不同樣式、大小、狀態的按鈕。支持 disabled、loading 等狀態。 輸入框 (Input) 封…

2025年AI搜索引擎開源項目全景指南:從核心框架到生態工具

2025年AI搜索引擎開源項目全景指南:從核心框架到生態工具 在人工智能技術迅猛發展的當下,開源項目已成為構建AI搜索引擎的核心驅動力。本文整理9個具有代表性的開源項目,涵蓋搜索框架、擴展生態及底層支持技術,助你快速搭建或優化…

Word 小黑第22套

對應大貓23 續編號(編號斷了,從一開始):點編號,再設置編號值 插入以圖標方式顯示的文檔:插入 -對象 -由文件創建 (這里要鏈接到文件也要勾選 不然扣一分) 一個頁面設為橫向不影響上…

平面波揚聲器 VS球面波揚聲器的原理與優缺點對比

一、核心定義與原理 1、平面波揚聲器 1.1、平面波揚聲器的定義?:通過“相控陣”技術控制聲波相位,使聲波以平行線(面)定向傳播的揚聲器,聲波近似平面振動,能量集中且衰減緩慢?。 1.2、平面波揚聲器的原…

設計模式之命令設計模式

命令設計模式(Command Pattern) 請求以命令的形式包裹在對象中,并傳給調用對象。調用對象尋找可以處理該命令的對象,并把該命令傳給相應的對象執行命令,屬于行為型模式命令模式是一種特殊的策略模式,體現的…

EcoVadis新增可持續發展徽章

EcoVadis新增的兩項新徽章旨在進一步激勵和表彰企業在可持續發展方面的努力和成就。以下是這兩項新徽章的概述: 可持續發展之旅徽章(Sustainability Journey Badge): 目的:表彰那些在可持續發展方面展現出持續進步和承…

力扣hot100二刷——二叉樹

第二次刷題不在idea寫代碼,而是直接在leetcode網站上寫,“逼”自己掌握常用的函數。 標志掌握程度解釋辦法?Fully 完全掌握看到題目就有思路,編程也很流利??Basically 基本掌握需要稍作思考,或者看到提示方法后能解答???Sl…

從“自習室令牌”到線程同步:探秘鎖與條件變量

目錄 互斥 為什么需要鎖 鎖的原理--互斥 鎖的使用 同步 鎖的問題 條件變量 互斥 為什么需要鎖 先看結果&#xff1a; 以下代碼是我模擬創建線程搶票&#xff0c;由于不加鎖導致票搶到了負數 main.cc: #include<vector> #include<iostream> #include"…

字符串哈希從入門到精通

一、基本概念 字符串哈希是將任意長度的字符串映射為固定長度的哈希值&#xff08;通常為整數&#xff09;的技術&#xff0c;核心目標是實現O(1)時間的子串快速比較和高效查詢。其本質是通過數學運算將字符串轉換為唯一性較高的數值&#xff0c;例如&#xff1a; ??????…

什么是數學建模?數學建模是將實際問題轉化為數學問題

數學建模是將實際問題轉化為數學問題&#xff0c;并通過數學工具進行分析、求解和驗證的過程。 一、數學建模的基本流程 問題分析 ? 明確目標&#xff1a;確定需要解決的核心問題。 ? 簡化現實&#xff1a;識別關鍵變量、忽略次要因素。 ? 定義輸入和輸出&#xff1a;明確模…

搭建主從服務器

任務需求 客戶端通過訪問 www.nihao.com 后&#xff0c;能夠通過 dns 域名解析&#xff0c;訪問到 nginx 服務中由 nfs 共享的首頁文件&#xff0c;內容為&#xff1a;Very good, you have successfully set up the system. 各個主機能夠實現時間同步&#xff0c;并且都開啟防…

【python web】一文掌握 Flask 的基礎用法

文章目錄 一、 Flask 介紹1.1 安裝 Flask二、Flask的基本使用2.1 創建第一個 Flask 應用2.2 路由與視圖函數2.3 請求與響應2.4 響應對象2.5 模板渲染2.6 模板繼承2.7 靜態文件管理2.8 Blueprint 藍圖2.9 錯誤處理三、Flask擴展與插件四、部署 Flask 應用五、總結Flask 是一個輕…