Upgrade to Pro — share decks privately, control downloads, hide ads and more …

大規模モデル計算の裏に潜む 並列分散処理について

SuperHotDog
November 11, 2024
34

大規模モデル計算の裏に潜む 並列分散処理について

SuperHotDog

November 11, 2024
Tweet

Transcript

  1. 並列分散処理が何故必要なのか: 消費メモリ ・大規模モデルの文脈の話をすると, 最近では10B, 100B, 1Tパラメータークラスのモ デルが出てきている ・それぞれfloat32のパラメーターだとすると40GB, 400GB, 4TBのGPUメモリが必要に

    なる ・最先端のH200でカタログスペックだと141GB程度のVRAMしかない ・実際にはモデルパラメーターだけではなく, 訓練途中の誤差逆伝播法アルゴリズムな どによりモデルパラメーターの定数倍分だけ使用メモリは増える →並列分散は必須 数字が大きすぎて定数倍の増加でも致命的なほどVRAMを使用する
  2. 並列分散処理プログラムの内部: Data Parallel モデルは分割せずDataを分割して1 batch中 の訓練時間を高める並列方法 1. 個々のプロセスがforwardする 2. 個々のモデルのgradientを平均する

    3. 個々のモデルにbackwardを適用する この方法では各計算ノードはモデルを分散し ていないためモデルサイズはスケールしない
  3. 並列分散処理プログラムを書くための武器 ・ハードウェアの用意 NVIDIAの商売根性は逞しく, GPU, OS setup, 環境構築が済み, しかも GPU間通信も高速なNVLinkで接続 されており,

    通信帯域の最適化も済ん でいるDGXを買うのが一番早い カスタマイズしたい人はパーツごとに 買おう(できるのかな)
  4. 並列分散処理プログラムを書くための武器 ・ソフトウェア面 実際は下記のフレームワークの使用で事足りることは多い ・Deepspeed(by Microsoft) ・MegatronLM(by NVIDIA) ・Accelerate(by Hugging Face)

    ただし内部で何が行われているかを理解することは, 速度, RAM使用量, AIだと意 図している学習になっているか は非常に重要, AI時代でもボトルネックを改善して いくことと自分がどういう作業をしているのかを根本で理解していく能力は重要だと 思う
  5. その他: 並列分散処理を深く学びたい人向けの資料 ・MPI「超」入門 ・東大情報基盤センターの資料 ・Parallel and Distributed Programming ・うちのボスの講義 ,

    コードはこちら<-なんでうちのボスは C++/CUDAでDNNを実装できるんだ .... ・並列プログラミング入門: サンプルプログラムで学ぶOpenMPとOpenACC 
 ・スパコンプログラミング入門: 並列処理とMPIの学習 
 ・どっちも本です ・CUDA C++ Programming Guide ・CUDAを書くなら公式ドキュメントは必見 ・NVIDIA社員ブログ と Anthropicのブログ ・プロの並列分散処理と naiveな並列分散処理では 100倍も速度が違う, どうすれば効果的なコードがかけるのかを解説している
  6. Reference 1. Microsoft: ZeRO: Memory Optimizations Toward Training Trillion Parameter

    Models 2. Microsoft: ZeRO-Offload: Democratizing Billion-Scale Model Training 3. NVIDIA: NVIDIA H200 Tensor core GPU 4. 東京大学情報基盤センター: 30分でだいたいわかる並列プログラミング 5. TOP500 List - June 2024 6. OpenAI: Techniques for training large neural networks