INTERVIEW2021年9月号 Vol. 32 No. 6(通巻370号)

スーパーコンピュータ「富岳」の性能を最大限に活かす方法を探る 2020年ゴードン・ベル賞ノミネートの八代主任研究員に聞く(第2回)

  • 地球環境研究センターニュース編集局

【インタビュイー】
八代尚(地球システム領域 衛星観測研究室 主任研究員)

【インタビュアー】
地球環境研究センターニュース編集局
江守正多(地球システム領域 副領域長)


*このインタビューは2021年5月11日に行われました。

八代尚衛星観測研究室主任研究員
前回に引き続き、お話をうかがった八代尚衛星観測研究室主任研究員。

前回は、2020年のゴードン・ベル賞のファイナリストに選ばれた八代尚主任研究員に、気象の数値予報をより確からしいものにするために、地球の表面と大気をできるだけ細かく区切り、時間もそれに合わせて細かく区切って計算したことや、アンサンブルで統計的にしっかりとした計算結果を出す工夫などについて話していただきました。

今回は、アンサンブルによる計算をどのようにデータ同化に活かしたかということや、スーパーコンピュータを利用した研究の今後などについてうかがいます。

前回と同様、スーパーコンピュータについては素人のインタビュアーである編集局の中の人の心の声を( )に入れた青字で記しています。

アンサンブル計算によるばらつきの情報をデータ同化に活かす

編集局:アンサンブルの初期値は今回どのくらい設定したのでしょうか。

八代:1000通りくらいです。そして、今回のアンサンブルデータ同化*1では、アンサンブルの扱い方にも工夫をしています。どうやって扱っているかというと、天気予報を行って、その結果、6時間後の結果が、このくらいばらつくという情報をそのまま使うのではなくて、そのばらつきの情報を、データ同化に使ったのです。

編集局:初期値を入れて計算したものは、ばらつきますよね、そのばらつきを、つまり、どうしたのですか。
(「ばらつきの『情報』っていったい何!?」説明を聞きながら、編集局の頭は再び真っ白になりました。)

八代:そのばらつきの情報を使って、うまくデータ同化をしたのです。

データ同化とは、シミュレーションの結果を、観測データが存在する場所の、観測データを使って修正することですが、修正の度合、つまり、どのくらい修正したらいいかについての情報が必要なのです。いろいろな方法がありますが、今回のアンサンブルデータ同化では、アンサンブルをたくさん回して、6時間後に出る標準偏差のグラフにあるような「山」の形を観測データの重みづけに利用したのです。

100本シミュレーションしても、どんなシミュレーションもこんな形になる、という点もあれば、全然自信のないような形になる点もあるわけです。そのときに、自信のない形になる点は、観測データの値を信じましょう、シミュレーションで同じような結果が出る点は、シミュレーションの結果をより信用して、観測データで修正する量というのはちょっとにしましょう、というような重みづけをしているのです。

編集局:なぜ、そのような重みづけをするのですか。

八代:アンサンブルによる標準偏差のグラフにあるような山の形がどう出るかで重みづけをすると、シミュレーションの結果とあまり「けんか」しないで、観測データをたくさん入れることができるのです。

たとえば、観測データを全部、100%信用してガンと入れると、シミュレーション側の結果をガシャンと変えてしまいます。そのあともう一回シミュレーションしたときに、やっぱり同じようにシミュレーションが間違うと、観測データとシミュレーションがいわば「けんか」し続けて、それがノイズになってしまうのですね。それで、観測データが先生だとすると、強く教えなければいけないところは強く教えて、そうでないところは、割とシミュレーションに任せてあげるというように、うまく間をとってやることをしています。

編集局:では、6時間後のシミュレーションの結果を、この点の場合はシミュレーションを重視する、別の点の場合は観測値を重視する、という感じで修正していくのですか。
(重みづけのしかたは理解できましたが、相当面倒な計算になりそうだとも感じました。)

八代:先に各点の重みを計算しておけばいいのです。この観測データでデータ同化しますよ、というとき、たとえば気温を5℃上げます、といったときに、5℃全部上げるところと、1℃だけ上げるところとを、あらかじめ計算して重みづけしておくような形にすれば、一度にどっと計算できます。

編集局:今回のモデルの中にはそういうことを組み込んであるということですか。

八代:はい。今回は、まずシミュレーションを1000アンサンブルやって、1000個の結果が出る。その1000個の統計量を、格子点一つひとつについて全部計算して、それと、観測データを比べるということを、シミュレーションの後に実施して、それで修正された結果を使って、もう一回シミュレーションの続きを計算しましょう、ということにしました。

インタビュー中の八代主任研究員と一所懸命にメモを取る編集局。

1800兆回の計算をこなす

編集局:しかし、それはすごい計算量になりますね。初期値をばらして計算したものを重みづけに使って、この点ではシミュレーションを重要視する、別の点では観測値の方を重要視して修正する、みたいなことをいろいろやって、計算しているということですね。

八代:はい。1000個のシミュレーションを計算した結果があって、それを基に観測データで修正して、修正した1000個のシミュレーションの続きを計算して、またずれていって、それをまた次の時間の観測データで修正して…というのをずうーっと繰り返していくわけですよ。

編集局:どこかで450ステップとおっしゃっていましたけれど。

八代:この450ステップは、シミュレーションの1回目の観測データとの比較までに、6時間計算して、ということですね。

編集局:それでまだ1回目なのですね。そこですでに1800兆回(計算しているということ)ですか。

八代:そうですね。シミュレーション側の計算としては、格子点の数が4兆個あって、それを450ステップ分計算して、データ同化にたどりつくまでに、各点での計算というのが、1800兆回計算があった、ということになります。8秒の450ステップは9時間なので、データ同化を行う6時間後よりも少し先の3時間先まで計算しています。

なぜかというと、次の開始を6時間後のところから始めたいのですけれども、観測データは、ここのプラスマイナス3時間の観測データを全部使って、データ同化、つまり修正しているんです。ちょっと先まで行って、ちょっと戻り返して、また計算しているというわけです。

編集局:そのあとさらに続けて計算するのですか。

八代:いつもはするのですが、もう計算時間が足りなかったので、1回目の分だけで、とりあえずベンチマークをとって、このパターンはそれで終わっています。けれども、いつもはそのまま続けてやっています。

編集局:それだけで1800兆の計算がされているので時間がかかる、と。

八代:そうですね。
(時間・空間を細かくするだけでなく、アンサンブルを用いることによって、計算結果を確率的に捉え、予測の困難さをできるだけ軽減する努力は本当に大変なものです。そこで次に、この膨大な計算量と計算時間をどのように軽くしていったかについてお聞きすることにしました。)

時間や電力がかかるのは、計算よりもデータの転送

編集局:実際に時間がかかるのは、計算よりもデータの転送が問題だとか。

八代:はい。大気のシミュレーションは、スーパーコンピュータの性能を全然使い切れていなくて、計算するよりも、データを読み出して結果を格納するというような、データを移動させる時間の方がたくさんかかるのです。

たとえば、データが来るのを待っている間、計算機は止まっているので、具体的には計算機の性能を10%も使えていないというのが現状です。それをどれだけ速くするか、データの移動をいかに減らすか、ということが、ここ10年くらい、一番のネックになっています。計算そのものを速くするのは結構簡単です。データの移動を速くするのは、それよりずっと難しいのですよ。

データをメモリから読み出して計算して戻す回数が少なく、同じ変数の値を何回も繰り返し計算するような方法だと、計算機の100%に近い性能を出すことができますが、気象を扱う場合は、そういうタイプの計算にはならないのです。たとえば、分子の位置を計算するような場合は、何回も反復計算できます。結果をメモリに書き戻すまでに、もうずーっとCPUで計算するだけだから、60%とか70%とか計算機の性能を使えるのですが…。

編集局:気象の場合は条件がどんどん変わるから、うまくいかないということですか。

八代:そう、次の時間ステップのときの状態を全部引っ張り出してくるには、もう一回メモリに戻したデータを読んでこないといけないですよね。流体計算はそういうのが多くて、車の近くの風の動きだとか、最近はやりのマスクから飛沫がどう飛ぶか、みたいな計算も、コンピュータの中でのデータの移動が激しい部類に入ります。

計算機は、たくさん計算するための部品を並べれば、それだけ計算性能が上がるから、何ペタフロップス*2って、どんどん上げることができるのですが、性能が上がった分を容易には使いきれないのです。性能が10倍上がっても、使える割合が10分の1に下がってしまうと、結局遊ばせている部品をただ並べているだけなので、意味はないのです。

データの移動は大変で、メモリに0、1で書いてあるものを転送するわけですが、これは、そのまま電力消費に結びつくので、データを移動させればさせるほど電気を食うんです。計算するのももちろん電気を食うんですが、データの移動は、なかなか効率を上げられないのです。

データの情報量を減らしても精度を落とさない工夫

編集局:それで、データの情報量を減らす工夫として、浮動小数点*3や単精度と倍精度*4などが出てくるのですね。
(浮動小数点や倍精度が、スーパーコンピュータの計算における「鍵」の一部であるということは、予習して少しだけ知っていました。)

八代:まず浮動小数点ですが、コンピュータの中の数字は(二進法なので)0と1でつくっています。たとえば整数だったら、0、1、0、1で、どんどん増やしていくと、数字が0からどんどん増えていきます。じゃ、実数はどうするか。「ナニ点ナニ」(たとえば123456.789)という数値をどうやって表すかというと、数字の「数」を表すところと「桁数」を表すところというのをつくってやって、「ナニ点ナニ×10の何乗」(上の場合なら1.23456789×105)というような形で表しています。小数点の位置が、この何乗という部分の情報によって動くから、浮動小数点なのです。固定小数点というのもあって、一番小さいのを決めてやって、そこからもう、桁数が変わらないような方法もあります。

浮動小数点は、倍精度(64bit)なら、0と1を、64個を並べて表現できます。この桁数の多い方が、大きい数字を表すことができるし、小数点以下何桁まで表現できるかという幅が出ます。倍精度だと、だいたい(10進法の)16桁くらいまで表すことができます。単精度(32bit)だと、小数点の桁数が半分になって、8桁くらいまでしか表せない。

桁数が減った場合には、足し算、掛け算、割り算、引き算を繰り返したときに生じるずれが重要になります。ここ10年、20年くらいは、シミュレーションの結果をより確からしいものにするために、桁数多い方がいいということで、みな倍精度を使っていました。

桁数が少ないと何が難しいかというと、大きい数字と小さい数字を足すときに、小さい数字がなくなってしまうということです。両方8桁だとしても、101と10-10というのをただ足してしまうと、10-10の数字は全部消えてしまいます。引き算のときはもっとひどくて、16桁と16桁の数値があって、15桁目だけ違う数値の場合は、引き算しても、有効数字が2桁しか残らない。倍精度であっても桁落ちが発生して、精度がどんどん落ちていく。
(有効数字の話は、たしかに高校の数学や物理で習った記憶があります。)

大きい数字と大きい数字の引き算は、如実に精度が落ちます。プログラミングするときは、いかにそういうことを回避して書くかということが結構重要なのです。今回は、単精度にしてシミュレーションしたとき、結果が倍精度のときとまったく変わってしまった式を順番に探していって、単精度でもほぼ見合った精度が担保されるように書き直していきました。

編集局:単精度と倍精度で結果を比較して、違いが大きくなるところは、シミュレーションの式を書き直しているということですか。

八代:そうです。結果として倍精度に戻して計算しても精度がよくなったのですけれどね。

編集局:では、単精度でやったあと、倍精度でも計算したのですか。

八代:はい。どっちでも使えるように、切り替えられるようにしてあります。

単精度で計算すると、基本的に8桁しかないから、どんどん計算していくと、その桁のないところで、今までの倍精度の計算からずれていく部分があります。それが、どのくらいシミュレーションの結果に影響するかということについて、いろいろ調べた結果、割と大丈夫だと。

編集局:「割と」というのはどのような基準で「割と」なのですか。

八代:たとえば、数日後の倍精度と単精度による結果を比べて、「気圧配置が変わらないか」とか「雨の降り方が変わらないか」とかという視点では大丈夫でした。「台風の進路が、大きく変わらないか」ということについても調べました。

編集局:そして、最終的に倍精度にするよりも、アンサンブル数を増やして補ったほうがいいという結論に達した、ということですね。

八代:そうです。やっぱり、解像度が足りないことによる不確実性だとか、アンサンブル数が足りなかったことによる、統計的情報の不足というもののほうが、倍精度と単精度による幅よりも、ずっと大きかったので、計算の精度を落として、計算を速くしてやった分、別なところをよくしたほうが、ずっといいね、という結論になりました。

編集局:解像度やアンサンブル数の不足のほうが、シミュレーションの結果に与える影響が大きいということですか。

八代:そうですね。最近の世界的な傾向として、海外の気象機関でも、積極的に、倍精度ではなく、もう少し精度を落として、計算しようという流れができている感じですね。

編集局:本当にいろいろなことに配慮しながら、世界最大規模の気象計算を実施したのですね。

八代:データの移動ということに関しては、もう一つ付け加えておくことがあります。今回の計算は、シミュレーションをやって、データ同化をして…というようなセットになっていますが、シミュレーションのプログラムとデータ同化のプログラムは別です。

先ほど、1000個アンサンブルがあって、その結果を使って、データ同化するといいましたが、1000個のアンサンブルの結果のデータのサイズが大きすぎて、一度ファイルに書いてやらなければなりませんでした。CPUよりもメモリからデータを転送するほうが、時間がかかりますが、ファイルからデータを読むのはさらに100倍以上遅いんです。ファイルにデータを読み書きすることが、ものすごい時間のロスになるのですね。けれども、ファイルに書かないと、データのサイズが大きいのでメモリからあふれてしまう。

いかにファイルにデータを書くのを速くするかというところをがんばりました。具体的には、今回13万台のコンピュータを使ったのですけれども、13万台から同時にファイルを書き出して、読み込むことができるように、プログラムを書き換えたんです。

編集局:それは素人目にも大変そうな作業です。

八代:実際に読み書きしたデータのサイズは、1.3ペタバイトです。

編集局:考えただけでも頭が痛くなります。1.3「ペタ」ですよね。

八代:自分のノートパソコンのハードディスクのサイズって、だいたいどのくらいですかね。2テラないですよね。

編集局:ないと思います。2テラはないと。

八代:だとすると、1.3ペタというのは1300台とか、1000台分ぐらい。

編集局:パソコン1300台くらいのデータを一気に書き出して…。
(頭の中で1300台のノートパソコンを思い浮かべて、そのファイルコピーの量を想像すると、ちょっとめまいを覚えました。)

八代:まあ、一気に読み出したんですね。

編集局:それはすごいですね。それならゴードン・ベル賞にノミネートされますよね。

八代:感覚的に、なんかわかっていただけて、ありがたいですね。

計算の精度を落とさずに速度を速めていくためには、考慮しなければならないことがたくさんあります。一番いいバランスがどこにあるかを見きわめなくてなくてはなりません。

10年後のスーパーコンピュータを見据えて

編集局:今回のような、計算を速くするとか、効率化すること、それが、シミュレーション研究、特に、気象研究的なものにとって、どうして重要になるのかということを教えていただきたいのですが。

八代:天気予報をする人たちや気候の計算する人たちのなかには、今の解像度、空間解像度では足りないと思っている人が結構います。予報の精度を上げるには、空間解像度を上げる必要があると思っている人たちです。解像度だけではなくて、もっと長期間の計算、つまり、100年計算していたのを1000年計算したりとか、統計的な有意性というのか、統計的により確からしいものを得るために、今まで10回分しかアンサンブルできなかったものを100回とか1000回やりたいという気持ちもあるのですよ。そうなったときに、結局たくさん計算しないといけなくなるわけですよね。1個の計算をより速く計算できるようになれば、できることが広がる。

編集局:より速い計算ができれば、研究を多方面に広げられる、ということでしょうか。

八代:はい。今、計算性能が足りないという理由でできていないことを、もっと計算機の性能を上げてやりたいと考えているわけですが、最近の計算機は、計算性能が上がったといっても、それを全部使いきれるかどうかはあやしいんです。新しい計算機を買ってきたから、もっとたくさんいろいろなことができるということがイコールではない時代に入っている。

今回みたいな仕事は、その間をつなぐところといえるのではないかと思います。計算機がどんどん速くなる、その性能を使いきれるように、シミュレーションモデル側、データ同化システム側も、いろいろな改良を加えていく。そういったことをやる必要がある、と。

編集局:それが今、非常に重要だということですね。

八代:みなさんがあまりやっていないから重要なのですよ。

編集局:江守さん、あまりやっていないというのは本当なのですか。
(いろいろな研究をよくご存じの江守副領域長にもお聞きしてみました。)

江守:まあ、そうですね。多くの研究者は、研究した結果の中身のことをやるほうに集中して、速く計算したり、効率的に計算したりするのは、最近だと計算機専門の人に任せたりするのですが、それを両方わかってやる人は少ない、ということではないですか。

江守正多地球システム領域副領域長
江守正多地球システム領域副領域長には、インタビュー中何度も助けていただきました。

編集局:八代さんは今後どの方向にこれを進めていかれるのですか。

八代:一つには、この先の計算機というものが、本当にどうなるのかわからないという時代に入ってきていますので…。

編集局:それはどういう意味ですか。

八代:スーパーコンピュータの計算速度は今までと同じようなテンポで速くなっていかないだろうという予測がされるようになってきたということです。いろいろな問題があるのですが、まず電力的なことがあります。大きな方針転換をしない限り、これ以上性能を上げるには、電力をどんどん使うしかなくて、これ以上は電力不足になってしまうというところまできているのです。

ですから、「富岳」の次に100倍の性能をもつ計算機を10年後につくりましょうといっても、もうこれ以上の電力を確保できないんですよ。そうすると、性能は100倍だけれども、電力は据え置きというような計算機をつくらないといけない。でも、それには大きな方針転換をしないと難しい。

そして、方針転換が行われた場合、シミュレーションモデル側は、それについていかないといけないのです。ついていかないと、あとは取り残されるしかない状態になる可能性があって、それがすごく不安な点でもある。だから10年後のことを考えて、今からいろいろなことを試すということは、必要になるんじゃないかなと思っています。こういうことを気にしている人は、国内でもあまり多くないので、引き続き研究していこうと思っています。

もう一つ、今回は天気予報の風速だとか気温だとかについてのデータ同化を行ったのですが、これをさらに、温室効果ガスだとか、エアロゾルだとかのデータ同化に広げていこうと思っています。今、衛星観測センターに所属しているのは、特に衛星データを同化に使うことが大事だからです。さらに、「富岳」を使った文部科学省の「成果創出加速プログラム」という研究課題が令和2年度から3年間の期間で進められています。ぼくもこの研究にテーマリーダーとして携わっています。

江守:せっかくなので、もう一つ質問を。最後のコンピュータの未来の話で、電力が大変だという話ですけれども、たとえば、寒いところにサーバを置いて、冷却用の電力を抑制する可能性があるのかなと思うのですが、それについてはどのようにお考えですか。電力問題の落としどころは、実際どうなっていくのでしょうか。

八代:電力問題は難しいですね。たくさん計算をする以上、電力を減らすのはとても大変ですが、コンピュータをつくる側の人たちは、いかに省エネにできるかを突き詰めています。コンピュータを置く施設をつくる側の人も頑張っていて、データセンターを寒いところに置くというのは、最近世界的にもはやりです。さらに今後再エネが安くなってくれば、再エネの比率もより上がってくるのではないかなと思いますね*5

八代主任研究員
八代主任研究員には今後の展望についても話していただきました。

あと、スーパーコンピュータの場合は、常時半分以上計算で稼働しているし、止めて、立ち上げるのに、すごい時間がかかるので、止めない程度に、スタンバイ電力としてぐっと消費電力を下げて使う、必要なときだけ、電力をもらってガーっと計算する、というようにして、急激な電力変化に対応できる賢い施設的な仕組みも、今よりもっと考えられていくのではないかと思いますね。
(スーパーコンピュータの性能も、スーパーコンピュータを利用する研究も、今、大きな曲がり角に来ている…。八代さんの研究は、その曲がり角の先を見据えるために、とても大きな意味をもっているのだと深く実感したインタビューでした。)