>100 Views
January 16, 25
スライド概要
AI・機械学習を勉強したい学生たちが集まる、京都大学の自主ゼミサークルです。私たちのサークルに興味のある方はX(Twitter)をご覧ください!
2024年度後期輪読会 #13(2025/1/16) 大規模言語モデル入門Ⅱ 14.1-14.2.2 京都大学工学部理工化学科 1回生 岡本和優 0
アジェンダ ◼ 14.1 分散並列学習とは ◼ 14.2 さまざまな分散並列学習手法 1
アジェンダ ◼ 14.1 分散並列学習とは ◼ 14.2 さまざまな分散並列学習手法 2
14.1 分散並列学習とは 分散並列学習でメモリと学習時間の問題が解決できる • LLMのパラメータ数は性能に大きな影響を与える→性能が向上するにつれてモデルが大規模化 • 学習を1枚のGPUで行うことが、メモリと学習時間の問題で困難になった • ex. 70億パラメータのモデルをそのまま学習するには、80GBのメモリでも足りない 分散並列学習のメリット • 1枚のGPUでは学習できない大きさのモデルを学習できる • 複数のGPUが大きなデータセットを分担して処理することで、学習時間を短縮できる 3
14.1 分散並列学習とは 分散並列学習の用語と基礎知識 • ホスト:主となるGPU。一般的にはノード0のGPU0 • ポート:通信に用いるホストのポート。JOB_IDの値を設定することが多い • ランク(グローバルランク):ネットワーク上のGPUに与えられる固有のID • ローカルランク:ノード内でのみ利用されるランク番号 • world size:学習に用いるGPUの総数 • 1つのノードで複数のGPUを用いて 学習を行うことをマルチGPU学習、 複数のノードを用いて学習を行うことを マルチノード学習、と呼ぶ • 分散並列学習ではGPU間で通信を行い、 必要が情報を共有している 4
アジェンダ ◼ 14.1 分散並列学習とは ◼ 14.2 さまざまな分散並列学習手法 5
14.2 さまざまな分散並列学習手法 データ並列:データセットを分割して学習を行う データ並列のポイント • データセットを分割しGPUごとに割り当てる • 分割した分だけ学習時間が短縮される • 並列して処理するデータを増やすことは、 バッチサイズを大きくすることに相当。 →収束が遅くなったり、汎化性能が悪化したりする • GPUごとにモデルの複製をもつ • より大きなモデルを扱えるようにはならない • 誤差逆伝播後に勾配の同期をとる • All-Reduceにより勾配を平均化。 これを用いてパラメータを更新する 6
14.2 さまざまな分散並列学習手法 DeepSpeed ZeRO:パラメータ、勾配、最適化器の状態を分割して保持 • Adam最適化器は勾配とモデルのパラメータだけでなく、 勾配の移動平均や勾配を2乗した値の移動平均も保持する →最適化器の状態は大きなメモリ量を要求する • ZeROは最適化器の状態等を分割して保持することにより、メモリ消費量を抑える手法 →単純なデータ並列と異なり、より大きなモデルを扱うためにも有効 アニメーションでDeepSpeed (ZeRO1)の仕組みを完全に理解する 7
14.2 さまざまな分散並列学習手法 ZeROの通信量:ZeRO1、ZeRO2はデータ並列と同じ • ZeROの通信プロセス:担当領域ごとに通信→全体に共有 • All-Reduce = Reduce-Scatter + All-Gather • Reduce-Scatterのように、担当する勾配について平均化を行う。その後パラメータを更新 • All-Gatherで更新したパラメータを全体に共有する • ZeRO1、ZeRO2の通信料は結局 データ並列(All-Reduce)と同じ! • ZeRO3は前向き計算のときに All-Gatherでパラメータを集める分 通信料が増加する 8
参考文献リスト • 大規模モデルを支える分散並列学習のしくみ Part1 • アニメーションでDeepSpeed (ZeRO1)の仕組みを完全に理解する • DeepSpeed:深層学習の訓練と推論を劇的に高速化するフレームワーク 9