( 調査 )Deep Learning 計算を、FPGA 専用アクセレレータ 上で 高速 に 行う試み ~ Deep Learning 計算基盤 を、GPU から 自社製FPGA に 切り替える動き が 加速中。今後はさらに、Neuromorphic chip がやってくる?

  • 107
    Like
  • 2
    Comment
More than 1 year has passed since last update.

1. 個人プログラマの手で、機械学習 / Deep learning 専用 FPGAアクセレレータを論理合成した先行事例 が Webに公開されている

Google検索でしらべたところ、以下 の 高前田 伸也 氏 のSlide Shareが、公開されている先行事例として先駆的です。
( 以下、下記 の SlideShare から 該当ページを抜粋して転載 )
(Slide Share) 高前田 伸也(奈良先端科学技術大学院大学)「FPGA・リコンフィギャラブルシステム研究の最新動向」

a.PNG


b.PNG


c.PNG


d.PNG


e.PNG


f.PNG


g.PNG


h.PNG


i.PNG


【 機械学習 事例 2 】異常値検出

(SlideShare) 林 愛美(慶應義塾大学)「FPGA NICを用いた機械学習による外れ値検出」

※ スライド終盤に、k-means法 など、他の手法のFPGA実装イメージ図について言及あり
( 以下、上記 林氏スライドより一部 抜粋して転載 )

a.PNG

b.PNG

c.PNG

d.PNG

e.PNG

f.PNG

g.PNG

h.PNG

i.PNG

j.PNG

k.PNG

l.PNG

m.PNG


【 機械学習 事例 3 】自己組織化モデル(SOM)

(論文) 小埜 ほか 「SOM^2のFPGA実装 : システムへの組込みを目指したアルゴリズム開発(機械学習,一般)」

高階のSOMであるSOM^nは,データを高階の積空間にマップする自己組織化アルゴリズムである.SOM^nはデータの多面的な表現を自己組織的に獲得することができるため,自律ロボットの知性を実現する基盤的アルゴリズムとして期待される.

SOM^nは扱えるデータの規模を質・量ともに増加させることができるが,それを現実のロボットに実装して実時間で処理させるには,高速化・小型化・低消費電力化が欠かせない.

本稿では,2階のSOMであるSOM^2のアルゴリズムをハードウェア化に合わせて見直し,FPGAに実装することを試みたので報告する.


【 機械学習 事例 4 】ニューラル・ネットワーク・モデル

鳥飼 弘幸(豊田理研スカラー、大阪大学大学院基礎工学研究科)「自己再構成非同期順序回路に基づいたFPGA神経細胞モデル」

In this article, we report our research results on an FPGA-friendly multi-compartment neuron model,which is based on our self-reconfigurable asynchronous sequential logic neuron (membrane) model.

It is shown that the multi-compartment model can reproduce typical behaviors observed in dendrites of a representative neuron model as well as biological neurons.

鳥飼 弘幸(大阪大学大学院基礎工学研究科)「自己再構成非同期順序回路を用いた脳現象再現専用 VLSI の開発とその工学的・医工学的応用の基礎固め

本研究では脳現象再現専用 VLSI の開発の基礎として,自己再構成非同期順序回路を用いたマルチコンパー
トメント神経細胞モデルを構成する.

各コンパートメントモデルは離散状態を持ち,その動作は非同期セルオートマトンで記述される.同コンパートメントモデルの結合系を用いることによってマルチコンパートメント神経細胞モデルを構成する.マルチコンパートメント神経細胞モデルが神経細胞の樹状突起における典型的な電位伝播特性を再現できることを示す.

(H24年度 修士論文)小林 航(東京大学大学院 工学系研究科)「デジタル演算回路による3変数 シリコンニューロンの設計」

本給ではデジタル演算回路で多様なダイナミクスを持つニューロンモデル、また機能的な神経ネットワークを実装することを目的とする。

電子回路でニューロンモデルを実装することは、ニューラルネットワークの並列計算を可能にし、また生体とのハイブリッドシステムや柔軟な情報処理が可能なロボットとしても応用される可能性があるため、学術的、光学的両面の目的から研究が望まれる。

デジタル演算回路でニューロンモデルを実装できればHDLを公開することでFPGAデバイスを用いて誰でも手軽にニューラルネットワークを手にすることができる。


(参考)Python 抽象メモリ PyCoRAM

(slide share) 高前田(山崎)伸也 (奈良先端科学技術大学院大学)「PyCoRAMによるPythonを用いたポータブルなFPGAアクセラレータ開発 (チュートリアル@ESS2014)」

j.PNG


k.PNG


l.PNG


m.PNG


n.PNG


o.PNG


2. 巨大企業 の 動向 ~ 機械学習・Deep Learning 計算実行基盤を、GPU から FPGA 専用アクセレレータに乗り換える動き

2-1. JP Morgan

JP Morgan がFPGAで、デリバティブ金融商品の「トランシュ」毎のリスク評価のバッチ処理計算 高速化を達成

Hatena::Diary スティルハウスの書庫 (2013-09-03) 「JP Morgan Chaseがデリバティブ専用スパコンをFPGAで作った話 #fpgax」

金融系でFPGAというとHFTへの応用が知られてるけど、この事例はリアルタイムトレードの話ではない。
金融業務で必要とされるバッチ処理やHPC(High Performance Computing)でもFPGAが本格的に使われ始めてるという話だ。

元ネタは、2011年にJP Morgan Chaseの人がスタンフォード大学で講演した内容。

( 以下、上記 ウェブサイトより一部 転載 )

1.PNG


2.PNG


2-2. Microsoft

Microsoft のBing検索 & Deep Learning 画像認識サービスを支える計算エンジンは、すでに GPUから、すでに同社内製 FPGAマシン に取って代わられている

  1. 日経テクノロジー online (2015/03/13) 「Microsoftの深層学習はFPGAで動く」

1.PNG

  1. 日経テクノロジー online (2015/02/24) 「Microsoftが今度はFPGAでDeep Learningを実装、画像認識を高速化」

Microsoft社は、FPGA搭載サーバー「Catapult」の技術を用いて、ニューラルネットワークの一種であるDeep Learning(深層学習)の演算を高速化した成果を発表した。
従来、FPGAで達成されていた成果と比較して約3倍の高速化を実現しているほか、「GPUでのDeep Learningにも比較しうる性能」(同社)としている。

  1. ITpro by 日経コンピュータ (2014/06/17) 「マイクロソフトがFPGAをデータセンターに投入、Bing検索を高速化へ」

2.PNG


(関連)kazunori279さん Qiita投稿記事 (2014/12/08) 「マイクロソフトはどうやってBingをFPGAで実装したか」

3. CPU最大手 の Intel.inc も、計算チップの CPU から FPGA への主役交代を見据えた動き? ~2兆円規模の巨大M&Aで、FPGA世界2位のAltera社 買収を発表

  1. 日本経済新聞 (2015/06/10) 「インテル「2兆円買収」で手に入れる3つの未来」

米Intel(インテル)は、FPGA(ハードウエアの再構成が可能なIC)メーカー大手の米Altera(アルテラ)を現金167億米ドルで買収する。
1株当たり54米ドルという買収金額は、両社の交渉が初めて報じられた2015年3月27日の前日の株価である34.58米ドルよりも56%高い。かなり高評価での買収である。

今回の買収話が明らかになった時、業界アナリストの多くは、比較的冷ややかな見方をしていた。パソコン向けマイクロプロセッサー市場に比べてFPGAの市場規模が小さく、噂される買収金額の割に売上高が少ないと見たからだ。確かに、過去また現時点での売り上げだけで見れば、そのような評価も当然である。

しかし最近のFPGAの用途の急拡大を見ると、今回の買収は決して“王様のお戯れ”などではないことが分かる。

過去に組み込みシステムの一部品に過ぎなかったFPGAは、今や今後の電子産業全体をけん引する可能性を秘めたチップとして脚光を浴びている(図1)。
一説では、仮に今回の買収交渉が不調に終わった場合、Intelは敵対的買収も視野に入れていたという。同社にとっては、生き残りを掛けてなりふり構わず仕掛けた大戦略なのだ。

3.PNG

  1. 日経テクノロジー online 特集 なぜ、今 FPGAなのか、最新動向を紹介 Intel、2兆円買収の真相!

4.PNG


【 参考 】 FPGA は C++言語 以外の言語からも、論理合成ソースコード を コンパイルできる

FPGAを論理合成する際、HDL(Hardware Description Language)を使わずに、C++や、Java, Python, Haskell風のコード から、「高位合成」する方法がある

【 高位合成とは? 】
高村 政孝 「高位合成を用いたFPGAの開発」

kouigousei.PNG

高位合成友の会

friend_1.PNG

日経テクノロジー online (2013/12/26) 「「論理合成の時とは、ここが違う」、高位合成の現実を経験10年の富士通QNETが語る」

エレクトロニクス業界のあらゆる場所で効率化が叫ばれて久しい。FPGAやICの設計では、そのためのツールとして高位合成に期待が寄せられてきた。


三好 健文 「JavaRockではじめる高位合成言語による気楽なFPGA開発」
( 以下、上記 三好資料 から 抜粋して転載 )

aa.PNG


bb.PNG


cc.PNG


dd.PNG


ee.PNG


ff.PNG


gg.PNG

Bluespec System Verilog など、関数型言語ベースのコードを元に、高位合成できる道もある

blue1.PNG


blue2.PNG


blue3.PNG


bluespec system verilog についての参考ウェブページ )

実際の講義内容の紹介前に,筆者の理解の範囲で,BSV言語とBSVを用いた場合の設計思想の特徴を説明する。
BSVは,関数型言語「Haskell」をベースにSystemVerilogの拡張として定義された言語であり,いわゆる「Strong Typed Language」である。
サイクル精度のマイクロ・アーキテクチャを記述対象としている。

BSVはステート・マシンを明示的に記述するのではなく,マイクロ・アーキテクチャの構成要素となっている変数レジスタやメモリー,バッファ,FIFOなどを対象にした操作を記述することが大きな特徴の一つである。
すなわち,各サイクルでそれらの構成要素に行う操作を,アトミックな条件付き動作(GAA:Guraded Atomic Action,以下,ルールと呼ぶ)として記述する。

BSVでは,常に1つのルールが選択され実行されることが基本となっている。ルールを記述する際には,他の動作を無視して,1つのルールのみに注目して動作記述を行うことが重要だとされている。
すなわち,BSVを採用する場合,これまでRTL設計者が慣れ親しんできた,RTL設計手法とは全く異なる設計概念をベースにマイクロ・アーキテクチャを記述することになる。

例えば,Bluespecの説明では,「状態ベースの記述」と解説されることがあるが,ここでいう「状態」とは,レジスタやメモリーなど値の保持を行うストレージ・コンポーネント全体での値の組,即ち数学的に厳密な意味での対象回路の「状態」を指している。上述したように,明示的にステート・マシンを記述するものではない。合成結果のRTLを幾つか眺めて見たが,状態レジスタやステート・マシンに相当する記述は,一切見当たらなかった。

関数型言語で高位合成をがすでにプロダクトになっていた。

まずはこのPDF見て欲しい。

Future Programming of FPGAs

英語だけど、10ページくらいしかないから大丈夫。

40年前の話を持ち出して、ソフトウェアの世界では、FortranとCは成功したけどLisp/Prologは失敗したよね。
でもハードウェアの世界は違うよ。C/C++/Javaが失敗して、Bluespecが成功するよ。からプレゼンは始まる。

関数型言語で高位合成を

最近schemeを勉強していて思ったこと。
「関数型言語をそのまま論理合成できたらおもしろくない?」

ASIC/FPGAの信号処理の開発は、
①処理のアルゴリムを数式で書く
②アルゴリズムをC言語に書き直す。(C言語でテストを行う)
③RTLへ変換する。

の3段階が主流です。
RTLの後もいろいろあるのですが、VerilogなりVHDLまで行ってしまえば、あとは枯れた技術なので何も手を入れる必要がない。
SystemCとかは②と③の間全体を受け持ち、高位合成ツールというのは②から自動的に③を作る。ざっくりいうとそんな感じ。

話を関数型言語で考えてみる。
関数型言語というのは、いわいるy=f(x)のような写像を元にプログラムを組み立てる。ある入力に対して一意の出力があるような、そんなシステムだ。実際には、写像だけでは処理しにくいので、状態を表せるような仕組みも持っている。

もし、①のアルゴリズムが関数型言語で表現できるなら、ASIC/FPGA化は簡単にできる気がする。
本質的に、y=f(x)というのは単なる組み合わせ回路だ。そして、状態を表すのにフリップフロップが使える。再帰関数が、末尾最適化されているなら、計算の結果を特定のフリップフロップに上書きし続ければ、そのまま計算できる。

で、僕が思いついたフローはこれ。
①処理のアルゴリムを数式で書く
②'アルゴリズムを関数型言語で書き下ろす。
③RTLへ変換する。


( Lava についての参考ウェブページ )

lava.PNG

lava3.PNG

lava2.PNG


【 MATLAB スクリプト を C言語経由で、高位合成した事例 】

日経テクノロジー online (2010/11/29) 「「高位合成を利用して,MATLABのM言語モデルをLSI設計に生かす」,富士通QNETが講演」
[富士通九州ネットワークテクノロジーズ株式会社 (第9回 カーエレクトロニクス研究会)「MATLABとC言語ベース高位合成の連携

によるハードウエア設計事例」](http://www.car-electronics.jp/files/2012/10/CEW09_Saitou.pdf)

( 以下、上記 研究会のWeb一般公開 資料 より一部抜粋して転載 )

matlab1.PNG


matlab2.PNG


matlab3.PNG


matlab4.PNG


matlab5.PNG


matlab6.PNG


matlab7.PNG


matalab8.PNG


4. 米国国防総省(DAPRPA) & IBM、EU、英国などの国際・国家プロジェクト が競走を開始した 「脳型コンピュータ Neuromorpphic computing」 は、機械学習 & Deep Learning 専用 FPGAアクセレレータとどう切り結ぶのか注目

本記事投稿者 Qiita記事 「(基礎調査)脳型コンピュータ・チップ 「ニューロモーフィック・チップ」、Facebook "DeepFace"、Google / Baidu(百度)の自律走行車・・・Deep Learning関連技術の産業化・社会基盤取り込み化はいま、どこまで進んでいるのか?」

(1)Neuromorphic tip (脳型コンピュータチップ)


世界各国で競争が進んでいる「ニューロ・モーフィック・コンピューティング」開発計画

1.( 米国 )SyNAPSE(Systems of Neuromorphic Adaptive Plastic Scalable Electronics) プロジェクト(高等国防研究計画局)

synapse_darpa1.PNG

synapse_darpa_2.PNG


アメリカだけではない。EUも国際プロジェクトをすでに始動させている。

※ 以下の2つの計画は、EUによる人間の脳メカニズム解明プロジェクト「Human Brain Porject」と提携しているとのこと

2.( EU )Human Brain Project

The Neuromorphic Computing Platform (NCP) consists of two complementary and configurable neuromorphic computing systems, based on custom hardware designs.

These systems are designed to emulate neural microcircuits and __apply brain-like principles in machine learning and cognitive computing, i.e. principles that will allow the machine to learn in __the way that the brain does rather than be programmed like a normal computer_.

To do this, the Neuromorphic Computing Platform uses state-of-the-art electronic component and circuit technologies and incorporates new knowledge gained from other areas of neuroscience research, e.g. experimental neuroscience, theoretical neuroscience and brain modelling.

The Neuromorphic Computing Platform provides remote access to large-scale neuromorphic computing systems based in Manchester, UK and Heidelberg, Germany.

Together with the TrueNorth system by IBM these constitute the only neuromorphic systems in the world capable of running simulations of neural circuit systems with state-of-the-art models of neurons,synapses and plasticity in either real time or accelerated time (i.e. 10,000 times faster than real time).

The Manchester system is a Multi-Core Neuromorphic System, built on the work of the UK SpiNNaker project.

This system is based on individual chips, each with 18 ARM cores, consisting of 500,000 processors. A single chip can simulate 16,000 neurons with 8 million plastic synapses running 10.000 times real time.

The Heidelberg system is a Physical Model Neuromorphic System, which builds on capabilities developed in the European FACETS and BrainScaleS projects.

This system has 20 silicon wafers in 180nm process technology, with circuit models of 4 million neurons and 1 billion synaptic connections.

Rather than using pre-programmed code, the system evolves according to the physical properties of the electronics.

Both systems can be configured using the PyNN network description language. >
The PyNN description language is platform independent and can be used with both the SpiNNaker and BrainScaleS neuromorphic platforms as well NEST, Neuron and many other software simulators.


ニューロ・モーフィック・コンピュータ上で走らせるプログラムを記述するプログラミング言語として、Python の PyNNモジュール が開発されている、というくだりが最後にある。

A Python package for simulator-independent specification of neuronal network models

PyNN (pronounced ‘pine’) is a simulator-independent language for building neuronal network models.

In other words, you can write the code for a model once, using the PyNN API and the Python programming language, and then run it without modification on any simulator that PyNN supports (currently NEURON, NEST and Brian) and on a number of neuromorphic hardware systems.

上記PDFの表紙には、PyNN Mini Tutorial created for use with a FACETS Live System
と書いてある。

FACETS project とは、以下のこと。

The goal of the FACETS (Fast Analog Computing with Emergent Transient States) project was to create a theoretical and experimental foundation for the realisation of novel computing paradigms which exploit the concepts experimentally observed in biological nervous systems.

The continuous interaction and scientific exchange between biological experiments, computer modelling and hardware emulations within the project provides a unique research infrastructure that will in turn provide an improved insight into the computing principles of the brain.

This insight may potentially contribute to an improved understanding of mental disorders in the human brain and help to develop remedies.

( 中略 )

1 Preparation

In this section we will get your computer ready, so that you can edit and execute scripts written in PyNN, a simulator-independent modeling language to describe neural network experiments.

1.1 Booting the FACETS Live System

• If you have a FACETS Live Stick: Insert it into a USB-port of your computer and reboot
the system from this stick. The BIOS of your system has to be configured such that booting
from USB is the first boot option.

• If you have a FACETS Live CD: Insert it into the CD drive of your computer and reboot the system from this CD. The BIOS of your system has to be configured such that booting from CD is the first boot option.

A fully functional Ubuntu Linux environment will start up - the login should happen automatically.

a FACETS Live とは、無料でダウンロードできるニューラル・ネットワークモデルのシミュレータのことのようだ。

普通のPCに、a FACETS Live が 入った USB か CD を 入れて起動させることができ、その上で Python の PyNNモジュールを使った Pythonプログラミングでニューラル・ネットモデル を 記述できるようだ。

Kirchhoff-Institut für Physik > Electronic Vision(s) Group > News > FACETS Live System Available

FACETS Live System Available

Free Download: A bootable live system with neural network simulators, a unified interface (PyNN), a beginner tutorial, movie, papers etc.

Run the bootable FACETS Live System on your own computer and learn how to set up neural network experiments with a unified description language that can be used - among other backends - for the neuromorphic hardware systems developed in Heidelberg and Dresden.


EU Human Brain Project を支える 2つの Neuro-morphic computer は、以下の2つとされている

(1)BrainScaleS(brain-inspired multiscale computation in neuromorphic hybrid systems)プロジェクト(独 ハイデルベルク大学等)

brainscales.PNG

(2)(英国)spiNNaker(spiking neural network architecture)プロジェクト(マンチェスター大学等)

apt1.PNG

paper1.PNG

paper2.PNG


IBM

米国高等国防研究計画局(DARPA)のSyNAPSEプロジェクトに参画

ibm_truenorth_wired.PNG

ibm.PNG

ibm2.PNG

ibm3.PNG

ibm4.PNG

そのIBMが、ノイマン型とは異なる新たな半導体コンピュータの開発を進めている。2014年8月7日には米コーネル大学と共同で、ニューロン(脳神経細胞)の働きを模したニューロモーフィック・チップを開発したと発表した(写真1)注1)。

注1)米国防高等研究計画局(DARPA)が主導する、ニューロン細胞の機能を再現するチップの開発プロジェクト「SyNAPSE(Systems of Neuromorphic Adaptive Plastic Scalable Electronics)」の一環である。

IBMはこのチップに、建物の上から撮影したカラー映像(400×240ピクセル、30フレーム/秒)を入力し、歩行者5人、自転車乗り1人をリアルタイムに追跡することに成功した。この時のチップの消費電力は63mWだった。単純な比較はできないが、GPU(グラフィックス処理プロセッサ)と比べてニューラルネットの1演算当たりの消費電力は10分の1以下だという。

このチップは、半導体プロセッサの中でも最大級といえる54億個のトランジスタを搭載。これらが100万個のニューロン、2億5600万個のシナプス(ニューロン間結合)を備えたニューラルネットワークとして機能をする(写真2)。ニューロン数でいえば昆虫の脳に相当する(人間の脳の1万分の1)。

このチップの最大の特徴は、同社が「TrueNorth」と呼ぶ、非ノイマン型のアーキテクチャを採用した点だ。TrueNorthチップは、一般的なプロセッサとは異なり、メモリーからプログラムを逐一読み込む必要はない。

(中略)

今回IBMが開発したチップは、データ処理の最小単位となるコアを1チップに4096個実装した。それぞれのコアが演算回路、メモリー、コア間通信用のルーターなどを備える。ニューロン間の結合の強さなどのパラメータは、すべてコア内のメモリーに保存し、外部メモリーには出さない。つまり、一般的なコンピュータのプログラムに相当する情報が、コアの中に封じ込められているわけだ。

各コアは、ニューロン256個、シナプス26万2144個の機能を再現する。ニューロンの振る舞いは23のパラメータで調整でき、「単純なニューロンモデルから、極めて複雑なモデルまで再現できる」(リスク氏)。コアはチップ内でメッシュ状に並んでおり、さらにチップ自体をタイル状に並べることで、全体のニューロン数を柔軟に増やすことができる(写真4)。IBMは既に、16個のチップを1枚のボードに並べ、1600万ニューロンと40億シナプスを備えたシステムを試作済みだ。

( 以下、上記 記事より転載 )

ibm_tip_1..PNG

ibm_tip_2.PNG

ニューロモーフィック・チップは1980年代半ばに考案されたが、近年急速に技術開発が進んだ。今や5年、10年先という気の長い話ではなく、米クアルコム(Qualcomm)のような世界的メーカーが今年中には初代製品をリリースするという。

IBMが最近発表した半導体開発計画の一つは、人間の脳の機能を模したニューロコンピュータ(注)である。これによって人工知能の研究がいっそう飛躍することが期待できる。

このコンピューティングの基本エンジンとしてTrueNorthチップがまず作られた。このチップが脳のニューロンとシナプス結合に相当する機能を実現する。一つのTueNorthには64×64個のコアが実装されている。この4096個のコアにニューロンとシナプスが格納されている。各コア内には重み等を記録するメモリーがあり、他のコアへの結合も記憶されている。

これを複数個並べればニューロコンピューティングの第1層ができる。これを多層化すれば、現在機械学習の本命とみられているDeep Learningが直接実装できる訳である。すでにIBMにはCOMPASSというニューラル再現ソフトウエアパッケージがあるので、これを使えば問題をダイレクトに実装できる。


5. Google & NASA 連合の「量子人工知能研究所」は、「量子アニーリング(焼きなまし)法」を採用で実現した、世界初の量子コンピュータ(量子実験設備)D-Wave社のD-Waveマシンで機械学習 高速計算を運用中

__本記事投稿者 Qiita記事 「(学習メモ)Google / NASA の「量子人工知能研究所」が導入した 初の量子コンピューター 「D-Wave」は、なぜ超高速に 機械学習 問題の計算を解けると報じられているのか?」

dwave.PNG

Google _ NASA、D-Wave を「量子人工知能研究所」に導入

article.PNG

google.PNG

nasa.PNG

google2.PNG