ニューロチップ説 〜いよいよ半導の出番(3-2)
3章3.2では、ニューロチップで_要な2次元の入データと、学{の_みに相当するフィルタを積和演Qで、スキャンしていく基本演Qについて述べている。積和演Qを基本とするためGPUやCPU、DSPなどで演Qできる。(セミコンポータル集室)
著v: 元半導理工学研|センター(STARC)/元東 瀬 啓
3.2 v路構成の基本(Q込み層)
v路の説に入るiに、予∪を行う。
}称:チップにより入出やパラメータの}称が異なるので、図17の表にまとめた。入は、入徴マップ(通常2次元)と}ばれることがHい。ノードという場合もある。入の要素数に関しては入次元数、ノード数と}ぶ場合もある。にいろいろあるのが、パラメータの霾。使する\術vの分野により異なる。ソフトUのエンジニアはパラメータが主流である。ニューロモルフィックUの\術vは図17の神経細胞の}称にってけている。信タ路の端(軸索端)をAxon(軸索)と}び、Synapse(シナプス)を介してNeuron(ニューロン)細胞に繋がると表現する。
図17 チップの入、出、そしてパラメータの}称と神経細胞の}称
出Z元:STARCの調h報告書より転載
基本v路: T合層は積和の単純Qであることから説は割愛(4.2Iで実際のチップで扱う)し、少し複雑なQ込み層のQに関し説を行う。Q込み層のQは以下の3ステップの並`処理(内霄Qをし、i笋瞭マップ処理をし、後ろ笋僚侘マップ処理をするイメージ)からなる。「並`処理の}順」と「並`処理のv路」に分けて説する。
(1) 並`処理の}順
(ア) 並`処理1・・・図18のフィルタ演Q処理(積和演Q処理)
入データ(2次元:入徴マップ)とフィルタ(_みを2次元化したもの、Kernelとも}ぶ)との内積をDり、出(出徴マップの1ユニット)する。図の左にすように横(e)に1ステップ分スライドして、再度内積をDり出し先のユニットの横に1ユニット加える。この作業を入マップC内でスライドしながら繰り返す。スライド値はあらかじめ指定される。最Zは1がHいが、2以屬世判侘のマップサイズは1/4以下になる(Maxpoolingと機Δ_なる)。ステップごと(すなわち出のユニットごと)同じフィルタをいる。出マップで見るとてのユニットに同じフィルタが使われる。フィルタと局所的な内積をDることと、フィルタの使いvしがQ込み処理の徴である。そしていかにフィルタ値を使いこなす(リユース:Reuse)かにv路構成の工夫がある。古Z的な桔 文綵辧砲函ShiDianNao擬亜併温憂@料81)なりEyeriss擬亜辺`w定データフロー擬亜Row Stationary dataflow):参考@料48)がある(4.1Iで説する)。
(イ) 並`処理2・・・図18の入徴マップ間処理(加Q処理)
入が図の様にRGBの3入なら、3vQして加Qしないといけない。その時にフィルタは異なり3|類要となる。よって、入マップごとにフィルタと入値をメモリからロードする要があり、かつ通常は3入マップ分Qが終了するまで最終の出ができない(中間値の発據法この霾がQ込みの処理Qでk番C倒な霾である。2013Qと古いが3D加Qv路を専にeたせ工夫をしているのがTeraDeep社のnn-X(参考@料83)だ。
図18 Q込み層・・・並`処理1および2
(ウ) 並`処理3・・・図19の出徴マップQ(独立並`処理)
複数の出徴マップを出マップごとに独立してQする。そのため比較的~単である。いわゆる、PE(Processing Engine/Elements)を要なだけ並べればよい。Qチップ共に瑤燭茲Δ聞柔となる。
図19 Q込み層・・・並`処理3
冒頭で述べたように、内霄Q(積和演Q処理)をして、i笋僚萢(入マップ間の加Q処理)をして、後笋僚萢(出マップ間の独立並`処理)をする、3ステップで1層分のQ込み層のQが終了する。
(2) 並`処理のv路
基本的なv路擬阿鮠匆陲垢襦説および図Cは参考@料56(AngelEye)および82を参考にした。まずニューラルネットワークはいくつもの層からなるが、1層ごとd次行われる。1層の処理のフローを図20で説する。i層からの出情報(pけ}笋ら見て入徴マップ)をpけて処理はスタートする。通常は、v路の処理模(総次元数)より入徴マップがjきいことからマップを分割(タイル化)して処理を行う(詳細説は複雑になるので割愛、参考@料56参照)。
データ処理陲砲蓮∧数のPE(Processing ElementもしくはEngine)コアがPE1、PE2、PE3・・・とかれ、並`かつ独立に処理が行われる。PEコアの内陲砲蓮∧数のフィルタ処理(積和処理)を行うConvolver(詳細は次項)ブロック、線形関数処理ブロック(Non Linear Function:性化関数とも}ぶ)、そしてプーリング処理ブロックがシーケンシャルにかれる。なおPEコア内陲能萢が中の場合には線形関数処理ブロックとプーリング処理ブロックはスキップして、中間値として戻される。最後に複数のPEコアの出は、まとめて出徴マップとして次層に送られる。なお、PEコアの定Iは確定したものではなく、また境cも異なる。本項では比較的オーソドックスで古いタイプを採して説した。またConvolverブロックを工夫してプーリング処理、さらにはT合層(FC:Fully Connected層)処理にする場合もある。
図20: 1層の処理フローのS図(k例)
(参考@料56、82を参考にまとめた)
(ア) フィルタ演Q処理(Convolverv路)
図21にオーソドックスなフィルタ演Qv路(Convolverv路)をした(左笋(a)は参考@料82の図1を、また(b)は参考@料56を参考とした)。(a)の2次元入徴マップのフィルタ(3x3)に相当する値を(b)のシフトレジスタに転^する(実際には1画素ごと)。シフトレジスタは3段構成でサイクルごとに1データ分シフトする。1サイクル1ステップごとに、入データレジスタ(データバッファ)と、同様の3段構成のフィルタレジスタ(_みバッファ)で内積をとる。9並`の積(Multiplier)を行い次段で和をとる。処理の間、フィルタレジスタの値は変わらず、積の相}となる入データレジスタが変わる。4.1Iで扱うCNNのチップでは基本的に_みは‘阿靴覆ぁEyerissは、データを{いかけるように_みが横(Row妓)に‘阿垢襦法
図21 シフトレジスタをいたフィルタ処理(Convolverv路)
(参考@料56、82を参考にまとめた)
(イ) 3つの並`処理 実例での説(AngelEyeを参考)
i項で、Q込み層には3つの並`処理があることを図18と19をいて説した。ここではその並`処理がどのようにv路実△気譴襪図22をいて説する。図はAngelEye(参考@料56)を参考に作成した。例として入の徴マップは3(猫のイメージでRGBに相当)でフィルタは3x3、出の徴マップ数は96のケースをいる。図の左屬縫侫ルタ処理をするConvolverブロック、笋PEコア、そして左下にv路図をした。
並`処理1は積和演Qの並`処理である。3x3のフィルタを使していることから9並`処理となる。並`処理2はPEコア内陲貿柎`される複数のConvolverブロックにより行われる。入徴マップ数が3であることから、3個のConvolverブロックが並`処理を実行する。徴マップ数が3と少ないことから並`に処理し単純に加Qして次段の線形処理・プーリング処理にvせる。徴マップ数がHい場合、例えば200あれば、k時中間値として保管して、d次加Qする要がある。そのT果、1の出徴マップの1ユニットの出がuられる。フィルタをスライドし(シフトレジスタを1ステップ進める)、処理を繰り返し1の出徴マップをmめてゆく。最後の並`処理3は出徴マップでの並`処理である。独立していることから単に出マップ数だけPEコアが並`に並ぶだけでよい。
図22 Q込み層処理フローとv路構成、および並`処理の関係
(参考@料56、82を参考にまとめた)
以屬バス擬亜兵々爐砲得)の比較的オーソドックスなQ込み層(CNNネットワークモデルと言ってもよい)のv路構成および処理フローである。なお、線形処理はALU等のb理v路で、またネットワークの最終層で使されることがHいSoftMaxは別なv路はTせずCPU/MPUで処理される。
(く)
参考@料は3章の最後にまとめている。