<pre id="hj2th"><em id="hj2th"></em></pre>
<big id="hj2th"><nobr id="hj2th"></nobr></big>
<center id="hj2th"><em id="hj2th"></em></center>
    <pre id="hj2th"><nobr id="hj2th"></nobr></pre>

    <code id="hj2th"></code>
  • <object id="hj2th"><nobr id="hj2th"></nobr></object>

    1. <tr id="hj2th"></tr>
      <th id="hj2th"></th>
    2. <code id="hj2th"><small id="hj2th"></small></code>
      <center id="hj2th"></center>
    3. <object id="hj2th"><nobr id="hj2th"></nobr></object>
    4. <code id="hj2th"><nobr id="hj2th"><sub id="hj2th"></sub></nobr></code>
      1. <pre id="hj2th"></pre>
      2. <th id="hj2th"><sup id="hj2th"></sup></th>
        <code id="hj2th"><em id="hj2th"></em></code>

        天堂资源最新版中文资源下载,天堂8在线天堂资源在线,天堂网www在线中文下载,yellow视频

        近年來,隨著數字化時代的到來,云計算、大數據、人工智能等技術的快速發展,集群分布式技術越來越受到人們的關注和重視。在互聯網應用快速擴張的背景下,集群分布式技術具有高適用性、可擴展性...
        未來已來!集群分布式引領下一個時代
        2023-12-05

        未來已來!集群分布式引領下一個時代

        為什么需要分布式訓練?

                大家有沒有想過這樣一個問題:即如何在擁有數百萬到數十億個參數的復雜模型上訓練TB級別的數據?這些模型的規模可能變得非常龐大,甚至在單個處理器的內存中無法容納。因此,采用傳統的方法來訓練這類模型是不切實際的。我們需要尋找其他解決方案來支持這種內存密集型的任務。分布式訓練就是其中之一。接下來,我們將更正式地探討它是什么,以及如何借助它來應對這些挑戰。

                在深度學習領域中,當嘗試解決復雜的問題,涉及圖像、音頻或文本等內容時,通常需要使用復雜架構的模型,以獲得更好的性能。這些模型在訓練過程中可能需要計算 和存儲數百萬甚至數十億的更新權重參數,這可能導致顯存容量不足。此外,單卡的訓練需要經過很長的時間,在此期間可能出現訓練過程中斷的現象。

                然而,將任務分布到多臺機器上時,可以充分利用線性代數運算的并行性質,將大型模型分散到多臺機器上進行訓練。此外,可以引入容錯機制,以確保即使其中一臺機器發生故障,訓練過程也不會完全終止,可以在沒有明顯損失的情況下繼續訓練。


        什么是分布式訓練?


        通常情況下,當面對一個非常龐大的任務時,通常會將其分解為多個子任務以同時進行。這樣做的最大好處是可以節省時間,將一個非常復雜和龐大的任務變得可行。在深度學習中,這種方法被稱為分布式訓練。更準確地說,在分布式訓練中,當工程師需要訓練一個巨大的深度學習模型時,他們將訓練工作負擔分配到多個處理器上,這些處理器通常被稱為工作節點。分布式訓練通常分為兩種,數據并行和模型并行。


        數據并行

        數據并行Data Parallelism(DP

                經典的DP運算是多個設備上拷貝同一份完整的模型副本,把一個大的數據集劃分成與設備相同的數量進行輸入,因此每個設備上輸入的數據是不一樣的,彼此之間可以進行獨立的計算,最后所有設備上的梯度會在一個主設備上進行歸約操作然后實現參數更新。過程如圖所示: 

        Fig. DP process


                主節點(master node):負責的是初始化和保存模型參數,接收工作節點計算出的局部梯度、匯總計算全局梯度,并更新模型參數。
                工作節點(worker node)主要功能是各自保存部分訓練數據,初始化模型,從主節點上獲取最新的參數,并使用訓練,再通過部分數據訓練梯度上傳給主節點。
                主節點匯總計算全局梯度被稱為ALLReduce,它是 DistributedDataParallel 用于計算所有進程梯度求和的原始通信 API。它由多個通信庫支持,包括 NCCL、Gloo 和 MPI。
                不過,由于 AllReduce 對分布式訓練速度有重大影響,通信庫已經實現了更復雜、更高效的算法,如ring-AllReduce。 由于一個 AllReduce 操作要等到所有進程都加入后才能開始,因此它被認為是一種同步通信,而不是參數服務器中使用的 P2P 通信。

                使用All-reduce算法時,所有的工作節點將它們的梯度發送到一個主節點,然后主節點執行規約操作。然而,這種方法主要存在兩個問題:

        • 存儲開銷:每個GPU上都會存一份完整的模型,造成冗余。
        • 通訊開銷:主節點需要與每一個工作節點進行通信(梯度傳輸)。

                

        分布式數據并行(Distributed Data Parallelism )


                由于DP會遇到通信上的瓶頸,DDP就很好地解決了這個問題。為了穩步提高深度神經網絡模型的性能,有必要擴展模型訓練,以便利用更多計算資源來使用更大的訓練數據。Pytorch的DDP模塊可用于在多個 GPU 和機器上執行分布式訓練。
                DPP允許啟動多個進程,并且每個進程占用一個GPU來進行訓練。在訓練開始之前,每個進程都需要加載相同的模型權重,然后在訓練過程中,每個進程加載不同的子訓練集進行前向傳播和反向傳播計算梯度。最后所有進程開始互相通信,目的是為了交換其他進程的梯度,并求平均。DDP采用的是ring-AllReduce通訊方式,每個GPU只與相鄰的兩個GPU相互通信。如下圖所示,GPU 0 只會接收由GPU 4傳來的參數,而它也只會把參數傳遞給GPU 1。最后,當傳遞的輪數等于使用的GPU數量時,所有的參數就都更新完成。

        Fig. Ring-Allreduce


        模型并行(Model Parallelism) 


                我們已經討論了如何在多個設備上使用不同的數據塊來分發數據和訓練模型,通常情況下,這種方法是有效的且易于實現。然而,在一些不太常見的情況下,模型的規模可能對于任何單個節點來說都過于龐大,這時我們需要考慮模型并行性。模型并行主要分為兩種并行模式,一種是層間并行,通常被稱為管道并行(Pipeline Parallelism)

                層內并行也被稱為張量并行(Tensor Parallelism),另一種是層內并行也被稱為張量并行(Tensor Parallelism)。

                層間并行(Pipeline Parallelism)


                層間并行是一種比較常見的模型并行方式,它的是在模型層與層之間進行切分,也被稱為inter-layer parallelism。顧名思義,就是把模型的不同層分別放到多個GPU上。如下圖所示,一個四層的模型如果使用層間并行分別在GPU 0和GPU 1上運行,每個GPU只需要按照先后順序存兩層即可。

        Fig. 層間并行


                Pipeline 并行的優勢在于它將深度學習模型的計算任務分解為多個階段,不同計算設備可以并行執行這些階段,從而提高計算效率。這適用于計算密集型任務,因為它最大程度地利用了硬件資源,加速了計算過程,同時減少了計算時間和資源浪費。

                層內并行(Tensor Parallelism)


                上面介紹了pipeline parallelism,接下來將介紹一下tensor parallelism。Tensor parallelism是一種并行計算策略,旨在加速深度學習模型的訓練。它通過將大型神經網絡的張量參數劃分成多個塊,分配給不同的計算設備,以在多個設備上同時執行計算,從而提高訓練速度和模型的擴展性。通常在模型過于龐大,單個設備無法容納整個模型時,以及為了減少訓練時間而采用tensor并行策略。如下圖所示,模型會被垂直切分成兩份分別放在GPU 0和GPU 1中,然后會通過all-reduce方法來歸納結果。

        Fig. 層內并行

                Tensor 并行的優勢在于它將模型參數分割成多個分塊,每個設備負責處理不同的參數,從而降低內存開銷和通信開銷。這對大型模型和顯存有限的設備非常有利,因為它允許在有限顯存條件下訓練大型模型,并減少了參數傳輸所需的通信帶寬。這提高了模型的可擴展性和訓練效率。這有助于加速深度學習研究和應用的進展,特別是在大規模、計算密集的任務中,如自然語言處理、計算機視覺和強化學習。

        促進信息化建設發展


                綜上所述,在深度學習領域,為了應對龐大模型和TB級別甚至更高的數據的訓練需求,分布式訓練成為一種關鍵解決方案。分布式訓練主要分為數據并行和模型并行。數據并行通過在多個設備上復制完整模型,分配不同數據塊實現并行計算,然后使用AllReduce等通信方式進行梯度求和。另一方面,模型并行包括管道并行和張量并行,它將模型分割成多塊,每塊由不同設備處理,以減少顯存和通信開銷。這些策略提高了訓練效率,特別適用于大規模、計算密集的深度學習任務,如自然語言處理和計算機視覺。這些方法推動了深度學習研究和應用在大規模任務中的進展。在數字化時代的浪潮中,通過深入研究和應用集群分布式技術,我們可以更好地滿足用戶的需求,促進信息化建設的發展。
        國家重點專精特新“小巨人”企業——菲特(天津)檢測技術有限公司成立于2013年,是一家推進人工智能技術在工業領域智能化應用的企業。
        企業專注于光學、人機交互、人工智能等前沿技術研發與創新,迄今已獲得知識產權二百余項,獨創百余個“在線級”落地應用案例,以汽車行業為起點,致力于為化紡、醫藥、鋼鐵等制造行業賦能,可提供包含質量控制,工藝監測,人工智能安全預警,智能分析以及工業垂類大模型等前沿技術,是為工業領域提供智能化解決方案的領軍型研發企業。
        從汽車零部件到整車廠,凡是涉及質量檢測的場景都有菲特的身影,經過十年的實踐先后為奔馳、奧迪、比亞迪、大眾、廣汽本田、紅旗等知名車企提供一體化智能制造解決方案并保持長期合作,為制造企業實現真正的降本增效。2

        相關資訊:
        津ICP備17005157號 津公安備案號12011602000875
        天堂资源最新版中文资源下载,天堂8在线天堂资源在线,天堂网www在线中文下载,yellow视频