本開示の一態様に係る演算処理システムは、畳み込み演算を実行する演算処理システムであって、演算前の複数の入力特徴マップ、および、演算に用いられる複数のフィルタ係数を保存する外部メモリと、前記複数の入力特徴マップおよび前記複数のフィルタ係数を用いて畳み込み演算を実行する演算装置と、を備える。
前記演算装置は、少なくとも、1)前記入力特徴マップを構成する複数の分割マップのうちの第1の分割マップを、前記外部メモリに保存された前記複数の入力特徴マップのそれぞれから取得し、前記外部メモリから取得した複数の前記第1の分割マップに前記畳み込み演算を実行した後、演算後の複数の前記第1の分割マップを前記外部メモリに保存し、2)前記複数の分割マップのうちの第2の分割マップを、前記外部メモリに保存された前記複数の入力特徴マップのそれぞれから取得し、前記外部メモリから取得した複数の前記第2の分割マップに前記畳み込み演算を実行した後、演算後の複数の前記第2の分割マップを前記外部メモリに保存する。
このように、演算装置が、外部メモリから分割マップを取得し、取得した分割マップに畳み込み演算を実行し、演算後の分割マップを外部メモリに保存することで、外部メモリから読み出す複数の入力特徴マップの読み出しデータ量を減らすことができる。これにより、演算装置と外部メモリとの間のデータ転送効率が低下することを抑制できる。上記に関する内容は、実施の形態1、2および3に記載されている。
また、前記演算装置は、前記畳み込み演算を実行する前に、前記複数のフィルタ係数の全てを前記外部メモリから取得してもよい。
このように、演算実行前に全てのフィルタ係数を外部メモリから取得することで、演算装置が、外部メモリから分割マップを取得する際に同時にフィルタ係数を取得する必要がなくなる。これにより、演算装置と外部メモリとの間のデータ転送効率が低下することを抑制できる。上記に関する内容は、実施の形態1、2および3に記載されている。
また、前記演算装置は、複数の前記第1の分割マップおよび複数の前記第2の分割マップのそれぞれに対し、同じ前記フィルタ係数を用いて前記畳み込み演算を実行してもよい。
これによれば、外部メモリから取得するフィルタ係数の数を減らすことができ、外部メ
モリから読み出すデータ量を減らすことができる。これにより、演算装置と外部メモリとの間のデータ転送効率が低下することを抑制できる。上記に関する内容は、実施の形態1、2および3に記載されている。
また、前記演算装置は、演算後の複数の前記第1の分割マップが前記外部メモリのアドレス上において隣り合うように前記外部メモリに保存してもよい。
これによれば、第1の分割マップのそれぞれを集約した状態で外部メモリに保存することができる。そのため、演算装置と外部メモリとの間で送受信される第1の分割マップを、離散の少ない連続するデータとすることができる。これにより、演算装置と外部メモリとの間のデータ転送効率が低下することを抑制できる。上記に関する内容は、実施の形態2に記載されている。
また、前記演算装置は、前記畳み込み演算および次の層の畳み込み演算にて用いられる前記複数の分割マップのうちの最大の分割個数に応じた数の前記複数の分割マップを前記外部メモリに保存してもよい。
これによれば、演算装置は、次の層の処理を行う際に、外部メモリから、上記最大の分割個数に合わせて集約された状態の複数の分割マップを取得することができる。これにより、演算装置と外部メモリとの間のデータ転送効率を効率化することができる。上記に関する内容は、実施の形態2に記載されている。
また、前記演算装置は、前記畳み込み演算の次の層の畳み込み演算にて用いられる入力特徴マップの分割個数に応じた数の前記複数の分割マップを前記外部メモリに保存してもよい。
これによれば、演算装置は、次の層の処理を行う際に、外部メモリから、上記入力特徴マップの分割個数に応じて集約された状態の複数の分割マップを取得することができる。これにより、演算装置と外部メモリとの間のデータ転送効率を効率化することができる。上記に関する内容は、実施の形態2に記載されている。
また、前記演算装置は、前記畳み込み演算にて用いられる前記複数の分割マップの境界および次の層の畳み込み演算にて用いられる前記複数の分割マップの境界の両方の境界を有する複数の分割マップを前記外部メモリに保存してもよい。
これによれば、演算装置は、次の層の処理を行う際に、外部メモリから、上記分割マップの境界に合わせて集約された状態の複数の分割マップを取得することができる。これにより、演算装置と外部メモリとの間のデータ転送効率を効率化することができる。上記に関する内容は、実施の形態2に記載されている。
また、前記入力特徴マップの分割個数は、2以上の整数であり、前記分割個数をDとし、前記複数の入力特徴マップのデータ量をd1とし、前記畳み込み演算が実行された後の複数の出力特徴マップのデータ量をd2とし、前記演算装置の内部メモリの容量をB1とした場合に、D≧(d1+d2)/B1であってもよい。
これによれば、入力特徴マップの分割個数を適切に定めることができ、演算装置と外部メモリとの間のデータ転送効率を適切に効率化することができる。上記に関する内容は、実施の形態1、2および3に記載されている。
本開示の一態様に係る演算処理システムは、畳み込み演算を実行する演算処理システムであって、演算前の複数の入力特徴マップ、および、演算に用いられる複数のフィルタ係数を保存する外部メモリと、前記複数の入力特徴マップおよび前記複数のフィルタ係数を用いて畳み込み演算を実行する演算装置と、を備える。
前記演算装置は、1)前記入力特徴マップを構成するn個(nは2以上の整数)の分割マップのうちの第1の分割マップを、前記外部メモリに保存された前記複数の入力特徴マップのそれぞれから取得し、前記外部メモリから取得した複数の前記第1の分割マップに前記畳み込み演算を実行した後、演算後の複数の前記第1の分割マップを前記外部メモリに保存し、2)前記n個の分割マップのうちの第k(kは2以上n以下の整数)の分割マップを、前記外部メモリに保存された前記複数の入力特徴マップのそれぞれから取得し、前記外部メモリから取得した複数の前記第kの分割マップに前記畳み込み演算を実行した後、演算後の複数の前記第kの分割マップを前記外部メモリに保存する。
このように、演算装置が、外部メモリから分割マップを取得し、取得した分割マップに畳み込み演算を実行し、演算後の分割マップを外部メモリに保存することで、外部メモリから読み出す複数の入力特徴マップの読み出しデータ量を減らすことができる。これにより、演算装置と外部メモリとの間のデータ転送効率が低下することを抑制できる。上記に関する内容は、実施の形態1、2および3に記載されている。
本開示の一態様に係る畳み込み演算方法は、複数の入力データに畳み込み演算を実行する畳み込み演算方法であって、前記入力データを構成する複数の部分データのうちの第1の部分データを、外部メモリに保存された前記複数の入力データのそれぞれから取得し、前記外部メモリから取得した複数の前記第1の部分データに前記畳み込み演算を実行した後、演算後の複数の前記第1の部分データを前記外部メモリに保存する工程と、前記複数の部分データのうちの第2の部分データを、前記外部メモリに保存された前記複数の入力データのそれぞれから取得し、前記外部メモリから取得した複数の前記第2の部分データに前記畳み込み演算を実行した後、演算後の複数の前記第2の部分データを前記外部メモリに保存する工程と、を含む。
このように、外部メモリから部分データを取得し、取得した部分データに畳み込み演算を実行し、演算後の部分データを外部メモリに保存することで、外部メモリから読み出す複数の入力データの読み出しデータ量を減らすことができる。これにより、外部メモリから転送されるデータのデータ転送効率が低下することを抑制できる。
なお上記において、入力データは実施の形態1、2および3における入力特徴マップに相当し、部分データは実施の形態1、2および3における分割マップに相当し、第1の部分データは実施の形態1、2および3における第1の分割マップに相当し、第2の部分データは実施の形態1、2および3における第2の分割マップに相当する。
本開示の一態様に係る演算処理システムは、畳み込み演算を実行する演算処理システムであって、演算前の複数の入力特徴マップおよび演算に用いられる複数のフィルタ係数を保存する外部メモリと、前記複数の入力特徴マップおよび前記複数のフィルタ係数を用いて畳み込み演算を実行する演算装置と、を備える。
前記演算装置は、少なくとも、1)前記入力特徴マップを構成する複数の分割マップのうちの第1の分割マップの圧縮データを、前記外部メモリに保存された前記複数の入力特徴マップのそれぞれから取得し、2)前記外部メモリから取得した複数の前記第1の分割マップの圧縮データを伸長し、3)複数の前記第1の分割マップに前記畳み込み演算を実行し、4)演算後の複数の前記第1の分割マップをデータ圧縮して前記外部メモリに保存する。
このように、演算装置が、外部メモリから第1の分割マップの圧縮データを取得して伸長し、伸長した第1の分割マップに畳み込み演算を実行し、演算後の第1の分割マップをデータ圧縮して外部メモリに保存することで、外部メモリから読み出すデータ量および外部メモリに書き込むデータ量を減らすことができる。これにより、演算装置と外部メモリとの間のデータ転送効率が低下することを抑制できる。上記に関する内容は、実施の形態4、5および6に記載されている。
また、前記演算装置は、さらに、5)前記複数の分割マップのうちの第2の分割マップの圧縮データを、前記外部メモリに保存された前記複数の入力特徴マップのそれぞれから取得し、6)前記外部メモリから取得した複数の前記第2の分割マップの圧縮データを伸長し、7)複数の前記第2の分割マップに前記畳み込み演算を実行し、8)演算後の複数の前記第2の分割マップをデータ圧縮して前記外部メモリに保存してもよい。
このように、演算装置が、外部メモリから第2の分割マップの圧縮データを取得して伸長し、伸長した第2の分割マップに畳み込み演算を実行し、演算後の第2の分割マップをデータ圧縮して外部メモリに保存することで、外部メモリから読み出すデータ量および外部メモリに書き込むデータ量を減らすことができる。これにより、演算装置と外部メモリとの間のデータ転送効率が低下することを抑制できる。上記に関する内容は、実施の形態4、5および6に記載されている。
また、前記演算装置は、複数の前記第1の分割マップの圧縮データを取得する前に、前記複数のフィルタ係数の圧縮データを前記外部メモリから取得してもよい。
このように、演算実行前に全てのフィルタ係数の圧縮データを外部メモリから取得することで、演算装置が、外部メモリから分割マップを取得する際に同時にフィルタ係数を取得する必要がなくなる。これにより、演算装置と外部メモリとの間のデータ転送効率が低下することを抑制できる。上記に関する内容は、実施の形態4、5および6に記載されている。
また、前記演算装置は、演算後の複数の前記第1の分割マップの圧縮データが前記外部メモリのアドレス上において隣り合うように前記外部メモリに保存してもよい。
これによれば、第1の分割マップのそれぞれを集約しかつ圧縮した状態で外部メモリに保存することができる。そのため、演算装置と外部メモリとの間で送受信される第1の分割マップを、離散の少ない連続するデータとすることができる。これにより、演算装置と外部メモリとの間のデータ転送効率が低下することを抑制できる。上記に関する内容は、実施の形態5に記載されている。
また、前記演算装置は、前記畳み込み演算および次の層の畳み込み演算にて用いられる前記複数の分割マップのうちの最大の分割個数に応じた数の前記複数の分割マップの圧縮データを前記外部メモリに保存してもよい。
これによれば、演算装置は、次の層の処理を行う際に、外部メモリから、上記最大の分割個数に合わせて集約されかつ圧縮された状態の複数の分割マップを取得することができる。これにより、演算装置と外部メモリとの間のデータ転送効率を効率化することができる。上記に関する内容は、実施の形態5に記載されている。
また、前記演算装置は、前記畳み込み演算の次の層の畳み込み演算にて用いられる入力特徴マップの分割個数に応じた数の前記複数の分割マップの圧縮データを前記外部メモリに保存してもよい。
これによれば、演算装置は、次の層の処理を行う際に、外部メモリから、上記入力特徴マップの分割個数に応じて集約されかつ圧縮された状態の複数の分割マップを取得することができる。これにより、演算装置と外部メモリとの間のデータ転送効率を効率化することができる。上記に関する内容は、実施の形態5に記載されている。
また、前記演算装置は、前記畳み込み演算にて用いられる前記複数の分割マップの境界および次の層の畳み込み演算にて用いられる前記複数の分割マップの境界の両方の境界を有する複数の分割マップの圧縮データを前記外部メモリに保存してもよい。
これによれば、演算装置は、次の層の処理を行う際に、外部メモリから、上記分割マップの境界に合わせて集約されかつ圧縮された状態の複数の分割マップを取得することができる。これにより、演算装置と外部メモリとの間のデータ転送効率を効率化することができる。上記に関する内容は、実施の形態5に記載されている。
本開示の一態様に係る演算処理システムは、畳み込み演算を実行する演算処理システムであって、演算前の複数の入力特徴マップおよび演算に用いられる複数のフィルタ係数を保存する外部メモリと、前記複数の入力特徴マップおよび前記複数のフィルタ係数を用いて畳み込み演算を実行する演算装置と、を備える。
前記演算装置は、少なくとも、1)前記入力特徴マップを構成するn個(nは2以上の整数)の分割マップのうちの第1の分割マップの圧縮データを、前記外部メモリに保存された前記複数の入力特徴マップのそれぞれから取得し、2)前記外部メモリから取得した複数の前記第1の分割マップの圧縮データを伸長し、3)複数の前記第1の分割マップに前記畳み込み演算を実行し、4)演算後の複数の前記第1の分割マップをデータ圧縮して前記外部メモリに保存し、5)前記n個の分割マップのうちの第k(kは2以上n以下の整数)の分割マップの圧縮データを、前記外部メモリに保存された前記複数の入力特徴マップのそれぞれから取得し、6)前記外部メモリから取得した複数の前記第kの分割マップの圧縮データを伸長し、7)複数の前記第kの分割マップに前記畳み込み演算を実行し、8)演算後の複数の前記第kの分割マップをデータ圧縮して前記外部メモリに保存する。
このように、演算装置が、外部メモリから分割マップの圧縮データを取得して伸長し、伸長した分割マップに畳み込み演算を実行し、演算後の分割マップをデータ圧縮して外部メモリに保存することで、外部メモリから読み出すデータ量および外部メモリに書き込むデータ量を減らすことができる。これにより、演算装置と外部メモリとの間のデータ転送効率が低下することを抑制できる。上記に関する内容は、実施の形態4、5および6に記載されている。
本開示の一態様に係る畳み込み演算方法は、複数の入力データに畳み込み演算を実行する畳み込み演算方法であって、前記入力データを構成する複数の部分データのうちの第1の部分データの圧縮データを、外部メモリに保存された前記複数の入力データのそれぞれから取得する工程と、前記外部メモリから取得した複数の前記第1の部分データの圧縮データを伸長する工程と、複数の前記第1の部分データに前記畳み込み演算を実行する工程と、演算後の複数の前記第1の部分データをデータ圧縮して前記外部メモリに保存する工程と、を含む。
このように、外部メモリから部分データを取得し、取得した部分データに畳み込み演算を実行し、演算後の部分データを外部メモリに保存することで、外部メモリから読み出すデータ量および外部メモリに書き込むデータ量を減らすことができる。これにより、外部メモリから転送されるデータのデータ転送効率が低下することを抑制できる。上記に関する内容は、実施の形態4、5および6に記載されている。
なお上記において、入力データは実施の形態4、5および6における入力特徴マップに相当し、部分データは実施の形態4、5および6における分割マップに相当し、第1の部分データは実施の形態4、5および6における第1の分割マップに相当する。
(本開示に至る経緯)
本開示に至る経緯について、図1~図3を参照しながら説明する。
図1は、畳み込みニューラルネットワーク5を示す概略図である。
図1に示す畳み込みニューラルネットワーク5は、ディープラーニングのネットワークの1つであり、複数の特徴量抽出層が階層的に接続された中間層と、中間層の後段に設けられた全結合層とによって構成されている。なお、畳み込みニューラルネットワークの構成によっては全結合層がない場合もあり、また、中間層の後段が全結合層以外の層で構成されることもあり得る。畳み込みニューラルネットワーク5は、例えば、画像データから所定の形状やパターンを画像認識する用途で用いられる。畳み込みニューラルネットワーク5が画像認識に用いられる場合、画像に対して畳み込み演算が行われて特徴マップ(畳み込み演算によって得られたテンソル)が生成され、さらに、生成された特徴マップに対して畳み込み演算が行われることで次の特徴マップが形成される。そしてこれらが繰り返されることで、画像の特徴が抽出される。畳み込みニューラルネットワーク5では、畳み込み演算のために多くの処理能力が費やされるため、畳み込み演算のための処理を効率化することが望まれる。
ここで比較例の演算処理システム101について説明する。
図2は、比較例の演算処理システム101を示す概略図である。図3は、比較例の演算処理システム101の畳み込み演算処理の概要を示す図である。
図2に示すように、比較例の演算処理システム101は、演算装置110と、外部メモリ120とによって構成されている。
演算装置110は、畳み込み演算を実行する演算部111と、演算装置110に入力されたデータおよび演算部111から出力されたデータを一時的に保存する内部メモリ113とを有している。外部メモリ120には、演算前の複数の入力特徴マップMaと、演算後の複数の出力特徴マップMbと、演算に用いられる複数のフィルタ係数Fが保存される。図2では、チャネル数がc個の入力特徴マップMa、(c×e)個のフィルタ係数F、および、チャネル数がe個の出力特徴マップMbが、外部メモリ120に保存されている。
図3に示すように、演算処理システム101では、演算装置110が、外部メモリ120から複数の入力特徴マップMaを取得し、複数(c個)の入力特徴マップMaのそれぞれにフィルタ係数Fをかけることで畳み込み演算を実行し、演算後の出力特徴マップMbを外部メモリ120に保存する。演算装置110は、上記演算等を複数のフィルタ係数Fの数だけ繰り返し、フィルタ係数Fの数に応じた複数(e個)の出力特徴マップMbを生成し、外部メモリ120に保存する。
なお、図2および図3は、ある1つの特徴量抽出層での畳み込み演算を行う場合を示しており、外部メモリ20に保存されるデータは、その畳み込み演算に用いるデータのみを記載している。これ以降の説明では、特に断りがない場合は、ある1つの特徴量抽出層での畳み込み演算を行う場合を示す。
この演算処理システム101では、1つの出力特徴マップMbを生成するために全ての入力特徴マップMaが必要であるが、通常は入力特徴マップMaのデータ量が多く、全ての入力特徴マップMaを内部メモリ113に保存し続けることができない。そのため、1つの出力特徴マップMbを生成するごとに全ての入力特徴マップMaを外部メモリ120から取得する必要がある。その結果、演算装置110が外部メモリ120から入力特徴マップMaを読み出す回数が多くなり、演算装置110と外部メモリ120との間のデータ転送量が増加して、データ転送効率が低下するという問題がある。
それに対し本開示の一態様に係る演算処理システムは、以下の構成を有することで、データ転送効率の低下を抑制している。
以下、実施の形態について、図面を参照しながら具体的に説明する。
以下で説明する実施の形態は、いずれも包括的または具体的な例を示すものである。以下の実施の形態で示される数値、形状、材料、構成要素、構成要素の配置位置及び接続形態、ステップ、ステップの順序などは、一例であり、本開示を限定する主旨ではない。また、以下の実施の形態における構成要素のうち、最上位概念を示す独立請求項に記載されていない構成要素については、任意の構成要素として説明される。また、各図は、模式図であり、必ずしも厳密に図示されたものではない。また、各図において、同じ構成部材については同じ符号を付している。また、複数の実施の形態のうちの2つ以上の実施の形態を任意に組み合わせることで実現される形態も本開示に含まれる。
(実施の形態1)
実施の形態1に係る演算処理システム1について、図4A~図6を参照しながら説明する。実施の形態1では、演算装置が入力特徴マップMaを小分けにして取得する例について説明する。
図4Aは、実施の形態1に係る演算処理システム1を示す概略図である。図4Bは、演算処理システム1の機能構成を示すブロック図である。
図4Aおよび図4Bに示すように、演算処理システム1は、畳み込み演算を実行する演算装置10と、演算装置10に接続された外部メモリ20とを備えている。
外部メモリ20は、演算装置10の外であって、演算処理システム1の中に設けられている。外部メモリ20には、演算前の複数の入力特徴マップMa、演算後の複数の出力特徴マップMb、および、演算に用いられる複数のフィルタ係数Fが保存される。外部メモリ20は、例えば、DRAM(Dynamic Random Access Memory)などの読み出し書き込み可能な記録媒体である。
演算装置10は、複数の入力特徴マップMaおよび複数のフィルタ係数Fを用いて畳み込み演算を実行する装置である。図4Bに示すように、演算装置10は、演算部11と、演算部11に接続された内部メモリ13と、内部メモリ13に接続されたDMA(ダイレクトメモリアクセス)14とを備えている。なお、図4Aでは、演算部11およびDMA14の図示を省略している。演算装置10は、例えば、コンピュータ処理の高速化を支援するアクセラレータである。
演算部11は、畳み込み処理を行う畳み込み処理部11aと、プーリング処理を行うプーリング処理部11bとによって構成されている。内部メモリ13は、外部メモリ20からDMA14を介して入力されたデータ、および、演算部11から出力されたデータを一時的に保存する機能を有している。DMA14は、外部メモリ20から読み出したデータを内部メモリ13に出力し、また、内部メモリ13に一時的に保存されたデータを外部メモリ20に出力する機能を有している。なお、演算部11には、少なくとも畳み込み処理部11aがあればよく、プーリング処理部11bがなくともよいし、それ以外の処理部があってもよい。
図5は、実施の形態1に係る演算処理システム1の畳み込み演算処理の概要を示す図である。
図5には、チャネル数がc個の入力特徴マップMaと、(c×e)個のフィルタ係数Fと、チャネル数がe個の出力特徴マップMbとが示されている。また、図5には、入力特徴マップMaが、小分けされた複数の分割マップmaで構成されている例が示されている。分割マップmaは、入力特徴マップMaの部分データである。また、図5には、出力特徴マップMbが、小分けされた複数の分割マップmbで構成されている例が示されている。分割マップmbは、出力特徴マップMbの部分データである。
また、図5には、入力特徴マップMaを構成するn個(nは2以上の整数)の分割マップとして、第1の分割マップma1、第2の分割マップma2および第nの分割マップmanが例示されている。
例えば、演算装置10は、複数の分割マップmaのうちの第1の分割マップma1を、複数の入力特徴マップMaのそれぞれから取得し、取得した複数(c個)の第1の分割マップma1のそれぞれにフィルタ係数Fをかけることで畳み込み演算を実行し、演算後の第1の分割マップmb1を生成する。演算装置10は、上記演算等を複数のフィルタ係数Fの数だけ繰り返し、フィルタ係数Fの数に応じた複数(e個)の演算後の第1の分割マップmb1を生成する。
入力特徴マップMaの分割個数は、2以上の整数であり、分割マップma等が演算装置10の内部メモリ13に入りきるサイズ(データ量)となるように決定される。
具体的には、分割個数をDとし、複数の入力特徴マップMaの全てのデータ量をd1とし、畳み込み演算が実行された後の複数の出力特徴マップMbの全てのデータ量をd2とし、演算装置10の内部メモリ13の容量をB1とした場合に、以下の(式1)を満たすように決定される。
D≧(d1+d2)/B1 ・・・ (式1)
次に、演算処理システム1の処理動作について説明する。
図6は、演算処理システム1の処理動作を示す概略図である。図6の(a)~(d)は、この順で処理実行される。
図6の(a)に示すように、演算装置10は、畳み込み演算を実行する前に、外部メモリ20から複数のフィルタ係数Fの全てを取得する。図6の(a)には、(c×e)個のフィルタ係数Fが、外部メモリ20から演算装置10の内部メモリ13に出力されている例が示されている。
図6の(b)に示すように、演算装置10は、複数の分割マップmaのうちの第1の分割マップma1を、外部メモリ20に保存された複数の入力特徴マップMaのそれぞれから取得する。そして演算装置10は、外部メモリ20から取得した複数(c個)の第1の分割マップma1のそれぞれにフィルタ係数Fをかけることで畳み込み演算を実行し、第1の分割マップmb1を生成する。演算装置10は、上記演算等を複数のフィルタ係数Fの数だけ繰り返し、フィルタ係数Fの数に応じた複数(e個)の演算後の第1の分割マップmb1を生成し、外部メモリ20に保存する。なお、外部メモリ20に保存された第1の分割マップmb1は、次の層の畳み込み演算が実行される前に読み出される入力特徴マップの一部を構成する。
図6の(c)に示すように、演算装置10は、複数の分割マップmaのうちの第2の分割マップma2を、外部メモリ20に保存された複数の入力特徴マップMaのそれぞれから取得する。そして演算装置10は、外部メモリ20から取得した複数(c個)の第2の分割マップma2のそれぞれにフィルタ係数Fをかけることで畳み込み演算を実行し、第2の分割マップmb2を生成する。演算装置10は、上記演算等を複数のフィルタ係数Fの数だけ繰り返し、フィルタ係数Fの数に応じた複数(e個)の演算後の第2の分割マップmb2を生成し、外部メモリ20に保存する。なお、外部メモリ20に保存された第2の分割マップmb2は、次の層の畳み込み演算が実行される前に読み出される入力特徴マップの一部を構成する。
演算装置10は、上記と同様の処理をn回繰り返す。具体的には、図6の(d)に示すように、演算装置10は、複数の分割マップmaのうちの第nの分割マップmanを、外部メモリ20に保存された複数の入力特徴マップMaのそれぞれから取得する。そして演算装置10は、外部メモリ20から取得した複数(c個)の第nの分割マップmanのそれぞれにフィルタ係数Fをかけることで畳み込み演算を実行し、第nの分割マップmbnを生成する。演算装置10は、上記演算等を複数のフィルタ係数Fの数だけ繰り返し、フィルタ係数Fの数に応じた複数(e個)の演算後の第nの分割マップmbnを生成し、外部メモリ20に保存する。
これにより、複数のフィルタ係数Fの数に対応した全ての出力特徴マップMbが生成され、特徴量抽出層の1層分の処理が終了する。1層目の特徴量抽出層の処理に続き2層目の特徴量抽出層の処理が行われ、さらに、予定された階層分の処理が終了することで、畳み込みニューラルネットワークの中間層における処理が終了する。
なお、フィルタ係数Fを内部メモリ13に保存せずに畳み込み演算を行うこともでき、その場合は図6の(a)に示す処理は不要となり、図6の(b)~(d)に示す畳み込み演算では、フィルタ係数Fを内部メモリ13ではなく、外部メモリ20から取得して行う。これにより、内部メモリ13にフィルタ係数Fを保存する必要がなくなり、内部メモリ13のサイズを削減することが可能となる。
この演算処理システム1によれば、外部メモリ20から読み出す複数の入力特徴マップMaの読み出しデータ量(合計値)を減らすことができ、比較例の演算処理システム101に比べてデータ転送量を低減できる。これにより、演算装置10と外部メモリ20との間のデータ転送効率が低下することを抑制できる。
(実施の形態2)
実施の形態2に係る演算処理システム1Aについて説明する。実施の形態2では、演算後の分割マップが、外部メモリ20上において離散しておらず、適度に集約された状態で保存されている例について説明する。
ここで、実施の形態2との違いを明確にするため、実施の形態1の演算処理システム1の外部メモリ20について説明する。
図7は、実施の形態1の演算処理システム1の外部メモリ20に保存される分割マップを示す概略図である。外部メモリ20には、入力特徴マップMaおよび出力特徴マップMbがそれぞれ集約されて保存されており、さらにその中はチャネル1、チャネル2というチャネルの順番で1つのチャネルの特徴マップが集約されて保存されている。
そのため、実施の形態1のように畳み込み演算を分割マップごとに処理する場合、演算装置10は、外部メモリ20上の離散した位置(飛び飛びの位置)から複数の分割マップ(例えばma1)を読み込み、また、外部メモリ20上の離散した位置に複数の分割マップ(例えばmb1)を書き込むことになる。一方、畳み込みニューラルネットワーク5は、後段の層ほどマップサイズが小さくチャネル数が多くなり(図1参照)、後段の層では、外部メモリ20上において、小さなデータの分割マップが各チャネルに離散した状態となる。外部メモリ20が例えばDRAMである場合、外部メモリ20から演算装置10へのデータ転送効率を上げるには、メモリ上において連続する大きいデータを転送することが望ましい。しかし、実施の形態1の外部メモリ20では、後段の層ほど小さなデータが多くの箇所に離散した状態となり、データ転送効率が低下する。そこで、実施の形態2では、例えば演算後の複数の第1の分割マップmb1が、外部メモリ20のアドレス上において隣り合うように外部メモリ20に保存される。
図8は、実施の形態2に係る演算処理システム1Aの外部メモリ20内の分割マップの配置を示す概略図である。図8には、演算後の複数の第1の分割マップmb1が、外部メモリ20のアドレス上において隣り合って配置されている状態が示されている。この外部メモリ20には、複数の第1の分割マップmb1だけでなく、複数の第2の分割マップmb2、および、複数の第nの分割マップmbnのそれぞれが、出力特徴マップMb上において集約された状態で配置される。
出力特徴マップMbは、次の層の畳み込み演算の入力特徴マップMaとして用いられるため、出力特徴マップMbの各分割マップが外部メモリ20上において集約された状態で配置されることで、次の層の畳み込み演算が実行される際に用いられる入力特徴マップMaの各分割マップも外部メモリ20上において集約された状態で配置される。具体的には、複数の第1の分割マップma1、複数の第2の分割マップma2、および、複数の第nの分割マップmanのそれぞれが、複数の入力特徴マップMa上において集約された状態で配置される。
このように、入力特徴マップの分割マップ(例えばma1)および出力特徴マップの分割マップ(例えばmb1)のそれぞれが集約された状態で外部メモリ20上に配置されることで、演算装置10と外部メモリ20との間で送受信されるデータを、離散の少ない連続するデータとすることができる。これにより、演算装置10と外部メモリ20との間のデータ転送効率が低下することを抑制できる。
(実施の形態2の変形例1)
実施の形態2の変形例1の演算処理システム1Aについて、図9および図10を参照しながら説明する。変形例1では、外部メモリ20に保存する分割マップmbのサイズを、現在処理している層の畳み込み演算または次の層の畳み込み演算で用いられる分割マップに応じて決定する例について説明する。
図9は、変形例1に係る演算処理システム1Aの演算処理に用いられる分割マップma、mbを示す概略図である。図10は、変形例1の外部メモリ20に保存された分割マップmb1~mb3を示す概略図である。
図9には、現在処理している層の畳み込み演算における分割マップmaの分割個数が2であり、次の層の畳み込み演算における分割マップmaの分割個数が3である例が示されている。この場合、演算装置10は、次の層の畳み込み演算における分割マップmaの分割個数と、現在処理している層の畳み込み演算における分割マップmaの分割個数とを比較し、数が大きい分割個数を選択する。図9に示す例では、演算装置10は、選択した分割個数3に応じて、出力特徴マップMbを3分割した分割マップmbのうちの各分割マップmb1~mb3のそれぞれが集約された状態となるように外部メモリ20に保存する。なお、演算装置10は、入力特徴マップMaを2分割した分割マップmaのうちの分割マップma1およびma2に対して畳み込み演算を行い、その結果を外部メモリに保存する時に、各分割マップmb1~mb3のそれぞれが集約されるように外部メモリ20に保存する。その結果、図10に示すように、外部メモリ20には、複数の分割マップmb1、複数の分割マップmb2および複数の分割マップmb3のそれぞれが、集約された状態で保存される。
このように変形例1では、演算装置10が、現在処理している層の畳み込み演算および次の層の畳み込み演算にて用いられる複数の分割マップmaのうちの最大の分割個数に合わせて複数の分割マップmbがそれぞれ集約されるように外部メモリ20に保存する。これによれば、演算装置10は、次の層の畳み込み演算を行う際に、外部メモリ20から、集約された状態の複数の分割マップmaを取得することが可能となる。これにより、演算装置10と外部メモリ20との間のデータ転送効率を効率化することができる。
なお、演算装置10は、最大の分割個数に限られず、次の層の畳み込み演算にて用いられる分割マップmaの分割個数、すなわち、次の層の畳み込み演算にて用いられる入力特徴マップMaの分割個数に応じて分割した分割マップmbが、それぞれ集約されるように外部メモリ20に保存してもよい。
また、演算装置10は、現在処理している層の畳み込み演算に用いられる分割マップmaを、次の層の畳み込み演算にて用いられる複数の分割マップmaの分割個数と合わせて分割してもよい。図9に示す例では、現在処理している層の分割マップmaの分割個数を3にすることに該当する。これにより、畳み込み演算に用いられる分割マップmaの分割個数と、外部メモリに集約される分割マップmbの分割個数とが同じになり、その結果、畳み込み演算する場合の分割個数と外部メモリに集約する場合の分割個数とが同じになって、演算装置10での演算処理の制御が容易となる。
なお、複数の分割マップmb1~mb3が外部メモリ20に保存される際、演算装置10は、複数の分割マップmb1~mb3の境界位置を示す情報を外部メモリ20に出力してもよい。外部メモリ20は、複数の分割マップmb1~mb3と上記境界位置を示す情報との関係をテーブルデータとして保存してもよい。
(実施の形態2の変形例2)
実施の形態2の変形例2の演算処理システム1Aについて、図11および図12を参照しながら説明する。変形例2では、外部メモリ20に保存する分割マップmbを、現在処理している層の畳み込み演算および次の層の畳み込み演算の両方の分割境界を用いて生成する例について説明する。
図11は、変形例2に係る演算処理システム1Aにて演算処理される分割マップma、mbを示す概略図である。図12は、変形例2の外部メモリ20に保存された分割マップmb1~mb4を示す概略図である。
図11には、現在処理している層の畳み込み演算における分割マップmaの分割個数が2であり、次の層の畳み込み演算における分割マップmaの分割個数が3である例が示されている。この2つの例では、分割マップmaの境界L1が互いに異なっている。そこで、変形例2では、現在処理している層の畳み込み演算にて用いられる複数の分割マップmaの境界L1、および、次の層の畳み込み演算にて用いられる複数の分割マップmaの境界L1の両方の境界を有する複数の分割マップmbについて、各分割マップmb1~mb4がそれぞれ集約されるように外部メモリ20に保存する。その結果、図12に示すように、外部メモリ20には、複数の分割マップmb1、複数の分割マップmb2、複数の分割マップmb3および複数の分割マップmb4のそれぞれが、集約された状態で保存される。
このように変形例2では、演算装置10が、現在処理している層の畳み込み演算にて用いられる複数の分割マップの境界L1および次の層の畳み込み演算にて用いられる複数の分割マップの境界L1の両方の境界を有する複数の分割マップmb(mb1~mb4)を外部メモリ20に保存する。これによれば、演算装置10は、次の層の畳み込み演算を行う際に、外部メモリ20から、集約された状態の複数の分割マップmaを取得することが可能となる。これにより、演算装置10と外部メモリ20との間のデータ転送効率を効率化することができる。
なお、演算装置10は、現在処理している層の畳み込み演算における分割マップmaを、次の層の畳み込み演算にて用いられる複数の分割マップmaの分割個数と合わせて分割してもよい。図12に示す例では、現在処理している層の畳み込み演算における分割マップmaの分割個数を4にすることに該当する。
また、演算装置10は、両方の境界L1を有する分割形態(図11の例では4分割)となるように分割マップmaを分割してもよい。これにより、畳み込み演算に用いられる分割マップmaの分割個数と、外部メモリに集約される分割マップmbの分割個数とが同じになり、その結果、畳み込み演算する場合の分割個数と外部メモリに集約する場合の分割個数とが同じになって、演算装置10での演算処理の制御が容易となる。
(実施の形態3)
実施の形態3に係る演算処理システム1Bについて説明する。実施の形態1では、全ての入力特徴マップMaから1つ出力特徴マップMbを生成する例を示したが、実施の形態3では、複数の入力特徴マップMaが複数のグループに分けられ、グループごとに出力特徴マップが生成される例について説明する。
図13は、実施の形態3に係る演算処理システム1Bの演算処理を示す概略図である。
この演算処理システム1Bでは、1層の畳み込み演算が複数のグループ1、2、・・に分けられている。実施の形態3では、複数のグループ1、2、・・のそれぞれで畳み込み演算が実行され、グループ1、2、・・ごとに出力特徴マップMbが生成される。
例えば、演算装置10は、複数の分割マップmaのうちの第1の分割マップma1を、複数の入力特徴マップMaのそれぞれから取得し、取得した複数(c個)の第1の分割マップma1のそれぞれにフィルタ係数Fをかけることで畳み込み演算を実行し、演算後の第1の分割マップmb1を生成する。演算装置10は、上記演算等をグループ1の複数のフィルタ係数Fの数だけ繰り返し、グループ1に関する複数の演算後の第1の分割マップmb1を生成する。
各グループにおける入力特徴マップMaの分割個数は、2以上の整数であり、分割マップma等が演算装置10の内部メモリ13に入りきるサイズ(データ量)となるように決定される。
具体的には、分割個数をDとし、グループ内の複数の入力特徴マップMaの全てのデータ量をd1aとし、畳み込み演算が実行された後のグループ内の複数の出力特徴マップMbの全てのデータ量をd2aとし、演算装置10の内部メモリ13の容量をB1とした場合に、以下の(式2)を満たすように決定される。
D≧(d1a+d2a)/B1 ・・・ (式2)
演算装置10は、グループ2以降についても同様に、上記の畳み込み演算を実行する。全てのグループの演算が終了することで、全ての出力特徴マップMbが生成され、特徴量抽出層の1層分の処理が終了する。
演算処理システム1Bのように、複数の入力特徴マップMaが複数のグループに分けられ、グループごとに出力特徴マップが生成される場合であっても、演算装置10と外部メモリとの間のデータ転送効率が低下することを抑制できる。
(実施の形態4)
実施の形態4に係る演算処理システム1Cについて、図14A~図16を参照しながら説明する。実施の形態4では、演算装置が入力特徴マップMaを小分けにし、かつ圧縮データで取得する例について説明する。
図14Aは、実施の形態4に係る演算処理システム1Cを示す概略図である。図14Bは、演算処理システム1Cの機能構成を示すブロック図である。
図14Aおよび図14Bに示すように、演算処理システム1Cは、畳み込み演算を実行する演算装置10と、演算装置10に接続された外部メモリ20とを備えている。
外部メモリ20は、演算装置10の外であって、演算処理システム1Cの中に設けられている。外部メモリ20には、演算前の複数の入力特徴マップMa、演算後の複数の出力特徴マップMb、および、演算に用いられる複数のフィルタ係数Fが保存される。外部メモリ20は、例えば、DRAMなどの読み出し書き込み可能な記録媒体である。
演算装置10は、複数の入力特徴マップMaおよび複数のフィルタ係数Fを用いて畳み込み演算を実行する装置である。図14Bに示すように、演算装置10は、演算部11と、演算部11に接続された内部メモリ13と、内部メモリ13に接続されたDMA(ダイレクトメモリアクセス)14と、データ伸縮部15とを備えている。なお、図14Aでは、演算部11およびDMA14の図示を省略している。演算装置10は、例えば、コンピュータ処理の高速化を支援するアクセラレータである。
演算部11は、畳み込み処理を行う畳み込み処理部11aと、プーリング処理を行うプーリング処理部11bとによって構成されている。内部メモリ13は、外部メモリ20からDMA14およびデータ伸縮部15を介して入力されたデータ、および、演算部11から出力されたデータを一時的に保存する機能を有している。DMA14は、外部メモリ20から読み出したデータをデータ伸縮部15に出力し、また、データ伸縮部15にて圧縮されたデータを外部メモリ20に出力する機能を有している。なお、演算部11には、少なくとも畳み込み処理部11aがあればよく、プーリング処理部11bがなくともよいし、それ以外の処理部があってもよい。
データ伸縮部15は、DMA14から取得した圧縮データを伸長(解凍)して内部メモリ13に出力し、また、内部メモリ13に一時的に保存されたデータを圧縮してDMA14に出力する。データ圧縮の方式としては、例えば、ランレングス圧縮(Run-Length Compression)、または、0値圧縮(Zero-Value Compression)などの方式が採用される。ランレングス圧縮は、例えばデータが複数の0を含む数値等の配列で表される場合に、データ上における0の連続数と、0でない非ゼロの値とを順に出力することでデータ圧縮する方式である。0値圧縮は、例えばデータが複数の0を含む数値等の配列で表される場合に、0か非ゼロかを示す1ビットのマスクデータと非ゼロの値とを出力することでデータ圧縮する方式である。
なお、図14Bではデータ伸縮部15が演算装置10に内蔵されているが、データ伸縮部15は、演算装置10の外であって、DMA14と外部メモリ20との間に設けられていてもよい。この場合、データ伸縮部15は、外部メモリ20から取得した圧縮データを伸長(解凍)してDMA14に出力し、また、DMA14から転送されたデータを圧縮して外部メモリ20に出力する。
図15は、実施の形態4に係る演算処理システム1Cの畳み込み演算処理の概要を示す図である。
図15には、チャネル数がc個の入力特徴マップMaと、(c×e)個のフィルタ係数Fと、チャネル数がe個の出力特徴マップMbとが示されている。また、図15には、入力特徴マップMaが、小分けされた複数の分割マップmaで構成されている例が示されている。分割マップmaは、入力特徴マップMaの部分データである。また、図15には、出力特徴マップMbが、小分けされた複数の分割マップmbで構成されている例が示されている。分割マップmbは、出力特徴マップMbの部分データである。
また、図15には、入力特徴マップMaを構成するn個(nは2以上の整数)の分割マップとして、第1の分割マップma1、第2の分割マップma2および第nの分割マップmanが例示されている。
例えば、演算装置10は、複数の分割マップmaのうちの第1の分割マップma1の圧縮データを、複数の入力特徴マップMaのそれぞれから取得し、取得した複数の第1の分割マップma1の圧縮データを伸長し、伸長後の複数(c個)の第1の分割マップma1のそれぞれにフィルタ係数Fをかけることで畳み込み演算を実行し、演算後の第1の分割マップmb1を生成する。演算装置10は、上記演算等を複数のフィルタ係数Fの数だけ繰り返し、フィルタ係数Fの数に応じた複数(e個)の演算後の第1の分割マップmb1を生成する。さらに、演算装置10は、複数の演算後の第1の分割マップmb1のデータを圧縮して圧縮データを生成する。
入力特徴マップMaの分割個数は、2以上の整数であり、分割マップma等が演算装置10の内部メモリ13に入りきるサイズ(データ量)となるように決定される。
具体的には、分割個数をDとし、複数の入力特徴マップMaの全てのデータ量をd1とし、畳み込み演算が実行された後の複数の出力特徴マップMbの全てのデータ量をd2とし、演算装置10の内部メモリ13の容量をB1とした場合に、以下の(式1)を満たすように決定される。
D≧(d1+d2)/B1 ・・・ (式1)
次に、演算処理システム1Cの処理動作について説明する。
図16は、演算処理システム1Cの処理動作を示す概略図である。図16の(a)~(d)は、この順で処理実行される。
図16の(a)に示すように、演算装置10は、畳み込み演算を実行する前に、外部メモリ20から複数のフィルタ係数Fの圧縮データを取得する。図16の(a)には、(c×e)個のフィルタ係数Fの圧縮データが、外部メモリ20から演算装置10の内部メモリ13に出力されている例が示されている。
図16の(b)に示すように、演算装置10は、複数の分割マップmaのうちの第1の分割マップma1の圧縮データを、外部メモリ20に保存された複数の入力特徴マップMaのそれぞれから取得する。なお上記圧縮データは、複数の第1の分割マップma1の圧縮データである。次に演算装置10は、外部メモリ20から取得した複数の第1の分割マップma1の圧縮データを伸長する。そして演算装置10は、伸長後の複数(c個)の第1の分割マップma1のそれぞれにフィルタ係数Fをかけることで畳み込み演算を実行し、第1の分割マップmb1を生成する。演算装置10は、上記演算等を複数のフィルタ係数Fの数だけ繰り返し、フィルタ係数Fの数に応じた複数(e個)の演算後の第1の分割マップmb1の圧縮データを生成し、外部メモリ20に保存する。なお、外部メモリ20に保存された第1の分割マップmb1の圧縮データは、次の層の畳み込み演算が実行される前に読み出される入力特徴マップの一部を構成する。
図16の(c)に示すように、演算装置10は、複数の分割マップmaのうちの第2の分割マップma2の圧縮データを、外部メモリ20に保存された複数の入力特徴マップMaのそれぞれから取得する。なお上記圧縮データは、複数の第2の分割マップma2の圧縮データである。次に演算装置10は、外部メモリ20から取得した複数の第2の分割マップma2の圧縮データを伸長する。そして演算装置10は、伸長後の複数(c個)の第2の分割マップma2のそれぞれにフィルタ係数Fをかけることで畳み込み演算を実行し、第2の分割マップmb2を生成する。演算装置10は、上記演算等を複数のフィルタ係数Fの数だけ繰り返し、フィルタ係数Fの数に応じた複数(e個)の演算後の第2の分割マップmb2の圧縮データを生成し、外部メモリ20に保存する。なお、外部メモリ20に保存された第2の分割マップmb2の圧縮データは、次の層の畳み込み演算が実行される前に読み出される入力特徴マップの一部を構成する。
演算装置10は、上記と同様の処理をn回繰り返す。具体的には、図16の(d)に示すように、演算装置10は、複数の分割マップmaのうちの第nの分割マップmanの圧縮データを、外部メモリ20に保存された複数の入力特徴マップMaのそれぞれから取得する。なお上記圧縮データは、複数の第nの分割マップmanの圧縮データである。次に演算装置10は、外部メモリ20から取得した複数の第nの分割マップmanの圧縮データを伸長する。そして演算装置10は、伸長後の複数(c個)の第nの分割マップmanのそれぞれにフィルタ係数Fをかけることで畳み込み演算を実行し、第nの分割マップmbnを生成する。演算装置10は、上記演算等を複数のフィルタ係数Fの数だけ繰り返し、フィルタ係数Fの数に応じた複数(e個)の演算後の第nの分割マップmbnの圧縮データを生成し、外部メモリ20に保存する。
これにより、複数のフィルタ係数Fの数に対応した全ての出力特徴マップMbが生成され、特徴量抽出層の1層分の処理が終了する。1層目の特徴量抽出層の処理に続き2層目の特徴量抽出層の処理が行われ、さらに、予定された階層分の処理が終了することで、畳み込みニューラルネットワークの中間層における処理が終了する。
なお、フィルタ係数Fを内部メモリ13に保存せずに畳み込み演算を行うこともでき、その場合は図16の(a)に示す処理は不要となり、図16の(b)~(d)に示す畳み込み演算では、フィルタ係数Fを内部メモリ13ではなく、外部メモリ20から取得して行う。これにより、内部メモリ13にフィルタ係数Fを保存する必要がなくなり、内部メモリ13のサイズを削減することが可能となる。
この演算処理システム1Cによれば、外部メモリ20から読み出す複数のフィルタ係数F、複数の入力特徴マップMaの読み出しデータ量(合計値)、および、外部メモリ20に書き込む出力特徴マップMbの書き込みデータ量(合計値)を減らすことができ、比較例の演算処理システム101に比べてデータ転送量を低減できる。これにより、演算装置10と外部メモリ20との間のデータ転送効率が低下することを抑制できる。
なお、データ圧縮が行われると圧縮後のデータのサイズが変化するので、外部メモリ20に保存する出力特徴マップMbの複数の分割マップ(例えばmb1、mb2)の境界が分からなくなることがある。そのため、演算装置10が、次の層の処理を行う際に分割マップ(例えばma1)を適切に取得できない場合がある。また、余裕をみて上記境界を跨いでデータ圧縮すると、直接処理に必要な分割マップ以外の不要データも含めて外部メモリ20からデータを取得することになり、無駄なデータ転送が発生することもある。
そこで、実施の形態4の演算処理システム1Cでは、分割マップmb1の境界位置が識別できるように情報の受け渡しが行われる。例えば、演算装置10が、分割マップmb1を外部メモリ20に出力する時に、分割マップmb1の境界位置のアドレスも外部メモリ20に出力する。外部メモリ20は、分割マップと上記アドレスとの関係をテーブルデータとして保存する。演算装置10は、次の層の処理において、外部メモリ20に保存された上記アドレスを使って、取得すべき分割マップma1を外部メモリ20から取得する。
なお、本実施の形態では、演算装置10が境界位置のアドレスを外部メモリに出力・取得しているが、演算装置10が次の層の処理において、境界位置のアドレスを用いることができれば、別の方法で行ってもよい。例えば、演算処理システム1Cの中に演算装置10を制御する制御CPUがあって、制御CPUが演算装置10から境界位置のアドレスを取得し、次の層を処理する前に演算装置10にアドレスを設定する方法も考えられる。これによれば、演算装置10は、複数の分割マップmaを適切に取得し、演算処理を適切に実行することができる。
また、分割マップmb1の境界位置のアドレスの代わりに、分割マップmb1のデータサイズを外部メモリ20に出力してもよい。この場合、次の層の処理において、外部メモリ20に保存された上記データサイズを使って、取得すべき分割マップma1を外部メモリ20から取得する。
(実施の形態5)
実施の形態5に係る演算処理システム1Dについて説明する。実施の形態5では、演算後の分割マップが、外部メモリ20上において離散しておらず、適度に集約された状態で保存されている例について説明する。
ここで、実施の形態5との違いを明確にするため、実施の形態4の演算処理システム1Cの外部メモリ20について説明する。
図17は、実施の形態4の演算処理システム1Cの外部メモリ20に保存される分割マップを示す概略図である。外部メモリ20には、入力特徴マップMaおよび出力特徴マップMbがそれぞれ集約されて保存されており、さらにその中はチャネル1、チャネル2というチャネルの順番で1つのチャネルの特徴マップが集約されて保存されている。
そのため、実施の形態4のように畳み込み演算を分割マップごとに処理する場合、演算装置10は、外部メモリ20上の離散した位置(飛び飛びの位置)から複数の分割マップ(例えばma1)を読み込み、また、外部メモリ20上の離散した位置に複数の分割マップ(例えばmb1)を書き込むことになる。一方、畳み込みニューラルネットワーク5は、後段の層ほどマップサイズが小さくチャネル数が多くなり(図1参照)、後段の層では、外部メモリ20上において、小さなデータの分割マップが各チャネルに離散した状態となる。外部メモリ20が例えばDRAMである場合、外部メモリ20から演算装置10へのデータ転送効率を上げるには、メモリ上において連続する大きいデータを転送することが望ましい。しかし、実施の形態4の外部メモリ20では、後段の層ほど小さなデータが多くの箇所に離散した状態となり、データ転送効率が低下する。そこで、実施の形態5では、例えば演算後の複数の第1の分割マップmb1が、外部メモリ20のアドレス上において隣り合うように、かつデータ圧縮されて外部メモリ20に保存される。
図18は、実施の形態5に係る演算処理システム1Dの外部メモリ20内の分割マップの配置を示す概略図である。図18には、演算後の複数の第1の分割マップmb1が、外部メモリ20のアドレス上において隣り合って配置されている状態が示されている。この外部メモリ20には、複数の第1の分割マップmb1だけでなく、複数の第2の分割マップmb2、および、複数の第nの分割マップmbnのそれぞれが、出力特徴マップMb上において集約されかつデータ圧縮された状態で配置される。
出力特徴マップMbは、次の層の畳み込み演算の入力特徴マップMaとして用いられるため、出力特徴マップMbの各分割マップが外部メモリ20上において集約されかつデータ圧縮された状態で配置されることで、次の層の畳み込み演算が実行される際に用いられる入力特徴マップMaの各分割マップも外部メモリ20上において集約されかつデータ圧縮された状態で配置される。具体的には、複数の第1の分割マップma1、複数の第2の分割マップma2、および、複数の第nの分割マップmanのそれぞれが、複数の入力特徴マップMa上において集約されかつデータ圧縮された状態で配置される。
このように、入力特徴マップの分割マップ(例えばma1)および出力特徴マップの分割マップ(例えばmb1)のそれぞれが集約されかつデータ圧縮された状態で外部メモリ20上に配置されることで、演算装置10と外部メモリ20との間で送受信されるデータを、離散の少ない連続するデータとすることができる。これにより、演算装置10と外部メモリ20との間のデータ転送効率が低下することを抑制できる。
なお、データ圧縮が行われると圧縮後のデータのサイズが変化するので、外部メモリ20に保存する出力特徴マップMbの複数の分割マップ(例えばmb1、mb2)の境界が分からなくなることがある。そこで、実施の形態4と同様に、実施の形態5の演算処理システム1Dでは、分割マップmb1の境界位置が識別できるように情報の受け渡しが行われる。例えば、演算装置10が、分割マップmb1を外部メモリ20に出力する時に、分割マップmb1の境界位置のアドレスも外部メモリ20に出力する。外部メモリ20は、分割マップと上記アドレスとの関係をテーブルデータとして保存する。演算装置10は、次の層の処理において、外部メモリ20に保存された上記アドレスを使って、取得すべき分割マップma1を外部メモリ20から取得する。
なお、本実施の形態では、演算装置10が境界位置のアドレスを外部メモリに出力・取得しているが、演算装置10が次の層の処理において、境界位置のアドレスを用いることができれば、別の方法で行ってもよい。例えば、演算処理システム1Dの中に演算装置10を制御する制御CPUがあって、制御CPUが演算装置10から境界位置のアドレスを取得し、次の層を処理する前に演算装置10にアドレスを設定する方法も考えられる。これによれば、演算装置10は、複数の分割マップmaを適切に取得し、演算処理を適切に実行することができる。
また、分割マップmb1の境界位置のアドレスの代わりに、分割マップmb1のデータサイズを外部メモリ20に出力してもよい。この場合、次の層の処理において、外部メモリ20に保存された上記データサイズを使って、取得すべき分割マップma1を外部メモリ20から取得する。
(実施の形態5の変形例1)
実施の形態5の変形例1の演算処理システム1Dについて、図19および図20を参照しながら説明する。変形例1では、外部メモリ20に保存する分割マップmbのサイズを、現在処理している層の畳み込み演算または次の層の畳み込み演算で用いられる分割マップに応じて決定する例について説明する。
図19は、変形例1に係る演算処理システム1Dの演算処理に用いられる分割マップma、mbを示す概略図である。図20は、変形例1の外部メモリ20に保存された分割マップmb1~mb3を示す概略図である。
図19には、現在処理している層の畳み込み演算における分割マップmaの分割個数が2であり、次の層の畳み込み演算における分割マップmaの分割個数が3である例が示されている。この場合、演算装置10は、次の層の畳み込み演算の分割マップmaの分割個数と、現在処理している層の畳み込み演算における分割マップmaの分割個数とを比較し、数が大きい分割個数を選択する。図19に示す例では、演算装置10は、選択した分割個数3に応じて、出力特徴マップMbを3分割した分割マップmbのうちの各分割マップmb1~mb3のそれぞれが集約された状態となるように外部メモリ20に保存する。なお、演算装置10は、入力特徴マップMaを2分割した分割マップmaのうちの分割マップma1およびma2に対して畳み込み演算を行い、その結果を外部メモリに保存する時に、各分割マップmb1~mb3のそれぞれが集約されるように外部メモリ20に保存する。その結果、図20に示すように、外部メモリ20には、複数の分割マップmb1、複数の分割マップmb2および複数の分割マップmb3のそれぞれが、集約されかつ圧縮データの状態で保存される。
このように変形例1では、演算装置10が、現在処理している層の畳み込み演算および次の層の畳み込み演算にて用いられる複数の分割マップmaのうちの最大の分割個数に合わせて複数の分割マップmbがそれぞれ集約されるように外部メモリ20に保存する。これによれば、演算装置10は、次の層の畳み込み演算を行う際に、外部メモリ20から、集約された状態の複数の分割マップmaを取得することが可能となる。これにより、演算装置10と外部メモリ20との間のデータ転送効率を効率化することができる。
なお、演算装置10は、最大の分割個数に限られず、次の層の畳み込み演算にて用いられる分割マップmaの分割個数、すなわち、次の層の畳み込み演算にて用いられる入力特徴マップMaの分割個数に応じて分割した分割マップmbが、それぞれ集約されるように外部メモリ20に保存してもよい。
また、演算装置10は、現在処理している層の畳み込み演算に用いられる分割マップmaを、次の層の畳み込み演算にて用いられる複数の分割マップmaの分割個数と合わせて分割してもよい。図19に示す例では、現在処理している層の分割マップmaの分割個数を3にすることに該当する。これにより、畳み込み演算に用いられる分割マップmaの分割個数と、外部メモリに集約される分割マップmbの分割個数とが同じになり、その結果、畳み込み演算する場合の分割個数と外部メモリに集約する場合の分割個数とが同じになって、演算装置10での演算処理の制御が容易となる。
なお、複数の分割マップmb1~mb3が外部メモリ20に保存される際、演算装置10は、複数の分割マップmb1~mb3の境界位置を示す情報を外部メモリ20に出力してもよい。外部メモリ20は、複数の分割マップmb1~mb3と上記境界位置を示す情報との関係をテーブルデータとして保存してもよい。
(実施の形態5の変形例2)
実施の形態5の変形例2の演算処理システム1Dについて、図21および図22を参照しながら説明する。変形例2では、外部メモリ20に保存する分割マップmbを、現在処理している層の畳み込み演算および次の層の畳み込み演算の両方の分割境界を用いて生成する例について説明する。
図21は、変形例2に係る演算処理システム1Dにて演算処理される分割マップma、mbを示す概略図である。図22は、変形例2の外部メモリ20に保存された分割マップmb1~mb4を示す概略図である。
図21には、現在処理している層の畳み込み演算における分割マップmaの分割個数が2であり、次の層の畳み込み演算における分割マップmaの分割個数が3である例が示されている。この2つの例では、分割マップmaの境界L1が互いに異なっている。そこで、変形例2では、現在処理している層の畳み込み演算にて用いられる複数の分割マップmaの境界L1、および、次の層の畳み込み演算にて用いられる複数の分割マップmaの境界L1の両方の境界を有する複数の分割マップmbについて、各分割マップmb1~mb4がそれぞれ集約されるようにデータ圧縮して外部メモリ20に保存する。その結果、図22に示すように、外部メモリ20には、複数の分割マップmb1、複数の分割マップmb2、複数の分割マップmb3および複数の分割マップmb4のそれぞれが、集約されかつ圧縮データの状態で保存される。また、外部メモリ20には、複数の分割マップmb1~mb4と上記アドレスとの関係がテーブルデータとして保存される。
このように変形例2では、演算装置10が、現在処理している層の畳み込み演算にて用いられる複数の分割マップの境界L1および次の層の畳み込み演算にて用いられる複数の分割マップの境界L1の両方の境界を有する複数の分割マップmb(mb1~mb4)をデータ圧縮して外部メモリ20に保存する。これによれば、演算装置10は、次の層の畳み込み演算を行う際に、外部メモリ20から、集約された状態の複数の分割マップmaを取得することが可能となる。これにより、演算装置10と外部メモリ20との間のデータ転送効率を効率化することができる。
なお、演算装置10は、現在処理している層の畳み込み演算における分割マップmaを、次の層の畳み込み演算にて用いられる複数の分割マップmaの分割個数と合わせて分割してもよい。図22に示す例では、現在処理している層の畳み込み演算における分割マップmaの分割個数を4にすることに該当する。
また、演算装置10は、両方の境界L1を有する分割形態(図21の例では4分割)となるように分割マップmaを分割してもよい。これにより、畳み込み演算に用いられる分割マップmaの分割個数と、外部メモリに集約される分割マップmbの分割個数とが同じになり、その結果、畳み込み演算する場合の分割個数と外部メモリに集約する場合の分割個数とが同じになって、演算装置10での演算処理の制御が容易となる。
(実施の形態6)
実施の形態6に係る演算処理システム1Eについて説明する。実施の形態4では、全ての入力特徴マップMaから1つ出力特徴マップMbを生成する例を示したが、実施の形態6では、複数の入力特徴マップMaが複数のグループに分けられ、グループごとに出力特徴マップが生成される例について説明する。
図23は、実施の形態6に係る演算処理システム1Eの演算処理を示す概略図である。
この演算処理システム1Eでは、1層の畳み込み演算が複数のグループ1、2、・・に分けられている。実施の形態6では、複数のグループ1、2、・・のそれぞれで畳み込み演算が実行され、グループ1、2、・・ごとに出力特徴マップMbが生成される。
例えば、演算装置10は、複数の分割マップmaのうちの第1の分割マップma1の圧縮データを、複数の入力特徴マップMaのそれぞれから取得し、取得した複数の第1の分割マップma1の圧縮データを伸長し、伸長後の複数の(c個)の第1の分割マップma1のそれぞれにフィルタ係数Fをかけることで畳み込み演算を実行し、演算後の第1の分割マップmb1をデータ圧縮して生成する。演算装置10は、上記演算等をグループ1の複数のフィルタ係数Fの数だけ繰り返し、グループ1に関する複数の演算後の第1の分割マップmb1の圧縮データを生成する。
各グループにおける入力特徴マップMaの分割個数は、2以上の整数であり、分割マップma等が演算装置10の内部メモリ13に入りきるサイズ(データ量)となるように決定される。
具体的には、分割個数をDとし、グループ内の複数の入力特徴マップMaの全てのデータ量をd1aとし、畳み込み演算が実行された後のグループ内の複数の出力特徴マップMbの全てのデータ量をd2aとし、演算装置10の内部メモリ13の容量をB1とした場合に、以下の(式2)を満たすように決定される。
D≧(d1a+d2a)/B1 ・・・ (式2)
演算装置10は、グループ2以降についても同様に、上記の畳み込み演算を実行する。全てのグループの演算が終了することで、全ての出力特徴マップMbが生成され、特徴量抽出層の1層分の処理が終了する。
演算処理システム1Eのように、複数の入力特徴マップMaが複数のグループに分けられ、グループごとに出力特徴マップが生成される場合であっても、演算装置10と外部メモリとの間のデータ転送効率が低下することを抑制できる。
(その他の実施の形態)
以上、実施の形態1~6等について説明した。ただし以上の実施の形態等は、本質的に好ましい例示であって、この発明、その適用物、あるいはその用途の範囲を制限することを意図するものではない。
例えば、上記実施の形態では、演算装置10が、畳み込み演算を実行する前に、複数のフィルタ係数Fの全てを外部メモリ20から取得する例を示したが、それに限られない。演算装置10は、全てのフィルタ係数Fのうち、分割マップに対して畳み込み演算を実行するのに必要なフィルタ係数Fのみを、その都度読み出してもよい。例えば、演算装置10は、第1の分割マップに畳み込み演算を実行する場合、その演算前に、第1の分割マップの畳み込み演算に必要なフィルタ係数Fを外部メモリ20から読み出し、第2の分割マップに畳み込み演算を実行する場合、その演算前に、第2の分割マップの畳み込み演算に必要なフィルタ係数Fを外部メモリ20から読み出してもよい。
例えば、上記の実施の形態2では、外部メモリ20に複数の第1の分割マップ等が集約された状態で保存される例を示したが、畳み込み演算を実行する全ての層の処理において、複数の第1の分割マップが集約された状態で保存される必要は無い。例えば、畳み込みニューラルネットワークにおいて、チャネル数の少ない前半の層(例えば1層目)では、複数の第1の分割マップが集約されていない状態で保存され、チャネル数の多い後半の層(例えばn層目)では、複数の第1の分割マップが集約された状態で保存されてもよい。