您的位置:首頁 >城市 >

什么是大模型? 世界今熱點

2023-06-24 10:41:07 來源:博客園

閱讀本文之前,建議先閱讀上一篇:什么是神經網絡?

本文由gpt4輔助撰寫(gptschools.cn)

什么是大模型?

模型是指具有大量參數的深度學習或機器學習模型,這些參數可以通過訓練過程自動調整以捕獲輸入數據中的復雜關系。這類模型通常具有較深的網絡結構和較多的神經元,以增加模型的表示能力和學習能力。大模型在諸如自然語言處理、計算機視覺和語音識別等領域取得了顯著的成果。


【資料圖】

大模型使用了許多高級技術,主要包括以下幾個方面:

  1. 深度神經網絡(Deep Neural Networks,DNNs):大模型通常采用深度神經網絡,擁有多個隱藏層,以捕捉輸入數據中的高階特征和抽象概念。
  2. 卷積神經網絡(Convolutional Neural Networks,CNNs):在計算機視覺任務中,大模型通常采用卷積神經網絡。通過局部感受野、權值共享和池化操作等設計,CNN可以有效處理圖像數據,提取多尺度的視覺特征。
  3. 循環神經網絡(Recurrent Neural Networks,RNNs)和長短時記憶網絡(Long Short-Term Memory,LSTM):在序列數據處理任務(如自然語言處理和語音識別)中,大模型可能采用循環神經網絡或其變體(如長短時記憶網絡)來捕捉時序關系。
  4. Transformer 架構:Transformer 是一種自注意力機制(Self-Attention Mechanism)的神經網絡架構,廣泛應用于自然語言處理領域的大模型中。Transformer 可以并行處理輸入序列中的所有元素,大幅提高了模型的訓練效率。
  5. 預訓練與微調(Pretraining and Fine-tuning):為了充分利用大量參數,大模型通常先在大規模數據集上進行預訓練,學到通用的特征表示。然后,在特定任務的數據集上進行微調,以適應特定應用場景。
  6. 分布式訓練(Distributed Training)和混合精度訓練(Mixed Precision Training):為了處理大模型的計算和存儲需求,研究者采用了一些高效訓練策略,如分布式訓練(將模型和數據分布在多個設備或節點上進行并行計算)和混合精度訓練(利用不同精度的數值表示以減少計算和內存資源需求)。

這些技術和策略共同支持了大模型的開發和應用,使其在各種復雜任務中取得了出色的性能。然而,大模型也帶來了訓練成本、計算資源和數據隱私等方面的挑戰。

什么是大模型的參數?

模型參數是指在機器學習和深度學習模型中可學習的權重和偏置等變量。在訓練過程中,通過優化算法(如梯度下降)來調整這些參數,以最小化模型預測值與實際值之間的差距。參數的初始值通常是隨機的,隨著訓練的進行,它們會逐漸收斂到合適的數值,以捕捉輸入數據中的復雜模式與關系。

在大模型中,參數的數量通常非常龐大。舉個例子,OpenAI的GPT-3模型擁有約1750億個參數,使其能夠執行更復雜的任務,如自然語言生成、翻譯、摘要等。大量參數使模型具有更強的表示能力,但同時也帶來了更高的計算成本和內存需求。這也是為什么大模型通常需要特殊的硬件資源(如GPU或TPU)和優化策略(如分布式訓練和混合精度訓練)來進行有效訓練的原因。

以一個簡單的深度學習模型為例:多層感知機(MLP,Multilayer Perceptron)。多層感知機是一種前饋神經網絡,由輸入層、若干隱藏層和輸出層組成。每層都包含若干個神經元,相鄰層之間的神經元通過權重矩陣相互連接。

假設我們的多層感知機有以下結構:

  • 輸入層:2個神經元(對應2個特征)
  • 隱藏層:第一層3個神經元,第二層2個神經元
  • 輸出層:1個神經元

權重矩陣參數如下:

  1. 首先是輸入層到第一隱藏層的權重矩陣,其形狀為(2, 3),共有2 * 3 = 6個權重參數。
  2. 接著是第一隱藏層到第二隱藏層的權重矩陣,其形狀為(3, 2),共有3 * 2 = 6個權重參數。
  3. 最后是第二隱藏層到輸出層的權重矩陣,其形狀為(2, 1),共有2 * 1 = 2個權重參數。

偏置參數如下:

  1. 第一隱藏層有3個神經元,因此有3個偏置參數。
  2. 第二隱藏層有2個神經元,因此有2個偏置參數。
  3. 輸出層有1個神經元,因此有1個偏置參數。

將所有權重參數與偏置參數相加,該多層感知機共有6 + 6 + 2 + 3 + 2 + 1 = 20個參數。這是一個相對較小的模型。對于大模型,如GPT-3,參數數量可能達到數百億,這使得它們能夠表達更復雜的函數并執行更高級的任務。

大模型使用哪些并行訓練方法?

大模型采用分布式訓練方法來提高訓練速度和擴展性。大體可以分為兩類:數據并行與模型并行。

數據并行

數據并行(Data Parallelism):在這種方法中,模型分布在多個計算設備(如 GPU 或 TPU)上。每個設備都有模型的一個副本,但訓練數據會被劃分為不同的子集。每個設備使用其所分配的數據子集訓練模型副本,然后通過通信協議(如 AllReduce 操作)同步梯度更新。

模型并行

模型并行(Model Parallelism):在模型并行中,模型被分割成多個部分,每個部分在單獨的計算設備上運行。這種方法適用于無法放入單個設備內存的大型模型。當參數規模為千億時,存儲模型參數就需要數百GB的顯存空間,超出單個GPU卡的顯存容量。顯然,僅靠數據并行無法滿足超大規模模型訓練對于顯存的需求。為了解決這個問題,可以采用模型并行技術。在每個訓練迭代中,設備間需要交換中間計算結果以完成前向和反向傳播過程。模型并行從計算圖的切分角度,可以分為以下幾種:

流水線并行

流水線并行(Pipeline Parallelism):將模型的不同層劃分到多個計算設備上,每個設備負責處理一部分模型層,即層間并行。在前向和反向傳播過程中,設備之間需要傳遞中間計算結果。這種方法的優勢是可以同時處理多個輸入樣本,從而提高計算設備的利用率。

張量并行

張量并行(Tensor Parallelism):將計算圖中的層內的參數切分到不同設備,即層內并行,稱之為張量模型并行。以一般的矩陣乘法為例,假設我們有 C = AB。我們可以將B沿著列分割成 [B0 B1 B2 ... Bn],每個設備持有一列。然后我們將 A 與每個設備上 B 中的每一列相乘,我們將得到 [AB0 AB1 AB2 ... ABn] 。此刻,每個設備仍然持有一部分的結果,例如,設備(rank=0)持有 AB0。為了確保結果的正確性,我們需要收集全部的結果,并沿列維串聯張量。通過這種方式,我們能夠將張量分布在設備上,同時確保計算流程保持正確。張量并行過程如下圖所示:

并行訓練使用的通信原語?

上述并行訓練方法通常使用了以下通信原語:

數據并行-通信原語

  • AllReduce:AllReduce 是一種將所有參與者的數據匯總起來并將結果廣播回所有參與者的通信原語。在數據并行訓練中,AllReduce 用于在計算設備之間同步權重梯度更新。常用的 AllReduce 實現有 NVIDIA NCCL、Intel MPI、OpenMPI 等。
  • AllGather:AllGather 是將每個設備的數據收集在一起,并將結果發送到所有設備。這在某些數據并行任務中可能會用到,例如將不同設備產生的激活值或梯度拼接起來。

模型并行-通信原語

  • Send/Recv 或 Point-to-Point Communication:這種原語用于在模型并行訓練中將中間結果或梯度從一個設備傳遞到另一個設備。例如,在 Transformer 等自注意力機制的模型中,需要在計算設備之間傳遞中間張量。
  • Collective Communication:這些原語(如 AllReduce、AllGather、Broadcast 等)也可能在模型并行中用到,例如在訓練開始時同步模型參數或在訓練過程中對某些梯度進行匯總。
  • Send/Recv 或 Point-to-Point Communication:管道并行訓練中,每個設備負責處理模型的一個部分,因此需要將中間結果(如激活值)傳遞給下一個設備。這通常通過 Send/Recv 或其他點對點通信原語來實現。
  • Barrier:在管道并行中,某些情況下可能需要使用 Barrier 同步操作,以確保設備之間能夠按順序處理數據。這有助于避免死鎖和數據不一致的問題。

AI Advisor 微信公眾號

參考

  • 猛猿:ChatGPT技術解析系列之:GPT1、GPT2與GPT3
  • 常見的分布式并行策略
  • 張量模型并行詳解 | 深度學習分布式訓練專題

關鍵詞: