技術指南

模型和管道並行性

當模型太大而無法容納在一個 GPU 上時,模型和管道並行性會將模型本身分割到不同的裝置上。

閱讀時間約2分鐘最後更新

概述

This is what makes training giant language models with hundreds of billions of parameters physically possible.

深入探討

模型並行性將單一模型劃分到多個 GPU 上,因此沒有一個裝置需要保存所有權重。主要有兩種口味。張量(層內)平行性將層內的數學拆分,例如在 GPU 之間切分大型矩陣乘法,每個 GPU 計算部分輸出。管道(層間)並行性將不同的連續層分配給不同的 GPU,因此層塊 1 位於 GPU 0 上,塊 2 位於 GPU 1 上,依此類推,激活像裝配線一樣向前傳遞。簡單管線的挑戰是「泡沫」:當 GPU 0 在第一批中工作時,下游 GPU 閒置。管線將每個批次分成微批次,因此所有階段都保持忙碌,從而顯著提高利用率。

技術洞察

張量並行性(如在 NVIDIA Megatron-LM 中)按列或行拆分權重矩陣,並使用 all-reduce 重新組合部分結果,從而在快速 NVLink 節點內保持通訊。管道並行性(GPipe、PipeDream)將批次劃分為微批處理,這些微批處理以交錯的時間表流經各個階段,從而縮短了空閒「泡沫」時間。兩者通常分層在一起,在節點內使用張量並行性,在節點之間使用管道並行性。

戰略影響

成本與預算

多年來,架構決策決定著效能和營運成本。

更明確的決策

技術教育幫助團隊選擇正確的堆疊,而不僅僅是最新的堆疊。

品質管控

更好的工程選擇可以減少生產中的可靠性事故。

模型和管道並行性的未來

框架越來越自動化地解決決定如何跨裝置劃分模型的難題,使用分析和搜尋來平衡計算和通訊。預計張量、管道和數據並行性(3D 並行性)會更緊密地集成,更智能的微批量調度將幾乎消除管道泡沫,以及具有更快互連的硬件,因此跨芯片分割單層對於更大的模型來說變得更便宜和更常規。

現實世界的實施

使用 NVIDIA Megatron-LM 訓練 GPT 風格的模型,它透過張量平行性在 GPU 上分割每個 Transformer 層的注意力和前饋矩陣。

使用 GPipe 將巨型視覺或語言模型的不同層放置在單獨的加速器上,而微批處理則讓它們忙碌起來。

DeepSpeed 的管道引擎將數千億參數模型劃分為跨多個節點的階段。

將單一 8-GPU 伺服器內的張量並行性與跨多個伺服器的管道並行性相結合,以訓練對於一台機器來說太大的模型。

風險與防護欄

優化一項基準測試可以隱藏更廣泛的系統弱點。

基礎設施和維護成本常常被低估。

隨著系統變得更加複雜,安全性和可觀察性差距可能會擴大。

實施路線圖

1

在實施之前定義延遲、品質和成本目標。

2

在實際負載和資料條件下進行基準測試。

3

儀器監控錯誤、漂移和使用者影響。

4

在擴展之前準備回滾和事件回應路徑。

不斷探索

Free newsletter

Get the daily AI briefing

Three verified AI stories every weekday morning, written in plain English. Free forever, no ads.

One email each weekday. Unsubscribe in one click. We never sell or share your address.

Test yourself

Take the Model and Pipeline Parallelism quiz

Instant feedback on every answer, and a shareable certificate with a verifiable ID once you pass a course.

開始測驗

Support free AI education. AI Understanding is a 501(c)(3) nonprofit — no ads, no paywall, ever. Make a donation

下一步指南

大型模型的張量平行性

常見問題

What is Model and Pipeline Parallelism?

當模型太大而無法容納在一個 GPU 上時,模型和管道並行性會將模型本身分割到不同的裝置上。這使得訓練具有數千億參數的巨型語言模型在物理上成為可能。

模型和管道並行性解決了什麼基本問題?

模型和管道並行性將模型本身跨裝置進行分區,從而能夠訓練遠大於任何單一 GPU 所能容納的網路。

張量(層內)並行分割如何運作?

張量並行性將計算分成單層,例如分割一個大的權重矩陣,以便每個 GPU 計算部分輸出。

簡單的管道並行性中的「泡沫」是什麼?

在管道步驟的早期,下游階段還沒有輸入並處於空閒狀態,浪費 GPU 時間;這種閒置間隙稱為泡沫。

管道並行如何減少氣泡?

將批次劃分為微批次可以讓多個微批次同時佔據不同的階段,從而保持所有 GPU 繁忙並減少空閒時間。

為什麼張量並行性通常保留在單一節點內?

張量並行性經常進行通訊以重新組合部分矩陣結果,因此它被放置在 NVLink 節點內部互連頻寬最高的地方。