お詫び:記事掲載当初、小脳のリアルタイムシミュレーションのデモとして、倒立振り子ならびにMs. Pacmanが行われたと記載しておりましたが、倒立振り子は強化学習についての紹介であり、HRAについてはまだ自身の研究される小脳ではまだ行えておらず、あくまで今後、ヒトスケールの小脳ができれば、どういったことができるのか、という紹介である、ということを山崎 准教授より確認いたしましたので、記事の修正/削除を行いました。お詫びして訂正いたします。

電通大の山崎 准教授

理研のヘテロジニアス・メニーコアワークショップで小脳のリアルタイムシミュレーションについて発表する電通大の山崎 准教授

電気通信大学の山崎 匡准教授は、小脳を研究している。その研究の一環として、小脳のリアルタイムシミュレーションに取り組んでいる。リアルタイムに動作する小脳が作れると、その小脳を使って反射神経でダイナミックに活動する小脳の理解が進む。

理化学研究所(理研)で開催された「New Horizons of Computational Science with Heterogeneous Many-Core Processors」と題するワークショップにおいて、同氏が、「Realtime simulation of cerebellum」というタイトルで同研究に関する講演を行った。

大脳(Cerebrum)は脳の80%の体積を占めるが、ニューロンの数は1.6×1010で、全体の19%でしかない。これに対して小脳(Cerebellum)は脳の10%の体積に6.9×1010個のニューロンを持ち、脳全体の80%のニューロンが小脳にある。

  • 大脳は、80%の体積を占めるがニューロン数では19%にしかならない

    大脳は、80%の体積を占めるがニューロン数では19%にしかならない。一方、小脳の体積は脳の10%であるが、脳の80%のニューロンが小脳にある (この記事のすべての図は、山崎准教授の発表資料の抜粋である)

例えば腕を動かそうとすると、大脳のCTの部分でどのように動かすのかのメンタルなモデルを考え、COの部分で筋肉を動かす指令を出す。そして破線のフィードバックで誤差を修正する(以下の図参照)。しかし、このフィードバックは遅延が大きいので、過補正による振動が発生しうる。

これに対して小脳は、大脳のCTの処理を加速するアクセラレータとして働いていると考えられているという。

  • 小脳は大脳の働きを加速させる役割を持つ

    小脳のIMは、大脳のCTの処理を加速するアクセラレータの役目を果たしていると考えられている

ニューロンはシナプス経由で入力スパイクを受け取り、それにシナプスの重みを掛けて積分して、その値がしきい値を超えるとスパイクを出力するという動作をする。

  • ニューロンはシナプス経由で入力情報を受け取り、それに重みを掛ける

    ニューロンはシナプス経由で入力を受け取り、それに重みを掛ける。すべての入力を積分して、その値がしきい値を超えるとスパイクを発生するという動作をする

小脳は、ニューロンの数は多いが、同じ構造が規則的に繰り返されている。このため、小脳は高いニューロン密度となり得ると思われる。

PEZY-SCを使った菖蒲システムでは、1チップで2mm角の小脳の処理を分担させた。その中には100万個のGranule Cell、1024個のGorgi Cell、32個のPurkinje Cell、32個のBasket Cellと各1個のInferior OliveとVestibular nucleiが含まれている。

  • 小脳のニューロンネットラーク

    小脳のニューロンネットワーク。これは2mm角の領域で、これの繰り返しで小脳が作られている

Purkinje Cellは32個あり、それぞれが25万6000個の入力を持つ。

  • プルキンエセルは25万6000入力

    プルキンエセルは25万6000入力で、それぞれに重みを掛けて合計を計算する。

このリダクション演算を、次の図のように、まず、25万6000入力を1000入力のグループに分け、1000入力の合計を計算してPrefectureのL3キャッシュに入れる。次にCityは256個にまとめられたPrefectureからの出力を16個のグループにまとめ、グループごとに合計してCityのL2キャッシュに入れる。さらにVillageは16個の入力の合計を求めるというやり方で256K入力のリダクションを行っている。このやり方は、PEZY-SCのPEとキャッシュ階層に合わせた作りになっている。

  • プルキンエセルの25万6000入力はPrefectureで1000入力のグループごとに合計を計算して、L3キャッシュ経由でCityレベルに送る

    プルキンエセルの25万6000入力はPrefectureで1000入力のグループごとに合計を計算して、L3キャッシュ経由でCityレベルに送る。Cityレベルは16個の合計を計算してL2キャッシュに入れ、Villageレベルに送る。最後にVillageレベルで16個の値の合計を計算する

チップ間の通信は、左端の図のようにKernelで計算した値を、MPI通信で次のブロックに送るというのが基本的なやり方であるが、中央の図のように、計算と通信を並列に実行する方が効率が良い。この小脳シミュレーションでは、右端の図のように、複数の計算をまとめてMPI通信を行い、通信は計算と並列に実行することにより、通信オーバヘッドをさらに削減している。

  • 小脳のシミュレーションの演算イメージ

    小脳のシミュレーションでは、右端の図のように、数回の計算をまとめてMPI通信を行い、計算と並列に通信を行い、通信時間を隠蔽して、高速化している。/p>

これまでの研究ではPEZY-SCベースの菖蒲スパコンを使っていたが、今回、PEZY-SC2ベースの暁光スパコンに移植を行った。暁光の1万チップのPEZY-SC2のうちの7,920チップを使っており、ほぼ、フルノードのシミュレーションとなっている。

この小脳は80億ニューロンを持ち、おおよそ、猿2匹分の規模の小脳をリアルタイムで動作させることに成功した。6秒分のシミュレーションを2.2秒で完了でき、菖蒲でのシミュレーションに比べて2.3倍、速くなっている。

なお、160億ニューロンのモデルはリアルタイムでシミュレーションすることはできなかった。人の小脳は、690億ニューロンであり、これをリアルタイムシミュレーションするには、さらに高性能のコンピュータが必要である。

  • 暁光の搭載チップ総数1万のうち、7920チップを使うことで80億ニューロンの小脳のリアルタイムシミュレーションを実現した

    暁光の1万チップの内の7920チップを使い、80億ニューロンの小脳のリアルタイムシミュレーションに成功した