【深度學習-基礎知識】單機多卡和多機多卡訓練

在這里插入圖片描述

1. 單機多卡訓練(Single Machine, Multi-GPU)

概念

  • 在同一臺服務器上,有多塊 GPU。
  • 一個訓練任務利用所有 GPU 并行加速訓練。
  • 數據集存放在本地硬盤或共享存儲上。

核心原理

  1. 數據并行(Data Parallelism)

    • 將一個 batch 劃分成多個 mini-batch,每塊 GPU 處理一個 mini-batch。
    • 每個 GPU 都有完整的模型副本。
    • 前向計算在各自 GPU 獨立進行。
    • 反向傳播結束后,通過 梯度同步(All-Reduce)聚合梯度,再更新模型參數。
      • All-Reduce: 梯度求和取平均 + 同步更新,這樣保證梯度是基于全局 batch 的估計
  2. 梯度同步方式

    • PyTorch 的 DistributedDataParallel(DDP) 或 TensorFlow 的 MirroredStrategy 都使用 NCCL(NVIDIA Collective Communication Library)在 GPU 間高速同步。
      • 多GPU訓練中,不同GPU需要頻繁交換數據(如梯度)。如果直接用通用通信方式(比如通過CPU或普通網絡庫),效率極低。
      • NCCL(NVIDIA Collective Communications Library, NVIDIA 集合通信庫)多GPU和多節點環境優化的通信庫。
    • 由于在同一臺機器,帶寬高、延遲低,通信成本較低。

優缺點

  • 優點

    • 實現簡單,通信效率高。
    • 訓練速度明顯提升。
  • 缺點

    • 受限于單機 GPU 數量和顯存大小。
    • 數據量非常大時無法容納。

實現要點

  • 使用 torch.nn.DataParallel(老方法)或 torch.nn.parallel.DistributedDataParallel(推薦)。
  • Batch size 可以拆分到每張 GPU。
  • 注意隨機種子和數據劃分,保證每個 GPU 數據不同。

2. 多機多卡訓練(Multi-Machine, Multi-GPU)

概念

  • 訓練任務跨多臺服務器,每臺服務器有多塊 GPU。
  • 每臺機器稱為 Node,每塊 GPU 稱為 Rank
  • 適合大規模數據集或模型,單機無法容納。

核心原理

  1. 分布式數據并行(Distributed Data Parallel, DDP)

    • 每個 GPU 依然保留完整模型副本。
    • 每個 GPU 處理自己分配的 mini-batch。
    • 梯度通過 All-Reduce 在所有 GPU 間同步,包括跨機通信。
      • AllReduce 的設計就是 每個 GPU 都計算自己負責的部分,然后通過網絡傳遞累加,最終所有 GPU 得到相同結果。
  2. 通信機制

    • 跨機通信通常通過高速網絡(InfiniBand 或 10/25/100GbE)進行。
    • 需要指定 Master Node IP 和端口,其他節點通過 NCCL 或 Gloo 與 Master 節點通信。
    • 訓練框架(如 PyTorch DDP、Horovod)負責梯度同步。
  3. 梯度同步策略

    • 每次反向傳播完成后,將梯度在所有 GPU 匯總并平均,然后更新模型。
    • 可使用 梯度壓縮 / 分層同步 優化跨機通信開銷。

優缺點

  • 優點

    • 可以訓練超大模型或超大數據集。
    • 擴展性好,GPU 數量理論上無限。
  • 缺點

    • 實現復雜,需要網絡配置和多機同步。
    • 跨機通信延遲高,成為訓練瓶頸。
    • 出錯排查困難(網絡、節點故障、不同版本依賴)。

實現要點

  • 確定每個 GPU 的 global rank(全局編號)。
  • 配置 MASTER_ADDRMASTER_PORT
  • 使用 torch.distributed.launchtorchrun 啟動訓練。
  • 注意 Batch size 調整(全局 batch = 每 GPU batch × GPU 數 × 節點數)。
  • 數據集劃分需要確保不同節點不重復讀取。

3. 核心區別總結

維度單機多卡多機多卡
訓練范圍一臺機器多臺機器
GPU 通信同機高速互連(PCIe/NVLink)網絡跨機(Ethernet/InfiniBand)
實現復雜度高,需要網絡配置
擴展性受限于單機 GPU 數量高,可擴展到上百 GPU
通信開銷高,可能成為瓶頸
框架示例PyTorch DDP、MirroredStrategyPyTorch DDP、Horovod

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

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

相關文章

數據庫原理及應用_數據庫基礎_第2章關系數據庫標準語言SQL_SQL語言介紹數據庫的定義和刪除

前言 "<數據庫原理及應用>(MySQL版)".以下稱為"本書"中2.1節和2.2節第一部分內容 引入 本書P40:SQL(Structure Query Language結構化查詢語言)是一種在關系數據庫中定義和操縱數據的標準語言,是用戶和數據庫之間進行交流的接口. ---SQL是一種語言,是…

實變函數中集合E的邊界與其補集的邊界是否相等

在實變函數&#xff08;或一般拓撲學&#xff09;中&#xff0c;給定一個集合 E \subseteq \mathbb{R}^n &#xff08;或更一般的拓撲空間&#xff09;&#xff0c;集合 E 的邊界&#xff08;boundary&#xff09;與 E 的補集 E^c 的邊界是否相等&#xff1f; 即&#x…

# C++ 中的 `string_view` 和 `span`:現代安全視圖指南

C 中的 string_view 和 span&#xff1a;現代安全視圖指南 文章目錄C 中的 string_view 和 span&#xff1a;現代安全視圖指南目錄1. 原始指針的痛點1.1 安全問題1.2 所有權不明確1.3 接口笨拙1.4 生命周期問題2. string_view 深入解析2.1 基本特性2.2 高效解析示例2.3 防止常見…

Linux學習-多任務(線程)

定義輕量級進程&#xff0c;實現多任務并發&#xff0c;是操作系統任務調度最小單位&#xff08;進程是資源分配最小單位 &#xff09;。創建由進程創建&#xff0c;屬于進程內執行單元。- 獨立&#xff1a;線程有8M 獨立棧區 。 - 共享&#xff1a;與所屬進程及進程內其他線程…

高級堆結構

一、二項堆&#xff08;Binomial Heap&#xff09;&#xff1a;理解「合并操作」的優化二項堆的核心優勢是高效合并&#xff0c;類似 “二進制加法”。我們通過「合并兩個二項堆」的偽代碼和步驟來理解&#xff1a;核心結構偽代碼&#xff1a;class BinomialTreeNode:def __ini…

系統學習算法 專題十七 棧

題目一&#xff1a;算法思路&#xff1a;一開始還是暴力解法&#xff0c;即遍歷字符串&#xff0c;如果出現當前位置的字符等于后面的字符&#xff0c;則刪除這兩個字符&#xff0c;然后再從頭遍歷&#xff0c;如此循環即可但是這樣時間復雜度很高&#xff0c;每刪除一次就從頭…

深入解析函數指針及其數組、typedef關鍵字應用技巧

目錄 一、函數指針變量的創建 1、什么是函數指針變量&#xff1f; 2、函數是否有地址&#xff1f; 3、創建函數指針變量 4、函數指針類型解析 二、函數指針變量的使用 三、兩段有趣的代碼 1、解釋 (*(void (*)())0)(); 2、解釋 void (*signal(int, void(*)(int)))(int…

k8s集群搭建一主多從的jenkins集群

方案 --------------------- | Jenkins Master | | - 持久化配置 |<---(hostpath 存儲) | - 自動容災 | --------------------|| Jenkins JNLP 通信| ----------v---------- ------------------- | Jenkins Agent | | Kubernetes Pl…

重溫k8s基礎概念知識系列三(工作負載)

文章目錄1、工作負載簡述2、Deployment1.1、創建 Deployment1.2、檢查 Deployment上線狀態3、StatefulSet4、DaemonSet3.1、創建 DaemonSet3.2、運行DaemonSet5、Job5.1、運行示例 Job5.2、檢查 Job 的狀態6、CronJob上一節&#xff0c;我們復習了Pod相關知識&#xff0c;大多情…

開源 Arkts 鴻蒙應用 開發(十八)通訊--Ble低功耗藍牙服務器

文章的目的為了記錄使用Arkts 進行Harmony app 開發學習的經歷。本職為嵌入式軟件開發&#xff0c;公司安排開發app&#xff0c;臨時學習&#xff0c;完成app的開發。開發流程和要點有些記憶模糊&#xff0c;趕緊記錄&#xff0c;防止忘記。 相關鏈接&#xff1a; 開源 Arkts …

Go語言并發編程 ------ 鎖機制詳解

Go語言提供了豐富的同步原語來處理并發編程中的共享資源訪問問題。其中最基礎也最常用的就是互斥鎖&#xff08;Mutex&#xff09;和讀寫鎖&#xff08;RWMutex&#xff09;。1. sync.Mutex&#xff08;互斥鎖&#xff09;Mutex核心特性互斥性/排他性&#xff1a;同一時刻只有一…

8月17日星期天今日早報簡報微語報早讀

8月17日星期天&#xff0c;農歷閏六月廿四&#xff0c;早報#微語早讀。1、《南京照相館》領跑&#xff0c;2025年暑期檔電影總票房破95億&#xff1b;2、神舟二十號圓滿完成第三次出艙任務&#xff1b;3、宇樹G1人形機器人100米障礙賽再奪金牌&#xff1b;4、廣東佛山新增報告基…

在QML中使用Chart組件

目錄前言1. 如何安裝 Chart 組件2. 創建 QML 工程時的常見問題3. 解決方案&#xff1a;改用 QApplication QQuickView修改主函數&#xff08;main.cpp&#xff09;4. QApplication 與 QGuiApplication 的差異為什么 Qt Charts 需要 QApplication&#xff1f;總結示例下載前言 …

【P40 6-3】OpenCV Python——圖像融合(兩張相同屬性的圖片按比例疊加),addWeighted()

P40 6-3 文章目錄import cv2 import numpy as npback cv2.imread(./back.jpeg) smallcat cv2.imread(./smallcat1.jpeg)#只有兩張圖的屬性是一樣的才可以進行溶合 print(back.shape) print(smallcat.shape)result cv2.addWeighted(smallcat, 0.7, back, 0.3, 0) cv2.imshow(…

傳輸層協議 TCP(1)

傳輸層協議 TCP&#xff08;1&#xff09; TCP 協議 TCP 全稱為 “傳輸控制協議(Transmission Control Protocol”). 人如其名, 要對數據的傳輸進行一個詳細的控制; TCP 協議段格式 ? 源/目的端口號: 表示數據是從哪個進程來, 到哪個進程去; ? 32 位序號/32 位確認號: 后面詳…

黎陽之光:以動態感知與 AI 深度賦能,引領電力智慧化轉型新革命

當全球能源結構加速向清潔低碳轉型&#xff0c;新型電力系統建設成為國家戰略核心&#xff0c;電力行業正經歷從傳統運維向智慧化管理的深刻變革。2024 年《加快構建新型電力系統行動方案》明確提出&#xff0c;到 2027 年需建成全國智慧調度體系&#xff0c;實現新能源消納率突…

自動駕駛中的傳感器技術34——Lidar(9)

補盲lidar設計&#xff1a;機械式和半固態這里不再討論&#xff0c;這里主要針對全固態補盲Lidar進行討論1、系統架構設計采用Flash方案&#xff0c; 設計目標10m10%&#xff0c;實現30m距離的點云覆蓋&#xff0c;同時可以驗證不同FOV鏡頭的設計下&#xff0c;組合為多款產品。…

Originality AI:原創度和AI內容檢測工具

本文轉載自&#xff1a;Originality AI&#xff1a;原創度和AI內容檢測工具 - Hello123工具導航 ** 一、AI 內容誠信管理專家 Originality AI 是面向內容創作者的全棧式質量檢測平臺&#xff0c;整合 AI 內容識別、抄襲查驗、事實核查與可讀性分析四大核心功能&#xff0c;為…

OpenCV圖像平滑處理方法詳解

引言 在數字圖像處理中&#xff0c;圖像平滑是一項基礎而重要的預處理技術。它主要用于消除圖像中的噪聲、減少細節層次&#xff0c;為后續的圖像分析&#xff08;如邊緣檢測、目標識別等&#xff09;創造更好的條件。OpenCV作為最流行的計算機視覺庫之一&#xff0c;提供了多種…

每天兩道算法題:DAY1

題目一&#xff1a;金幣 題目一&#xff1a;金幣 1.題目來源&#xff1a; NOIP2015 普及組 T1&#xff0c;難度紅色&#xff0c;入門簽到題。 2.題目描述&#xff1a; 3.題目解析&#xff1a; 問題轉化&#xff1a;求下面的一個數組的前 k 項和。 4.算法原理&#xff1a; …