スーパーコンピュータ富岳(1)~史上初世界4冠~
■世界最速のスーパーコンピュータ
日本のスーパーコンピュータ「富岳」が快挙をなしとげた。
2020年6月のスパコン世界ランキングで、史上初の4冠を成しとげたのだ。オリンピックで、100m走、200m走、走り幅跳び、走り高跳びで金メダルをとるようなもの。どれも脚力を競うが、使う筋肉とスキルが違う。だから4冠は奇跡のようなもの。事実、これまで成し遂げたアスリートはいない。
では、スーパーコンピュータの4冠とは?
スーパーコンピュータの世界ランキングといえば「TOP500」だが、メジャーな競技は4つある。
(1)HPL(地頭的な計算力)
有名な「TOP500」はこれ。LINPACKという行列・ベクトル演算のライブラリを、C言語で実装したプログラム「HPL」を使ってスコアを測る。実体は、行列の乗算の塊(かたまり)。なぜ、行列なのかというと、連立一次方程式と解くのに便利で、科学計算の実アプリに近いから。ここで「行列」とは、「行列のできる法律相談所」のことではない。高校で学ぶまやかしの「算数」ではなく、ホンモノの「数学」の第一歩「線形代数」に属する。
ところで、富岳のスコアだが415.5PFLOPS。
PFLOPS?
「P(ペタ)」と「FLOPS(フロップス)」の合成語。P(ペタ)は「10の15乗」で、FLOPSは1秒間に浮動小数点演算を何回こなせるか。浮動小数点とは、詳細は後述するが、整数ではなく小数のこと。というわけで、415.5PFLOPSは、1秒間に浮動小数点演算を415.5✕10の15乗回処理すること。
どうや凄いやろ、なのだろうが、ピンとこない。ただ、2位の米国IBMのSummitの2.8倍の差があるので、凄いでナットク(説明になってませんね)。
(2)HPCG(HPLと同類だがちょっと複雑)
前述のHPLと同じ行列演算だが、違いが2つある。HPLが計算するのは「密行列」なのに対し、HPCGは「疎行列」であること。さらに、HPLは演算ユニットの性能限定だが、HPCGはメモリアクセスの性能も問われること。演算ユニットだけでなく、メモリまわりも最適設計されていないとダメ。だから、実アプリでは、HPLよりHPCGの方が信用できるかもしれない。
富岳のスコアは13.4PFLOPS。こちらも、2位の米国IBMのSummitの4.57倍!凄いですね(本当は凄さがわかっていない)。
(3)Graph500(ビッグデータ処理)
スーパーコンピュータが処理するのは、行列ばかりではない。TOP500が始まった1993年頃は、スーパーコンピュータといえば、足したり掛けたり。ところが、今はAI&IoT(すべてのモノをインターネットにつなぐ)の時代。IoTを介して、人類が経験したことない膨大なデータが入手できるようになった。
問題は、そのビッグデータを、どうやって管理・解析するか?
その方法の一つに「グラフ」がある。膨大なモノ・コト(データ)を、枝(エッジ)でつないで、管理・解析する(ネットワークをイメージするとわかりやすい)。モノ・コトの関係性を調べるために、枝をたどることを「グラフ探索」という。Graph500はその処理能力を表す。富岳のスコアは70,980GTEPSで、2位の2.99倍。
ところで、GTEPS・・・また謎の単位?
例によって「GTEPS=G(ギガ)+「TEPS(テップス)」に分解できる。G(ギガ)は「10の9乗」で、TEPSは1秒間にいくつグラフの枝(エッジ)を探索できるか。足したり掛けたりではないので、FLOPSではなく、TEPSなのだ。
(4)HPL-AI(AI処理)
ビッグデータと切っても切れないのがAI。それを測定するのがHPL-AI、とムリクリ話をつないだが、本当はあんまり関係ない。AIといっても、今は機械学習が中心。その中心的存在のディープラーニング(深層学習)の処理能力を表す。
富岳のスコアは、1.42EFLOPSで、これまた、2位に2.58倍の差。
EFLOPS・・・再び謎の単位が。
例によって「EFLOPS=E(エクサ)+FLOPS(フロップス)」。E(エクサ)は「10の18乗」で、FLOPSは前と同じ。というわけで、1.42EFLOPSは、1秒間に1.42✕10の18乗回の浮動小数点演算をこなせる。
これはマジで凄い!
何が?
「ギガ(10の9乗)」でもなく、「ペタ(10の15乗)」でもなく、「エクサ(10の18乗)」だから!
つまり、史上初の「エクサスケール」マシンなのだ。厳密には違うのだが、話の本質でないので説明は省く。
ではなぜ、HPL-AIだけが、エクサスケールなのか?
理由は計算の「精度」にある。
■エクサスケールの衝撃
数値計算の精度は、コンピュータが1度に処理できるデータサイズによる。よく使われるのは、倍精度(64bit)、単精度(32bit)、半精度(16bit)の3つ。1bitは「0」か「1」の2通りなので、一度に処理できるデータは以下の通り。
・倍精度(64bit)=2の64乗=18,446,744,073,709,551,616
・単精度(32bit)=2の32乗=4,294,967,296
・半精度(16bit)=2の16乗=65,536
「◯◯bit」の「◯◯」が大きいほど、大きな数値が表せるから、精度も上がる。よく耳にする「32bitCPU」とは、1度に処理できるデータが32bitのCPUのこと。64bitCPUなら64bitだ。
一般に大きな数値を扱う場合、処理速度は「64bitCPU>32bitCPU>16bitCPU」。たとえば、16bitCPUで、32bitの演算は可能だが、「32bit÷16bit=2」で、2回演算する必要がある。その分、処理速度が落ちるわけだ。逆に、64bitCPUで、単精度(16ビット)演算すると、「64bit÷16bit=4」なので、一度に4つの演算を処理できる。そのぶん、高速になる。
じつは、富岳は半精度の演算も効率よく処理できるよう設計されている。だから、HPL-AI(半精度)が、異常に高速なのだ。ちなみに、「(1)HPL」も「(2)HPCG」も倍精度(64bit)である。
では、AIは精度が低くてもいい?
そういうわけではない。ちょっと込み入った事情があるのだ。
現在、主流のディープラーニング(深層学習)は、膨大なデータを学習(トレーニング)し、ルールを抽出し、そのルールを使って、分類や予測をする。つまり、「トレーニング」し「推論」するわけだ。たとえば、「Googleの猫」。2012年、ディープラーニングを用いて、YouTubeから1000万枚の画像を学習させ、「猫」を認識させた。
現在、トレーニングは単精度(32bit)が多い。一方、推論は半精度(16bit)が有利なことがわかってきた。ディープラーニングの実体は、脳を真似たニュラールネットワークだが、データのサイズを大きくするより、ネットワークの階層を深くする方が精度が上がるというのだ。カンタンに言うと、単精度(32bit)で5層より、半精度(16bit)で10層の方が精度が高くなる。限られたコンピュータのリソース(メモリなど)を、データサイズと階層とどちらを優先するかという話。
まぁ、難しい話はこれくらいにして、ここで結論。
ディープラーニングの推論は、(今のところ)半精度がベター。その最新情報に、富岳が対応したわけだ。
データの精度の話が出たので、「浮動小数点」にも触れておこう。今後、分野を問わず、ITリテラシーが重要になるから、知っておいて損はないので。
浮動小数点とは、コンピュータで小数を表す方法(整数ではなく)。たとえば、先の富岳のスコア「415.5P=415.5✕10の15乗」は、「415.5」と「10の15乗」の2つにわけて表現する。前者を仮数部、後者を指数部とよんでいる。
なんで、こんな面倒くさいことをやるかというと、コンピュータが1度に処理できるデータサイズは決まっているから。先の倍精度、単精度、半精度の話だ。たとえば、16ビットCPUなら、「仮数部+指数部=16ビット」なので、精度を上げるため、仮数部を大きくとると、指数部が減り大きな数字が扱えなくなる。逆に、大きな数字を扱えるように指数部を大きくとると、仮数部が減り、精度が低くなる。そこで、仮数部と指数部のあんばいよく調整し、データを有効利用する。それが浮動小数点なのだ。
先のディープラーニングのデータサイズと階層の関係と同じで、この手のリソースの取り合いは、コンピュータではつきものだ。
■富岳で新型コロナ治療薬
小難しい技術の話が続いたので、つぎに、富岳の活用について。
マッハ10の超音速ジェット機は凄いけど、何に使う、という話。
ところが、スーパーコンピュータなら、そんな心配は無用。富獄の1万倍、1億倍高速でも、使い道は山ほどあるから。
2020年4月、理化学研究所は、富岳を新型コロナウイルスの研究に優先的に利用すると発表した。
現在、新型コロナは、終息どころか、収束する気配もない。移動制限を解除したとたん感染が拡大、東京に引っ張られる形で、全国で感染者が増えている。ところが、政府も都も何も手を打たない。理由は、検査数が増えたから・・・これにはビックリだ。
だってそうではないか。
感染者が増えたのは、検査数が増えたからで、心配無用!?
バカじゃないのか。
検査数がどうであれ、感染者が増えたことに変わりはない、そこが問題でしょ。
そもそも、検査を増やした途端、感染者が急増するなら、隠れ感染者がどれだけいるかわらかない。もっと怖いではないか。だから、何も手を打たない、はありえない。
さらに、空気感染の可能性も取り沙汰されており、余談を許さない。抗体が3週間~3ヶ月で消滅するという報告もある。もしそうなら、ワクチンは無力だ。ワクチンとは、軽く感染させて、抗体をつくり、感染を防ぐもの。抗体がすぐに消えるなら、何の意味もない。
さらに問題なのは、「集団免疫」に賭けて、経済優先で感染拡大を放置する国があること。国民がハエのように死んでいく、でも一向に終息しない、最後に働き手がいなくなって経済が崩壊・・・シャレにならない。
そんな中、理化学研究所は、富岳で新型コロナの治療薬の候補となる数十種類の物質を発見したと発表した。治療薬ではなく、候補の物質?
じつは、薬剤の開発(創薬)には、前段階がある。
第1ステップ:化合物の候補の中から、タンパク質に結合(作用)するものを探しだす。タンパク質に作用しないと、人間に効かないから。
第2ステップ:候補の化合物を、生体シミュレーションし、正確な結合の強さを計算し、有効な薬剤を見つける。
前世代のスーパーコンピュータ「京(けい)」は、第2ステップで活用できたが、第1ステップはムリだという。タンパク質がどのように結合するかを計算するには、分子動力学で計算する必要があるから。
分子動力学法?
物質の性質を調べる一般的なコンピュータ・シミュレーションのこと。具体的には、物質を構成する各粒子間に働く力を定義し、各粒子の加速度を求め、その後の位置と速度を求める。微分方程式を使っているようなので、ニュートン力学のミクロバージョン?(想像です)
ニュートン力学も分子動力学も、物体や粒子の数が多いと「多体問題」といって、解析的に解けない。コンピュータで近似計算するしかないのだが、物体や粒子の数が多いと計算量が爆発的に増加する。事実、「京」で第1ステップを処理すると、2,000種類の化合物なら1年以上かかるという。つまり、現実には使えない。
ところが、富岳は第1ステップから活用できるという。2,000種類の化合物でも、数日で計算が完了するというのだ。
というわけで、スーパーコンピュータに「ムダに高性能」はありえない。
■コンピュータシミュレーションは預言者
その昔、「コンピュータはソフトがなければタダの箱」というコトバが流行した。当時、ハード屋だったので、それを聞くたびに不機嫌になった。話はそこではなく、この格言はスーパーコンピュータにも有効である。
スーパーコンピュータの別名は「ナンバークランチャー(数値を爆喰いする機械)」。早い話が、超高性能ソロバン。
ところが、先の分子動力学のように、物理や化学の法則をコンピュータ・プログラムに落とし込んで、スーパーコンピュータで実行すると、現実世界を再現できる。現実世界そのままなので、時間軸を先にすすめれば、未来予測ができる。このような手法をコンピュータ・シミュレーションとよんでいる。
つまり、シミュレーションを使えば、計算上でモノづくりができる。リアルなものをイチイチ作る手間も省けるし、失敗作をすてるムダもない。何度も試行錯誤できるし、時間も節約できるし、いいことずくめ。
シミュレーションは、新型コロナの治療薬に限らず、抗がん剤や糖尿病薬など創薬、ナノ材料などの新素材開発、さらに、自動車、航空機などの設計にも活用できる。そして、天気予報、気候予測(地球温暖化)、地震予測も!
これまでは、地震予測は不可能とされてきた。いわば、占い、八卦のたぐい。
だが、これからは違う。
地震は、いきつくところ、地盤の変動。であれば、地層に無数のセンサーを埋め込んで、IoT&AIを駆使して、地殻変動を学習させる。何度か地震を経験すれば、地震の予兆がルール化され、地震予測は可能になるだろう。
というわけで、スーパーコンピュータはどれほど高性能でも、高性能すぎることはない。用途は無限にあるから。現在、量子コンピュータが期待されているが、実装があまりにも難しい。技術的課題が多く、実用マシンが登場するまで、10年以上はかかるだろう。
一方、スーパーコンピュータはまだ伸びしろがある。今の技術の延長でも夢の「エクサスケール」は可能だ。すでに、富岳も半精度ながら「エクサ(10の18乗)」の大台に乗ったのだから。
でも一つ謎がある。富岳はどうやって、奇跡の4冠を達成したのか?
理化学研究所&富士通のパワーがIBMを凌駕するとは思えないのだが(失礼!)。
というわけで、つぎに、富岳の成功の理由をさぐることにしよう。
by R.B