モデル並列とは、単一のGPUなどのハードウェアメモリに収まらない巨大なAIモデルを複数のプロセッサに分割して配置し、協調して学習や推論を行う分散処理手法です。大規模言語モデルなどの巨大化に伴い、メモリ不足を解消して計算を実行するために不可欠な技術となっています。データ並列と組み合わせて活用されます。
モデル並列とは
モデル並列とは、単一の計算資源のメモリに収まりきらない巨大な人工知能モデルのパラメータを複数のGPUなどのデバイスに分割して配置し、並列に計算を行う分散処理技術です。
詳しく解説
近年のディープラーニングにおける大規模言語モデルの急速な発展に伴い、モデルのパラメータ数は数千億規模へと増大しました。このため、単一のGPUメモリだけではモデル全体を保持することが困難になりました。モデル並列は、この問題を解決するためにモデルの各レイヤーや計算テンソルを分割して別々のプロセッサに割り当てます。主な手法には、層ごとに分割するパイプライン並列や、行列計算自体を分割するテンソル並列があります。これにより、ハードウェアのメモリ制約を超えた巨大なモデルの学習や推論が可能となります。
具体例・使われ方
例えば、数百億個のパラメータを持つ大規模言語モデルを訓練する場合、1台のGPUではメモリが不足して処理を実行できません。モデル並列を導入することで、モデルの前半層を1台目のGPUに、後半層を2台目のGPUに配置するような分割が可能になり、巨大モデルの実行が実現します。
似た用語との違い
データ並列との違いが代表的です。データ並列では同じモデルの複製を全GPUに配置し、入力データを分割して処理します。一方、モデル並列はモデルそのものを分割して配置するため、モデル自体が単一GPUのメモリを超える場合に用いられます。実用上は、データ並列とモデル並列を組み合わせたハイブリッド並列も広く利用されています。
注意点
モデル並列では、プロセッサ間でのデータ通信が発生するため、通信速度が全体の処理ボトルネックになりやすい点に注意が必要です。通信オーバーヘッドを最小化するためのネットワーク構成や、テンソル並列やパイプライン並列などの最適な分割アルゴリズムの選定が不可欠となります。