# 学会記事
## 自動並列化深層学習ミドルウェアRaNNC

田仲正弘 ${ }^{\dagger}$ ・田浦健次朗 ${ }^{\dagger \dagger}$ ・塙敏博

## 概要

近年，ニューラルネットワークのパラメータ数や学習データの規模は急速に拡大している.大規模ニューラルネットワークを大量の学習データで学習するには，多数のGPUを用いた並列処理が有効であるが，パラメータが極めて多いニューラルネットワークの場合，一般的な深層学習フレームワークに実装された並列化方式であるデータ並列では，パラメータがGPU のメモリに収まらないという問題がある。本稿では，そうした大規模ニューラルネットワークの学習を目的に著者らが開発した, 自動並列化深層学習ミドルウェア RaNNC (Rapid Neural Network Connector)を紹介する．RaNNC は，ニューラルネットワークを分割して複数のGPU に配置するモデル並列と，データ並列のハイブリッドによる並列化を自動化できる。 既存の類似フレー ムワークと比較すると, ニューラルネットワーク定義のコードで並列化の実装が不要になり,並列化を意識せずに書かれた既存コードでも，隠れ層サイズやレイヤ数などを増加させた際に，必要に応じて自動的に並列化される。また, 著名な既存フレームワークが Transformer 系ネットワークの構造の特徴を利用して並列化しているのに対し, RaNNC の並列化は特定の構造に依存しないため, より幅広い種類のニューラルネットワークに適用可能である.

## 1 大規模ニューラルネットワーク学習の課題

近年の深層学習の研究で, ニューラルネットワークの学習パラメータの増加によって学習性能が向上することが知られている (Kaplan et al. 2020). 実際に, この数年で発表されたニュー ラルネットワークの規模は, 劇的に拡大している。例えば, 2018 年に発表され, 言語処理分野でのブレークスルーとなった BERT-Large (Devlin et al. 2019) は， 3.4 億個のパラメータを持ち,発表当時としては最大規模のニューラルネットワークであった。しかし，そのわずか 2 年後には，BERT-Largeの約 500 倍である 1,750 億ものパラメータを持つ GPT-3 (Brown et al. 2020) が発表されている。またパラメータ数と共に, 学習デー夕も大幅に大規模化している.

深層学習では，高速化のために GPU に代表されるアクセラレータが広く用いられるが，大規

模なニューラルネットワークを, 大量の学習データを用いて学習する場合, 複数の GPU を用いて並列計算を行うのが一般的である。深層学習の並列化方式としては，以下に述べるデータ並列とモデル並列の二つの方式が知られている.

データ並列では，複数ある GPU のそれぞれに，ニューラルネットワークの全体を複製する.入力となるミニバッチは, 事例の単位で分割され, 異なる GPU で並列に処理される. データ並列は，実装が容易で実行効率も高いため, 多くの深層学習フレームワークで実装されている. ただしデータ並列では，ニューラルネットワーク全体を複製するため，極めてパラメータ数が多い場合, 1 枚の GPU に全てのパラメータが収まらず，バッチサイズをできる限り小さくしても，学習が実行できないという問題がある.

一方, モデル並列では, ニューラルネットワークを分割し, 複数の GPUに配置する．各 GPU は，ニューラルネットワークのパラメータの一部分のみを持つため，パラメータの多いニュー ラルネットワークでも学習できる．GPU1 枚にパラメータが収まらない場合には，モデル並列の利用が必須となるが，どのようにニューラルネットワークを分割するかによって，学習の実行効率が大きく異なる。

大規模ニューラルネットワーク学習をモデル並列で実現するフレームワークとして, MegatronLM (Shoeybi et al. 2019) 及び Mesh-TensorFlow (Shazeer et al. 2018) が知られている. しかしいずれのフレームワークでも，通信オーバヘッドを低減し高い実行効率を得るには，ニューラルネットワークや計算機環境の特性を熟知した上で，並列計算用の特殊な演算モジュールを用いてニューラルネットワークの定義を記述する必要があり，利用のハードルが高いという問題がある。またこれらのフレームワークでは, BERT 等の Transformer (Vaswani et al. 2017) 系ネットワークの特徵を利用することで，通信オーバーヘッドを小さくし，効率の良い並列化を実現しているが，一般的には，通信オーバーヘッドによる速度低下が，並列処理による高速化効果を上回ることが多い，そのため，実質的には Transformer 系のネットワークにしか適用できず，実際に動作するコードも，BERT や GPT についてしか提供されていないという問題もある.

## 2 自動並列化深層学習ミドルウェア RaNNC

本稿では，前述のような既存フレームワークの課題を解決し，大規模ニューラルネットワー クの学習を容易に実行するために著者らが開発した自動並列化深層学習ミドルウェア RaNNC (Rapid Neural Network Connector) を紹介する. RaNNC は現在, GitHubで公開されている1. ライセンスは MIT ライセンスとしており，商用目的を含め，無償で利用できる．

RaNNC は, 代表的な深層学習フレームワークである PyTorch (Paszke et al. 2019) のために
^{1}$ https://github.com/nict-wisdom/rannc
}
記述されたニューラルネットワーク定義を与えると, 自動的にニューラルネットワークの分割を決定し，モデル並列とデータ並列を併用した並列分散学習を実現する。そのため，新規に書かれるニューラルネットワーク定義コードだけでなく，既存のものも含め，並列化を意識せずに書かれたニューラルネットワーク定義のコードをそのまま使用できる。隠れ層サイズやレイヤ数等の設定のみを変更し，GPU1 枚またはデー夕並列のみでは動作しない規模まで学習パラメータを増やしても，RaNNC を使用していれば，GPUメモリに収まるように自動で並列化して学習することが可能である.

図 1 に RaNNC の利用例を示す。始めに，学習するニューラルネットワークとパラメータの更新に用いる optimizer を宣言する ( 1,2 行目)。ここまでは，一般的な PyTorch のコードと同じである。次の行で，ニューラルネットワークと optimizer を RaNNC に渡す（3 行目）。RaNNC を使用するために最低限変更が必要なのは，この 1 行だけであり，以降は一般的な PyTorch の使用法と同じである。このように RaNNC は，ニューラルネットワークの定義において並列化のための記述が不要なため, 容易に大規模ニューラルネットワークを学習できる.

図 2 に，RaNNCによるニューラルネットワーク分割の概要を示す. RaNNC は，ニューラルネットワーク定義を計算グラフに変換した後，計算グラフを複数の部分グラフに分割する（図中では，矩形は計算，楕円は値を示している）。また，デー夕並列とモデル並列を組み合わせた八イブリッド並列を行うため，部分グラフのそれぞれについて，データ並列の並列度を設定する。図に示すように，RaNNCでは，部分グラフごとに異なるデー夕並列の並列度を設定できる.

図 1 RaNNC の利用例

図 2 RaNNC によるネットワーク分割
部分グラフへの分割とデータ並列の並列度は，各部分グラフの必要メモリが GPU のメモリに収まるようにするとともに，パイプライン並列と呼ばれる方式で実行速度が最適化されるように決定する，詳細については，著者らの論文 (Tanaka et al. 2021)を参照されたい.

## 3 評価実験

RaNNC の速度を評価するため，モデル並列による学習を行う関連フレームワークとの比較実験を行った。比較対象として, Megatron-LM, GPipe (Huang et al. 2018), PipeDream-2BW (Narayanan et al. 2020)を用いた．実験には，NVIDIA V100を 8 枚備えたサーバを最大 4 台 (100 Gbps の InfiniBand で相互接続) を用いた.

隠れ層サイズを 2048 （原論文の 2 倍）とした BERT について，レイヤ数を変化させながら，事前学習の実行速度を調査した結果を図 3 (a)に示す. GPUを 32 枚用い，GPUごとのバッチサイズは 8 とした. レイヤ数が 256 の場合で，学習パラメータ数は 129 億となる。なお, GPipe のオリジナルの実装では TensorFlowを使用しており，またデー夕並列とモデル並列の併用が不可能なため, RaNNC との比較が困難であった。 そこで, PipeDream-2BW の著者らによって開発された，PyTorchを用い，かつデー夕並列とモデル並列の併用が可能な実装2を用いた.

この実験では, Megatron-LM と比較して, 約 5 倍の大きなネットワークまで学習できることが確認できた ${ }^{3}$. また比較可能な規模のネットワークでは, ほぼ同等の速度となった. PipeDream2BWは，RaNNCよりも幾分高速であることが確認されたが，高速化の目的で勾配の集約のた

(a) 大規模BERTの事前学習 (系列長512)

(b) 大規模ResNet

図 3 大規模ニューラルネットワーク学習の速度比較


めの通信を非同期化しているため, parameter staleness (Ho et al. 2013) と呼ばれる問題により,学習精度低下の可能性があるという難点がある.

また，画像分類等に用いられる ResNet (He et al. 2016) について，原論文で示された 50 レイヤ・101レイヤ・152レイヤのそれぞれの設定について, 畳み込みレイヤのフィルタサイズをオリジナルの 8 倍に拡大し, 学習速度を比較した。もっともパラメータが多い 152 レイヤの設定では， 37 億パラメータとなる。前述の通り， Megatron-LM は Transformer 系のニューラルネットワークにしか適用できないため, 本実験には使用していない。またBERT の学習における評価に用いた PipeDream-2BW や GPipeの実装は，BERT に特化されており，ResNet で動作させることができなかった．そのためこの比較では，PyTorch を用いたGPipeの実装である torchgpipe 4 を用いた． torchgpipe はモデル並列のみに対応し，データ並列と併用できず，また複数サーバの GPU を利用できない。そのため，サーバ 1 台（GPU 8 枚）を用いたモデル並列で実行した。

図 3 (b) に学習速度の比較を示す. サーバ 4 台（GPU 32 枚）とサーバ 1 台（GPU 8 枚）の 2 通りを実行し，GPU 1 枚あたりのバッチサイズは 16 とした。図に示すように，デー夕並列では学習不可能な規模のネットワークにおいて，GPipe より顕著に高速に動作することが確認できた。

## 4 今後の展望

冒頭で挙げた GPT-3 の発表以降も, 各国で競うように超大規模ニューラルネットワーク学習の試みが進められており，NAVER が学習した韓国語の言語モデル HyperCLOVA ${ }^{5}$ (2040 億パラメータ), Google が発表した Switch Transformers (Fedus et al. 2021)（最大 1.6 兆パラメー 夕), 中国語・英語のテキストに加えて画像を学習データに用いた Wu Dao 2.06 (1.7 兆パラメー 夕）などが報告されている。こうした大規模化の傾向に止まる兆しはなく, 大規模ニューラルネットワーク学習の重要性は今後ますます増していくと思われる.

利用可能な計算資源の制限のため, これらの超大規模ニューラルネットワークには及ばないものの, 本稿の執筆時点で, RaNNC を用いて約 800 億パラメータ規模の BERT（BERT-Large のパラメータ数の約 230 倍以上）の学習が可能なことを確認できている． RaNNCを用いることで，並列化を一切考慮していないコードを用いながら， 1000 億パラメータ近いニューラルネットワークを自動的に分割して並列化できることは，作り込みによって実現される他のモデル並列の技術と比較して優位であると言える。今後も更なる大規模化と高速化のための機能強化を
^{5}$ https://naver-ai-now.kr/

6 https://gpt3demo.com/apps/wu-dao-20
}
継続して進め, 近日中に GPT-3（1750 億パラメータ）規模のニューラルネットワークの学習を実現する予定である.

RaNNC はすでに実利用の段階にあり， 50 億パラメータまで大規模化した BERTを，情報通信研究機構 (NICT) が持つ $1.5 \mathrm{~TB}$ の巨大日本語コーパスを用いて学習し, 従来の BERT-Largeを上回る性能を確認している。前述の既存フレームワークと異なり，RaNNC は Transformer 以外のニューラルネットワークにも適用可能であるため, 今後は，敵対的学習で事前学習したCNN と BERT を組み合わせた BERTAC (Oh et al. 2021)を初めとする，より複雑なニューラルネットワークについても適用を進める。また，学習したモデルは，NICTがこれまで開発してきた大規模 Web 情報分析システム WISDOM X ${ }^{7}$ や，高齢者介護支援用マルチモーダル音声対話システム MICSUS 8 等のシステムに組み込んでいく. 従来は, 350 GB の日本語コーパスから学習された BERT-Large を用いてきたが，パラメータ数と事前学習に用いるコーパスを大幅に増加した BERT モデルを使用することで，これらの応用システムにおいても，更なる性能向上が期待される.

## 参考文献

Brown, T. B., Mann, B., Ryder, N., Subbiah, et al. (2020). "Language Models are Few-Shot Learners." arXiv preprint, arXiv:2005.14165.

Devlin, J., Chang, M.-W., Lee, K., and Toutanova, K. (2019). "BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding." In Proceedings of the 17th Annual Conference of the North American Chapter of the Association for Computational Linguistics: Human Language Technologies (NAACL-HLT 2019), pp. 4171-4186.

Fedus, W., Zoph, B., and Shazeer, N. (2021). "Switch Transformers: Scaling to Trillion Parameter Models with Simple and Efficient Sparsity." arXiv preprint, arXiv:2101.03961.

He, K., Zhang, X., Ren, S., and Sun, J. (2016). "Deep Residual Learning for Image Recognition." 2016 IEEE Conference on Computer Vision and Pattern Recognition (CVPR 2016), pp. $770-778$.

Ho, Q., Cipar, J., Cui, H., Kim, J. K., Lee, S., Gibbons, P. B., Gibson, G. A., Ganger, G. R., and Xing, E. P. (2013). "More Effective Distributed ML via a Stale Synchronous Parallel Parameter Server." In the 26th International Conference on Neural Information Processing Systems (NIPS'13), pp. 1223-1231.


Huang, Y., Cheng, Y., Bapnao, A., et al. (2018). "GPipe: Efficient Training of Giant Neural Networks using Pipeline Parallelism." arXiv preprint, arXiv:1811.06965.

Kaplan, J., McCandlish, S., et al. (2020). "Scaling Laws for Neural Language Models." arXiv preprint, arXiv:2001.08361.

Narayanan, D., Phanishayee, A., Shi, K., Chen, X., and Zaharia, M. (2020). "Memory-Efficient Pipeline-Parallel DNN Training." arXiv preprint, arXiv:2006.09503.

Oh, J.-H., Iida, R., Kloetzer, J., and Torisawa, K. (2021). "BERTAC: Enhancing Transformerbased Language Models with Adversarially Pretrained Convolutional Neural Networks." In Proceedings of the Joint Conference of the 59th Annual Meeting of the Association for Computational Linguistics and the 11th International Joint Conference on Natural Language Processing (ACL-IJCNLP 2021), pp. 2103-2115.

Paszke, A., Gross, S., Massa, F., et al. (2019). "PyTorch: An Imperative Style, High-Performance Deep Learning Library." In Advances in Neural Information Processing Systems 32 (NIPS 2019), pp. 8024-8035.

Shazeer, N., Cheng, Y., Parmar, N., et al. (2018). "Mesh-TensorFlow: deep learning for supercomputers." In Advances in Neural Information Processing Systems 31 (NIPS 2018), pp. 10435-10444.

Shoeybi, M., Patwary, M., Puri, R., LeGresley, P., Casper, J., and Catanzaro, B. (2019). "Megatron-LM: Training Multi-Billion Parameter Language Models Using Model Parallelism." arXiv preprint, arXiv:1909.08053.

Tanaka, M., Taura, K., Hanawa, T., and Torisawa, K. (2021). "Automatic Graph Partitioning for Very Large-scale Deep Learning." In Proceedings of the 35th IEEE International Parallel and Distributed Processing Symposium (IPDPS 2021), pp. 1004-1013.

Vaswani, A., Shazeer, N., Parmar, N., Uszkoreit, J., et al. (2017). "Attention is All you Need." In Advances in Neural Information Processing Systems 30 (NIPS 2017), pp. 5998-6008.

## 略歴

田仲正弘：2009 年京都大学情報学研究科社会情報学専攻博士課程修了後, 情報通信研究機構 (NICT) に勤務. 現在, NICT デー夕駆動知能システム研究センター・主任研究員．大規模自然言語処理のための分散並列処理ミドルウェアの研究開発に従事.

田浦健次朗：1992 年東京大学理学部情報科学科卒業. 同専攻修士課程, 博士課程, 助手, 1999 年 7 月-2000 年 6 月米国カリフォルニア大サンディエゴ校客員研究者（在外研究員）などを経て，2001 年東京大学大学院情報理工学研
究科電子情報学専攻講師. 2015 年より同専攻教授（現在に至る）。 2018 年 4 月より東京大学情報基盤センター長. プログラミング言語, 並列, 分散処理,高性能計算の研究に従事.

塙敏博：1998 年慶應義塾大学大学院理工学研究科計算機科学専攻博士課程修了後, 東京工科大学工学部情報工学科/コンピュータサイエンス学部講師を経て, 2007 年筑波大学計算科学研究センター研究員, 2008 年筑波大学システム情報工学研究科准教授, 2013 年東京大学情報基盤センター特任准教授, 2015 年同准教授，2020 年同教授（現在に至る）、計算機アーキテクチャ，高性能相互結合網, 高性能計算, GPU コンピューティング等に関する研究に従事.

鳥澤健太郎：1992 年東京大学理学部情報科学科卒. 1995 年東京大学大学院理学系研究科情報科学専攻助手. その後, 北陸先端科学技術大学院大学助教授等を経て, 2008 年より情報通信研究機構 (NICT) 勤務. 現在, NICT フェロー, ユニバーサルコミュニケーション研究所・副所長, 及びデー夕駆動知能システム研究センター・主管研究員. 自然言語処理の研究に従事. 日本学術振興会賞, 文部科学大臣表彰科学技術賞, Twitter Data Grants など受賞.