【大規模言語モデル入門Ⅱ】14章 14.2.3~14.2.5

>100 Views

January 16, 25

スライド概要

profile-image

AI・機械学習を勉強したい学生たちが集まる、京都大学の自主ゼミサークルです。私たちのサークルに興味のある方はX(Twitter)をご覧ください!

シェア

またはPlayer版

埋め込む »CMSなどでJSが使えない場合

関連スライド

各ページのテキスト
1.

2024年度後期輪読会 第13回 大規模言語モデル入門Ⅱ LLM 14.2.3~14.2.5 京都大学 工学部 情報学科 数理工学コース B2 稲葉陽孔 1

2.

アジェンダ ■ パイプライン並列 ■ テンソル並列 ■ 3次元並列化 2

3.

アジェンダ ■ パイプライン並列 ■ テンソル並列 ■ 3次元並列化 3

4.

パイプライン並列 ■ パイプライン並列学習 モデルを層(Transformer等)のかたまり単位(パイプラインステージ)で分割し、 複数のGPUを用いて学習を行う手法 ミニバッチをGPUに搭載した層のかたまりごとに分割したもの(マイクロバッチ)を用い、段階 的に処理する ■ 仕組み 1つのパイプラインステージで前向き計算をする →その結果を次のパイプラインステージを格納 したGPUに通信させるを繰り返す 逆伝播でも同様に行う F:順伝播 B:逆伝播 4

5.

パイプライン並列 ■ 利点 ・大規模なモデルを分割し、学習できるようにする。 ・GPU間で逆伝播や順伝播の途中結果を集団通信で学習しなくても良く、通信の負荷が少ない (※この時、1対1通信(peer to peer通信)で学習する) ■ 欠点 ・GPUが計算に使用されない時間(パイプラインバブル)が存在するので計算効率が悪い →この問題を解決するために様々なパイプライン並列学習の手法が登場した 5

6.

パイプライン並列 ■ 効率的なパイプライン並列学習 ・学習の順番を工夫することによってパイプラインバブル等を削減できる ・各GPUに格納したモデルの層の処理時間が異なると処理効率が落ちる ■ GPipe ・全ての前向き計算が終了した後、誤差逆伝播が始まる ・従来のモデルをデータ1つごとに パイプライン並列学習するのに比べ、 パイプラインバブルが小さく、 学習効率が高い Fi,j:Device(GPU) iに格納したj個目のマイクロバッチ(順伝播) Bi,j:Device iに格納したj個目のマイクロバッチ(逆伝播) 6

7.

パイプライン並列 ■ 1F1B ・1回の順伝播が終わった後すぐ、逆伝播計算が行われる ・GPipeと違い、前向き計算が終了するまで活性化値を保存する必要がない 四角に囲まれている数:マイクロバッチの番号 7

8.

パイプライン並列 ■ interleaved 1F1B ・各Device(GPU)に割り当てられた層をDevice中で分割して学習する ex. 順伝播に着目すると(Device 1→Device 2→Device 3→Device 4)×2の順番で計算されている ・1F1Bと比べてパイプラインバブルを削減できているが、Device間での通信回数が増加している 四角に囲まれている数:マイクロバッチの番号 Forward内・Backward内の色の違い:GPUがその時に計算する層の違い 8

9.

アジェンダ ■ パイプライン並列 ■ テンソル並列 ■ 3次元並列化 9

10.

テンソル並列学習 ■ テンソル並列学習 ・モデルの各層を複数のGPU間で分割する分散並列学習 ・大規模なモデルに対して学習を可能にする 列ごとの分割も、行ごとの分割も可 10

11.

テンソル並列学習 ■ Transformerにおけるテンソル並列学習 ・self-AttentionとMLP層においてテンソル並列学習を行う Z=Dropout(Y B)において、Yi(Y1,Y2,,,)からZi(Z1,Z2,,,)を計算し、 Z=Dropout(Z1+Z2+,,,,)を導出するため、 多対多の通信が必要 →All Reduceによる同期が必要 11

12.

アジェンダ ■ パイプライン並列 ■ テンソル並列 ■ 3次元並列化 12

13.

3次元並列化 ■ 3次元並列化 ・データ並列・パイプライン並列・テンソル並列を組み合わせた、効率的な学習方法 ・GPU数は(データ並列次元数)×(テンソル並列次元数)×(パイプライン並列次元数) Megatron-DeepSpeedやMegatron-LMによって学習を行う 13

14.

3次元並列化 ■ Megatorn-DeepSpeedやMegatron-LMの利点 ・効率的なメモリ消費 ZeROを用いることでメモリ使用量・通信効率を上げた ・並列化手法に応じたプロセスグループの配置 ノード(計算機)において、通信速度は内部通信>外部通信なので、 多くの通信を必要とする並列化手法(テンソル配列など)をノード内で通信が収まるようにし、 必要な通信が少ない並列化手法(パイプライン並列など)をノード間でまたがるようにする。 この時、データ並列はノード内に配置可能な分だけ配置し、 残りはノード間に配置されるようにする 14