深層学習が実世界においてどう応用されていくのか

西川徹氏(以下、西川):ただいまご紹介いただきました、Preferred Networksの西川です。

私たちの会社では深層学習(ディープラーニング)と呼ばれる技術を実世界の問題に応用していくこと、例えば自動運転やロボティクス、工作機械の高度化にライフサイエンスなど、さまざまな分野に応用していく活動を行っています。

本日の私の講演では、その応用を支える基盤となっている技術と、いかにして研究開発のスピードを高めているのかといった点にフォーカスし、お話をさせていただきたいと思います。

初めに、深層学習が実世界においてどう活用されていくのか、どう役に立つのかといった点について、3つほど事例を交えてご紹介させていただきたいと思います。

一般家庭の部屋をロボット仕様に作り変えることの難しさ

最初の事例はロボットの事例になります。私たちは3年ほど前にファナックさまと協業を始めて以来、ロボットの魅力というのにとりつかれまして、現在ではロボットの事業にかなりの部分を注力しております。今年10月のCEATECというイベントにおきましては、パーソナルロボットへの参入も表明させていただきました。

その時に出展させていただきましたのが「全自動お片付けロボットシステム」です。読んで字のごとく、物が散らかった部屋を外出中に片付けるといったロボットです。こういったロボットを実現する上で、課題になってくることをこれから申し上げたいと思います。

産業用ロボットやサービスロボットなどは、ある程度は環境をロボットに合わせることができます。一方で、家庭内にロボットを普及させていこうと思うと、家庭をロボット仕様に作りかえるというのは難しく、導入のハードルを高くしてしまいます。

いろんな環境が存在する家庭において、そのさまざまな環境へロバストに対応していくといったことが、極めて重要なポイントになってきます。そのために、私たちはたくさんのデータを学習させることによって、ロバストさを生み出そうとしています。

問題解決のカギは、深層学習による高精度な物体認識

(スライドを指して)ここに掲げておりますように、条件をいろいろ変えてみたり、部屋のいろんな場所で物体がいろんな置かれ方をするといったデータをたくさん集めまして、それを深層学習で学習することによって、いろんな環境へロバストに対応できるようにしています。

では結果どうなったのかというのを、動画でご覧いただきたいと思います。

(動画が流れる)

最初は早送りの動画になります。(動画を指して)このようにロボットが外出中に片付けをしてくれるんです。ここでキーになっておりますのは、先ほども申し上げました深層学習を利用した高精度な物体認識です。

それが可能になることによって、物体の位置や形などを正確に認識することができ、それによってしっかりと物体をつかむことができるようになります。しっかりとつかんだ物体を落とさないように運んで、所定の場所にしまう。そういったことを実現しております。

今回私たちは、家庭のなかのロボットとして役に立つ、さまざまな機能を実装しています。

たとえばスリッパ。ばらばらに放り投げられると困ってしまいますので、しっかり向きをそろえて置きます。また、棚に物をしまう時も、適当に物を置かれたら困るので、センサーを使いながら優しく物が立つように置く。そういったことも可能になっています。

次に出てくるのは開発途中の動画です。開発途中はまだまだ学習データも足りず、認識精度を高くすることができませんでした。つかむ場所を正確に認識することもできず、つかめそうでつかめないという状況が日々続いておりました。

最終的には深層学習と大量のデータを学習させることによって、高い認識精度を実現することができ、しっかりと物体をつかむということを実現することが可能になりました。こういった高い認識精度を出せるようになったのは、深層学習の力によるところが非常に大きいと言えると思います。

深層学習の特長は、高い汎化性能

では次の事例に移りたいと思います。物流の現場や、スーパーマーケットなどで物を箱に詰めるような状況を想定して作られた技術になります。こういった物流の現場などにロボットを導入していく上では、いかに導入・運用コストを下げるのかが重要になります。

そこで私たちは、深層学習で大量のデータを事前に学習させることによって、初めて見る物体でもロバストにつかめるようにするといった技術を実現しました。動画をご覧いただきたいと思います。

(動画流れる)

スーパーマーケットで買ってきたようなものを箱の中に詰めています。実際に学習する時には、この中に入っている物体は使っていないんです。しかもこれは生鮮食品なので、買ってくるたびに形などは変わってしまいます。

そのような初めて見る物体であっても、深層学習の持つ高い汎化能力、一般化性能を用いることによって、このように対応することができます。そのような高い汎化性能を持っているということが、深層学習を実世界に応用していく上で重要な特長になってきます。

(動画を指して)このようにきれいにすべての物体をつかむことができます。

少ない量のデータでも学習可能な画像検査

次は画像検査の事例です。

製造業を効率化していく上で、最後に検査をして出荷するという工程が必要になります。その検査には、いまはまだまだ人手が多くかかっているのが事実です。ですので、その検査を自動化することによって、生産効率を大幅に上げていこうということで、昨今ではこういった画像検査の技術に非常に大きな注目が集まっています。

私たちもその分野に取り組んでおります。まずは、実際にどう動いているのかをご覧いただきたいと思います。

(スライドを指して)こちらは、これから金属の部品をリアルタイムでチェックしている事例になります。正常品を乗せると「Good」と出てきます。これは「正常ですよ」ということですね。

一方で、次に乗せる部品は、左側に微妙に傷がついているんです。それを乗せると、瞬時にこれは不良品であるということを判断して、なおかつ傷がどこにあるのかというのをハイライトで示すこともできます。

もちろんこういった部品だけではなくて、さまざまな部品に対応することが可能になっています。

次はカーペットです。カーペットに汚れがあるかどうかというのを判別します。こちらは汚れがないので「Good」と出てきました。次も汚れがない物を乗せています。そうすると、このまま良品だと判断するわけですね。

次に乗せるカーペットは、黒い染みがついています。そうすると、これは汚れがありますよ、不良品ですよと示すとともに、その場所をハイライトすることができます。

この技術の大きな特長としましては、非常に少ない量のデータでも学習が可能になっているんです。あらかじめさまざまな種類の大量のデータを学習しています。それによって、実際に個々のタスクに最適化していく上では、数十個の不良品データと100個程度の良品データを集めるだけで、非常に高い性能を出すことができます。それによって導入のハードルを大きく下げることができるんですね。

こういった高い性能を出せるようになったのも、深層学習の持つ高い汎化性能によるところが大きいと考えております。

試行錯誤のサイクルをいかに早く回すことができるか

3つ事例をご覧いただきました。この事例は、どれもすぐにパッとできたわけではないんです。裏ではさまざまな試行錯誤を繰り返して、ようやくこの精度に達しました。

お片付けロボットでは5,000時間以上の時間を使って試行錯誤を繰り返してきました。ピッキングロボットでは、約100回もの試行錯誤を繰り返しています。画像検査にいたっては、数千回の試行錯誤と数千時間の学習を繰り返すことによって、ようやくこの精度に達することができたんです。

ここに、深層学習を実世界の問題に応用していく上での重要なポイントがございます。それはなにかと言いますと、この試行錯誤のサイクルをいかに早く回すことができるか(ということです)。そこが差別化のキーになってきます。

アイディアを考えて実装し、さらに学習して実験して、その結果を見て考察して、また次の手法のアイディアを生み出す。このサイクルをいかに早く回せるかが、競争力を生み出す上で極めて重要なキーになってきます。

記述速度を上げるのに重要となるのは「柔軟性」

ここからは、こういった試行錯誤をいかに早くするのか。早くするための私たちの秘訣ですね。私たちが取り組んでいる基盤技術について、説明していきたいと思います。 

まず1つ目のポイントは、そもそも深層学習の実装速度自体を上げていかないといけないということです。

一つひとつのニューラルネットワークを記述するのに時間がかかっていては、たくさん実験を繰り返すことはできません。記述速度をどうやって上げていくのかが1つ目のポイントになってきます。それを支える「柔軟性」が非常に重要な要素になってくると私たちは考えています。

ここから順を追って説明していきたいと思います。

私たちは、深層学習における柔軟性をもたらすために、「Chainer」というソフトウェアの開発を行っております。

これは2015年から提供しているオープンソースのソフトウェアです。ニューラルネットワークを簡単に、しかも柔軟に記述することができるフレームワークとして提供しておりまして、いまでは多くの方々にご利用いただいております。この「Chainer」の柔軟性を支える概念というのが、Define by Runという考え方になります。

文字通りに読むと「実行しながら定義する」。一体なんのことだと思われるかもしれませんので、ここでアナロジーを交えながら説明していきたいと思います。

柔軟性が開発効率を大幅に向上させる

Define by Runの対極に位置する考え方が、Define and Runという考え方になります。これは「定義してから実行する」ということです。

これはさながら、ASICの開発プロセスに似ているのではないかなと思います。ASICはまずは定義して、実装してからそれをシリコンに焼くことによって、初めて実行可能になるわけです。その分高い性能を出すことができますけれども、ASICに焼くことを繰り返していたら、いくらお金があっても足りなくなってしまうわけです。

ですので、シミュレーターを使ってできるだけ事前に検証しようとするんですね。ただ、シミュレーターとASICとの間には、大きな性能差があります。シミュレーターで十分に検証するというのは、なかなか骨が折れるところでして、そういったところがASICの開発における難しさの要因にはなっています。

一方で、昨今ではFPGAが回路の設計・開発に活用される機会も多くなっております。FPGAを用いることによって、試行錯誤を繰り返すことができます。実際に回路を作ってみて、それを実行してみる。すると、それをもとに書き換えることもできますし、場合によっては動かしながらライブで回路を書き換えることもできるわけです。

ですので、そういった柔軟性によって、開発の効率というのを大幅に向上させることができるようになるわけです。「Chainer」は、そういったFPGAの持つ開発の柔軟性を深層学習の世界にもたらすソフトウェアだと思っていただければと思います。

このように、Define by Runのもたらす柔軟性というのは、さまざまな分野に利用可能だと考えております。

Define by Runによる柔軟なハイパーパラメータチューニング

私たちは先週、新しいソフトウェア「Optuna」を発表させていただきました。これはDefine by Runの持つ柔軟性を、ハイパーパラメータチューニングという分野にもたらすソフトウェアとなっております。

ハイパーパラメータチューニングについて説明いたします。ニューラルネットワークを設計したとして、その真価を引き出すためにどのくらいのペースで学習すればいいのか、特定の層を何段にすればいいのか。そういった細かいパラメータをチューニングしていくことによって、やっとニューラルネットワークが真価を発揮することができるんです。

それはさながら料理を作るプロセスに似ているのではないかなと思います。料理も基本のレシピどおりに作れば、まあまあの味は出ると。しかし、実際においしいものに仕上げるためには、味覚や環境に合わせる必要があります。例えば、暑い時はちょっと味付けを変えたりしますよね。このように、味覚や環境に合わせて調味料で細かくチューニングをしていくわけです。そういったことに似ているのではないかと思います。

じゃあ、料理をする時のDefine and Run とDefine by Runの違いはなんなのか。Define and Runは、言うなればあらかじめ試したいパラメータというのを決めておいて、片っ端から作って片っ端から試食するといった様子を想像していただければと思います。

一方で、Define by Runは、調理しながら味見をして、それで次の調味料の量とかを決めていく。「ちょっとしょっぱいな」「カレー粉の量を入れすぎたな」「ちょっと減らしておこう」というように、料理をしながらダイナミックにパラメータを変えていくことができるわけです。

それによって、非常に柔軟なチューニングが可能になるだけでなくて、結果的に所定の性能にいたるまでの速度……つまりはよいパラメータを見つけるまでの速度も速くすることができます。このような力を、Define by Runはハイパーパラメータチューニングの世界に与えることができます。

学習にかかる時間をいかに短縮することができるか

「Chainer」と「Optuna」という2つのソフトウェア、これらはDefine by Runの仕組みをサポートしています。ここまでは、そういった仕組みがもたらす柔軟性について説明させていただきました。

次のポイントはスケーラビリティです。このように開発のツールをよくしていくことによって、開発の効率が上がります。しかし、実際深層学習を活用するためには、そのニューラルネットワークに対して学習をしてあげないといけないわけですね。

その学習時間が昨今では大きな問題になっています。下手をしたら、1つのGPUを使っているだけでは学習に1ヶ月以上かかってしまうということもざらにあるんです。ですので、次のスケーラビリティの話では、いかにしてたくさんのコンピュータを並べて、学習にかかる時間を短縮していくのかといったことについて述べたいと思います。

私たちは、このスケーラビリティを活用するために、「ChainerMN」というソフトウェアを提供しています。こちらもオープンソースで提供しているので、みなさまも利用することが可能になっています。

この「ChainerMN」というソフトウェアはなにをするものか。「Chainer」のプログラム自体は1ノードでの学習をサポートしているんです。しかし、そのプログラムに対して少しの改修をして「ChainerMN」対応することにより、分散して複数のコンピュータを利用し、学習させることが可能になります。それによって、マシンを用意すればするほど、学習時間を短くするといったことを実現することができるわけです。

私たちはこのソフトウェアを提供して、みなさんにご活用いただくとともに、私たちのなかでも活用しています。

1,750時間かかる学習を33時間に短縮するには?

1つ事例をご紹介したいと思います。今年の8月に、私たちはGoogle AI Open Images に参加しました。これは、物体認識の精度を競い合うコンテストです。

そのコンテストで私たちは、1位とわずかな差ではあったのですけれども、2位という成績をとることができました。私たちは世界でもトップレベルの認識技術を開発することができたと考えています。そこでキーになったのは、まず1つは技術力です。けれどもそれだけではなく、たくさんのコンピュータをフル活用することで、試行錯誤を速くできたことも重要なところです。

最終的にできたモデルは、8つのGPUを使った場合、学習に1,750時間かかってしまうんです。これでは、1回学習させるだけでコンテストが終わってしまいます。学習が終わる頃にはコンテストが終わっている、ということになってしまう。

ですので、私たちはこの学習の部分を512GPUにスケールさせることによって、1回当たりの学習時間を33時間まで短縮することができました。それによって、何回も試行錯誤が可能になって、結果として高い精度を出す手法の開発に成功しました。

このように、いまではスケーラビリティ、つまりたくさんのコンピュータを活用して学習時間を短くしていくといったことは、深層学習の研究において非常に重要なポイントになっております。

公平かつ効率的にリソースを割り当てることの重要性

では、次のポイントに移りたいと思います。次は効率性です。

もしコンピュータがあればあるほど速くなったとしても、じゃあ100万台のコンピュータを借りることができるのか(という問題があります)。リソースはどうしても有限ですので、いかに効率的に使うのかが重要になってまいります。

ここからは、効率性の向上について、私たちの取り組みを紹介させていただきたいと思います。

先ほど512GPUという単語が出てきました。社内では、NVIDIAさまのP100 GPUを搭載したクラスターと、V100 GPUを512個搭載したクラスターシステムを運用しています。

ただ、こういったスーパーコンピュータで1つの問題を解けばいいわけではないんです。実際には複数の仕事をこのクラスターで解いていく必要があります。複数のワークロードが同時に走って、しかもそのどれもがたくさんの計算を必要としてきます。そして、そのワークロードに必要なGPUリソースというのは、ジョブによって本当にまちまちなんですね。

あるジョブは500GPU占有したいが、あるジョブではその半分ぐらいしか占有しないというように、いろんなジョブがあるということです。

これで、もしなにも考えずクラスターにGPUを使うジョブをぶち込むと、大きなジョブが占有してしまって、小さなジョブを投げた人は「1週間経っても全然仕事が終わらないな」といった事態にもなりかねないわけです。

ですので、こういったところでどうやって公平に、なおかつ効率的にリソースを割り当てていくのかといったことも、重要な課題になってきます。

ミドルウェアの整備も研究開発の重要なポイントに

そこで私たちが行っている取り組みは、クラスターシステムをそのまま使うのではなく、その上に乗るミドルウェアのレイヤーを整備していくことです。それによって、この問題を解決をしようとしています。

クラスターシステムの上には、「Kubernetes」というソフトウェアを改造したミドルウェアを動かしています。この「Kubernetes」がなにをするものかと言いますと、コンテナベースの仮想化というのを用いて、GPUのコンピューティングリソースを柔軟に割り当てられるソフトウェアです。つまり、コンテナ仮想化のためのオーケストレーションのツールです。

その「Kubernetes」自体はWebサービスに最適化されているものですので、深層学習のワークロードというのはそれほど考慮されていません。私たちは「Kubernetes」に対して深層学習向けの対応をできるようにしたり、突然の大きいジョブに対応できるようにしたりといった改修を加えて運用しています。その上で、私たちは機械学習向けのジョブスケジューラーを設計して動かしています。

それによって、ジョブの割り当てを自動で整理できるようになりました。そこにどういう順番でジョブを流していけばちゃんとクラスターが埋まるようになるのか。そういったことも考えるようなスケジューラーを開発して、このシステムの上で動かしています。

それによって、ユーザーはソースコードと簡単な設定ファイルを書くだけで、すぐにこの仕組みを利用して、なにも考えずに効率的にクラスターを活用することができるようになります。

クラスターシステムをそのまま使うのではなくて、ミドルウェアをしっかり整備していくということも、深層学習でさまざまな研究開発をしていく上では、非常に重要なポイントになってまいります。

Python自身がボトルネックになってしまうわけ

私たちの効率化に向けた取り組みは、これだけではありません。ここからは、私たちの効率化の向上に向けた、新しい取り組みについて説明させていただきたいと思います。

私たちは、「Chainer」自身の高速化をしました。これまで「Chainer」というのはPythonで書かれていました。ご存知の方も多いと思うのですけれども、たいていPythonがボトルネックになってしまうわけです。PythonがCPUを埋め尽くしてしまって、GPUは60パーセントぐらいしか活用されていないといった状況が、しばしば発生していたんです。

ですので、私たちは「Chainer」のボトルネックとなっている部分をC++化することによって、「Chainer」のボトルネックを削減するといった取り組みを行っております。

(スライドを指して)こちらが「Chainer」のソフトウェアスタックになります。これは従来の「Chainer」です。このような層からなっていて、青色で書かれている部分が私たちが開発している部分になります。これに合わせて、いまPythonベースで書かれています。

そこで今回、新しく「ChainerX」という仕組みを導入しています。この「ChainerX」が書き換えるのは、このうちの下の2つのレイヤです。これによってボトルネックを削減しています。また、上のレイヤはこれまでの「Chainer」の仕組みをそのまま利用することができます。

それがなにを意味するかと言うと、これまでの使い勝手を失わずに、高速化することができるということです。そういったことを実現するような仕組みになっております。

じゃあもう少し、この「ChainerX」の部分をクローズアップしてみたいと思います。「ChainerX」は、各プラットフォームに共通の部分もあれば、そうではない各ハードウェア向けに特化している部分というのがございます。(スライドを指して)例えば「Native backend」というのは、CPUに特化している部分です。「CUDA backend」はNVIDIA GPU向けに特化している部分になります。

ここで「Custom backend」というのが出てきました。これが今回、私たちの新しく投入した仕組みでございます。「Custom backend」は名前のとおり、いろんな専用ハードウェアに対してChainer対応が簡単にできるような仕組みです。今回そういった仕組みを新しく導入することにいたしました。

このようなニーズなどに合わせて、柔軟に機能を追加していくことができるというのも、自社で深層学習のフレームワークを開発している大きなメリットでございます。

深層学習向け専用プロセッサの開発物語

そして今日、この大きなメリットを活かすための、私たちの新しい取り組みについて発表させていただきたいと思います。次は動画になっておりますので、そちらをご覧いただきたいと思います。

(動画流れる)

このように、私たちは新しい深層学習向けの専用プロセッサの開発を開始しています。

「MN-Core」というプロセッサの特徴としましては、深層学習で重要になる混合精度の行列演算に特化して、それによって、消費電力当たりの高い性能を実現することができています。こちらは500W当たり、半精度で524TFLOPSの性能を出すことができるプロセッサになっています。

ここからこのプロジェクトに取り組んだきっかけについて、少しお話しさせていただきたいと思います。

そのきっかけというのは、いまから10年以上前にさかのぼります。私が大学生の頃、「GRAPE-DR」というプロジェクトに少し参加させていただくことができたんです。「GRAPE-DR」とは、SIMD型の超並列計算機や、非常に高い消費電力当たりの性能を発揮できるスーパーコンピュータを実現するという、当時としては非常に野心的なプロジェクトだったんです。

そのプロジェクトを率いていたのは、(スライドを指して)この写真に写っていらっしゃいます平木(敬)先生と牧野(淳一郎)先生です。そこで毎回ミーティングなどに参加させてもらって、自分たちの手でコンピュータを作るというのはなんて楽しそうなんだろうと思っていました。

会社を創ってからも、こういった取り組みはいつか自分たちの手でもやりたいなとずっと思っていたんです。

ちょうど2年ほど前、「GRAPE-DR」の牧野先生と、当時一緒に活躍されていた村主崇行くんからお声がけいただいて、NEDOのプロジェクトで「深層学習向けのGRAPEを作ってみないか」というお話を受けたんです。これは大きなチャンスだと思って、私たちは取り組むことを決意いたしました。

NEDOのプロジェクトでは40nmのチップの実現を進めていたんですけれども、プロジェクトが進むにつれ、この新しいプロセッサを早く実用化していきたいといった想いがどんどん高まってまいりました。そこで、より高い性能を実現するために、12nmのプロジェクトも動かすといった決断をいたします。それが「MN-Core」のプロジェクトです。

こちらは、NEDOのプロジェクトで培われた知見も活かしつつ、12nm向けに再設計しております。プロセッサの設計や仕様策定においても、牧野先生のグループに主導していただきながら進めました。そのような経緯で「MN-Core」の開発がスタートしました。

チップを載せる基板に加え、サーバーまでも新たに設計

では実際、この「MN-Core」がどんなものなのかを、ここから紹介していきたいと思います。

この「MN-Core」について、最初の単位になるのはMAB、つまり行列演算器ブロックと呼ばれるものになります。そのなかには、MAU、つまり行列演算ユニットというのが組まれていて、このユニットは1つのMAU当たり半精度で256GFLOPSという性能を出すことができます。それが1つのMABのなかに含まれているわけです。

これを階層型に配置することによって、512MABを1つのチップのなかに集約しています。MABが16個集まってレベル1のブロックを構成します。そしてレベル1のブロックが8つ集まってレベル2のブロックを構成して、それがチップのなかに4つあると。

そういったことで、1チップ当たり512MABを集約することができています。結果として、1つのチップ当たり半精度で131TFLOPSの性能を出すことができるようになっています。

そして、この密度をさらに高くして集約するために、1つのパッケージのなかに4つのチップを集約して、それぞれのチップをチップ間で繋いでいます。それによって、この1つのパッケージ全体では、500Wで半精度524TFLOPSの性能を出すことが可能になっています。

このチップを搭載可能な基板はまだ存在していませんので、今回は基板も新たに設計しました。「MN-Core Board」といい、32GBのメモリを搭載しています。こちらの基板は先ほどの「GRAPE-DR」の平木先生にも多大なご協力をいただいて開発を進めております。

この基板は、なにげにけっこう大きいです。大きくて普通のサーバーには入りません。サーバーを作っていらっしゃるメーカーの方に質問したら、「これを格納するには7Uが必要だね」と。「そんなサーバーはないよ」ということで、今回はサーバーも新しく設計しました。

(スライドを指して)こちらがそのサーバーになります。このサーバーには、4ボードを1つのサーバーに集約することが可能になっています。今回、置ける場所も柔軟性を高めたかったので、空冷のアプローチを採用しています。空冷による冷却を前提に、熱設計も最適化しております。

このようなかたちで、いま新しい独自の専用プロセッサを開発して、それを応用していくための取り組みを行っています。

「MN-Core」開発チームリーダーが語るチップの開発状況

今日は、ここでは実際に「MN-Core」のプロジェクトを支えている開発者の1人である名村から、このチップの現在における開発状況などについて、解説をしてもらいたいと思います。

それでは名村さん、よろしくお願いします。

名村健氏:「MN-Core」開発チームリーダーをさせていただいております名村と申します。本日はご来場ありがとうございます。

短い時間ではありますが、我々が開発した「MN-Core」について、少し紹介させていただきたいと思います。

(スライドを指して)こちらが今回我々が開発した「MN-Core」になります。これ1つで半精度500TFLOPSという、大変巨大な計算能力を持ちます。消費電力はピークで約500W程度になる見込みです。つまり、1Wあたり1TFLOPSという、大変効率のよいプロセッサが開発できました。

(スライドを指して)こちらが「MN-Core Board」です。先ほど西川から少し大きめのということで話がありましたが、中央に乗っているのが今回開発した「MN-Core」です。こちらがサーバーに組み込む「MN-Core Board」になります。

今回開発しました7Uのサーバーに、1ノード当たり4枚挿入します。これによって、約2ペタFLOPSという、大変巨大な計算能力を持つサーバーを作ることができました。

ここからは、私がこのプロジェクトに関わることになった経緯を少し話させていただきます。

2年前の夏頃、「GRAPE-DR」プロジェクトで大変お世話になりました牧野先生から、「またとんでもない計算機を作るんだけど、どうですか」というお話をいただきました。これがとんでもない計算機のわけですが(笑)。その時、またトップクラスの計算機を作れるということで、大変わくわくしたことを覚えています。

その年の秋に、チップ設計について西川と打ち合わせをしました。その時に、西川から深層学習がこの世の中にどんどん普及していくこと、また、先ほどの説明にもありましたように、深層学習にはものすごい計算力が必要であること、ソフトウェアだけではなく、ハードウェアも含めて継続的に開発を進めて、社会に貢献していくんだということを熱く語られたことを、印象的に覚えています。

その強い想いを受けて、私もこのプロジェクトに参加して、ぜひ成功させたいと思い、PFNへ転籍しました。

MN-Core開発プロジェクト、2つの幸運

このプロジェクトにおいては、2つ大変幸運なことがありました。

1つ目は、「GRAPE-DR」プロジェクトで大変お世話になりました牧野先生、平木先生、稲葉先生という3人の先生にご参加いただけたことです。開発陣は先生たちの非常に厳しいレビューを受けましたが、それによって品質の高い設計ができたと考えています。

もう1つが製造です。最終的にボードにできるまでには、さまざまな工程を経るわけです。今回、豊富な経験と知識をお持ちのパートナー企業さまと一緒にこのプロジェクトを進めることができました。パートナー企業さまの多大なご尽力のおかげで、このようなものを完成させることができました。この場をお借りして、感謝を申し上げたいと思います。ありがとうございます。

引き続き、実機評価につきましても、ご支援のほど、よろしくお願いいたします。実機評価につきましては、来年の中頃までに完了させ、そのあと量産を開始する予定です。

また、これと並行して、我々は次世代のチップの設計を開始しました。現行の「MN-Core」より電力効率の高いプロセッサ。また、今後深層学習に必要とされる機能の検討。まさにDreams Start Hereです。我々の次の夢が走り始めていくわけです。

世の中にないチップをわくわくしながら開発したい方は、ぜひ弊社にお越しいただければと思っています。

(会場笑)

また、今回のプロジェクトと同様に、次回のプロジェクトでもパートナーさまのご支援が必要だと思いますので、こちらについてもご検討いただければと思います。

以上で私からの「MN-Core」の紹介は終わります。

このあと13時より、こちらにお見せしましたMN-Core、MN-Core Board、ノードの展示をいたしますので、ぜひ足を運んでいただければと思います。ありがとうございました。

(会場拍手)

レイヤ間の相乗効果が差別化のキーとなる

西川:私たちの「MN-Core」は、いま順調に開発が進捗しております。2019年のQ1にはファイナルのESを向かえ、そこから検証を重ねていきます。そして2020年に稼働を予定しております。

この「MN-Core」自体は、私たちのワークロードにかなり特化しているんです。私たちのワークロードでも、とくに計算力を必要としているユースケースに特化しております。それだけではなく、やはり私たちは今後もGPUをたくさん必要としています。GPUと「MN-Core」を集約したデータセンターを、2020年に稼働予定でございます。

現在予定しております場所は、JAMSTEC(海洋研究開発機構)さまの地球シミュレータ棟です。ここでスーパーコンピュータの稼働を開始してまいりたいと考えております。そういったスーパーコンピュータを活用していくことによって、私たちは新しい応用をどんどん生み出していきたいと考えております。

では、まとめに入りたいと思います。

私たちは深層学習の試行錯誤を速くするために、開発ツールの設計からクラスターの構築、チップの開発など、さまざまなレイヤへの取り組みを行っております。そして、それぞれ個別に取り組むのではなくて、私たちはそのレイヤ間の相乗効果を生み出すということを目指しています。

先ほどもご説明したように、例えば「Chainer」のプログラムを書くことによって、ちょっとした改修で「ChainerMN」に対応できたり、または「Chainer」を改造することによって、より新しいチップや専用のプロセッサに対応できたりといった相乗効果を生み出していくということです。私たちは、それが今後の大きな差別化のキーになっていくと考えております。

そういった差別化をしていくことによって、強い競争力を持ち、そして新しい応用というのを世の中にどんどん提供していきたいと考えております。

先ほども申し上げましたパーソナルロボット構想もその一環ですし、それだけではなく、さまざまなアプリケーションに私たちは取り組んで、まだほかの人には出せていないような成果を、これから世の中に届けていきたいと思っております。

本日はどうもありがとうございました。

(会場拍手)