Green500連覇への道のり
安達知也((株)Preferred Networks)
Green500の概要
Green500は,バージニア工科大学のFeng教授を中心とするグループによってメンテナンスされている,スーパーコンピュータのエネルギー効率のランキングである.関連するランキングとしてTOP500がある.TOP500はLU分解で連立一次方程式を解くLINPACKベンチマークの実行速度を用いて1秒あたりの倍精度浮動小数点演算回数(FLOPS)を競うランキングであり,近年では富岳が4期連続で1位を獲得している.Green500は,TOP500にランクインした上位500システムのスーパーコンピュータを対象に,FLOPS値をベンチマーク実行中の平均電力で割った値,いわば電力あたりの演算性能を指標とするランキングである.筆者らは,2020年6月,2021年6月,2021年11月の3回のGreen500で1位を獲得した.
スーパーコンピュータを評価する指標として絶対的な演算の速さだけでなく電力が重視されるのは,単純な電気代だけではなく冷却能力の観点でも限界があり,それによって演算速度が頭打ちになってしまうという危機意識に基づいている.1つのスーパーコンピュータに供給可能な電力は数十MWと言われており(たとえば富岳は30MW弱の電力でTOP500に登録されている),分かりやすい基準として1EFLOPS(1秒あたり10¹⁸回演算)を20MWで実現する,すなわち50GFLOPS/Wを達成するということが1つの大きな目標とされてきた.図-1に2007年の初回Green500発表以降の1位のGFLOPS/W値を示す.レギュレーションの変更やシステムの撤去等で若干のブレはあるがおおむね上昇傾向にあり,今年中には50GFLOPS/Wが達成されると予想ができる.
MN-3によるGreen500連覇
MN-3はPreferred Networks(以下PFN)が構築した,MN-Coreと呼ばれるアクセラレータを搭載したスーパーコンピュータである.近年のスーパーコンピュータはCPUとは別にアクセラレータを搭載して演算能力を高めることが多い.MN-3においても演算能力の約96%はMN-Coreが担っている.MN-CoreはPFNと神戸大学の牧野淳一郎教授を中心とする研究グループで共同開発したプロセッサである.MN-CoreはPFNのビジネスの主軸である深層学習を主なターゲットとしており,自社ビジネスを高速に実行することを主目的として開発された.また,今後広くエッジデバイスで深層学習などの大量の演算を要するAI処理を行うことを考えると省電力で高性能なプロセッサの実現は必須であり,その要素技術の実証という側面もあった.
高性能性・省電力性を実現するMN-Coreの大きな特長として,演算器以外の回路を極力減らしチップ面積に占める演算回路の割合を高めたという設計思想が挙げられる.これは牧野教授の研究グループで開発してきたGRAPEシリーズのプロセッサ,特にGRAPE-DRの思想を受け継ぐものである.汎用のプロセッサでは,多様なプログラムを効率良く実行するための制御回路(たとえばキャッシュ制御や命令間依存解析など)が無視できない面積を占めており,演算器に割けるチップ面積が小さくなってしまっているほか,演算に伴って制御回路も動作し消費電力が増えていた.一方でMN-Coreが扱うのは主に深層学習の演算であり,計算グラフという形で事前に演算内容が得られるため,ソフトウェア側であらかじめ解析することが比較的容易である.そこで,複雑な制御回路を搭載せずに極力ソフトウェア側で制御する設計とすることで,チップ面積に占める演算器の割合を高め,電力あたり演算性能も高めることができた.一般にプロセッサは半導体プロセスの微細化により消費電力が低下するが,12nmで製造されたMN-Coreが他社の7nmで製造されたプロセッサとGreen500で対等に渡り合っているのは,この設計思想によるところが大きいと考えている.
Green500への挑戦は2019年に始動した.LINPACKベンチマークの移植・最適化については後述するが,それ以外の重要な要素としてGreen500では当然電力計測が必要であり,高いサンプリング周波数で測定が可能な電力計の導入や,ベンチマーク実行と電力値を対応づけるソフトウェアの開発も並行して行われた.図-2にGreen500向けのベンチマーク実行および開発フローを示す.測定された電力はデータベースに蓄積され,時系列データ可視化ツールであるGrafanaでリアルタイムに消費電力の推移を観測することができるようになっている.また,ベンチマークプログラムからの測定開始・終了のイベント通知を契機として,1回のベンチマーク実行に対応する消費電力推移のグラフの生成や消費電力の積算が行われ,何GFLOPS/Wであったかが計算される.これらのグラフや値はベンチマーク実行直後に社内の誰でも閲覧可能なSlackに投稿され,開発チームはこの結果を参考にして次の最適化を進める.記録が更新された際などは同僚から称賛のコメントやリアクションがつき励みになる,といった具合である.
一方で肝心のLINPACKベンチマークの移植は難航した.PFNとしては初めてのプロセッサ開発でコンパイラなどの周辺ソフトウェアの整備が十分でなく,MN-Core上で実行する命令をリアルタイムで生成する足回りのソフトウェアの開発から始める必要があった.結果として,2020年6月のGreen500時点ではベンチマークを動かすのがやっとという状態であり,最適化を十分に行うことができなかった.前述のとおりGreen500はTOP500にランクインしたスーパーコンピュータを対象としたランキングなので,TOP500にランクインするための最低限の演算性能が必要である.当初の予定では32ノードで計測した結果を提出する予定だったが,性能が足りないことが分かったため急遽40ノード実行に切り替えることとなった.そういったドタバタがありながらも,元々のプロセッサの電力あたり演算性能の高さに助けられて2020年6月のGreen500では21.108GFLOPS/Wを達成し1位を取ることができた.
その後は本業の深層学習プログラムの開発の合間にプログラムの改良・測定が進められた.一度1位を取った時点で終わりとしなかったのは,改良の余地が十分にあると予測ができていたことに加え,プログラムの最適化ノウハウの蓄積,次世代以降のプロセッサ仕様へのフィードバックを見込んでのことである.この際,MN-3を深層学習用の環境とGreen500用の環境との間で相互に切り替える手順が徐々に効率化され,週末などの短い期間であっても測定を行うことができるようになったのは開発の助けになった.
さて,電力あたり演算性能を上げるには,単純に消費電力を下げるか,プログラムを最適化して実行時間を短くすることで演算器以外の回路が静的に消費している待機電力を下げるかが必要となる.電力を下げるためには,MN-Coreのチップごとにばらつきのある動作可能電圧を見極めて個別に動作電圧を下げる等の施策を行った.プログラムの最適化に関しては,演算が動いている間にデータの移動や命令生成が行われるようにして演算が絶え間なく行われる状態を目指すということに尽きるが,MN-Coreではすべての命令のスケジューリングをソフトウェアであらかじめ行う必要があるため難易度が高く,段階的に最適化を進めていく形となった.
その結果,2020年11月のGreen500では26.039GFLOPS/W,2021年6月は29.700GFLOPS/Wと徐々に性能値を高めていった.2021年11月の挑戦では,ソフトウェアで生成する命令を工夫することによりMN-Core内部の回路の電力消費を細粒度で制御する方法を新たに開発したこともあり,39.379GFLOPS/Wと大きく性能値を上げることができた.初回挑戦時と比較すると電力あたり演算性能は約2倍に向上したことになる.
表-1に2020年6月から2021年11月のGreen500ランキングのトップ3のスーパーコンピュータとそのGFLOPS/W値を示す.カッコ内はそのシステムが搭載しているアクセラレータの名称である.MN-Coreが初登場で1位を獲得した2020年6月のGreen500はNVIDIA社のA100と呼ばれるプロセッサが初登場した回でもあり,以後MN-CoreとA100がトップ争いを繰り広げることとなった.両者は行列演算器を大量に搭載したプロセッサであるという共通点はあるもののまったく異なるアーキテクチャである.それにもかかわらず,半年ごとの電力性能向上具合がほぼ同じで僅差で1位2位を取り合っていたというのは非常に興味深い.最新の2021年11月のランキングではMN-Coreが大きく突き放して連覇する結果となったが,これは前述の命令の工夫で消費電力を下げる手法の開発によるところが大きいと考えている.
2年間の記録向上の歴史は,MN-Coreの使いこなし方を学習していくプロセスでもあった.現在,Green500への挑戦を通じて得た知見をベースに,MN-Coreの深層学習応用での利活用を進めている.さらに,次世代ハードウェアの開発も続けており,引き続き高効率な計算とこれを用いた応用の展開を行っていきたい.
(2022年2月25日受付)
(2022年4月5日note公開)