RaNNCの基本的なアイデアは、並列処理分野のトップレベルの国際会議IPDPS 2021 (IEEE Interna-tional Parallel and Distributed Processing Sympo-sium) で発表された[9]。また、PyTorchの開発を主導するMeta (旧Facebook)が主催するPyTorch Annual Hackathon 2021(110か国から1,947人が参加、応募65件)でFirst Place(第一位、PyTorch Developer Tools & Libraries部門)を、産経新聞社主催「第35回独創性を拓く 先端技術大賞」において、社会人部門の最優秀賞である経済産業大臣賞を受賞するなど、高い評価を得ている。RaNNCは、代表的な深層学習フレームワークであるPyTorchのために記述されたニューラルネット定義を与えると、自動的にニューラルネットの分割を決定し、モデル並列とデータ並列を併用した並列分散学習を実現する。そのため、既存のものも含め、並列化を意識せずに1台のGPUを想定して書かれたニューラルネット定義のプログラムをそのまま使用できる(図2)。有望なニューラルネットについて、構造はそのままに、隠れ層サイズやレイヤ数等といった学習パラメータに影響する設定のみを変更して性能向上を図ることは多いが、RaNNCを使用していれば、GPU 1台またはデータ並列のみでは動作しない規模まで学習パラメータを増やしても、GPUメモリに収まるように、自動でモデル並列のためにニューラルネットを分割し、学習することが可能である。また先に述べたとおり、広く使用されている既存フレームワークであるMegatron-LMやMesh-TensorFlowは、Transformerと呼ばれる特定のニューラルネットの種類にしか適用できないのに対し、RaNNCは基本的に適用できるニューラルネットの種類に制約がない。例えば、データ駆動知能システム研究センターでは、畳み込みニューラルネットと呼ばれるニューラルネットとBERTを組み合わせたBERTAC [10]を発表しているが、そのようなニューラルネットのパラメータ数を、GPUのメモリに収まらない規模にまで増加させて学習する場合には、Megatron-LM等は利用できず、RaNNCを用いる必要がある。図3は、RaNNCによるニューラルネット分割の例を示している。RaNNCの内部では、ニューラルネッdef BERTModel(…):def forward(…):v1 = self.embed(in)v2 = self.linear(v1)… embedv1matmulmatmulinw1w3ReLUv2v3ReLUmatmulu1transposetransposeu1v4v5v6softmaxoutw2targetlosscross_entropyPyTorchによるニューラルネット定義GPU×4部分ニューラルネット1(コピー数: 4)GPU×2GPU×2部分ニューラルネット2(コピー数: 2)部分ニューラルネット3(コピー数: 2)図3 ニューラルネットの分割例ニューラルネット分割機構計算サーバGPUGPUGPUGPUGPUGPUGPUGPU高速通信GPUGPUGPUGPUGPUGPUGPUGPU高速通信計算サーバ高速通信高速通信(1) 分割方法を決定(2) 部分ニューラルネットのコピー数を決定(3) GPU配置を決定GPUGPUGPUGPUGPUGPUGPUGPUdef BERTModel(…):…v1 = self.embed(in)v2 = self.linear(v1)… ニューラルネット定義のプログラムGPUGPUGPUGPUGPUGPUGPUGPU計算サーバ高速通信大規模計算設備部分ニューラルネットをGPUに配置図4 RaNNCによる自動並列化114 情報通信研究機構研究報告 Vol.68 No.2 (2022)3 社会知コミュニケーション技術
元のページ ../index.html#120