お詫び:記事掲載当初、小脳のリアルタイムシミュレーションのデモとして、倒立振り子ならびに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%のニューロンが小脳にある。
例えば腕を動かそうとすると、大脳のCTの部分でどのように動かすのかのメンタルなモデルを考え、COの部分で筋肉を動かす指令を出す。そして破線のフィードバックで誤差を修正する(以下の図参照)。しかし、このフィードバックは遅延が大きいので、過補正による振動が発生しうる。
これに対して小脳は、大脳のCTの処理を加速するアクセラレータとして働いていると考えられているという。
ニューロンはシナプス経由で入力スパイクを受け取り、それにシナプスの重みを掛けて積分して、その値がしきい値を超えるとスパイクを出力するという動作をする。
小脳は、ニューロンの数は多いが、同じ構造が規則的に繰り返されている。このため、小脳は高いニューロン密度となり得ると思われる。
PEZY-SCを使った菖蒲システムでは、1チップで2mm角の小脳の処理を分担させた。その中には100万個のGranule Cell、1024個のGorgi Cell、32個のPurkinje Cell、32個のBasket Cellと各1個のInferior OliveとVestibular nucleiが含まれている。
Purkinje Cellは32個あり、それぞれが25万6000個の入力を持つ。
このリダクション演算を、次の図のように、まず、25万6000入力を1000入力のグループに分け、1000入力の合計を計算してPrefectureのL3キャッシュに入れる。次にCityは256個にまとめられたPrefectureからの出力を16個のグループにまとめ、グループごとに合計してCityのL2キャッシュに入れる。さらにVillageは16個の入力の合計を求めるというやり方で256K入力のリダクションを行っている。このやり方は、PEZY-SCのPEとキャッシュ階層に合わせた作りになっている。
チップ間の通信は、左端の図のようにKernelで計算した値を、MPI通信で次のブロックに送るというのが基本的なやり方であるが、中央の図のように、計算と通信を並列に実行する方が効率が良い。この小脳シミュレーションでは、右端の図のように、複数の計算をまとめてMPI通信を行い、通信は計算と並列に実行することにより、通信オーバヘッドをさらに削減している。
これまでの研究ではPEZY-SCベースの菖蒲スパコンを使っていたが、今回、PEZY-SC2ベースの暁光スパコンに移植を行った。暁光の1万チップのPEZY-SC2のうちの7,920チップを使っており、ほぼ、フルノードのシミュレーションとなっている。
この小脳は80億ニューロンを持ち、おおよそ、猿2匹分の規模の小脳をリアルタイムで動作させることに成功した。6秒分のシミュレーションを2.2秒で完了でき、菖蒲でのシミュレーションに比べて2.3倍、速くなっている。
なお、160億ニューロンのモデルはリアルタイムでシミュレーションすることはできなかった。人の小脳は、690億ニューロンであり、これをリアルタイムシミュレーションするには、さらに高性能のコンピュータが必要である。