前沿計組知識入門(四)

Training Large Networks in Parallel

計算機集群上高效訓練大型深度神經網絡(DNN)的方法和技術。從神經網絡的基本概念出發,逐步深入到并行訓練的具體實現策略,包括數據并行、模型并行以及參數服務器的設計等。

研究背景與動機

  • 大型神經網絡的挑戰:現代深度神經網絡(DNN)包含數百萬甚至數十億的參數,訓練這些網絡需要大量的計算資源和時間。例如,VGG-16網絡的參數需要約500MB的內存,而訓練過程可能需要數天時間。
  • 并行訓練的需求:為了加速訓練過程,研究人員探索了在多個計算節點上并行訓練DNN的方法。這不僅可以減少訓練時間,還可以擴展到更大的數據集和更復雜的模型。

神經網絡基礎

  • 教授分類任務:文章通過一個簡單的例子引入了神經網絡的基本概念,即根據教授的外貌特征將其分類為“容易”、“刻薄”、“無聊”或“書呆子”。
  • 網絡結構:介紹了神經網絡的基本結構,包括卷積層、最大池化層和全連接層。文章中提到的模型包含多個卷積層和全連接層,每層的神經元數量分別為253440、186624、64896、64896、43264、4096、4096和1000。
  • 訓練目標:訓練的目標是最小化網絡輸出與真實標簽之間的損失函數。文章中使用了softmax損失函數作為示例。

梯度下降與反向傳播

  • 梯度下降:介紹了梯度下降的基本思想,即通過調整網絡參數以減少損失函數的值。文章通過一個簡單的函數示例解釋了如何使用梯度下降來優化參數。
  • 反向傳播:詳細描述了反向傳播算法,這是計算神經網絡中每個參數梯度的關鍵步驟。文章通過圖示和公式解釋了如何通過鏈式法則計算梯度,并通過矩陣形式展示了反向傳播的計算過程。

并行訓練策略

  • 數據并行:將訓練數據分割成多個小批次(mini-batch),并將這些小批次分配給不同的計算節點。每個節點獨立計算其分配數據的梯度,然后通過全局同步點(如參數服務器)匯總梯度并更新參數。
  • 模型并行:當模型參數過多,無法在單個節點上存儲時,可以將模型分割成多個部分,分別存儲在不同的節點上。文章提到,通過使用小尺寸卷積(如1x1卷積)和減少全連接層的大小,可以減少節點間的通信量。
  • 參數服務器:介紹了參數服務器的設計,它負責存儲全局參數,并接收來自各個工作節點的梯度更新。參數服務器可以被切分成多個部分,以減少單個服務器的負載。

異步執行與優化

  • 異步更新:為了避免全局同步帶來的延遲,文章提出了異步更新策略。在這種策略下,工作節點在計算梯度后立即將其發送給參數服務器,而無需等待其他節點完成計算。這種策略可以提高系統的吞吐量,但可能會對訓練的收斂性產生影響。
  • 分片參數服務器:為了進一步優化參數服務器的性能,文章提出了將參數服務器分片的策略。每個分片負責存儲和更新一部分參數,從而減少了單個服務器的負載。

實驗與結果

  • FireCaffe實驗:文章通過在Titan超級計算機上使用FireCaffe框架進行實驗,展示了并行訓練的加速效果。實驗結果表明,在128個GPU上訓練GoogLeNet時,與單GPU訓練相比,可以實現47倍的加速,同時保持相同的準確率。
  • 通信開銷比較:文章還比較了使用參數服務器和使用減少樹(reduction tree)進行梯度匯總的通信開銷。結果顯示,減少樹在通信效率上具有優勢。



DNN Accelerator Architectures 1

1. DNN加速器的核心問題

深度神經網絡(DNN)的計算效率主要受限于內存訪問瓶頸。由于DNN計算需要頻繁讀寫數據(如權重、激活值和中間結果),內存訪問(尤其是DRAM訪問)成為主要的性能瓶頸。例如,AlexNet需要724M次MAC操作,但需要2896M次DRAM訪問。

2. 內存訪問瓶頸的解決方案

為了減少內存訪問,DNN加速器通常采用以下策略:

  • 本地內存層次結構:通過引入多級本地內存(如寄存器文件、全局緩沖區)來重用數據,減少對DRAM的訪問。
  • 數據重用:最大化數據的重用,例如:
    • 卷積重用:在卷積層中利用滑動窗口技術。
    • Fmap重用:在卷積層和全連接層中重用激活值。
    • 濾波器重用:在批量處理中重用濾波器權重。
      在這里插入圖片描述

3. DNN加速器的架構設計

  • 空間架構:通過并行計算單元(PE)和片上網絡(NoC)實現高效的數據流動。 PE單元負責執行基本的算術運算,而NoC負責PE單元之間的高效通信,兩者協同工作以實現DNN加速器的整體性能提升。
  • 多級內存訪問:從DRAM到全局緩沖區,再到PE內的寄存器文件,每層訪問成本差異顯著。

4. 數據流分類

數據流的設計是DNN加速器的關鍵,主要分為以下三類:

  • 輸出 stationary(OS):最小化部分和的讀寫能耗,適合最大化本地累積。例如,ShiDianNao和ENVISION。
  • 權重 stationary(WS):最小化權重讀取能耗,適合最大化權重重用。例如,NeuFlow和NVDLA。
  • 輸入 stationary(IS):最小化激活讀取能耗,適合最大化輸入激活的重用。例如,SCNN。

5. 數據流的應用示例

  • OS數據流:ShiDianNao通過保持輸出特征圖的部分和,減少對DRAM的訪問。
  • WS數據流:NVDLA通過保持權重,循環輸入和輸出特征圖,減少權重的重復讀取。
  • IS數據流:SCNN利用稀疏CNN的特性,減少激活值的讀取。

6. 并行計算的應用

并行計算在DNN加速器中通過以下方式實現:

  • 任務并行:將計算任務分配到多個PE中并行執行。
  • 數據并行:將數據分割成多個部分,分別在不同PE上處理。

7. 優化策略

  • 內存優化:通過分層內存結構和數據重用,減少內存訪問。
  • 算法優化:選擇適合硬件架構的算法,例如稀疏CNN。
  • 硬件優化:利用高性能處理器和高速存儲設備提升性能。

補充圖表

在這里插入圖片描述
這個表格展示了不同數據流(Output Stationary (OS)、Weight Stationary (WS)、Input Stationary (IS))在執行1-D卷積操作時的性能指標對比。表格中的變量E和R分別代表輸出長度和濾波器長度。以下是逐行解釋:

  1. MAC操作數

    • 所有數據流類型(OS、WS、IS)的MAC操作數都是E*R(E 和 R 是與1-D卷積操作相關的兩個關鍵參數,分別表示:E (Output Length):輸出特征圖(output feature map)的長度。R (Filter Length):濾波器(filter)的長度。),這是固定的計算量,與數據流類型無關。
  2. 權重讀取次數

    • OS:需要讀取E*R次權重,因為每個權重在每個輸出位置都需要讀取一次。
    • WS:只需要讀取R次權重,因為權重在PE陣列中被廣播并重用。
    • IS:需要讀取E*R次權重,因為權重在每個輸入位置都需要讀取一次。
  3. 輸入讀取次數

    • OS:需要讀取E*R次輸入,因為輸入在每個輸出位置都需要讀取一次。
    • WS:需要讀取E*R次輸入,因為輸入在每個輸出位置都需要讀取一次。
    • IS:只需要讀取E次輸入,因為輸入在PE陣列中被廣播并重用。
  4. 輸出讀取次數

    • OS:不需要讀取輸出(0次),因為輸出在本地累積。
    • WS:需要讀取E*R次輸出,因為輸出在PE陣列中需要多次讀取。
    • IS:需要讀取E*R次輸出,因為輸出在PE陣列中需要多次讀取。
  5. 輸出寫入次數

    • OS:需要寫入E次輸出,因為每個輸出只寫入一次。
    • WS:需要寫入E*R次輸出,因為輸出在PE陣列中需要多次寫入。
    • IS:需要寫入E*R次輸出,因為輸出在PE陣列中需要多次寫入。

總結

  • OS在權重讀取和輸出讀取方面表現最佳,因為它最小化了部分和的讀寫。
  • WS在權重讀取方面表現最佳,因為它最小化了權重的讀取。
  • IS在輸入讀取方面表現最佳,因為它最小化了輸入的讀取。
  • Min列顯示了每個指標的最小值,表明哪種數據流類型在特定指標上表現最好。

補充偽代碼

  1. Output Stationary (OS) 代碼
for (e = 0; e < E; e++)for (r = 0; r < R; r++)O[e] += I[e+r] * W[r];
  • 外層循環:遍歷輸出索引 e,從0到E-1。
  • 內層循環:遍歷濾波器索引 r,從0到R-1。
  • 操作:對于每個輸出索引 e 和濾波器索引 r,將輸入 I[e+r] 和權重 W[r] 的乘積累加到輸出 O[e] 中。
  • 特點:輸出 O[e] 在每個周期中被多次更新,權重和輸入被讀取。
  1. Weight Stationary (WS) 代碼
for (r = 0; r < R; r++)for (e = 0; e < E; e++)O[e] += I[e+r] * W[r];
  • 外層循環:遍歷濾波器索引 r,從0到R-1。
  • 內層循環:遍歷輸出索引 e,從0到E-1。
  • 操作:對于每個濾波器索引 r 和輸出索引 e,將輸入 I[e+r] 和權重 W[r] 的乘積累加到輸出 O[e] 中。
  • 特點:權重 W[r] 在每個周期中被多次重用,減少了權重的讀取次數。
  1. Input Stationary (IS) 代碼
for (h = 0; h < H; h++)for (r = 0; r < R; r++)O[h-r] += I[h] * W[r];
  • 外層循環:遍歷輸入索引 h,從0到H-1。
  • 內層循環:遍歷濾波器索引 r,從0到R-1。
  • 操作:對于每個輸入索引 h 和濾波器索引 r,將輸入 I[h] 和權重 W[r] 的乘積累加到輸出 O[h-r] 中。
  • 特點:輸入 I[h] 在每個周期中被多次重用,減少了輸入的讀取次數。

總結

  • Output Stationary (OS):輸出部分和在本地累積,減少對全局緩沖區的訪問。
  • Weight Stationary (WS):權重被多次重用,減少權重的讀取次數。
  • Input Stationary (IS):輸入激活被多次重用,減少輸入的讀取次數。

這些代碼展示了不同數據流(OS、WS、IS)在1-D卷積中的實現方式,通過改變循環的順序和數據的訪問模式來優化性能和能效。




DNN Accelerator Architectures 2

1. 數據流分類與優化

  • 數據流分類

    • 數據流分為三種類型:激活數據(Activation)、權重數據(Weight)和部分和(Partial Sum, psum)。
    • 根據數據復用的方式,數據流可以分為輸入駐留(Input Stationary)、權重駐留(Weight Stationary)和行駐留(Row Stationary)。
      在這里插入圖片描述
  • 行駐留(Row Stationary, RS)數據流

    • 優化目標:最大化數據復用,優化整體能效,而非僅針對某一類型數據。
    • 實現方式
      • 在寄存器文件(RF)中保留濾波器行和特征圖滑動窗口,減少數據頻繁讀取。
      • 最大化行卷積復用和部分和積累。

2. PE陣列中的卷積計算

  • 1D行卷積

    • 在PE(Processing Element)中,通過寄存器文件(Reg File)存儲濾波器行和特征圖滑動窗口,計算部分和。
    • 示例:濾波器行為 a b c,特征圖行為 a b c d e,通過滑動窗口計算部分和。
  • 2D卷積

    • 在PE陣列中,通過多行濾波器和特征圖的組合,完成二維卷積計算。
    • 示例:PE陣列中,每行PE處理不同的濾波器行和特征圖行,逐步積累部分和。

3. 多通道和多特征圖的處理

  • 濾波器復用

    • 在PE中,濾波器行可以在多個特征圖中復用。
    • 示例:濾波器行 Row 1 可以在特征圖 Fmap 1Fmap 2 中復用。
  • 特征圖復用

    • 在PE中,特征圖行可以在多個濾波器中復用。
    • 示例:特征圖行 Row 1 可以在濾波器 Filter 1Filter 2 中復用。
  • 通道累積

    • 在PE中,不同通道的部分和可以通過交替通道的方式進行累積。
    • 示例:通道1和通道2的部分和可以累積為最終結果。
      在這里插入圖片描述

4. 編譯器與硬件協同設計

  • 編譯器的作用

    • 根據DNN的形狀和大小,優化映射配置(Mapping Config),將計算任務分配到PE陣列中。
    • 示例:將多個特征圖、濾波器和通道映射到同一個PE中,以利用不同的數據復用和局部累積。
  • 硬件資源

    • 包括ALU(算術邏輯單元)、全局緩沖區(Global Buffer)等。
    • 示例:通過全局緩沖區存儲輸入特征圖、輸出特征圖和權重數據。

5. 性能評估框架(Eyexam)

  • 評估目標

    • 快速理解DNN加速器在不同工作負載下的性能限制。
    • 示例:通過分析MAC(乘積累加操作)每周期的性能和數據每周期的性能,評估硬件的計算能力和帶寬限制。
  • 評估步驟

    1. 最大工作負載并行性。
    2. 最大數據流并行性。
    3. 在有限PE陣列尺寸下的激活PE數量。
    4. 在固定PE陣列尺寸下的激活PE數量。
    5. 在有限存儲容量下的激活PE數量。
    6. 由于平均帶寬不足導致的激活PE利用率降低。
    7. 由于瞬時帶寬不足導致的激活PE利用率降低。

在這里插入圖片描述

6. 片上網絡(NoC)設計

  • 傳統網絡的局限性

    • 單播(Unicast)和廣播(Broadcast)網絡難以同時滿足高復用和高帶寬的需求。
    • 示例:廣播網絡適合高復用場景,但帶寬較低;全連接網絡適合高帶寬場景,但擴展性差。
      在這里插入圖片描述
  • 提出的解決方案

    • 層次化網格網絡(Hierarchical Mesh Network)
      • 支持從高復用到高帶寬的各種數據傳輸模式。
      • 通過分層設計,降低復雜性并提高擴展性。
      • 示例:
        • 高帶寬模式:支持所有PE之間的全連接通信。
        • 高復用模式:支持從單一源到多個目標的高效數據傳輸。
        • 組播和交織多播模式:適應不同的數據復用和帶寬需求。
          在這里插入圖片描述
  • Eyeriss加速器的改進

    • Eyeriss v2采用層次化網格網絡,相比v1在性能和能效方面有顯著提升。
    • 示例:AlexNet的加速比為6.9倍,能效提升2.6倍;MobileNet的加速比為5.6倍,能效提升1.8倍。

7. 總結

  • 關鍵點
    • 數據復用是實現高能效的關鍵。
    • 通過靈活的片上網絡設計,可以提高PE利用率,從而實現高性能。
    • 數據流與硬件的協同設計對于優化DNN加速器的性能、能效和靈活性至關重要。

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

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

相關文章

Transformer+BO-SVM多變量時間序列預測(Matlab)

TransformerBO-SVM多變量時間序列預測&#xff08;Matlab&#xff09; 目錄 TransformerBO-SVM多變量時間序列預測&#xff08;Matlab&#xff09;效果一覽基本介紹程序設計參考資料 效果一覽 基本介紹 本期推出一期高創新模型&#xff0c;基于Transformer提取時序特征后輸入S…

SQL BETWEEN 語句詳解

SQL BETWEEN 語句詳解 概述 SQL BETWEEN 語句是一個用于在 SQL 查詢中指定查詢條件的重要工具。它允許用戶指定一個范圍&#xff0c;用于篩選符合特定條件的記錄。本文將詳細介紹 BETWEEN 語句的用法、示例以及注意事項。 BETWEEN 語句的基本用法 BETWEEN 語句的基本格式如…

AI Agent設計模式三:Routing

概念 &#xff1a;動態路徑選擇器 ? 優點&#xff1a;靈活處理不同類型輸入? 缺點&#xff1a;路由邏輯復雜度高 from typing import TypedDict from langchain_core.messages import SystemMessage, HumanMessage from langchain_openai import ChatOpenAI from langgraph.…

制造裝備物聯及生產管理ERP系統設計與實現(代碼+數據庫+LW)

摘 要 傳統辦法管理信息首先需要花費的時間比較多&#xff0c;其次數據出錯率比較高&#xff0c;而且對錯誤的數據進行更改也比較困難&#xff0c;最后&#xff0c;檢索數據費事費力。因此&#xff0c;在計算機上安裝制造裝備物聯及生產管理ERP系統軟件來發揮其高效地信息處理…

`use_tempaddr` 和 `temp_valid_lft ` 和 `temp_prefered_lft ` 筆記250405

use_tempaddr 和 temp_valid_lft 和 temp_prefered_lft 筆記250405 以下是 Linux 系統中與 IPv6 臨時隱私地址相關的三個關鍵參數 use_tempaddr、temp_valid_lft 和 temp_prefered_lft 的詳細說明及協作關系&#xff1a; &#x1f4dc; 參數定義與功能 參數作用默認值依賴關…

基于Spark的嗶哩嗶哩輿情數據分析系統

【Spark】基于Spark的嗶哩嗶哩輿情數據分析系統 &#xff08;完整系統源碼開發筆記詳細部署教程&#xff09;? 目錄 一、項目簡介二、項目界面展示三、項目視頻展示 一、項目簡介 本項目基于Python和Django框架進行開發&#xff0c;為了便于廣大用戶針對輿情進行個性化分析處…

南京大學與阿里云聯合啟動人工智能人才培養合作計劃,已將通義靈碼引入軟件學院課程體系

近日&#xff0c;南京大學與阿里云宣布啟動人工智能人才培養合作計劃&#xff0c;共同培養適應未來技術變革、具備跨學科思維的AI創新人才。 基于阿里云在云計算和AI大模型領域的技術優勢和南京大學在人工智能領域的學科優勢&#xff0c;雙方將共同設計兼具前瞻性和應用性的人…

用于解決個人使用的公網ip動態變化問題的解決方案

解決方案 靜態ip&#xff08;放棄&#xff09; 申請一個靜態ip價格較貴&#xff0c;只有公司可以申請 使用DDNS&#xff08;放棄&#xff09; 通過域名解析到公網ip通過域名訪問設備官方光貓不支持DDNS 使用腳本&#xff08;采用&#xff09; 通過腳本獲取公網ip通過腳本發送到…

Spring / Spring Boot 的@MapperScan 和 @Repository

MapperScan 和 Repository 是兩個與數據訪問層相關的注解&#xff0c;它們在功能上有一定的聯系&#xff0c;但也有明顯的區別。 一、相同點 1. 都與數據訪問層相關 MapperScan&#xff1a;用于掃描 MyBatis 的 Mapper 接口。MyBatis 是一個流行的持久層框架&#xff0c;Mapp…

全星 研發項目管理APQP 軟件:驅動汽車及制造業研發升級的數字化引擎

全星 APQP 軟件&#xff1a;驅動汽車及制造業研發升級的數字化引擎 在汽車及制造業競爭白熱化的當下&#xff0c;如何高效推進研發項目&#xff0c;同時確保嚴格合規&#xff0c;成為企業亟待解決的難題。 全星研發項目管理 APQP 軟件系統&#xff0c;憑借卓越的功能與顯著優勢…

cadence17.4和16.6同時安裝無法使用的問題

最近在搞這個兩個版本的軟件安裝,針對網上的一些說法: 方法一:先裝17.4再裝16.6,文件放在一個文件夾,打不開,兩個版本都無法使用 方法二:分別安裝,文件路徑放在不同的文件 方案三:修改環境變量,直接使用17.4的 License Manager 這個也無法解決問題。 經過對報錯的問…

(三)鏈式工作流構建——打造智能對話的強大引擎

上一篇&#xff1a;&#xff08;二&#xff09;輸入輸出處理——打造智能對話的靈魂 在前兩個階段&#xff0c;我們已經搭建了一個基礎的智能對話&#xff0c;并深入探討了輸入輸出處理的細節。今天&#xff0c;我們將進入智能對話的高級階段——鏈式工作流構建。這一階段的目…

【MATLAB定位例程】TDOA(到達時間差)的chan-tylor,三維環境,附完整代碼

該代碼實現了基于三維空間的動態目標TDOA定位,結合了Chan算法(解析解)與Taylor級數展開法(迭代優化)的雙重優勢。 文章目錄 運行結果MATLAB代碼代碼講解代碼功能概述核心算法原理代碼結構解析可視化與結果分析運行結果 定位示意圖: 三軸狀態曲線: 三軸誤差曲線: MA…

Golang的文件同步與備份

Golang的文件同步與備份 一、Golang介紹 也稱為Go語言&#xff0c;是谷歌開發的一種編程語言&#xff0c;具有高效的并發編程能力和出色的內存管理。由于其快速的編譯速度和強大的標準庫&#xff0c;Golang在網絡應用、云平臺和大數據等領域得到了廣泛應用。 二、文件同步與備份…

ARXML文件解析-2

目錄 1 摘要2 常見ARXML文件注意事項以及常見問題2.1 注意事項2.2 常見問題2.3 答疑 3 ARXML解讀/編輯指南3.1 解讀ARXML文件的步驟3.2 編輯ARXML文件的方法3.3 驗證與調試 4 總結 1 摘要 本文主要對ARXML文件的注意事項、常見問題以及解讀與編輯進行詳細介紹。 上文回顧&…

3535 數組分割

3535 數組分割 ??難度&#xff1a;困難 &#x1f31f;考點&#xff1a;2023、省賽、動態規劃 &#x1f4d6; &#x1f4da; import java.util.*;public class Main {static int MOD 1000000007;static int N 1005;public static void main(String[] args) {Scanner sc …

Git操作指南

Git操作指南 1.安裝并配置Git Git官網&#xff1a;https://git-scm.com/downloads 安裝完成后&#xff0c;打開Git Bash&#xff0c;配置Git&#xff1a; git config --global user.email "emailexample.com" git config --global user.name "Your Name&quo…

Linux常用基礎命令應用

目錄 一、文件與目錄操作&#xff08;12個核心命令&#xff09;?? ??1. pwd - 顯示當前路徑?? ??2. ls - 查看目錄內容?? ??3. cd - 切換目錄?? ??4. mkdir - 創建目錄?? ??5. touch - 創建文件?? ??6. cp - 復制文件/目錄?? ??7. mv - 移動…

zookeeper基本概念和核心作用

圖片來源&#xff1a; 02-Zookeeper概念_嗶哩嗶哩_bilibili02-Zookeeper概念是黑馬程序員Zookeeper視頻教程&#xff0c;快速入門zookeeper技術的第2集視頻&#xff0c;該合集共計24集&#xff0c;視頻收藏或關注UP主&#xff0c;及時了解更多相關視頻內容。https://www.bilib…