精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

DHelix:跨 Micro-Batch 的通信隱藏,SOTA LLM 訓練性能

發布于 2024-12-5 11:51
瀏覽
0收藏

一、背景

我們在之前的文章中提到過,在 A100 上進行大規模 LLM 訓練的 MFU(模型浮點運算利用率) 通常可以達到 50%-60%,而在 H100 上往往只有 40%-50%,為什么會存在這樣的現象,能否進一提升對應的性能呢?比如在 H100 中是否可以達到 60% 的 MFU?

今天介紹一篇新的文章,其采用了一種新的雙鏈技術,可以更好實現通信與計算的 Overlap,為實現上述目標提供了更多可能。

對應的論文為:[2411.15871] Hiding Communication Cost in Distributed LLM Training via Micro-batch Co-execution [1]

訓練相關可以參考我們之前的文章:

二、摘要

LLM 的發展促進了大規模分布式訓練的需求,然而,盡管采用高度優化的框架,由于通信量、MFU(通常低于 50%)仍遭受顯著損失。與此同時,作者的全面分析表明,計算密集型和通信密集型算子可以良好 Overlap。

本文中,作者提出了 DHelix,這是一種受 DNA 結構啟發的新型架構,可以顯著提升 LLM 訓練的效率。DHelix 的核心是鏈間交錯(Strand Interleaving,SI),它將 GPU 的兩個連續 Micro Batch 流視作兩條鏈。DHelix 將兩條鏈的 Forward 和 Backward 并置,并對 SI 規劃進行系統優化,具體來說,該規劃基于算子級 Overlap 分析的結果和基于動態規劃的搜索算法實現不同鏈的(Forward 與 Backward)和(Backward 與 Forward)的協同調度。同時,DHelix 使兩條鏈能夠共享模型狀態和激活空間,有效地以不到 3% 的額外內存空間容納 2 個 Micro Batch。得益于獨特的模型折疊設計,DHelix 能夠無縫集成所有形式的現有數據/模型并行方案,其中最具挑戰的是 PP(Pipeline Parallelism),該設計實現了 W 形流水線。

作者在 3 個 GPU 集群(A40、A800 和 H100)上使用 DHelix 評估了常見的 LLaMA 和 GPT 模型以及 Phi MoE 模型。結果表明,在 64 A40 GPU 和 64 A800 GPU 集群上,DHelix 分別實現了 12-40%(最高 58% MFU)和 2-29%(最高 71% MFU)的提升,顯著優于最先進的方案。在 H100 集群上,盡管更快的網絡削弱了 DHelix 的優勢,但依然使得跨節點的 TP(Tensor Parallelism)更有應用前景。

PS:針對本文的工作,我們也有一些額外的疑問:

  • U 形折疊的另一個影響是開始階段的 Token Embedding 和最后的 LM Head 中的 Embedding 都位于一個 PP Stage 中,進一步增加了負載不均衡的問題;但同時也帶來一個好處,避免了起始 PP Stage 和結束 PP Stage 都需要讀取數據的問題。
  • 大部分實驗基于 A40 集群(沒有 NVLink,機間網絡 100Gbps)完成,而大模型訓練通常會使用更高性能的 A100/800 或 H100/H800,往往會有 NVLink + NVSwitch 以及高速 IB 網絡。如果有更多基于這些環境的實驗會更有說服力,比如論文中并沒有具體介紹 A800 最高 71% MFU(312*0.71=221.52 TFLOPS) 的結果是哪個實驗,似乎對應了 Figure 14,此時 Megatron-LM 的 MFU 也非常高。

三、引言

3.1 Intra-batch 調度

計算與通信 Overlap 是模型并行(如 TP 和 PP)中廣泛采用的優化策略,其將計算和通信細化為細粒度任務,實現高效交錯,進而掩蓋通信的成本,實現模型訓練的加速。比如如下這些工作:

  • [2406.08756] Optimizing Large Model Training through Overlapped Activation Recomputation [2]
  • [2406.06858] FLUX: Fast Software-based Communication Overlap On GPUs Through Kernel Fusion [3]
  • Centauri: Enabling Efficient Scheduling for Communication-Computation Overlap in Large Model Training via Communication Partitioning [4]
  • 字節[2402.15627] MegaScale: Scaling Large Language Model Training to More Than 10,000 GPUs [5]
  • 微軟 DeepSpeed 團隊[2409.15241] Domino: Eliminating Communication in LLM Training via Generic Tensor Slicing and Overlapping [6]

如下圖 Figure 2 所示,字節 MegaScale 將大型 AllGather 算子及其后續的 GEMM 或 Dgrad(方向數據梯度)分解為細粒度的 Send/Recv 算子和矩陣塊。隨后,單個 Micro Batch 內,MegaScale 在通信與計算之間無數據依賴性,可以重疊這些分塊的通信和計算算子。

DHelix:跨 Micro-Batch 的通信隱藏,SOTA LLM 訓練性能-AI.x社區

類似的,Megatron-LM 和 Ring-Attention 通過用 Send/Recv 替代 CP 中的 ALLGather,實現了對分塊注意力計算的 Overlap。此外,PP 并行優化也致力于重疊流水線通信(如 TP 傳輸)與計算,有效減少 PP Bubble 并提升效率。

然而,上述優化仍受限于單個 Micro Batch,由于數據依賴性,計算和通信無法充分并行。作者也在 Megatron-LM 中實現了 MegaScale 的 Overlap 方法,發現它們僅能重疊集合通信與相鄰的 GEMM 操作,仍有 73.9% 的計算/通信未被 Overlap。如上圖 Figure 2 所示為 MegaScale 調度結果,ALLGather 未被完全 Overlap,主要是因為 GEMM 的執行周期過短,而 Backward 中存在大量計算,難以找到足夠的通信操作與之 Overlap。

3.2 Megatron-LM 通信剖析

作者首先分析了 64 卡 A40 GPU 集群上使用 Megatron-LM 框架進行訓練的通信開銷。如下圖 Figure 3 所示,作者展示了多種 Transformer 模型,不同規模下總訓練時間中計算和 3 種通信操作的分布情況??梢钥闯觯谶@個規模下,通信已經占主導地位,尤其是在大模型中。其中主要是模型并行帶來的集合通信開銷,即 TP/SP、CP、EP。另一方面,DP 和 PP 引入的通信則低得多。例如,在 LLaMA-39B 模型中,TP 和 CP 引起的通信占據執行時間的 55%;而 Phi-31B 模型則產生了約 34.3% 的 EP 通信開銷:

DHelix:跨 Micro-Batch 的通信隱藏,SOTA LLM 訓練性能-AI.x社區

通常的做法是將大通信量操作保留在機器內部(比如 TP 和 EP 經常會安排在機內,以便使用高速的 NVLink + NVSwitch)。然而,隨著模型規模變大,所需要的 GPU 數量增加,跨節點通信的比例必然增加;與此同時,機器內部 GPU 間的帶寬也在不斷提高,機內通信速度加快,這兩者的結合可能削弱層內通信的主導地位。為了理解這一點,作者估算了在 10000+ GPU 集群上進行 LLM 訓練時機內通信和跨節點通信的分布情況。具體而言,作者遵循 LLaMA 3.1 405B 技術報告(The Llama 3 Herd of Models | Research - AI at Meta [7])中的分布式訓練配置和模型結構,以及 8*H100 NVSwitch 全互聯,外加 8*400 Gbps NIC 的硬件配置。

如下圖 Table 1 所示,通過擴展 DP 將 GPU 數量從 8192 擴展到 16384 時,跨節點通信占總通信時間的比例從 14.8% 增加到 33%。同時,如果啟用 CP,由于引發更多跨節點的 Send/Recv 操作,跨節點通信比例進一步增加到 49.9%。

DHelix:跨 Micro-Batch 的通信隱藏,SOTA LLM 訓練性能-AI.x社區

3.3 LLM 訓練算子 Overlap

目前已經有很多研究在推動計算與通信的重疊(Overlap),以掩蓋通信的成本。然而,針對常見 LLM 訓練算子在 Overlap 執行時的性能表現,尚缺乏系統的評估。本文中,作者進行了廣泛的性能剖析,以理解在同一 GPU 上協同調度兩個算子時的性能影響,并通過多種 GPU 的完整基準測試來驗證。

作者采用重疊效果因子(Overlap Effectiveness Factor,OEF)來衡量各種算子的重疊行為,該因子的定義為:

DHelix:跨 Micro-Batch 的通信隱藏,SOTA LLM 訓練性能-AI.x社區

其中 Ti 表示一個單一算子 opi 的順序執行時間,而 Pi,j 是 opi 和 opj 的重疊執行時間。換言之,OEF 衡量了重疊執行能夠較短算子執行時間的程度。

如下圖 Figure 4 所示,為 4 個代表性算子的結果,包括兩個計算密集型算子(GEMM:矩陣乘和 FA_BWD:FlashAttention  的反向操作)以及兩個通信通信密集型算子(C1:節點內 AllGather 和 C2:節點間 All-to-All)。其中分別對應 3 種 GPU(A40:GPU 間通過 PCIe 連接,A800 和 H100 兩者均通過 NVLink + NVSwitch 連接),主要觀察結果如下:

  • 計算密集型算子(如 GEMM 和 FA)的重疊效果不佳。
  • FA_BWD 算子在與 GEMM 重疊時尤為不利,這可能是 GEMM 干擾破壞了 FA 在計算和內存 IO 之間的精心編排以實現的細粒度交錯。
  • 兩種通信算子與兩種計算算子的重疊效果均比較好。
  • 無論是機內通信還是機間通信,其自身重疊效果均不佳,但由于同時利用了不同的網絡資源,它們之間的重疊卻能帶來收益。

這些結果啟發作者構建一種跨批次(Batch)執行交錯,并在算子級別進行系統性的細粒度折疊優化的方案。這使得未來可以通過放寬當前 TP 約束(當前一般僅限單個節點內的 8 個 GPU)來實現模型的擴展。

DHelix:跨 Micro-Batch 的通信隱藏,SOTA LLM 訓練性能-AI.x社區

四、DHelix 設計與實現

4.1 鏈交叉概述

DHelix 在算子層面執行系統級的交錯處理,以適配兩條并行鏈路,即 α 鏈路 和 β 鏈路,每條鏈路處理一個 Micro Batch,從而最大化 GPU 利用率。

值得注意的是,當前常見的做法是處理單一鏈路,已通過盡可能增大 Micro Batch 來實現最大訓練吞吐,從而最大化利用 GPU 內存。如下圖 Figure 5 展示 展示了針對若干 Micro Batch 的樣本訓練時的內存使用情況。在給定模型規模和并行訓練配置(如 LLaMA 25B,DP=8,TP=8)的情況下,用戶通常會增大 Micro Batch(比如加 1),直到系統內存即將耗盡時為止。

DHelix:跨 Micro-Batch 的通信隱藏,SOTA LLM 訓練性能-AI.x社區

引入時間延遲是實現 SI 雙鏈路的唯一途徑,使得 α 鏈路的 Forward 與 β 鏈路的 Backward 得以協同調度,如下圖 Figure 1 所示。這是因為它們執行過程中呈現出互補的內存消耗模式:Forward 鏈路在逐層推進中穩定的為激活數據分配內存,而 Backward 鏈路則以相似速率釋放內存(PS:正常來說 Backward 的延遲大概是 Forward 的 2 倍,為什么是相似速率?后文中作者給了相關解釋)。通過將兩組激活數據的“三角形”狀態緊密結合,總激活內存占用量將維持在單鏈路的峰值附近。

DHelix:跨 Micro-Batch 的通信隱藏,SOTA LLM 訓練性能-AI.x社區

DHelix:跨 Micro-Batch 的通信隱藏,SOTA LLM 訓練性能-AI.x社區

盡管 Wavelet 方法(Wavelet: Efficient DNN Training with Tick-Tock Scheduling [8])已經探討過這一理念,其提出的 Tick-Tock 調度策略在數據并行中考慮了兩鏈路內存使用高峰和低谷的重疊。然而,在應用于 LLM 訓練環境中該方法仍有不足:

與流水線并行(PP)不兼容:PP 的計算松耦合且通信量低,成為擴展 LLM 訓練的關鍵機制(PS:Transformer 各層參數量一致,也更適合按層切分)。然而,在 PP 模式下,相鄰 Micro Batch 的 Forward 和 Backward(Wavelet 中的 Tick 和 Tock)呈反向移動。如下圖 Figure 6a 所示,α 鏈路的 Forward(藍色)從 GPU G0 開始, 而 β 鏈路的 Backward(綠色)從 GPU3 開始,兩條鏈在傳遞過程中僅交叉一次,使得 GPU 上協同執行的機會甚微。

模型復制:Wavelet 通過復制模型狀態(參數、梯度和優化器狀態)來協同調度兩個 Micro Batch 的數據訓練。值得注意的是,這種方式可能通過構建雙向流水線(如 Figure 6b 所示)來解決 PP 調度問題,使得 α 鏈路和 β 鏈路 能同向移動,比如從 G3 到 G0。然而,在典型的分布式訓練中,模型狀態占據 GPU 內存相當大的一部分(如上圖 Figure 5 的分析結果,其超過 30%)。存儲兩份模型狀態顯著削弱了 Micro Batch 交錯帶來的收益。

粗粒度交錯:此外,Wavelet 協同調度 Tick 和 Tock,以執行其原始的順序工作流程,未進行有意的算子重組以便提供和通信重疊的機會。

DHelix:跨 Micro-Batch 的通信隱藏,SOTA LLM 訓練性能-AI.x社區

DHelix 通過其 SI 機制消除上述限制,該機制實現了在每個 GPU 上對兩個 Micro Batch 進行周期性高效且節省內存的協同調度。為便于理解 Dhelix 的工作原理,可以想象二維空間中的雙螺旋 DNA 結構,其兩條鏈耦合成單一的訓練計算流,同時處理兩個 Micro Batch。

耦合的 “DNA 鏈”作為一個整體,被折疊成 U 形,模型層在參與 PP 的 GPU 之間來回翻轉。通過這種排布,解決了上述 PP 不兼容和模型復制的問題。后文會詳細介紹,α 鏈路的 Forward 與 β 鏈路的 Backward在其生命周期內始終朝著同一方向移動,使得它們在 PP 方案中從一個設備到下一個設備內完美協同執行,同時,U 形折疊使得每個 GPU 上的模型層能夠被 α 鏈路與 β 鏈路共享,以單一的模型參數副本同時服務于 Forward 和 Backward。

當深入觀察 α 鏈路與 β 鏈路的耦合時,兩條鏈路上下相對移動,交替進行 Forward 和 Backward。在每次傳播中,鏈會重新排列其算子以找到重疊良好的兼容算子(例如,計算和通信的重疊),創建一個這些耦合點為錨點的調度,類似 DNA 鏈中的堿基對。DHelix 利用離線分析結果測量算子間重疊兼容性,并采用動態規劃搜索耦合鏈的高效協同調度。

因此,DHelix 的 SI 設計通過使訓練路徑能夠同時容納兩個相鄰 Micro Batch,有效隱藏了 LLM 訓練關鍵路徑中的通信開銷,顯著提升整體性能。同時,SI 在現有并行級別之下運行,可以無縫集成于 TP、SP、CP 和 EP。

4.2 模型折疊

這里,作者具體介紹了其模型折疊(Folding)技術。這一關鍵的 DHelix 技術使得 PP 得以實現,具體而言,作者將模型層的原始線性排布在 GPU 間折疊成 U 形布局。如下圖 Figure 7 右側所示,其包含 32 層,切分在 4 個 GPU 上,每個 GPU 上 8 層。

  • 原始線性切分時:L0-7 在 GPU0,L8-15 在 GPU1,L16-23 在 GPU2,L24-31 在 GPU3;
  • 本文的 U 形切分為:L0-3 和 L28-31 在 GPU0,L4-7 和 L24-27 在 GPU1,L8-11 和 L20-23 在 GPU2,L12-15 和 L16-19 在 GPU3。

這樣操作之后,Forward 和 Backward 在兩個 GPU 上的流動方向完全一致。如下圖 Figure 7 左側所示,熟悉的 1F1B 的 V 形結構變成了 W 形,其中 Forward 和 Backward 各形成一個相同的 V,以此可以實現  α 鏈路與 β 鏈路在跨 GPU 時的完美重疊,以及 Forward 和 Backward 在各 GPU 上的協同調度。

相較于之前的模型復制方案(如 Figure 6 ),DHelix 的模型折疊并未改變每個 GPU 上的模型參數規模。因此,借助 SI 技術,同一套模型參數可以同時執行兩條鏈,每個 GPU 上實時處理兩個 Micro Batch,而其消耗的 GPU 內存容量幾乎與當前最先進的分布式訓練框架處理單鏈時相當。

DHelix:跨 Micro-Batch 的通信隱藏,SOTA LLM 訓練性能-AI.x社區

如上 Figure 7 簡化了雙鏈交錯傳播調度的時間表示,藍色和綠色塊具有相同的時間寬度。眾所周知,Backward 更慢,大約是 Forward 2 倍,因此綠色塊的寬度幾乎是藍色的 2 倍。當 SI 在同一 GPU 上協同調度 α 鏈路與 β 鏈路時,α 鏈路的 Backward 內存釋放是否能及時滿足 β 鏈路的 Forward 內存需求,從而引發兩條鏈路之間的空間依賴問題。實際上,作者發現這并不會引發問題,至多需要額外數百 MB 的閑置內存,因為作者是在層級別而非整個模型層面重疊 Forward 和 Backward。

為了提供更全面的展示,如下圖 Figure 8 所示,作者展示了包含 12 個 Micro Batch 的完整 W 形流水線調度。它與經典的 1F1B 流水線調度一樣,經歷了預熱(Warmup),穩定(Steady)和冷卻(Cooldown) 3 個階段。

  • 預熱階段,DHelix 將α 鏈路中 α1-α4(藍色)填充到流水線中。一旦它們完成 Forward,DHelix 便注入β 鏈路中 β5-β8,通過 SI 塊(頂部藍色和底部綠色)開始預填充流水行,此時α 鏈路中的 Forward 和β 鏈路中 Backward 融合在一起。
  • 當發出 SI 塊 [β5α1] 時,DHelix 進入穩定階段。在此階段,DHelix 啟動α 鏈路中 α9-α12,且 SI 塊占滿所有 GPU。
  • 最后,在冷卻階段,DHelix 耗盡用來創建 SI 塊的 Forward 塊,并隨著流水線情況回收 Backward 塊(綠色)。?

DHelix:跨 Micro-Batch 的通信隱藏,SOTA LLM 訓練性能-AI.x社區

無論是原始的 1F1B 還是 DHelix 的 W 形調度,在穩定階段都能使 GPU 完全占用。此外,在預熱和冷卻階段,DHelix 僅執行原始的單鏈操作(無 SI),因此,DHelix 并未改變整體調度中 Bubble 率,仍然為 p/(m-1)。DHelix 的性能優勢在于:首先,能夠啟用 SI 的流水線執行(不同于 Wavelet);其次,通過重疊兩條鏈的算子時間來縮短整體執行時間。換言之,每個 SI 塊 [βiαj] 完成所需的時間小于兩個算子獨立執行的時間。

此外,如上圖所示,W 形流水線對每個 Micro Batch 需要進行兩次上行和下行,從而使得 Send/Recv 通信量比原始的 1F1B 調度增加一倍。然而,在常見的分布式 LLM 訓練中,這種 PP Send/Recv 的通信量占比極小,對性能影響微乎其微。

4.3 算子配對下的鏈耦合

現在,可以進一步聚焦到 Figure 7 中兩個鏈(α 鏈路與 β 鏈路)耦合的 Forward + Backward 過程。盡管 U 形模型折疊機制使得這兩個鏈的協同執行成為可能,但接下來進行的算子級重疊則為 DHelix 帶來了顯著的性能提升。

這種提升源自于兩個鏈的協同執行,盡可能的利用硬件并行性。如前所示,當前 LLM 訓練流程中的各個算子,無論是計算還是通信,都已得到深度優化,使得這兩種操作能夠重疊。直接結果是,由于數據依賴性迫使其順序調度,當前的算子幾乎沒有機會在每個鏈中進一步折疊。

然而,由于 α 鏈路與 β 鏈路之間沒有數據依賴性,SI 也就為 α 鏈路的通信操作與 β 鏈路的計算操作,以及反之的計算和通信操作之間的交叉重疊開辟了新的可能性。除了交錯兩個鏈的 Forward 和 Backward 所帶來的內存收益外,還存在兩個額外的性能優勢:

  • Forward 和 Backward 具有不同的算子布局,為計算算子和通信算子的系統調度留出了更多空間(相較于 Forward 與 Forward,以及 Backward 與 Backward 的交錯)。
  • 在某些情況下,Backward 往往是計算密集型的,這提供了更多機會來隱藏 Forward 中較高比例的通信操作。

Dhelix 并不是簡單地釋放兩個 Micro Batch 并讓 GPU 盡力進行協同調度(如 Wavelet 那樣),而是精心采用系統化和自適應的方法,在算子級別上有意對齊兩個鏈的執行,以盡可能重疊兩個鏈之間的計算和通信操作。如下圖 Figure 9 所示為其整體工作流程:

  1. 基于恰當的 DAG 生成所有可能的算子序列。
  2. 通過將一堆 Forward 和 Backward 算子劃分為連續 Segment 來生成算子 Segment。
  3. 使用動態規劃搜索最優的 SI 配對方案,通過在執行過程中插入 Barrier 來保證兩個鏈的協同執行。?

DHelix:跨 Micro-Batch 的通信隱藏,SOTA LLM 訓練性能-AI.x社區

算子基礎特性:再次借用 DNA 結構類比,其中算子“配對”與互補鏈上的相應伙伴,形成“結合(Bond)”,在此情景下,通過利用異構 GPU 資源實現協同執行,從而顯著提升性能。與 DNA 鏈中 4 種核苷酸基不同,從概念上可將 Transformer 算子歸為兩種類型:計算和通信,如下圖 Table 2 所示。

DHelix:跨 Micro-Batch 的通信隱藏,SOTA LLM 訓練性能-AI.x社區

從概念上講,“堿基配對”僅發生在可獲利的堿基類型之間:comp-comm 或 comm-comm。在 DHelix 設計中,為了考慮算子之間復雜的交錯形式,作者對 Table 2 中列出的算子進行詳細的成對測試。這種離線的預分析必須在新的硬件配置上重新進行,或者訓練流程被修改(如算子更新)時重新執行,耗時 10-30 分鐘。

算子排序預切分:Dhelix 無法控制單個算子的 CUDA 調度。然而,它可以通過在 α 鏈路與 β 鏈路的執行過程中策略性地設置 Barrier 來強制它們同步。這樣,通信算子可以與另一個鏈中的對等算子協同執行,以期最大化被計算隱藏的機會。換言之,單鏈的線性算子執行順序被劃分為如干個 Segment,這些 Segment 通過 DHelix 注入的 Barrier 在鏈間配對。DHelix 通過構建 Forward 和 Backward 中單層計算的 DAG 開始鏈配對過程,如啟用 TP/CP,則一個 Transformer 層由 14 或 18 個算子組成。如上圖 Figure 9 所示,基于這些 DAG,DHelix 首先通過枚舉其拓撲順序生成 Forward/Backward 算子序列。

自然地,下一步是將每對候選序列劃分為算子 Segment,并在兩序列間協同調度這些 Segment。給定一堆候選 Forward/Backward 序列,有效地放置跨鏈 Barrier 即生成一個候選配對規劃。

這兩類 DAG 在當前的 Transformer 工作流程中較為簡單,包含少數可在結果序列中移動的算子。這些算子包含反向權重梯度計算(wgrad,執行 GEMM 操作)以及在 MoE 中的路由計算。監管如此,候選序列的數量及其切分也導致搜索空間過于龐大,難以通過人工方式進行搜索。幸運的是,尋找最優配對方案的問題可以形式化為一個動態規劃問題。

動態規劃配對法:給定一對 Forward 和 Backward 候選算子序列,Sf 和 Sb,各自被切分為 Nf 和 Nb 個 Segment。Dhelix 尋求產生最短執行時間跨度 Topt(Nf,Nb) 的最優算子配對方案。

在最優解中,一對前綴序列的配對子解包含的來自 Sf 和 Sb 的 i(0<=i<Nf) 和 j(0<=j<Nb) 算子 Segment,也必須是最優的。

DHelix:跨 Micro-Batch 的通信隱藏,SOTA LLM 訓練性能-AI.x社區

這里,P(i, j) 表示從 Forward 序列的第 i 個算子 Segment與 Backward 序列的第 j 個算子 Segment 重疊執行時的時間重疊量,該值由離線分析結果計算得出。P(i, ?) 則給出了第 i 個算子 Segment 單獨執行的時間,因其被安排獨立執行。

4.4 討論

兼容性:從之前提供的系統設計描述中可以看出,DHelix 的 SI 方案具有很高的通用性,不依賴于實際的分布式訓練框架及底層硬件。它可以通過重復執行離線分析過程,以適配新的訓練框架或硬件平臺。如下圖 Figure 10 所示,展示了同一訓練工作流在兩個不同平臺(A40 40GB 集群)和 (A800 80GB 集群)上的搜索結果,顯示出了兩種截然不同的 SI 規劃。需要說明的是,當分布式訓練參數(如 TP、PP、SP 等)改變時,即使在同一硬件上,配對調度也會有所不同,因為計算和通信算子的權重會發生變化。

DHelix:跨 Micro-Batch 的通信隱藏,SOTA LLM 訓練性能-AI.x社區

可擴展性:最后,作者強調,除了算子特征化部分(包括離線分析),SI 對模型訓練用戶保持透明。若某一框架設置了多維并行配置,相同的配置可以在不改變參數或引入新的 SI 特定參數的情況下啟用 SI。因此,這使得 SI 能夠在對影響極小的情況下優化整體訓練吞吐量。本文測試受硬件資源限制,在擴展到更大規模時可以將其視為最小單元,通過在 PP、SP/CP 和 EP 維度上進一步擴展。

4.5 實現細節

作者基于 NVIDIA 的 Megatron-LM 實現了 DHelix,涉及 5000 行 Python 代碼。Megatron-LM 原有的 Transformer 實現包含 3 個模塊:預處理、Transformer 和后處理。在 DHelix 中,作者將 Transformer Block 替換為本文中的 SI-enabled Transformer Block,以便與 Megatron-LM 的預處理和后處理模塊結合,實現雙鏈執行。所有 DHelix 組件均基于 torch.nn.Module 構建,使用戶能夠利用標準 PyTorch API 創建自定義 Transformer 模型,并享受 SI 帶來的優勢,且無需對用戶級代碼進行任何修改。

在運行時,DHelix 根據生成的配對計劃依次處理算子對。通過在不同的 Segment 之間使用 torch.cuda.synchronize(也就是 barrier),確保這種順序執行語義。在單個 Segment 的執行過程中,算子進一步分為 3 類:計算、節點內通信和節點間通信。作者啟動了 3 個 CUDA Stream,并將每類算子分配到專屬的 Stream 進行處理。此外,PyTorch 允許不同的 CUDA Stream 獨立分配和釋放內存,這可能會導致內存碎片或內存不足錯誤。為了解決此問題,DHelix 僅使用默認 CUDA Stream 進行所有內存分配和釋放操作。

此外,作者也遵循現有實踐,通過調整 NCCL 環境變量 NCCL_NTHREADS 和 NCCL_MAX_NCHANNELS 來緩解計算與通信內核之間的競爭(Liger: Interleaving Intra- and Inter-Operator Parallelism for Distributed Large Model Inference [9])。

五、實驗&評估

5.1 實驗設置

實驗平臺:包括 3 中 NVIDIA GPU 集群:

  • 8 臺 A40(48GB) 機器的集群,機器間通過 100 Gbps 的 IB 網絡連接,每臺機器 8 張 A40 PCIe GPU,PCIe 4 帶寬為 32 GB/s。
  • 8 臺 A800(80GB) 機器的集群,機器間通過 4x200 Gbps IB 網絡連接,機器內通過 NVLink(400 GB/s) + NVSwitch 互聯。
  • 4 臺 H100(80GB) 機器的集群,機間通過 8x400 Gbps IB 網絡連接,每臺集群 8 張 H100 GPU,機器內通過 NVLink(900 GB/s) + NVSwitch 互聯。

CUDA 版本為 12.2,由于高端 GPU 資源申請難度大,A800/H100 集群僅在極短時間內可供使用。因此在所有平臺重復進行了整體性能測試,其余則在 A40 集群完成。

LLM/MoE 模型。如下圖 Table 3,4,5 所示,作者測試了 3 種主流開源 LLM,涵蓋 9 種不同規模。其中 Phi 為 MoE 模型,同樣 MoE 中的 top-k 參數為 2,也就是每個 Token 選擇兩個專家。

DHelix:跨 Micro-Batch 的通信隱藏,SOTA LLM 訓練性能-AI.x社區

DHelix:跨 Micro-Batch 的通信隱藏,SOTA LLM 訓練性能-AI.x社區

DHelix:跨 Micro-Batch 的通信隱藏,SOTA LLM 訓練性能-AI.x社區

在具體實驗中,作者根據原始模型結構調整模型層數,以適應集群總的 GPU 內存容量。考慮到 PP 維度擴展具有相對較小的 PP 通信量,性能結果預計與更改模型規模時非常接近。

基線系統:作者將 DHelix 與多個基線系統進行對比,其主要是廣泛采用的 Megatron-LM。該框架支持所有形式的數據/模型并行,包括 DP、TP/SP、CP、PP 和 EP。

  • Megatron-LM 基線已包含了對 CP 的通信 Overlap 優化,即注意力計算中重疊 Send/Recv 操作。
  • Intra-batch 基線是指遵循 MegaScale 的設計理念,引入 Batch 內的通信重疊方案。主要是對 GEMM 算子進行切分,并在單個 Batch 內將這些算子與通信算子交錯執行,適用于 TP 和 SP。
  • Wavelet+ 基線是對 Wavelet 的擴展,據作者了解,這是唯一探索 Micro Batch 之間交叉的方案。其僅應用于 DP,并且采用模型復制策略。為公平起見,作者在 DHelix 中實現了 Wavelet 的簡單輪詢調度,以交錯 DHelix 中的算子,形成流水線化的 Wavelet+。

指標:依照之前的慣例,對于 LLaMA 和 GPT 系列模型,主要通過單個 GPU 上作業的總浮點數除以 End2End 時間來代表每個 GPU 的訓練性能(TFLOPS/GPU);對于 Phi MoE 模型,主要使用 Tokens/s 來衡量,以指示生成速度。最后,因為 DHelix 并未改變分布式訓練的語義,因此不影響模型的收斂性和準確性。

5.2 整體性能:A40 集群

作者通過 3 項任務評估 DHelix 的性能:Dense 模型訓練、長序列及上下文并行(CP)的 Dense 模型訓練、MoE 模型訓練。對于 LLaMA/GPT 模型,Global Batch 對應 800 萬 Token,也就是 Sequence Length 為 8K 時 Global Batch Size 為 1K。而 Micro Batch Size 則會相應調整以充分利用 GPU 內存。同樣,Phi 模型的 Global Batch Size 為 1600。

5.2.1 正常序列長度的 Dense 模型

如下圖 Figure 11 所示,在 LLaMA/GPT 模型,8192 序列長度,保持 TP 和 PP 相同配置下,DHelix 相比 Megatron-LM,Intra-Batch、Wavelet+ 分別提升 27-40%,15-28% 以及 21-25%。

DHelix:跨 Micro-Batch 的通信隱藏,SOTA LLM 訓練性能-AI.x社區

與基準 Megatron-LM 相比,Intra-batch 的性提升顯著較低,只有 5%-15%。分析發現,由于每個 Micro Batch 內的順序依賴性,Intra-batch 通過與切分的 GEMM 算子重疊,僅隱藏了 26.1% 的 TP 通信開銷。相比之下,DHelix 幾乎隱藏了 83% 的通信開銷。

5.2.2 長序列的 Dense 模型

考慮到長序列的需求越來越多,作者進一步評估了長序列訓練性能,將序列長度從 8192 翻倍到 16384,并加入序列并行(CP),需要說明的是,加入 CP 會導致 DP 維度的降低。

如下圖 Figure 12 所示,DHelix 再次一致性的優于 Megatron-LM,Intra-batch 和 Wavelet+,提升幅度分別為22%-39%、13%-30%和11%-30%。

DHelix:跨 Micro-Batch 的通信隱藏,SOTA LLM 訓練性能-AI.x社區

5.2.3 MoE 模型

在 Phi-31B MoE 模型上,使用專家并行(EP),且 DP 組的大小需要能被 EP 組大小整除。這里作者將 EP 大小設置為 8,DP 與 PP 大小分別為 16 和 4。此外,每個專家的容量因子設置為 6,全局并行組大小為 16x4,因為 EP 組為 DP 組的子集。如下圖 Table 6 所示,DHelix 可以有效實現 EP 中 All-to-All 通信的 Overlap,實現 27% 的性能提升。

DHelix:跨 Micro-Batch 的通信隱藏,SOTA LLM 訓練性能-AI.x社區

5.3 整體性能:高性能集群

為了評估 DHelix 性能的普適性,作者進一步在 A800 集群進行評估。需要說明的是,作者這里忽略了 Intra-batch 實驗,因為 A800 機內有高速 NVLink 互聯,Intra-batch 帶來的提升幾乎可以忽略。

5.3.1 長序列 Dense 模型

進一步將 LLaMA 模型擴展到 66B,序列長度擴展到 16384 和 32768,相應的 CP 組大小為 2 和 4。

如下圖 Figure 13a 展示了每個 GPU 的訓練吞吐,借助 NVLink,Megatron-LM 獲得了很高的 TFLOPS,在16K 和 32K 序列下分別實現 186 TFLOPS(60% MFU)和 160.9 TFLOPS(52% MFU)。這主要是因為節點內 TP 通信成本降低,僅占總訓練時間的 10%;此外,Megatron-LM 能夠部分重疊 CP 相關通信。相比之下,DHelix 在 Megatron-LM 基礎上仍有 7-24% 的提升,在 CP 為 4 時提升更明顯,這是因為 DHelix 有效隱藏了增加的跨節點通信,保持了 199.7 TFLOPS(64% MFU)的吞吐量。

DHelix:跨 Micro-Batch 的通信隱藏,SOTA LLM 訓練性能-AI.x社區

5.3.2 更大的 MoE 模型

得益于內存容量變大,A800 集群能夠容納完整的 Phi-42B 模型,并且可以將每個專家的容量因子設置為 8。如上圖 Figure 13b 所示,相比 Megatron-LM,DHelix 同樣實現了 15% 的提升(PS:這里如果也列下 MFU 就好了)。

5.3.3 增加 TP 組規模

大規模訓練中 TP 通常限制在 8 以內(單節點內)。然而隨著模型規模擴大和網絡帶寬提升,跨節點 TP 逐漸受到關注。為此,作者在 4 節點 H100 集群進行了短暫測試,以評估 DHelix 在解鎖跨節點 TP 方面的潛力。

如下圖 Figure 14 列出了 TP 規模從 8 增加到 32 的結果。值得注意的是,更高的 TP 規模支持更大的模型(PS:增加 PP 也可以,這樣相比 PP 的明顯優勢是什么?),但會犧牲每個 GPU 的吞吐量。在 H100 上,DHelix 相比 Megatron-LM 的收益較低(最高 17%),而在 A800 上則高達 29%,這主要是 H100 的互聯通信帶寬更高。不過,DHelix 在兩種平臺展現了相同的優勢,即 TP 越大,DHelix 相比 Megatron-LM TFLOPS 損失的越小。

DHelix:跨 Micro-Batch 的通信隱藏,SOTA LLM 訓練性能-AI.x社區

為了評估 DHelix 在 H100 上的算子重疊效果,作者深入分析了使用跨節點 TP 進行訓練時的通信開銷。盡管已經隱藏了 50%-70% 的可見通信成本,但仍有進一步優化的空間,如下圖 Table 7 展示了限制這種重疊的 2 個重要因素:

  • 內核降速:在多個 CUDA Stream 上同時運行計算和通信 Kernel 會導致性能下降 20%-30%,限制了潛在的性能提升。
  • 啟動間隔:每個配對 Segment 開始時計算和通信 Kernel 啟動之間的小間隔會產生相當于通信成本 10%-20% 的開銷。

一個有前景的方法是將這些 Kernel 融合成一個單一的、整體的 Kernel,以更精確地管理 GPU 資源,如 LIBRA: Contention-Aware GPU Thread Allocation for Data Parallel Training in High Speed Networks [10] 所示。

DHelix:跨 Micro-Batch 的通信隱藏,SOTA LLM 訓練性能-AI.x社區

5.4 性能提升統計分析

這個部分,作者分析了 DHelix 相對于 Megatron-LM 基線在性能提升方面的各個來源,這些提升主要來源于 DHelix 引入的各種通信 Overlap 策略。作者在 A40 集群上使用 LLaMA-39B 模型進行了兩組統計分析實驗:

  • a:CP 并行度為 2,序列長度為 16384。
  • b:CP 并行度為 4,序列長度為 32768。

結果如下圖 Figure 15a 和 15b 所示,測試 15a 采用了與 Figure 12 中 LLaMA-39B 相同配置,而測試 15b 則評估了 DHelix 在更長序列下的延遲情況:

DHelix:跨 Micro-Batch 的通信隱藏,SOTA LLM 訓練性能-AI.x社區

TP Overlap:首先加入 TP Overlap,使得 15a 和 15b 的性能提升為 11.18% 和 5.37%。通常來說,更高的通信成本更利于 DHelix。然而,在 15b 中,32K 序列下的通信開銷過高,無法完全 Overlap,這反而成了不利因素。

CP Overlap:進一步啟用 CP Overlap,進一步隱藏了由 CP 引起的 Send/Recv 開銷,分別使 TP Overlap 后的性能再提升 22.5% 和 14.4%。這一步 DHelix 帶來了最顯著的性能提升。因為在 a 和 b 中,CP 引起的層內通信分別占到總訓練時間的 28% 和 53%。同樣,過多的通信也降低了 b 中 CP Overlap 的收益

通信與通信 Overlap:又格外新增了節點內與節點間通信的重疊,在 b 中帶來了 7% 的提升,而在 a 中,大部分通信已經被重疊,因此沒什么收益。

權重梯度 Overlap:最后,進一步啟用權重梯度(Wgrad)算子在 DAG 排序允許的范圍內移動,展示了算子重排的影響。在 a 上進一步提升 5%,有助于減少數據依賴性導致的 “Overlap Bubble”。

5.5 SI 內存空間利用率

最后,作者也進一步驗證了 DHelix 的內存優化能力,這對于支持盡可能大的模型訓練任務至關重要。作者將 DHelix 的 SI 方案與 Megatron-LM(單鏈)以及另外一種直接但內存不友好的雙鏈實現(Wavelet)進行了比較。實驗中采用 LLaMA-25B 模型,在 DP=4,TP=8 和 PP=2 下,Micro Batch 設置為 1。

通過逐步增加模型層數,以確定系統支持的最大模型參數規模。實驗結果表明,DHelix 支持的最大模型尺寸為 39B,非常接近 Megatron-LM 的 40B,僅減少了 2.5% 的模型尺寸,卻換來了 40% 的訓練吞吐提升(PS:這里應該是 A40 GPU)。相比執行,Wavelet 最大只支持 32B 參數的模型。

六、參考鏈接

本文轉載自??AI閑談??,作者: AI閑談 ????

收藏
回復
舉報
回復
相關推薦
91一区二区在线观看| 日韩电影免费网址| 欧美午夜电影在线| 亚洲人成77777| av免费在线观看不卡| 一本久道久久综合狠狠爱| 一本色道久久88精品综合| 午夜免费视频网站| 国产日韩电影| 一区二区视频在线| 三区精品视频| 欧洲精品久久一区二区| 可以看av的网站久久看| 美日韩在线视频| 蜜桃av免费看| 日韩视频一二区| 欧美午夜一区二区三区免费大片| 国产性生活免费视频| 韩国免费在线视频| 成人午夜视频福利| 国产啪精品视频网站| 亚洲午夜18毛片在线看| 欧美成人亚洲| 最近的2019中文字幕免费一页| 野战少妇38p| 伊人亚洲精品| 欧日韩精品视频| 欧美亚洲日本一区二区三区| 黄色国产网站在线播放| 国产欧美精品区一区二区三区| 国产精品乱码| 超碰人人人人人人| 久久精品理论片| 国产成人一区二区三区电影| 日本午夜小视频| 欧美激情1区| 久久精品中文字幕免费mv| 91视频免费观看网站| 牛牛精品成人免费视频| 日韩精品一区二区三区在线播放 | 日韩一区二区精品葵司在线 | 日韩免费视频网站| 欧美黄色免费| 九九热这里只有在线精品视| 三级黄色在线观看| 99久久九九| 色妞久久福利网| 一本一本久久a久久| 欧美限制电影| 日韩在线视频观看正片免费网站| 亚洲黄色免费视频| 国产成人一区| 永久免费毛片在线播放不卡| 97人妻精品一区二区免费| 伊人成综合网伊人222| 日韩电影中文字幕一区| 国产黄色三级网站| 欧美天堂社区| 亚洲精品一区在线观看香蕉| 亚洲自拍偷拍一区二区| 国产一区二区三区四区| 一区二区国产精品视频| 午夜激情福利电影| 欧美一区二区三区久久精品| 欧美黄色片视频| 久久久久久久99| 毛片一区二区| 国产日韩视频在线观看| 国产丝袜视频在线观看| 丁香啪啪综合成人亚洲小说| 国产精品一区二区a| 婷婷五月综合久久中文字幕| 91原创在线视频| 日韩欧美一区二区在线观看| 免费在线观看av| 亚洲精品国产成人久久av盗摄 | 久久精品噜噜噜成人av农村| 亚洲一区二区三区sesese| 成人精品在线播放| 91看片淫黄大片一级在线观看| 日韩精品一区二区三区外面| 黄网站在线免费看| 亚洲18女电影在线观看| 热久久精品免费视频| 伊人久久大香伊蕉在人线观看热v| 日韩三级视频在线观看| 久久无码人妻精品一区二区三区| 全球成人免费直播| 欧美交受高潮1| 在线观看 亚洲| 国产在线精品一区二区三区不卡| 国产富婆一区二区三区 | 97国产成人无码精品久久久| a√中文在线观看| 欧美性xxxx在线播放| the porn av| 波多野结衣一区二区三区免费视频| 日韩国产高清视频在线| 91视频免费看片| 伊人久久大香线蕉综合热线 | 亚洲老司机av| 欧美在线视频第一页| 久久一二三区| 99精品国产一区二区| 国产美女视频一区二区三区| 玉米视频成人免费看| 欧美日韩在线免费播放| 伊人久久大香线蕉av超碰| 中文字幕在线看视频国产欧美在线看完整 | 色视频在线观看免费| 亚洲视频一区二区在线观看| 漂亮人妻被中出中文字幕| 国产精品久久免费视频| 国产一区二区三区久久精品| 国产一级视频在线观看| 久久成人久久鬼色| 欧美日韩国产精品一卡| 肉体视频在线| 欧美午夜精品久久久久久超碰 | 久久免费少妇高潮久久精品99| 99久久久无码国产精品免费蜜柚 | 欧美日韩国产色站一区二区三区| 大尺度做爰床戏呻吟舒畅| 99久久精品费精品国产| 国产精品电影观看| 亚洲色大成网站www| 亚洲激情五月婷婷| 亚洲18在线看污www麻豆| 亚洲制服一区| 81精品国产乱码久久久久久| 成人毛片视频免费看| 一区二区三区久久| 精品国产鲁一鲁一区二区三区| 日韩av专区| 国产成人一区二| 成人免费视频| 在线亚洲人成电影网站色www| 天天插天天射天天干| 极品少妇一区二区三区| 99国产在线| 综合久久2o19| 日韩欧美一级二级三级| 欧美一级特黄高清视频| 久久69国产一区二区蜜臀| 日韩国产高清一区| 午夜av成人| 伊人伊成久久人综合网站| 无码人妻一区二区三区免费| 久久久久久97三级| 成年人免费在线播放| 中文字幕精品影院| 国产成人高清激情视频在线观看 | 久久久久久久久亚洲| 嫩草影院一区二区| 午夜天堂影视香蕉久久| 在线免费观看污视频| 一本久道久久综合狠狠爱| 久久久婷婷一区二区三区不卡| sis001欧美| 中文字幕精品一区二区精品| 中文字幕自拍偷拍| 亚洲视频在线一区| 亚洲欧洲国产视频| 国产精品日韩| 亚洲国产精品一区在线观看不卡 | 国产精品毛片一区视频| jizz一区二区三区| 亚洲片国产一区一级在线观看| 波多野结衣在线电影| 国产精品传媒视频| 久久久国产精品久久久| 99视频一区| 少妇精品久久久久久久久久| 黄色精品视频网站| 欧美日韩高清在线观看| 无码精品在线观看| 欧美视频一区二区三区在线观看| www.99re6| 丁香六月综合激情| 四季av一区二区| 艳女tv在线观看国产一区| 国产精品一区二区av| 日韩成人亚洲| 欧美激情视频在线观看| 日本啊v在线| 91麻豆精品国产无毒不卡在线观看| 久久久精品人妻一区二区三区四 | 黄色小说综合网站| 每日在线观看av| 欧美色图在线播放| 成人欧美一区二区| 91天天综合| 性色av一区二区三区红粉影视| 蜜桃视频在线免费| 欧美一区二区三区男人的天堂| 日韩av综合在线| 国产精品麻豆视频| 人妻丰满熟妇av无码久久洗澡| 蜜桃视频一区二区三区在线观看| 韩国无码av片在线观看网站| 精品日本12videosex| 电影午夜精品一区二区三区 | 国产乱码精品| 秋霞在线一区二区| 国产中文精品久高清在线不| 97伦理在线四区| 成人全视频免费观看在线看| 国外成人免费在线播放| 国产调教视频在线观看| 亚洲全黄一级网站| 欧美性猛交 xxxx| 欧美另类一区二区三区| 日本中文字幕在线| 亚洲成人一区在线| 中国毛片直接看| 国产欧美视频在线观看| 国产肉体xxxx裸体784大胆| 国产一区二区在线电影| 另类小说第一页| 麻豆精品网站| 无码人妻丰满熟妇区96| 激情亚洲网站| 青草视频在线观看视频| 欧美xxxx中国| 午夜久久资源| 视频一区欧美| 你懂的视频在线一区二区| 91精品导航| 97视频中文字幕| 91麻豆精品一二三区在线| 国产精品视频色| 台湾佬中文娱乐久久久| 91精品国产电影| 国产福利电影在线播放| 国模视频一区二区| 成人影音在线| 久久久久久香蕉网| 蜜臀av在线| 欧美日韩xxxxx| 性国产高清在线观看| 欧美精品免费在线| www在线免费观看视频| 日韩网站在线观看| 黄色网在线免费看| 久久午夜a级毛片| 国产老头老太做爰视频| 69亚洲精品久久久蜜桃小说| 免费在线黄色网址| 成人性生交大片免费看96| 毛片av一区二区| 一本一本久久a久久精品综合麻豆| 久久99热这里只有精品国产 | 日韩欧美成人一区二区三区| 免费在线黄色电影| 高清国产一区二区三区四区五区| 亚洲欧美精品一区二区| 日韩一二三四| 亚洲欧美日韩一区二区在线| 可以直接在线观看的av| 一区二区三区久久精品| 欧洲美女少妇精品| 九九久久综合网站| 岛国片av在线| 欧美在线性爱视频 | 欧美性猛交xxxx乱大交91| 精品亚洲国产成人av制服丝袜 | 国产白丝袜美女久久久久| 午夜亚洲视频| 91在线视频观看免费| 国产主播一区二区| jjzzjjzz欧美69巨大| 久久午夜电影网| 三级黄色片在线观看| 亚洲最色的网站| 色老头在线视频| 欧美一区二区精品| 天堂在线观看视频| 中文字幕av一区中文字幕天堂| 久操视频在线免费播放| 国内精品视频一区| 精品视频在线一区二区在线| 亚洲综合最新在线| 精品一区在线| 中文字幕一区二区三区四区五区六区 | 国产成人在线网站| 我和岳m愉情xxxⅹ视频| 综合激情成人伊人| 四虎成人永久免费视频| 欧美三级电影在线看| 精品国产av一区二区三区| 日韩禁在线播放| 日本在线观看视频| 久久久视频精品| a∨色狠狠一区二区三区| 亚洲iv一区二区三区| 小说区图片区色综合区| 伊人色综合久久天天五月婷| 国产一区二区三区的电影| 天天干天天色天天干| 久久亚洲综合色一区二区三区| 最新一区二区三区| 91久久精品一区二区二区| 亚洲国产精品久久久久爰性色| 亚洲欧美日韩天堂一区二区| 韩国成人免费视频| 国产日韩欧美一二三区| 曰本一区二区三区视频| 精品视频在线观看一区二区| 秋霞电影网一区二区| 中文字幕一区二区三区乱码不卡| 国产精品久久二区二区| av大全在线观看| 精品国产乱码久久久久久免费| 日本天堂在线观看| 国产成人精品久久二区二区| 欧美激情极品| 久久综合久久久久| 国产一区二区在线观看免费| 免费看的黄色录像| 色综合久久中文综合久久97| 欧美一区二不卡视频| 欧美猛交ⅹxxx乱大交视频| 男人亚洲天堂| 日本不卡在线播放| 一区二区三区福利| 亚洲天堂美女视频| 亚洲一二三区在线观看| 国产欧美久久久精品免费| 中文字幕亚洲无线码在线一区| 亚洲男人av| 欧美激情视频一区二区三区| av不卡在线看| 成人性生活免费看| 午夜视黄欧洲亚洲| 蜜桃视频污在线观看| 久久久久在线观看| 高清日韩中文字幕| 国产精品无码人妻一区二区在线 | 超碰97在线播放| 欧美搞黄网站| 国产又粗又猛又爽又黄| 亚洲精品国产视频| 不卡视频免费在线观看| 欧美黑人xxxx| 爱爱精品视频| 国产69精品久久久久久久| 成人成人成人在线视频| 在线观看精品国产| 日韩高清av在线| 国产精品极品美女在线观看| 日韩欧美第二区在线观看| 日本中文字幕一区二区视频 | 欧美成熟视频| 亚洲精品成人无码毛片| 亚洲自拍偷拍综合| 婷婷开心激情网| 国产999在线| 久久性感美女视频| 中国特级黄色片| 欧美日韩亚洲一区二| 国产精品秘入口| 成人性生交大片免费看小说| 欧美一区在线看| 日本xxxx裸体xxxx| 欧美三区免费完整视频在线观看| 一本一道波多野毛片中文在线| 91亚洲精品久久久| 国产一区二区三区四区老人| 亚洲调教欧美在线| 欧洲av一区二区嗯嗯嗯啊| 成人午夜在线影视| 精品国产一区二区三区四区vr | 亚洲午夜私人影院| 三级在线播放| 国产精品最新在线观看| 午夜视频一区| 亚洲av无码一区二区二三区| 欧美日韩中文一区| 男女视频在线| 欧洲精品在线一区| 国产精品综合一区二区| 精品成人av一区二区在线播放| 中日韩美女免费视频网址在线观看| 韩国三级成人在线| 免费黄色福利视频| 亚洲色图欧洲色图| 三级视频网站在线| 91影院在线免费观看视频| 亚洲一区日韩在线| 手机在线免费看毛片| 亚洲欧美日韩中文在线| 麻豆久久一区| 国产福利视频在线播放| 亚洲激情成人在线| 国产一二三在线观看| 成人在线免费网站| 美女视频免费一区| 亚洲精品国产精品乱码| 精品国产美女在线| 蜜桃国内精品久久久久软件9|