免费高清特黄a大片,九一h片在线免费看,a免费国产一级特黄aa大,国产精品国产主播在线观看,成人精品一区久久久久,一级特黄aa大片,俄罗斯无遮挡一级毛片

分享

大模型相關(guān)資料整理

 shawnsun007 2023-02-15 發(fā)布于北京

在這里插入圖片描述

1. 大模型的挑戰(zhàn)

GPT-3 175B模型的參數(shù)如下:
網(wǎng)絡(luò)層(Number of layers): 96
句子長度(Sequence length): 2048
隱藏層大小(Hidden layer size): 12288
詞匯表(Vocabulary size):51200
總參數(shù)量:約175B

1.1 對顯存的挑戰(zhàn)

175B的模型,一個原生沒有經(jīng)過優(yōu)化的框架執(zhí)行,各部分大概需要的顯存空間:
模型參數(shù):700 GB (175B * 4bytes)
參數(shù)對應(yīng)的梯度:700 GB
優(yōu)化器狀態(tài):1400 GB
所以,一個175B模型共需要大概2.8 TB的顯存空間,這對 GPU 顯存是巨大的挑戰(zhàn):
1)模型在單卡、單機上存放不下。以NVIDIA A10080GB為例,存放此模型需要超過35塊。
2) 必須使用模型并行,并且需要跨機器。主流的A100 服務(wù)器是單機八卡,需要在多臺機器之間做模型切分。

1.2 對計算的挑戰(zhàn)

基于Transformer 架構(gòu)的模型計算量主要來自于Transformer層和 logit 層里的矩陣乘,可以得出每個迭代步大致需要的計算量:
B: 批大小,S:句子長度,l:Transformer 層數(shù),h:隱藏層大小,V:詞匯表大小在這里插入圖片描述
這是真實計算量的一個下限,但已是非常接近真實的計算量。關(guān)于此公式的詳細(xì)說明,請參考 NVIDIA Paper(https:///abs/2104.04473)里的附錄章節(jié)。
其中S=2048, l=96, h=12288, V=51200,在我們的實踐中,B = 1536,一共需要迭代大約95000次。代入這次參數(shù)到上述公式,可以得到:
一次迭代的計算量:4.5 ExaFLOPS.
完整訓(xùn)練的計算量:430 ZettaFLOPS (~95K 次迭代)
這是一個巨大的計算量,以最新的NVIDIA A100的FP16計算能力 312 TFLOPS來計算,即使不考慮計算效率和擴展性的情況,需要大概16K A100*days的計算量。直觀可以理解為16000塊A100一天的計算量,或者一塊A100 跑43.8年的計算量。

1.3 對通信的挑戰(zhàn)

訓(xùn)練過程中GPU之間需要頻繁的通信,這些通信源于模型并行和數(shù)據(jù)并行的應(yīng)用,而不同的并行劃分策略產(chǎn)生的通信模式和通信量不盡相同。
對于數(shù)據(jù)并行來說,通信發(fā)生在后向傳播,用于梯度通信,通信類型為AllReduce,每次后向傳播中的通信量為每個GPU上的模型大小。
對于模型并行來說,稍微復(fù)雜些。模型并行通常有橫切和豎切兩種,比如把一個模型按網(wǎng)絡(luò)層從左到右橫著擺放,橫切即把每個網(wǎng)絡(luò)層切成多份(Intra-layer),每個GPU上計算網(wǎng)絡(luò)層的不同切塊,也稱為Tensor(張量)模型并行。豎切即把不同的網(wǎng)絡(luò)層切開(Inter-layer),每個GPU上計算不同的網(wǎng)絡(luò)層,也稱為Pipeline (流水線)模型并行。
在這里插入圖片描述
模型并行切分:上圖為Pipeline模型并行切分,下圖為Tensor模型并行切分
對于Tensor模型并行,通信發(fā)生在每層的前向和后向傳播,通信類型為AllReduce,通信頻繁且通信量比較大。
對于Pipeline 模型并行,通信發(fā)生在相鄰的切分點,通信類型主要為P2P,每次通信數(shù)據(jù)量比較少但比較頻繁,而且會引入額外的GPU 空閑等待時間。

2 目前的一些解決方式

參考資料:全網(wǎng)最全-超大模型+分布式訓(xùn)練架構(gòu)和經(jīng)典論文
訓(xùn)練千億參數(shù)大模型,離不開四種GPU并行策略

  1. 分布式并行加速:
    并行訓(xùn)練主要分為數(shù)據(jù)并行、模型并行、流水線并行、張量并行四種并行方式,通過上述四種主要的分布式并行策略來作為大模型訓(xùn)練并行的主要策略。
  2. 算法模型架構(gòu):
    大模型訓(xùn)練離不開Transformer網(wǎng)絡(luò)模型結(jié)構(gòu)的提出,后來到了萬億級稀疏場景中經(jīng)常遇到專家混合模型MoE都是大模型離不開的新算法模型結(jié)構(gòu)。
  3. 內(nèi)存和計算優(yōu)化:
    關(guān)于內(nèi)存優(yōu)化技術(shù)主要由激活A(yù)ctivation重計算、內(nèi)存高效的優(yōu)化器、模型壓縮,而計算優(yōu)化則集中體現(xiàn)在混合精度訓(xùn)練、算子融合、梯度累加等技術(shù)上。

Horovod、Tensorflow Estimator、PyTorch DDP等支持?jǐn)?shù)據(jù)并行,
Gpipe、PipeDream、PipeMare等支持流水并行,
Mesh Tensorflow、FlexFlow、OneFlow、MindSpore等支持算子拆分

總訓(xùn)練速度 ∝ 單卡速度 * 加速芯片數(shù)量 * 多卡加速比

  1. 單卡速度
    單卡速度既然是運算速度和數(shù)據(jù)IO的快慢來決定,那么就需要對單卡訓(xùn)練進行優(yōu)化,于是主要的技術(shù)手段有精度訓(xùn)練、算子融合、梯度累加來加快單卡的訓(xùn)練性能。
  2. 加速芯片數(shù)量
    理論上,AI芯片數(shù)量越多,模型訓(xùn)練越快。但是,隨著訓(xùn)練數(shù)據(jù)集規(guī)模的進一步增長,加速比的增長并不明顯。如數(shù)據(jù)并行就會出現(xiàn)局限性,當(dāng)訓(xùn)練資源擴大到一定規(guī)模時,由于通信瓶頸的存在,增加計算資源的邊際效應(yīng)并明顯,甚至增加資源也沒辦法進行加速。這時候需要通訊拓?fù)溥M行優(yōu)化,例如通過ring-all-reduce的通訊方式來優(yōu)化訓(xùn)練模式。
  3. 多卡加速比
    多卡加速比既然由計算、通訊效率決定,那么就需要結(jié)合算法和集群中的網(wǎng)絡(luò)拓?fù)湟黄饍?yōu)化,于是有了數(shù)據(jù)并行DP、模型并行MP、流水線并行PP相互結(jié)合的多維度混合并行策略,來增加多卡訓(xùn)練的效率。

目前最流行的模式有兩種:

  1. 參數(shù)服務(wù)器模式(Parameter Server,PS)
  2. 集合通訊模式(Collective Communication,CC)

其中參數(shù)服務(wù)器主要是有一個或者多個中心節(jié)點,這些節(jié)點稱為PS節(jié)點,用于聚合參數(shù)和管理模型參數(shù)。而集合通信則沒有管理模型參數(shù)的中心節(jié)點,每個節(jié)點都是 Worker,每個Worker負(fù)責(zé)模型訓(xùn)練的同時,還需要掌握當(dāng)前最新的全局梯度信息。

參數(shù)服務(wù)器架構(gòu)Parameter Server,
PS架構(gòu)包括兩個部分,首先是把計算資源分為兩個部分,參數(shù)服務(wù)器節(jié)點和工作節(jié)點:
1)參數(shù)服務(wù)器節(jié)點用來存儲參數(shù);
2)工作節(jié)點部分用來做算法的訓(xùn)練。
第二個部分就是把機器學(xué)習(xí)算法也分成兩個方面,即1)參數(shù)和2)訓(xùn)練。
如圖所示,PS架構(gòu)將計算節(jié)點分為server與worker,其中,worker用于執(zhí)行網(wǎng)絡(luò)模型的前向與反向計算。而server則對各個worker發(fā)回的梯度進行合并并更新模型參數(shù),對深度學(xué)習(xí)模型參數(shù)中心化管理的方式,非常易于存儲超大規(guī)模模型參數(shù)。
在這里插入圖片描述
但是隨著模型網(wǎng)絡(luò)越來越復(fù)雜,對算力要求越來越高,在數(shù)據(jù)量不變的情況下,單個GPU的計算時間是有差異的,并且網(wǎng)絡(luò)帶寬之間并不平衡,會存在部分GPU計算得比較快,部分GPU計算得比較慢。這個時候如果使用異步更新網(wǎng)絡(luò)模型的參數(shù),會導(dǎo)致優(yōu)化器相關(guān)的參數(shù)更新出現(xiàn)錯亂。而使用同步更新則會出現(xiàn)阻塞等待網(wǎng)絡(luò)參數(shù)同步的問題。
GPU 強大的算力毋庸置疑可以提升集群的計算性能,但隨之而來的是,不僅模型規(guī)模會受到機器顯存和內(nèi)存的制約,而且通信帶寬也會由于集群網(wǎng)卡數(shù)量降低而成為瓶頸。
這個時候百度基于PS架構(gòu)之上提出了Ring-All-Reduce新的通訊架構(gòu)方式。
在這里插入圖片描述
如圖所示,通過異步流水線執(zhí)行機制,隱蔽了 IO 帶來的額外性能開銷,在保證訓(xùn)練速度的同時,使訓(xùn)練的模型大小不再受制于顯存和內(nèi)存,極大提升模型的規(guī)模。而 RPC&NCCL 混合通信策略可以將部分稀疏參數(shù)采用 RPC 協(xié)議跨節(jié)點通信,其余參數(shù)采用卡間 NCCL 方式完成通信,充分利用帶寬資源。

集合通訊模式(Collective Communication,CC),
在這里插入圖片描述

2.1 NVIDIA Megatron

優(yōu)化的分布式框架NVIDIA Megatron和優(yōu)化的分布式集群架構(gòu)NVIDIA DGX SuperPOD
NVIDIA Megatron 是一個基于 PyTorch 的框架,用于訓(xùn)練基于 Transformer 架構(gòu)的巨型語言模型
資料鏈接:
NVIDIA Megatron:超大Transformer語言模型的分布式訓(xùn)練框架 (一)
NVIDIA Megatron:超大Transformer語言模型的分布式訓(xùn)練框架 (二)
Megatron repro: https://github.com/nvidia/megatron-lm
GPT3-175B training scripts: https://link.zhihu.com/?target=https%3A//github.com/NVIDIA/Megatron-LM/blob/main/examples/pretrain_gpt3_175B.sh

2.2 DeepSpeed

Pytorch的分布式并行計算框架(Distributed Data Parallel,簡稱DDP),它也僅僅是能將數(shù)據(jù)并行,放到各個GPU的模型上進行訓(xùn)練。

DeepSpeed,它就能實現(xiàn)這個拆散功能,它通過將模型參數(shù)拆散分布到各個GPU上,以實現(xiàn)大型模型的計算,彌補了DDP的缺點,非常方便,這也就意味著我們能用更少的GPU訓(xùn)練更大的模型,而且不受限于顯存。
介紹:大規(guī)模深度學(xué)習(xí)框架 DeepSpeed 使用指南

DeepSpeed 是一個深度學(xué)習(xí)優(yōu)化庫,它使分布式訓(xùn)練變得容易、高效和有效。
DeepSpeed為所有人提供了極端規(guī)模的模型訓(xùn)練,從在大型超級計算機上進行訓(xùn)練到在低端群集甚至在單個GPU上進行訓(xùn)練的人員:

極端規(guī)模:將當(dāng)前的GPU群集與數(shù)百種設(shè)備結(jié)合使用,實現(xiàn)3D并行 DeepSpeed 可以有效地訓(xùn)練具有數(shù)萬億參數(shù)的深度學(xué)習(xí)模型。
極高的內(nèi)存效率:DeepSpeed 的ZeRO-Offload 僅需一個 GPU,即可訓(xùn)練超過10B參數(shù)的模型,比現(xiàn)有技術(shù)大10倍,使數(shù)十億參數(shù)的模型訓(xùn)練民主化,從而使許多深度學(xué)習(xí)科學(xué)家可以探索更大更好的模型。

pip install deepspeed
Github 鏈接 https://github.com/microsoft/DeepSpeed
在這里插入圖片描述

2.3 Elephas

Elephas 是 Keras 的擴展,它可以使用 Spark 大規(guī)模運行分布式深度學(xué)習(xí)模型。 Elephas 保持了 Keras 的簡單性和高可用性,從而允許對分布式模型進行快速原型制作,該模型可以在海量數(shù)據(jù)集上運行。 Elephas 當(dāng)前支持許多應(yīng)用程序,包括:深度學(xué)習(xí)模型的數(shù)據(jù)并行訓(xùn)練分布式超參數(shù)優(yōu)化集成模型的分布式訓(xùn)練。

安裝 pip install elephas
Github 鏈接https://github.com/maxpumperla/elephas

2.4 FairScale

FairScale 是 PyTorch 擴展庫,用于在一臺或多臺機器/節(jié)點上進行高性能和大規(guī)模培訓(xùn)。該庫擴展了基本的PyTorch功能,同時添加了新的實驗功能。
FairScale支持:

并行、分片訓(xùn)練、大規(guī)模優(yōu)化、GPU內(nèi)存優(yōu)化、GPU速度優(yōu)化

安裝pip install fairscale
Github 鏈接https://github.com/facebookresearch/fairscale

2.5 TensorFlowOnSpark

通過將TensorFlow深度學(xué)習(xí)框架中的突出功能與Apache Spark和Apache Hadoop相結(jié)合,TensorFlowOnSpark可以在GPU和CPU服務(wù)器集群上實現(xiàn)分布式深度學(xué)習(xí)。

它支持在Spark集群上進行分布式TensorFlow訓(xùn)練和推理,其目標(biāo)是最大程度地減少在共享網(wǎng)格上運行現(xiàn)有TensorFlow程序所需的代碼更改量。

TensorFlowOnSpark由Yahoo開發(fā),用于在Yahoo私有云中的Hadoop集群上進行大規(guī)模分布式深度學(xué)習(xí)。

安裝【 for tensorflow>=2.0.0】 pip install tensorflowonspark
【 for tensorflow<2.0.0】 pip install tensorflowonspark==1.4.4
Github 鏈接 https://github.com/yahoo/TensorFlowOnSpark

2.6 Horovod

Horovod 是一個針對TensorFlow,Keras,PyTorch和Apache MXNet的分布式深度學(xué)習(xí)訓(xùn)練框架。
參考資料:分布式訓(xùn)練框架Horovod(一):基本概念和核心賣點
深度學(xué)習(xí)分布式訓(xùn)練框架 horovod – 彈性訓(xùn)練總體架構(gòu)

2.7 veGiantModel

火山引擎:基于 Megatron和DeepSpeed
github:https://github.com/volcengine/veGiantModel

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多