AIの学習を加速させろ!分散深層学習の「データ並列」と「モデル並列」を徹底解説

こんにちは。ゆうせいです。

最近話題の画像生成AIや対話AI。その裏側では、何十億、何百億という膨大な数のパラメータを持つ「超巨大AIモデル」が動いています。

「こんなに大きなモデル、一体どうやって学習させているんだろう?」

もし、この学習を一台のコンピュータだけで行おうとしたら、何ヶ月、いえ何年かかるか分かりません。この途方もない計算を可能にしているのが、たくさんのコンピュータの力を結集する「並列分散処理」という技術、特に「分散深層学習」です。

そして、この分散深層学習には、大きく分けて2つの作戦、「データ並列化」と「モデル並列化」が存在します。今回は、この2つの作戦の違いを、スッキリと理解していきましょう!


そもそも分散深層学習とは?

まずは言葉を整理しましょう。これは、その名の通り「深層学習(ディープラーニング)の計算を、複数のコンピュータに分散させて、並列に処理する」ことです。

目的はただ一つ、AIの学習時間を劇的に短縮することです。一台で100日かかる計算も、100台のマシンを使えば理論上は1日で終わります。この力技を実現するための具体的な作戦が、データ並列とモデル並列なのです。

この作戦の違いを、一つの壮大なプロジェクトに例えてみましょう。

プロジェクト: 「全10巻からなる、巨大な専門書(学習データ)を読み解き、一冊の完璧な辞書(AIモデル)を作り上げる」


データ並列化:辞書のコピーを配って、みんなで手分けする作戦

データ並列化は、分散深層学習で最も広く使われている、王道とも言える作戦です。

作戦内容:

まず、作りかけの辞書(AIモデル)を10冊コピーします。そして、10人の専門家(GPUなどの計算機)を雇い、一人一人にコピーした辞書を渡します。

次に、専門書(学習データ)を分担させます。

Aさんには第1巻、Bさんには第2巻、Cさんには第3巻…といった具合です。

専門家たちは、それぞれ自分の担当巻を読みながら、手元の辞書のコピーに新しい知識を書き込んでいきます。そして、一日の作業の終わりに全員で集まり、それぞれが追記した知識を共有しあって、原本である「マスター辞書」を更新するのです。

ポイント:

  • 分割しているのは「データ」(専門書の各巻)
  • 全員が同じ「モデル」(辞書のコピー)を持っている

メリット

実装が比較的簡単で、専門家(マシン)の数を増やせば増やすほど、リニアに作業が速くなります。「学習を速くしたいなら、GPUの数を増やそう!」という、非常に分かりやすいアプローチが可能です。

デメリット

この作戦が成り立つ大前提は、「辞書(AIモデル)が、専門家一人の机に乗るサイズである」ことです。もしAIモデル自体が巨大すぎて、一台のGPUのメモリに収まりきらない場合、この作戦は使えません。


モデル並列化:巨大すぎる辞書を、流れ作業で読み解く作戦

では、AIモデルが巨大すぎて、一台のGPUに収まらない場合はどうするのでしょうか?ここで登場するのが、モデル並列化です。

作戦内容:

今度の辞書(AIモデル)は、それ自体が巨大すぎて、一人の専門家の机には到底乗りません。そこで、辞書そのものを分割することにします。

専門家Aさんの机には「A〜E」の部、Bさんの机には「F〜K」の部、Cさんの机には「L〜P」の部…というように、辞書の一部をそれぞれに担当させます。

そして、専門書(学習データ)から調べたい文章が出てきたら、その文章を専門家たちの間をリレーさせていきます。

まずAさんが「A〜E」の範囲で意味を調べ、その結果を文章に添えてBさんに渡す。次にBさんが「F〜K」の範囲で調べ、Cさんに渡す…。このように、流れ作業(パイプライン)で一つのデータを処理していくのです。

ポイント:

  • 分割しているのは「モデル」(辞書そのもの)
  • 全員で同じ「データ」(一つの文章)をリレー形式で処理する

メリット

データ並列化では扱えなかった、超巨大なAIモデルを学習させることができる唯一の方法です。近年の大規模言語モデルなどは、このモデル並列化の技術なしには存在し得ませんでした。

デメリット

実装が非常に複雑です。また、専門家たちの作業負荷が均等でないと、一人がボトルネックになって、他の専門家が手待ち状態になってしまいます(リソース使用率の低下)。専門家間の連携(通信)が常に発生するため、そのコストも非常に高くなります。


まとめ:どう作戦を使い分ける?

2つの作戦の使い分けは、非常にシンプルです。

特徴データ並列化モデル並列化
アナロジー辞書のコピーと分担作業巨大な辞書の流れ作業
分割対象学習データAIモデル
適用条件モデルが1台のGPUメモリに乗るモデルが1台のGPUメモリに乗らない
実装の容易さ比較的易しい難しい
主な課題全員の進捗を合わせる(同期)専門家間の連携(通信)

基本戦略は、「まずはデータ並列化を検討する。それでダメなら(モデルが大きすぎるなら)モデル並列化を検討する」となります。実際には、この2つを組み合わせたハイブリッドな作戦がとられることも多くあります。

次のステップへ

分散深層学習の世界は、AIの進化を支える非常に重要な領域です。もしさらに興味が湧いたら、以下のキーワードで調べてみてください。

  • Parameter Server:データ並列化において、各専門家からの知識を集約する「マスター辞書」の管理者にあたる仕組みです。
  • Ring-AllReduce:専門家たちが、管理者なしで効率的に知識を共有するための、非常に賢い通信方法です。
  • パイプライン並列化:モデル並列化の流れ作業で、専門家たちが手待ちにならないように工夫された、より高度な作戦です。

PyTorchの DistributedDataParallel やTensorFlowの MirroredStrategy といったフレームワークが、いかにしてデータ並列化を簡単に実現してくれているのか、その裏側を想像してみるのも面白いかもしれませんね。

セイ・コンサルティング・グループの新人エンジニア研修のメニューへのリンク

投稿者プロフィール

山崎講師
山崎講師代表取締役
セイ・コンサルティング・グループ株式会社代表取締役。
岐阜県出身。
2000年創業、2004年会社設立。
IT企業向け人材育成研修歴業界歴20年以上。
すべての無駄を省いた費用対効果の高い「筋肉質」な研修を提供します!
この記事に間違い等ありましたらぜひお知らせください。