脳の仕組みとコンピュータ

SC18において英マンチェスター大学のSteve Furber教授が生物学的な脳を模した超並列コンピューティングを行う「SpiNNaker」について招待講演を行った。

  • Steve Furber教授

    生物学的な脳を模した超並列コンピューティングについて講演するマンチェスター大学のSteve Furber教授(このレポートのすべての図は、SC18でのFurber教授の発表スライドを撮影したものである)

大脳皮質はスパイク(電気パルス)で動作する。そして、次の図に示すような複雑な情報の流れを持っている。大脳皮質は2次元の広がりを持ち、ニューロン間の接続は10%未満と疎な接続になっている。

そして、フィードフォワードの出力とフィードバックの出力を持ち、それらは他のニューロンのフィードフォワードの入力とフィードバックフィードバックの入力に接続されている。

  • 大脳皮質はスパイク型ニューロンで作られる

    大脳皮質はスパイク型ニューロンで作られ、2次元の皮質の層となっている。複雑な情報の流れを持ち、フィードフォワードの入力、出力とフィードバックの入力と出力を持つ。接続は疎で、接続されているのは10%未満である

大脳皮質モデルのシミュレーションには効率的なスパイク通信ができ、疎行列の計算能力の高いJUQUEENスパコンを使用している。

  • シミュレーションに用いたJUQUEENスパコン

    シミュレーションに用いたJUQUEENスパコン。スパイク通信が効率的に行える。

また、大脳皮質を模擬する専用ハードウェアも開発している。計算回路の近くにメモリを配置し、低電力でリアルタイムに計算ができ、消費電力は62mWである。

  • チップの消費電力は62mW

    大脳皮質をモデルするハードウェアは、メモリはプロセサと直結しており、低電力で動作する。チップの消費電力は62mW

産業界ではスパイク型ではないニューロンを用いるものが多いが、IBMのTrueNorthやIntelのLoihiなどスパイク型のニューロンモデルを使うものも出てきている。

  • 産業界ではスパイク型でないニューロンを使うものが多い

    産業界ではスパイク型でないニューロンを使うものが多いが、IBMのTrueNorthやIntelのLoihiのようにスパイク型のニューロンモデルを使うものも出てきている

SpiNNakerのハードウェア構成

SpiNNakerプロジェクトは100万個の携帯電話のプロセサを使って1台のコンピュータを作るプロジェクトで、大体、ヒトの脳の1%程度の規模のニューラルネットワークのシミュレーションができる。また、これはネズミの脳で言えば10匹程度の規模である。

なお、SpiNNakerのノード間は、神経細胞と同様に、非同期の通信を行う。

  • SpiNNakerプロジェクト

    SpiNNakerプロジェクトでは100万個のモバイルフォーンのプロセサコアを使って人の脳の1%に相当する規模のモデルを作る

各ノードはSpiNNakerチップとDRAMからなり、ノード間のリンクは双方向通信ができるようになっている。接続トポロジは、2次元のTriangularトーラスになっている。

  • 各ノードはSpiNNakerチップとDRAMからなる

    各ノードはSpiNNakerチップとDRAMからなり、接続トポロジは2次元のTriangularトーラスとなっている

次の図にSpiNNakerチップの外観とダイ写真を示す。このチップはUMCの130nmプロセスで作られている。

  • パッケージされたSpiNNakerチップとダイの写真

    パッケージされたSpiNNakerチップとダイの写真

チップの中央にはルーターがあり、スパイクパケットのルーティングを行う。ルーティングテーブルもこの部分に格納されている。

中央のルーターの上下の4つの横方向の帯状の領域に合計16個のプロセサがあり、左右にも2個のプロセサがあるので、全部で18コアとなっている。各プロセサコアはニューロンとシナプスの状態を計算する。

各プロセサに隣接して6つのTightly Coupled RAMがある。この部分はData MemoryやRAM Portと書かれているが、これは用途の違いで、物理的には同じメモリである。

RAMポートは、シナプスの状態を記憶する。また、RAMポートはアクティビティのログを記憶する。そして、データメモリはカーネルの状態やニューロンの状態を記憶する。

  • SpiNNakerチップのダイの各機能の配置を示す図

    SpiNNakerチップのダイの各機能の配置を示す図。中央にルーターが置かれ、周囲にプロセサ(青)とメモリ(黒)を隣接して配置したユニットが18個集積されている

ルーターは18個のコアと6本のリンクとの接続ポートを持ち、それらとの間でパケットの送受を行うことができる。6本のリンクは東西南北と北東、南西方向の接続に使われ、6リンク並列に動作する。このようなマルチキャストの通信の場合、小規模な構成の場合は、次元順に経路を選択するDimension Routing(次元ルーティング)でよいが、大規模になると効率が悪くなることから、4種のルーティングアルゴリズムを考案し、使い分けを行っているという。

  • 他ノードへのリンクは6本

    他ノードへのリンクが6本あるが、マルチキャストの場合は次元ルーティングでは効率が悪いので、4種類のルーティングを考案し、使い分けを行っている

SpiNNakerのプログラムはPyNNスクリプトで記述

SpiNNakerのプログラムはPyNNスクリプトで記述する。それをsPyNNakerソフトウェアでPyNNの版数に依存しない形式に変換して、SpiNNFrontEndCommonのフロントエンド機能を使ってアプリケーションをSpiNNakerマシンで実行する形式に変換する。

そして、SpiNNFrontEndCommonで作られる実行形式とプレコンパイルした命令コードをSpiNNakerハードウェアで実行する。実行結果はフロントエンドを使って表示される。

  • SpiNNakerのソフトウェアのハイレベルフロー

    SpiNNakerのソフトウェアのハイレベルフロー

SpiNNakerチップは18個のArmコアを持ち、SpiNNakerボードには48チップが搭載される。HBP(Human Brain Project)のプラットフォーム全体では11キャビネットに合計1M個を超えるarmコアが詰め込まれている。このマシンは2016年の3月30日に稼働を開始した。

  • SpiNNakerチップには18コアが集積

    SpiNNakerチップには18コアが集積され、SpiNNakerボードには864コア(48チップ)が搭載されている。HBPプラットフォーム全体では1Mを超えるコアが使われている

このHBPプラットフォームの2,901コアを使って、77,169ニューロン、285Mシナプスの1mm2分の大脳皮質のシミュレーションを行った。

  • 大脳皮質のフルスケールのシミュレーション

    2901コアを使って1mm2分の大脳皮質のフルスケールのシミュレーションを行った

また、37Kニューロン、86Mシナプスを使い、制約ソルバーで数独を解いたり、地図の塗分け問題、イジングスピン系の解を求める問題を解いたとのことである。

  • 問題を解く

    制約ソルバーを使って数独の問題を解いたり、地図の塗分け問題やイジングスピン系の解を求める問題を解いた

人の脳全体のシミュレーションを目指す「SpiNNaker2」

引き続いて、160個のArmコアを集積するSpiNNaker2の開発を行っている。SpiNNaker2は22nmプロセスを使用し、人の脳全体のシミュレーションを目指す(なお、Furber教授の発表は28nmプロセスを使用するSpiNNaker2のプロトタイプに基づくものであるようである。この発表の図ではルーターの両側に4個のQPEが書かれているが、22nmプロセスで作られるSpiNNaker2ではこの部分は周辺回路となっており、コア数は144となっている)。

SpiNNaker2はPoPで8GBのLPDDR4 DRAMチップをロジックチップの上に乗せた構造になっている。また、チップ間のリンクが1本増えて7本となっている。

ロジックチップは4つのPEとメモリがまとめられたQPE(Quad PE)が単位となっており、40個のQPEが1チップに集積されている。

  • SpiNNaker2は22nmプロセスを採用

    SpiNNaker2は22nmプロセスを使い、160コア(144コアという論文もある)を集積する。また、PoPで8GBのLPDDR4メモリをCPUチップと重ねて搭載している

SpiNNaker2では、ダイナミックなニューラル電力制御、指数関数アクセラレータ、乱数発生器などの採用によりハードウェア的に消費電力の削減、性能の改善を行っている。

  • SpiNNaker2

    SpiNNaker2では、ダイナミックな電力制御、指数関数アクセラレータ、乱数発生のハードウェア化などの改善により、電力効率の改善と性能向上を行っている

SpiNNaker2のPEでは、パワーゲートを採用し、ダイナミックに電力を制御している。また、SRAMはクロスバ経由でつながっており、コア間でメモリを共用することができ、柔軟性の高いメモリの使用ができるようになっている。

そして、Multiply-Accumulate(MAC)アクセラレータの搭載でマシンラーニングの演算性能を改善している。

  • SpiNNaker2ではエネルギー効率を改善

    SpiNNaker2ではパワーゲートを取り入れてエネルギー効率を改善。クロスバを経由したメモリアクセスにより隣接Coreとメモリ共有の柔軟性を改善。積和演算のアクセラレータの搭載などで電力効率を改善している

また、各PEに16×4のMACアレイを搭載した。このMACアレイは8bit整数入力で積を計算し、29bitのアキュムレータに足し込みを行う。そして、このMACアレイはローカルSRAMとNoC(Network on Chip)に接続されており、ローカルRAMやNoCからデータを受け取ったり、計算結果をローカルRAMに格納したり、NoC経由で他のコアに送ったりすることができる。

MACアレイは自律的に動くことができるので、8bit精度の整数で良い場合は積和演算の負荷をCPUからオフロードすることができる。250MHzクロックの場合、MACアレイのピーク演算性能は4.6TOPSである。消費電力は約0.72Wなので、6.4TOPS/Wのエネルギー効率である。

  • PEごとに16×4のMACアレイがある

    PEごとに16×4のMACアレイがある。入力は8bit整数で、29bitのアキュムレータに積を足し込む。MACアレイは自律的に動けるのでCPUの負荷をオフロードすることができる

Deep Rewiringは実際に配線を変更するわけではないが、数値的に大きな影響を与えない項を削除するなどによりシナプスを減らし、その結果、場合によってはニューロン自体も削除する。これによりLeNet 300の場合、0.6%の接続まで接続を簡単化しても96.2%の認識率が得られたという。

この接続の簡単化により、重みのメモリ量が1080KBから36KBに減少し、x86での元のネットワークの学習の実行に比べて100xの電力削減が出来たという。

  • MNISTの手書き数字の画像認識

    計算に大きな影響を与えない項を削除して0.6%の接続まで減らしても、MNISTの手書き数字の画像認識の場合では96.2%の認識率が得られた

SpiNNakerは20年前から構想され、この10年間開発を行ってきた。世界中に研究グループがあり、約90種のボードが開発された。そして、100万コアのマシンが完成した。ソフトウェアの開発はHBPがサポートしてくれている。

産業界ではスパイク型でないニューロンが多く使われているが、スパイク型は非常に高いエネルギー効率を実現できる可能性がある。SpiNNakerは低電力ニューラルネットの理想的な研究プラットフォームである。

  • SpiNNakerは20年前から構想された

    SpiNNakerは20年前から構想され、10年前から建造が行なわれている。スパイク型のニューロンは、現在産業界で使われている非スパイク型のニューロンに比べて消費電力が小さく、電力効率を改善できる可能性がある。SpiNNakerは低電力ニューラルネットの研究に最適のプラットフォームである