利用事例

連載2回:株式会社 富士通研究所 様

スーパーコンピューティングという「商品」の開発

 株式会社 富士通研究所様は、富士通グループの中でハードからソフトまでのさまざまな研究開発の中核としての役割を担っており、本年4月にはABCIを用いて、ディープラーニングの分散学習で世界最高速を達成されました。今回はその記録達成の陰でどのような苦労があったのか、プロジェクトリーダの田原様にお話を伺いました。

01Photo_FjLab

株式会社 富士通研究所
プラットフォーム革新プロジェクト マネージャー 田原 司睦 様

計算精度を落として高速化する、ディープラーニング用ライブラリ


ー 富士通はABCIや、理化学研究所の「京」など、スーパーコンピューターのハードウェアを製造している企業ですね。まず初歩的な質問ですが、ソフトウェアも商品として研究開発されているのですか?

田原 司睦(以下、田原): ハードウェアとソフトウェアの両方をやっています。スーパーコンピューターの性能を活かすにはライブラリやコンパイラも重要で、高速なソフトウェアをどう実現したらいいのかという研究をしています。例えばスーパーコンピューターの商談で、どのくらいの性能が出せるのかの比較が評価のひとつになりますが、そういうところでも高速化技術は活きてきます。

ー スーパーコンピューターの高速化、AIの高速化を実現するライブラリを研究して、スーパーコンピューターをより使いやすくしていく仕事にABCIを利用しているということですね。

田原: その通りです。スーパーコンピューター以外でも、最近はAI専用のアクセラレーターや、ABCIにも使われているGPUなどがいろいろ作られていますから、それらを使うとどうなるのか。

コンピューターには演算装置が入っていますが、普通は倍精度(64ビット)の演算をします。ディープラーニングでは単精度(32ビット)で演算することが多かったのですが、もっと精度を落としてもちゃんと動作することがわかってきています。充分な結果が得られるのなら速い方が良いよねということで、半精度(16ビット)浮動小数点演算では普通に動くことを確認しています。

極端な例では4ビットや1ビットで演算する機能もNVIDIAのTuringというGPUには入っていて、どんどん演算精度を落として高速化するという話も出てきています。富士通でもDLU(Deep Learning Unit)というプロセッサを開発しました。こういったものに必要なライブラリを、どのように作るかという研究です。


ディープラーニングの肝、学習の「量と回数」


02Photo_FjLab

田原: もうひとつは、ABCIの多数のGPUを使って高速で学習する、「ABCIグランドチャレンジ」にも取り組んでいます。

ー グランドチャレンジはどのような課題を競うチャレンジなのですか?

田原: ディープラーニングは計算量が多いので、少ないGPUで計算すると何日、何週間といった長い時間がかかります。ABCIグランドチャレンジでは最大4,352GPUを同時に使用して計算できるので、単純計算ではGPU1個の場合より4000倍ぐらい速くなるはずですが、実際にやろうとするといろいろ課題が出てきます。

画像を学習する場合、4000個のGPUで同時に学習するのであれば少なくとも4000枚の画像を同時に学習しないといけない。しかしGPUの中にはさらに数千個の計算機が入っているので、1枚の画像を1個のGPUで処理したのではまだ軽すぎて、性能が活かせません。じゃあ1個のGPUで10枚、全部で4万枚を一度に学習すればいいのかというと、ディープラーニングが推論して結果を当てにいくという、本来の目的の正解率が悪くなってしまうことが知られています。

ー 学習する量を多くすると、かえって正解率が悪くなってしまうのですか。

田原: 学習の全体量ではありません。もともと学習させるデータは決まっていて、例えばILSVRC2012というデータセットは128万枚の写真です。写っているのは犬とか花とか普通のもので、それを1000個のカテゴリーに分類するという学習をさせて、ベンチマークにしています。標準的には128万枚の学習を90回ぐらい繰り返します。

極端な話、この128万枚を一度にまとめて推論し、間違いをフィードバックすると、学習のチャンスは90回しかありません。しかし128枚推論したらフィードバックすると、90万回チャンスがあるわけです。多くの画像を一度に推論して学習させるというのは、いかに少ないチャンスで正解にたどり着けるかという問題になってしまうんですね。それが、いろんな理由で難しい。

ディープラーニングは最初はわけがわからない状態から始めて、少しずつ正しそうな状態へ修正して、どんどん強化していきます。最初に「これだけ違います」と言われて、それを信じてパラメータに反映してしまうと、ニューラルネットが学習しなくなってしまうという問題が起きます。

ー 新人が何かを教わるときに、先輩がこまめに教えてくれるのか、1週間とか1か月とか自主練習したことを全部間違ってるよと全否定されてしまうのか、といった状況ですね。

田原: わけがわかっていない人に難しいことを教えようとして、変な方向へ育ってしまうという意味では、そういうことだと思います。じゃあどうすれば一度に学習できる枚数を増やせるのか、という研究をしていました。

また、4000個のGPUの間で通信をしないといけないので、どうやったらそれを高速化できるかという研究もしていました。GPUにはそれぞれ別の画像を与えて推論させるので、自分が担当した画像はこうでしたから、パラメータはこれだけ間違ってますよという答えをそれぞれが言ってきます。当然、GPUによって答えは違うし、どこのパラメータを直そうとしているかも違いますから、みんなの分を持ち寄って平均して、みんなに同じようにフィードバックして共有することで、全体として賢くなっていきます。


大量の画像を一度に学習、フィードバックのための通信時間がネック


03Photo_FjLab

ー ある程度学習したら、情報を交換しながら進める?

田原: ある程度やって貯まったものを交換するイメージではないです。GPUで1枚だけ画像を処理するのは効率が悪いので、何十枚か何百枚かを1回の演算で処理してしまいますから、1回処理するごとに毎回すぐフィードバックをかけ、そのたびに集約を行っていくので、かなり頻繁に通信を行うことになります。

ー 通信量を抑えるアルゴリズムが重要になりそうですね。そういうノウハウは企業秘密なのでしょうか。

田原: 通信に関してはわりと、みんなオープンにしているようなところがありますね。富士通も論文で普通に公開しています。

ー 他の利用者の方にも、GPUの計算速度がどんどん上がっているのに通信速度はそこまで上がっていないというお話を伺いました。

田原: そこがネックになります。GPUは本当に速くなっているので。

画像を一度にたくさん処理できないという話をしましたけど、そうすると少なめの画像を処理させるので、短時間でGPUの処理が終わってしまいます。処理の間にできるだけ通信を同時に行いたいのですが、GPUが速すぎるので通信時間をどうにかして減らさないといけない。

ー GPUの計算量は増やせても、通信量で処理できる枚数が決まってしまう。

田原: 1枚学習しても100枚学習しても、学習結果のパラメータの量は同じなので、通信量は同じです。なのでなるべくたくさんの画像を一度に学習したい。でも、あまり多くすると精度が出ない。1枚の学習結果を反映するのと100枚を反映するのだと、反映の強さは100分の1になってしまいますがそれでよかったんだっけ?と。どのくらいが良いのか具合を探していくような調整をやっていきます。そのあたりの研究も進んできていて、今は65536枚が上限と言われています。

ー 2の16乗ですね。

田原: グランドチャレンジだとソニーさんが、小さい枚数から変化させていって最大10万枚ぐらいにするというのをやっています。最初はやはり小さくしないとだめで、大きくしていくという独特のやり方ですね。10万枚と言っても4000個のGPUで処理しますから、1個のGPUでは数十枚で、それほど多くはないんですよ。


ABCIで開発した技術を自社のAIシステムへ


ー 話が戻りますが、富士通がABCIでこういった研究をしているのは、より効率的な画像の学習アルゴリズムとか、それを使った高性能なソフトウェアを作ることが目的ですか?

田原: はい。富士通もZINRAIというAIクラウドサービスを持っていまして、そこにこういう技術を入れています。普通の機械学習とディープラーニングの両方が入っています。


ー ABCIを使っていろいろ研究することで、ZINRAIの性能をさらに上げていくとか、あるいはZINRAIに続く新しいものを作るとか。

田原: そういうふうに考えています。ほかにも、富士通のお客様にAIのシステムを、こういうハードウェアとソフトウェアで、と提案する選択肢になります。


大量の計算資源を、必要な時に使えるABCI


04Photo_FjLab

ー クラウドサービスではなく、パッケージで研究機関や企業に販売することも考えられるわけですね。ABCIもクラウドサービスですが、ABCIを利用する場合と、富士通が自分で持っているシステムを使う場合があるのでしょうか。

田原: ABCIはやっぱり、GPUを大量に使えるというのが大きいです。我々も実は、研究所のコンピューター全体で100個以上のGPUを持っているのですが、みんなで使っているので、一度に大量のGPUを使う処理はそうそう流せるものではないんです。だから所内では32個ぐらいのGPUを使っているのが、ABCIでは数百個を普通に同時に使えます。

ー 10倍のGPUを同時に使えるのですね。先ほどのお話で、計算速度が10倍になっても通信の問題があるから、単純に10倍の性能にはならないと。

田原: 今までは問題にならなかったことが問題になってしまう。1000倍速いGPUを使えば1000倍速くなるはずなのに実際はそうはならない。じゃあどこが遅いんでしたっけ、というのを調べていくと、1個のGPUでは1%も足を引っ張っていなかったので問題にならなかったものが、1000倍速くなったことで顕在化しちゃう。ちょっと世界が違うんだなというのがわかりました。

ー それを試せるプラットフォームがABCIというわけですね。グランドチャレンジでは4,352個のGPUを同時に使用できますが、通常時でも2,048個を使える。

田原: そうですね。あと、コストが安いというのもあります。

ー それは自前でハードウェアを用意するのに比べてということですか。

田原: どれだけ使うかにもよりますが、数千個のGPUを用意するだけでなく、施設を建てて電気工事をして、と考えると大変です。いま研究所で持っている自前のコンピューターの数十倍の規模ですから、管理運用に専門の部署も必要かなと思います。

ー ABCIは同時に2,048個のGPUを使えますが、それを常に必要をしているわけではないのですね。

田原: 本当に必要なら持っても良いと思いますが、そうでないならクラウド利用するというのは大きな選択肢だと思いますね。

ー ABCIに、もっとこうしてくれたらいいのにというところはありますか。

田原: ポイントを、年度をまたいで使えるといいですね。先払いしたポイントを年度内に消費しなければいけないのはちょっとプレッシャーです(笑)。でも、逆に考えるとポイント購入したぶん以上は使えないので、間違って予算以上に使ってしまうことがないという安全面はあります。

聞き手 大貫 剛(ライター)

ILSVRC2012: 画像認識のコンペティション「ImageNet Large Scale Visual Recognition Challenge 2012」で使用されたデータセット<戻る>