(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-03-18
(45)【発行日】2024-03-27
(54)【発明の名称】情報処理回路および情報処理回路の設計方法
(51)【国際特許分類】
G06N 3/063 20230101AFI20240319BHJP
【FI】
G06N3/063
(21)【出願番号】P 2022527306
(86)(22)【出願日】2020-05-26
(86)【国際出願番号】 JP2020020701
(87)【国際公開番号】W WO2021240633
(87)【国際公開日】2021-12-02
【審査請求日】2022-11-11
(73)【特許権者】
【識別番号】000004237
【氏名又は名称】日本電気株式会社
(74)【代理人】
【識別番号】100103090
【氏名又は名称】岩壁 冬樹
(74)【代理人】
【識別番号】100124501
【氏名又は名称】塩川 誠人
(72)【発明者】
【氏名】竹中 崇
【審査官】佐藤 実
(56)【参考文献】
【文献】米国特許出願公開第2019/0318232(US,A1)
【文献】特開2002-117389(JP,A)
【文献】特開2018-133016(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06N 3/063
(57)【特許請求の範囲】
【請求項1】
深層学習における層の演算を実行する情報処理回路であって、
入力データとパラメタ値とを用いて積和演算を行う積和回路と、
前記パラメタ値を出力するパラメタ値出力回路とを備え、
前記パラメタ値出力回路は、組み合わせ回路で構成され、
前記パラメタ値出力回路は、
深層学習を行うそれぞれの用途で共通に用いられる前記パラメタ値を出力する回路であって回路構成を変更できない方式で製造された第1パラメタ値出力回路と、
前記用途ごとに個別に用いられる前記パラメタ値を出力する回路であって回路構成を変更できる方式で製造された第2パラメタ値出力回路とを含む
ことを特徴とする情報処理回路。
【請求項2】
並列処理数に応じた数の基本回路を備え、
複数の前記基本回路のうち1つ以上は、前記積和回路と前記第1パラメタ値出力回路と前記第2パラメタ値出力回路とを含む
請求項
1記載の情報処理回路。
【請求項3】
深層学習における層の演算を実行する情報処理回路を生成する情報処理回路の設計方法であって、
学習済みの複数のパラメタ値を含む複数種類のパラメタセットとネットワーク構造を特定可能なデータとを入力し、
入力データとパラメタ値とを用いて積和演算を行う回路であって前記ネットワーク構造における層に特化した積和回路を作成し、
前記複数種類のパラメタセットにおけるパラメタ値を出力する組み合わせ回路として、
深層学習を行うそれぞれの用途で共通に用いられるパラメタ値を出力する回路であって回路構成を変更できない方式で実現される第1パラメタ値出力回路、および、
前記用途ごとに個別に用いられるパラメタ値を出力する回路であって回路構成を変更できる方式で実現される第2パラメタ値出力回路を作成する
ことを特徴とする情報処理回路の設計方法。
【請求項4】
ニューラルネットワークに用いられる複数種類のパラメタセットのうち、いずれの種類のパラメタセットにおいても用いられる第1の論理演算を計算する前記第1パラメタ値出力回路を作成し、
パラメタテーブルの入力に加えて前記第1パラメタ値出力回路の出力を入力して個別の論理演算を計算する前記第2パラメタ値出力回路を作成する
請求項
3記載の情報処理回路の設計方法。
【請求項5】
複数種類のパラメタセットを用いたニューラルネットワークにおける情報処理回路の各精度を測定し、
前記第1パラメタ値出力回路の回路面積と、前記第2パラメタ値出力回路の回路面積とを見積り、
前記複数種類のパラメタセットそれぞれを用いた各ニューラルネットワークの精度が予め定めた精度基準値以上であり、かつ、前記第1パラメタ値出力回路の回路面積の割合が予め定めた面積基準値以上であるという条件が満たされるまで、第1パラメタ値および第2パラメタ値のうち少なくとも1つを繰り返し変更
し、
変更後の前記第1パラメタ値および前記第2パラメタ値に基づいて、前記第1パラメタ値出力回路および前記第2パラメタ値出力回路を生成する
請求項
3または請求項
4記載の情報処理回路
の設計方法。
【請求項6】
深層学習における層の演算を実行する情報処理回路を生成するための情報処理回路の設計プログラムであって、
コンピュータに、
学習済みの複数のパラメタ値を含む複数種類のパラメタセットとネットワーク構造を特定可能なデータとを入力する処理と、
入力データとパラメタ値とを用いて積和演算を行う回路であって前記ネットワーク構造における層に特化した積和回路を作成する処理と、
前記複数種類のパラメタセットにおけるパラメタ値を出力する組み合わせ回路として、
深層学習を行うそれぞれの用途で共通に用いられるパラメタ値を出力する回路であって回路構成を変更できない方式で実現される第1パラメタ値出力回路、および、
前記用途ごとに個別に用いられるパラメタ値を出力する回路であって回路構成を変更できる方式で実現される第2パラメタ値出力回路を作成する処理とを
実行させるための情報処理回路の設計プログラム。
【請求項7】
前記コンピュータに、
ニューラルネットワークに用いられる複数種類のパラメタセットのうち、いずれの種類のパラメタセットにおいても用いられる第1の論理演算を計算する前記第1パラメタ値出力回路を作成する処理と、
パラメタテーブルの入力に加えて前記第1パラメタ値出力回路の出力を入力して個別の論理演算を計算する前記第2パラメタ値出力回路を作成する処理とを実行させる
ための請求項
6記載の情報処理回路の設計プログラム。
【請求項8】
深層学習における層の演算を実行する情報処理回路を生成する情報処理回路設計装置であって、
学習済みの複数のパラメタ値を含む複数種類のパラメタセットとネットワーク構造を特定可能なデータとを入力する入力手段と、
入力データとパラメタ値とを用いて積和演算を行う回路であって前記ネットワーク構造における層に特化した積和回路を作成する演算器生成手段と、
前記複数種類のパラメタセットにおけるパラメタ値を出力する組み合わせ回路を作成するパラメタ値出力回路作成手段とを備え、
前記パラメタ値出力回路作成手段は、
深層学習を行うそれぞれの用途で共通に用いられるパラメタ値を出力する回路であって回路構成を変更できない方式で実現される第1パラメタ値出力回路を作成する第1パラメタ値出力回路作成手段と、
前記用途ごとに個別に用いられるパラメタ値を出力する回路であって回路構成を変更できる方式で実現される第2パラメタ値出力回路を作成する第2パラメタ値出力回路作成手段と
を含むことを特徴とする情報処理回路設計装置。
【請求項9】
前記第1パラメタ値出力回路作成手段は、ニューラルネットワークに用いられる複数種類のパラメタセットのうち、いずれの種類のパラメタセットにおいても用いられる第1の論理演算を計算する前記第1パラメタ値出力回路を作成し、
前記第2パラメタ値出力回路作成手段は、パラメタテーブルの入力に加えて前記第1パラメタ値出力回路の出力を入力して個別の論理演算を計算する前記第2パラメタ値出力回路を作成する
請求項
8記載の情報処理回路設計装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、深層学習の推論フェーズを実行する情報処理回路、およびそのような情報処理回路の設計方法に関する。
【背景技術】
【0002】
深層学習は、多層のニューラルネットワーク(以下、ネットワークという。)を使用するアルゴリズムである。深層学習では、各々のネットワーク(層)を最適化してモデル(学習モデル)を作成する学習フェーズと、学習モデルに基づいて推論が行われる推論フェーズとが実行される。なお、モデルは、推論モデルといわれることもある。また、以下、モデルを推論器と表現することがある。
【0003】
学習フェーズおよび推論フェーズにおいて、パラメタとしての重みを調整するための演算が実行されたり、入力データと重みとを対象とする演算が行われたりするが、それらの演算の計算量は多い。その結果、各々のフェーズの処理時間が長くなる。
【0004】
深層学習を高速化するために、CPU(Central Processing Unit )によって実現される推論器ではなく、GPU(Graphics Processing Unit)によって実現される推論器がよく用いられる。さらに、深層学習専用のアクセラレータが実用化されている。
【0005】
図20は、畳み込みニューラルネットワーク(CNN:Convolutional Neural Network)の一例であるVGG(Visual Geometry Group )-16の構造を示す説明図である。VGG-16は、13層の畳み込み層および3層の全結合層を含む。畳み込み層で、または畳み込み層とプーリング層とで抽出された特徴は、全結合層で分類される。
【0006】
図20において、「I」は入力層を示す。「C」は畳み込み層を示す。
図20において、畳み込み層は3×3の畳み込みである。よって、たとえば、
図20の最初の畳み込み演算には1画素あたり3(縦サイズ)×3(横サイズ)×3(入力チャネル)×64(出力チャネル)個の積和演算を含む。また例えば
図20の5ブロック目の畳み込み層には、1画素あたり3(縦サイズ)×3(横サイズ)×512(入力チャネル)×512(出力チャネル)個の積和演算を含む。「P」はプーリング層を示す。
図20に示すCNNでは、プーリング層は、Max Pooling 層である。「F」は全結合層を示す。「O」は出力層を示す。出力層では、softmax関数が使用される。なお、畳み込み層および全結合層は、正規化線形ユニット(Rectified Linear Unit :ReLU)を含む。各層に付されている乗算式は、一枚の入力画像に対応するデータの縦サイズ×横サイズ×チャネル数を表す。また、層を表す直方体の体積は、層におけるアクティベーションの量に対応する。
【先行技術文献】
【特許文献】
【0007】
【非特許文献】
【0008】
【文献】P. N. Whatmough et al., "FixyNN: Efficient Hardware for Mobile Computer Vision via Transfer Learning", Feb, 27 2019
【発明の概要】
【発明が解決しようとする課題】
【0009】
アクセラレータで推論器を実現する場合、主として2つの方法が考えられる。
【0010】
CNNを例にすると、第1の方法では、CNNは、CNNを構成する複数の層の演算が共通の演算器で実行されるように構成される(例えば、特許文献1の段落0033等参照。)。
【0011】
図21は、複数の層の演算が共通の演算器で実行されるように構成されたCNNの演算器を模式的に示す説明図である。推論器における演算を実行する部分は、演算器700とメモリ(例えば、DRAM(Dynamic Random Access Memory))900とで構成される。
図21に示す演算器700には、多数の加算器と多数の乗算器とが形成される。
図21において、「+」は加算器を示し、「*」は乗算器を示す。なお、
図21には、3つの加算器と6個の乗算器とが例示されているが、CNNにおける全ての層の各々の演算が実行可能な数の加算器と乗算器とが形成される。
【0012】
推論器の各層の演算が実行される場合、演算器700は、演算実行対象の一層についてのパラメタをDRAM900から読み出す。そして、演算器700は、一層における積和演算を、パラメタを係数として実行する。
【0013】
第2の方法では、CNNは、CNNを構成する全ての層の各々(特に、畳み込み層)の演算を、各層に対応する演算器で実行されるように構成される(例えば、非特許文献1参照)。なお、非特許文献1には、CNNが2つのステージに分割され、前段のステージにおいて、各々の層に対応する演算器が設けられることが記載されている。
【0014】
図22は、各々の層に対応する演算器が設けられたCNNを模式的に示す説明図である。
図22には、CNNにおける6つの層801,802,803,804,805,806が例示されている。層801,802,803,804,805,806のそれぞれに対応する演算器(回路)701,702,703,704,705,706が設けられている。
【0015】
演算器701~706は、対応する層801~806の演算を実行するので、パラメタが不変であれば、固定的に回路構成される。そして、非特許文献1には、パラメタを固定値にすることが記載されている。
【0016】
上記の第1の方法では、DRAM900が備えられているので、パラメタが変更されても、演算器701~706の回路構成を変更することなく、CNNの機能が実行される。しかし、DRAM900のデータ転送速度は、演算器700の演算速度と比較すると低速である。すなわち、DRAM900のメモリ帯域は狭い。したがって、演算器700とメモリの間のデータ転送がボトルネックになる。その結果、CNNの演算速度が制限される。
【0017】
上記の第2の方法では、各層のそれぞれに対応する演算器701~706が設けられるので、CNN全体としての回路規模が大きくなる。
【0018】
非特許文献1に記載された方法では、パラメタおよびネットワーク構成を固定することによって、CNN全体としての加算器と乗算器の回路規模が小さくなる。ただし、非特許文献1に記載された方法では、各層に関して、完全に並列処理が可能であるように(fully-parallel)回路構成されるので、そのような回路構成によって、回路規模は大きくなる。なお、各層に関して各入力チャネル、各出力チャネルに対応する演算を並列処理するように回路構成されるので、そのような回路構成によって、回路規模は大きくなる。また、各層に関して、完全に並列処理が可能であるように回路構成されるので、一枚の画像に対応する入力データの処理時間は各層において同じ時間であることが望ましい。
【0019】
CNNでは、先の層(出力層に近い層)であるほど、一枚の画像に対応する入力データの縦サイズや横サイズが小さくなる場合がある。例えばプーリング層によって一枚の画像に対応する入力データの縦サイズと横サイズが縮小される。各層が同じ時間で一枚の入力画像に対応するデータを処理するとした場合、先の層のチャネル数を極端に多くしない限り、先の層での計算量は小さくなる。換言すれば、本来、先の層であるほど、その層の演算を実行する回路規模は小さくてよい。しかし、非特許文献1に記載された方法では、演算器700は、すべての入力チャネルと出力チャネルの演算を並列に実行可能に構成されるので、入力データの縦サイズと横サイズが少ない層については、一枚の画像に対応する入力データの処理が早く終わり、次の画像に対応する入力データが供給されるまで待ち時間が発生する。換言すれば演算器700の利用率は低くなる。
【0020】
また、非特許文献1に記載されたCNNの構成は、CNNが2つのステージに分割され、前段のステージにおいて各々の層に対応する演算器が設けられるという構成である。そして、後段のステージは、DRAMにパラメタが転送され、演算器としてプログラマブルなアクセラレータを用いるように構成される。すなわち、CNNは、ある程度のパラメタの変更やネットワーク構成の変更に応えられるように構成され、CNN全体として、すなわち、推論器全体として、パラメタおよびネットワーク構成を固定することは、非特許文献1に記載されていない。
【0021】
また、推論器全体として、パラメタおよびネットワーク構造を固定した場合、一度回路を製造してしまうと深層学習のネットワーク構造および重み(パラメタ)を変更することは困難である。例えば、顔認証チップとして製造された回路は、顔認証でしか使用できない。すなわち、パラメタおよびネットワーク構造を固定した回路は、他の種類のCNNに対応することが困難である。
【0022】
本発明は、推論器がハードウエアで実現される場合に、メモリ帯域の制約から解放され、かつ、推論器における各層の演算器の利用率が向上する情報処理回路および情報処理回路の設計方法を提供することを目的とする。
【課題を解決するための手段】
【0023】
本発明による情報処理回路は、深層学習における層の演算を実行する情報処理回路であって、入力データとパラメタ値とを用いて積和演算を行う積和回路と、パラメタ値を出力するパラメタ値出力回路とを含み、パラメタ値出力回路は、組み合わせ回路で構成され、パラメタ値出力回路は、深層学習を行うそれぞれの用途で共通に用いられるパラメタ値を出力する回路であって回路構成を変更できない方式で製造された第1パラメタ値出力回路と、用途ごとに個別に用いられるパラメタ値を出力する回路であって回路構成を変更できる方式で製造された第2パラメタ値出力回路とを含む。
【0024】
本発明による情報処理回路の設計方法は、深層学習における層の演算を実行する情報処理回路を生成する情報処理回路の設計方法であって、学習済みの複数のパラメタ値を含む複数種類のパラメタセットとネットワーク構造を特定可能なデータとを入力し、入力データとパラメタ値とを用いて積和演算を行う回路であってネットワーク構造における層に特化した積和回路を作成し、複数種類のパラメタセットにおけるパラメタ値を出力する組み合わせ回路として、深層学習を行うそれぞれの用途で共通に用いられるパラメタ値を出力する回路であって回路構成を変更できない方式で実現される第1パラメタ値出力回路、および、用途ごとに個別に用いられるパラメタ値を出力する回路であって回路構成を変更できる方式で実現される第2パラメタ値出力回路を作成する。
【0025】
本発明による情報処理回路の設計プログラムは、深層学習における層の演算を実行する情報処理回路を生成するためのプログラムであって、コンピュータに、学習済みの複数のパラメタ値を含む複数種類のパラメタセットとネットワーク構造を特定可能なデータとを入力する処理と、入力データとパラメタ値とを用いて積和演算を行う回路であってネットワーク構造における層に特化した積和回路を作成する処理と、複数種類のパラメタセットにおけるパラメタ値を出力する組み合わせ回路として、深層学習を行うそれぞれの用途で共通に用いられるパラメタ値を出力する回路であって回路構成を変更できない方式で実現される第1パラメタ値出力回路、および、用途ごとに個別に用いられるパラメタ値を出力する回路であって回路構成を変更できる方式で実現される第2パラメタ値出力回路を作成する処理とを実行させる。
【0026】
本発明による情報処理回路設計装置は、学習済みの複数のパラメタ値を含む複数種類のパラメタセットとネットワーク構造を特定可能なデータとを入力する入力手段と、入力データとパラメタ値とを用いて積和演算を行う回路であってネットワーク構造における層に特化した積和回路を作成する演算器生成手段と、複数種類のパラメタセットにおけるパラメタ値を出力する組み合わせ回路を作成するパラメタ値出力回路作成手段とを含み、パラメタ値出力回路作成手段は、深層学習を行うそれぞれの用途で共通に用いられるパラメタ値を出力する回路であって回路構成を変更できない方式で実現される第1パラメタ値出力回路を作成する第1パラメタ値出力回路作成手段と、用途ごとに個別に用いられるパラメタ値を出力する回路であって回路構成を変更できる方式で実現される第2パラメタ値出力回路を作成する第2パラメタ値出力回路作成手段とを含む。
【発明の効果】
【0027】
本発明によれば、メモリ帯域の制約から解放され、かつ、推論器における各層の演算器の利用率が向上する情報処理回路を得ることができる。
【図面の簡単な説明】
【0028】
【
図1】第1の実施形態の情報処理回路を模式的に示す説明図である。
【
図2】第1の実施形態の情報処理回路の基本回路の構成例を示す説明図である。
【
図3】パラメタテーブルの回路構成例を説明するための説明図である。
【
図4】第1の実施形態の情報処理回路設計装置の一例を示すブロック図である。
【
図5】第1の実施形態の情報処理回路設計装置の動作を示すフローチャートである。
【
図6】パラメタテーブルを最適化する処理の一例を示すフローチャートである。
【
図7】パラメタ値の変更方法の一例を示す説明図である。
【
図8】第2の実施形態の情報処理回路を模式的に示す説明図である。
【
図9】第2の実施形態の情報処理回路の基本回路の構成例を示す説明図である。
【
図10】第2の実施形態の情報処理回路設計装置の一例を示すブロック図である。
【
図11】パラメタテーブルを分割する処理の一例を示す説明図である。
【
図12】第2の実施形態の情報処理回路設計装置の動作を示すフローチャートである。
【
図13】パラメタテーブルを最適化する処理の一例を示すフローチャートである。
【
図14】パラメタ値を変更する前の真理値表の一例を示す説明図である。
【
図15】パラメタ値の変更した後の真理値表の一例を示す説明図である。
【
図16】各製造方法における製造後の回路の特徴を示す説明図である。
【
図17】CPUを有するコンピュータの一例を示すブロック図である。
【
図18】情報処理回路の主要部を示すブロック図である。
【
図19】情報処理回路設計装置の主要部を示すブロック図である。
【
図21】複数の層の演算が共通の演算器で実行されるように構成されたCNNの演算器を模式的に示す説明図である。
【
図22】各々の層に対応する演算器が設けられたCNNを模式的に示す説明図である。
【発明を実施するための形態】
【0029】
以下、本発明の実施形態を図面を参照して説明する。以下、情報処理回路として、CNNの推論器を例にする。また、CNNに入力されるデータとして、画像(画像データ)を例にする。
【0030】
図22に例示された構成と同様に、情報処理回路は、CNNの各々の層に対応する演算器が設けられたCNNの推論器である。そして、情報処理回路は、パラメタが固定され、かつ、ネットワーク構成(深層学習アルゴリズムの種類、どのタイプの層を幾つどういった順で配置するのか、各層の入力データのサイズや出力データのサイズなど)が固定されたCNNの推論器を実現する。すなわち、情報処理回路は、CNNの各層(例えば、畳み込み層および全結合層のそれぞれ)に特化した回路構成の回路である。特化するというのは、専ら当該層の演算を実行する専用回路であるということである。
【0031】
なお、パラメタが固定されているということは、学習フェーズの処理が終了して、適切なパラメタが決定され、決定されたパラメタが使用されることを意味する。ただし、以下の実施形態では、学習フェーズで決定されたパラメタが変更されることがある。以下、パラメタが変更されることを、パラメタが最適化されると表現することがある。
【0032】
また、本発明による情報処理回路を用いる推論器では、並列度は、データ入力速度や処理速度などを勘案して決定される。推論器におけるパラメタ(重み)と入力データとの乗算器は、組み合わせ論理回路(組み合わせ回路)で構成される。もしくは、パイプライン演算器で構成されてもよい。もしくは、順序回路で構成されてもよい。
【0033】
実施形態1.
図1は、第1の実施形態の情報処理回路を模式的に示す説明図である。
図1には、CNNを実現する情報処理回路100における演算器201,202,203,204,205,206が例示されている。すなわち、
図1には、CNNのうちの6層が例示されている。各演算器201,202,203,204,205,206は、層で使用されるパラメタ211,212,213,214,215,216と入力データとを対象として積和演算を実行する。演算器201~206は、複数の組み合わせ回路で実現される。パラメタ211~216も、組み合わせ回路で実現される。
【0034】
なお、組み合わせ回路は、否定論理積回路(NAND回路)、否定論理和回路(NOR回路)、否定回路(反転回路:NOT回路)、および、その組み合わせなどである。以下の説明において、1つの回路素子を組み合わせ回路と表現することもあるが、複数の回路素子(NAND回路、NOR回路、NOT回路など)を含む回路を組み合わせ回路と表現することもある。
【0035】
図1において、「+」は加算器を示す。「*」は乗算器を示す。なお、
図1に例示された各層の演算器201~206のブロックに示されている加算器の数および乗算器の数は、表記のための単なる一例である。
【0036】
本実施形態では、演算器201~206のそれぞれにおいて並列演算が実行されるが、並列演算における1つの演算を実行する回路を基本回路とする。基本回路は、層の種類に応じてあらかじめ決定されている。
【0037】
図2は、第1の実施形態の情報処理回路の基本回路の構成例を示す説明図である。6つの層のそれぞれの演算器(回路)201,202,203,204,205,206が例示されている。各層において、並列処理数の基本回路300が設けられる。
図2には、演算器203に含まれる基本回路300が例示されているが、他の層の演算器201,202,204,205,206も同様の回路構成を有する。
【0038】
図2に示す例では、基本回路300は、入力データとパラメタテーブル(重みテーブル)302からのパラメタ値を乗算し、乗算値を加算する積和回路301を含む。入力データは1つの値であってもよい。また、入力データは複数の値の組であってもよい。なお、
図2には、パラメタ値を格納するパラメタテーブル302が示されているが、実際には、パラメタ値は記憶部(記憶回路)に記憶されているのではなく、パラメタテーブル302は、組み合わせ回路で実現される。本実施形態では、パラメタが固定されているので、パラメタテーブル302から、固定的な値であるパラメタ値が出力される。パラメタテーブル302は、1つの値を出力してもよい。また、パラメタテーブル302は、複数の値の組を出力してもよい。積和回路301は、1つの入力値と1つのパラメタ値の乗算を行ってもよい。また、積和回路301は、入力値の組とパラメタ値の組との乗算を行ってもよい。入力値の組とパラメタ値の組との乗算結果の組の集約和の計算を行ってもよい。なお、一般に、1つの層に関して複数のパラメタ、もしくは、複数の組のパラメタが使用される、どのパラメタを出力するかは制御部400が制御する。
【0039】
基本回路300は、積和演算値を一時格納するレジスタ303を含んでもよい。積和回路301は、レジスタ303に一時格納された複数の乗算値を加算する加算器を含んでもよい。基本回路300の入力には、別の基本回路300の出力が接続されていてもよい。
【0040】
図3は、パラメタテーブル302の回路構成例を説明するための説明図である。
図3(A)には、真理値表311の一例が示されている。組み合わせ回路で、真理値表311を実現することができる。A,B,Cのそれぞれは、組み合わせ回路の入力である。Z1,Z2は、組み合わせ回路の出力である。
図3(A)には、一例として、全加算器の真理値表311が示されているが、A,B,Cをアドレスと見なし、Z1,Z2を出力データと見なすことができる。すなわち、Z1,Z2を、指定アドレスA,B,Cに対する出力データと見なすことができる。出力データをパラメタ値に対応づけると、何らかの入力(指定アドレス)に応じて、所望のパラメタ値を得ることができる。
【0041】
例えば、所望のパラメタ値が、ある特定の入力値(真理値表311ではA)によらず決定できるとすると、真理値表311における入力B、Cでパラメタ値を決定するように簡略化された真理値表312を用いるだけでよい。換言すれば、パラメタテーブル302を組み合わせ回路で実現する場合、パラメタを決定する入力の異種類が少ないほど、組み合わせ回路の回路規模が小さくなる。一般には、真理値表の簡単化にはクワイン・マクラスキー法などの公知技術が使われる。
【0042】
図2に示された演算器203は、制御部400を含む。パラメタテーブル302におけるパラメタ値が、
図3に示されたように指定アドレスに応じた出力データとして実現される場合には、制御部400は、所望のタイミングで、出力データに対応する指定アドレスのデータをパラメタテーブル302に供給する。パラメタテーブル302は、指定アドレスに応じた出力データすなわちパラメタ値を積和回路301に出力する。なお、所望のタイミングは、積和回路301が、パラメタテーブル302から出力されるべきパラメタ値を用いて乗算処理を実行する時点である。
【0043】
次に、
図2に例示された演算器の設計方法を説明する。
【0044】
図4は、CNNの各層のパラメタテーブルの回路構成および演算器の回路構成を設計する情報処理回路設計装置の一例を示すブロック図である。
図4に示す例では、情報処理回路設計装置500は、パラメタテーブル最適化部501、パラメタテーブル生成部502、並列度決定部503、および演算器生成部504を含む。
【0045】
並列度決定部503は、ネットワーク構造(具体的には、ネットワーク構造を示すデータ。)を入力する。演算器生成部504は、層毎の演算器の回路構成を出力する。パラメタテーブル最適化部501は、学習フェーズで学習されたパラメタセット(各層における重み)と、並列度決定部503が決定した並列度を入力する。パラメタテーブル生成部502は、パラメタテーブルの回路構成を出力する。
【0046】
並列度決定部503は、層毎の並列度を決定する。パラメタテーブル最適化部501は、入力された層毎のパラメタと、並列度決定部503が決定した層毎の並列度とに基づいて、パラメタテーブルを最適化する。パラメタテーブルの個数は並列度で決まるが、パラメタテーブル最適化部501は、複数のパラメタテーブル302におけるそれぞれのパラメタを最適化する。ここで、最適化とは、パラメタテーブルに対応する組み合わせ回路の回路面積を小さくすることである。
【0047】
例えば、並列度決定対象の層(対象層)で実行される畳み込み演算が3×3×128×128(=147,456の積和演算(パラメタ値とアクティベーション値とを対象とする積和演算)で構成されている場合を例にすると、並列度が「128」に決定されると、基本回路300の数(並列度)は128である。各々の基本回路300は、1152個の積和演算(147,456/128)に対する処理を実行する。その場合、基本回路300において、1152のパラメタ値を有するパラメタテーブルが128個だけ備えられる。なお、上述したように、パラメタテーブル302は、記憶回路で実現されるのではなく、組み合わせ回路で実現される。
【0048】
後述するように、パラメタテーブル最適化部501は、あらかじめ定められた方法を用いて、パラメタテーブル302のパラメタ値を最適化する。パラメタテーブル生成部502は、最適化されたパラメタ値を有するパラメタテーブル302を実現するための回路構成を、パラメタテーブルの回路構成として出力する。
【0049】
演算器生成部504は、並列度決定部503が決定した層毎の並列度を入力する。演算器生成部504は、並列度が示す数の基本回路300を並べた回路構成を、層毎に生成する。そして、演算器生成部504は、生成した層毎の回路構成を、演算器回路の構成として出力する。
【0050】
次に、
図5のフローチャートを参照して、第1の実施形態の情報処理回路設計装置の動作を説明する。
図5は、第1の実施形態の情報処理回路設計装置500の動作を示すフローチャートである。
【0051】
パラメタテーブル最適化部501は、学習フェーズで学習されたパラメタセット(複数のパラメタ値)を入力し、並列度決定部503は、あらかじめ決められているネットワーク構造を示すデータを入力する(ステップS11)。
【0052】
なお、本実施形態におけるネットワーク構造の概念の1つである深層学習アルゴリズムの種類として、例えば、AlexNet、GoogLeNet、ResNet(Residual Network)、SENet(Squeeze-and-Excitation Networks )、MobileNet、VGG-16、VGG-19がある。また、ネットワーク構造の概念の1つである層数として、例えば、深層学習アルゴリズムの種類に応じた層数が考えられる。また、ネットワーク構造の概念として、フィルタサイズなども含められ得る。
【0053】
以下、ネットワーク構造を示すデータを入力することを、ネットワーク構造を入力すると表現する。
【0054】
並列度決定部503は、層毎の並列度を決定する(ステップS12)。一例として、並列度決定部503は、(1)式で並列度Nを決定する。例えば、入力された深層学習アルゴリズムの種類で特定される層の数が19である場合には、並列度決定部503は、19の層のそれぞれの並列度を決定する。
【0055】
N=CL/DL ・・・(1)
【0056】
(1)式において、CLは、並列度決定対象の層(対象層)において1画面の全画素を1つの積和演算器で処理するのに必要なクロック数を示す。DLは、対象層において1画面の処理に要するクロック数(許容されるクロック数)を示す。
【0057】
図20に示されたCNNを例にすると、1画面が縦サイズ224、横サイズ224(50,176画素)の層(第1ブロックにおける層とする。)において1クロックで縦横1画素の処理し、1画面全体を50,176クロックで実行されるとする。これに対して、1画面が縦サイズ14、横サイズ14の層(第5ブロックにおける層とする)では、同じ時間で1画面の処理を完了するためには256クロックで縦横1画素の処理が実行すれば、1画面分の処理を第1クロックと同じ50、176クロックで完了できる。第1ブロックの畳み込み層の処理は、1画素あたり3(縦サイズ)×3(横サイズ)×3(入力チャネル)×64(出力チャネル)(=1728個)である。したがって、全画素を一つの積和演算器で処理するのに必要なクロック数は1728個×50,176画素=86、704、128個である。1画面全体を50,176クロックで完了するために、第1ブロックの層の並列度は、1728である。一方、第5ブロックの畳み込み層の処理は、1画素あたり3(縦サイズ)×3(横サイズ)×512(入力チャネル)×512(出力チャネル)(=2、359、296個)である。したがって、全画素を一つの積和演算器で処理するのに必要なクロック数は2、359、296個×196画素=462、422、016個である。1画面全体を50,176クロックで完了するために、第5ブロックの層の並列度は、9、216である。
【0058】
所望される演算速度(1画面の処理量/所要クロック数)に応じて、各層の並列度が決定されることによって、例えば、(1)式に基づいて各層の並列度が決定されることによって、各層の演算器(具体的には、演算器に含まれる複数の基本回路300)を常に稼働する状態にすることができる。
図22に示された構成において、演算器701~706に対して何らの工夫も施されない場合には、演算器706の稼働率は、演算器701の稼働率よりも低い。非特許文献1に記載された構成を例にすると、各層はfully-parallelで構成されるので、出力層に近い層では、演算器の稼働率はより低い。しかし、本実施形態では、全ての層の演算器の稼働率を高く維持することができる。
【0059】
パラメタテーブル最適化部501は、層毎に、決定された並列度に応じて、パラメタテーブル302を生成する(ステップS13)。さらに、パラメタテーブル最適化部501は、生成したパラメタテーブル302を最適化する(ステップS14)。
【0060】
図6は、パラメタテーブル302を最適化する処理(パラメタテーブル最適化処理)の一例を示すフローチャートである。
【0061】
パラメタテーブル最適化処理において、パラメタテーブル最適化部501は、CNN(推論器)の認識精度を測定する(S141)。ステップS141では、パラメタテーブル最適化部501は、決定された並列度に応じた数の基本回路300とパラメタテーブルの回路構成とを用いた推論器を使用してシミュレーションを実行する。シミュレーションは、適当な入力データを用いた推論である。そして、シミュレーション結果を正解と比較すること等によって、認識精度を得る。
【0062】
パラメタテーブル最適化部501は、認識精度が第1の基準値以上であるか否か確認する(ステップS142)。第1の基準値は、あらかじめ定められたしきい値である。認識精度が第1の基準値以上である場合には、パラメタテーブル最適化部501は、パラメタテーブル302の回路面積を見積もる。そして、パラメタテーブル302の回路面積が第2の基準値以下であるか否か確認する(ステップS144)。第2の基準値は、あらかじめ定められたしきい値である。パラメタテーブル最適化部501は、例えば、パラメタテーブル302を構成する組み合わせ回路における論理回路の数に基づいて、パラメタテーブル302の回路面積を見積もることができる。
【0063】
パラメタテーブル302の回路面積が第2の基準値以下である場合には、パラメタテーブル最適化部501は、パラメタテーブル最適化処理を終了する。
【0064】
認識精度が第1の基準値未満である場合、または、パラメタテーブル302の回路面積が第2の基準値を超える場合には、パラメタテーブル最適化部501は、パラメタ値を変更する(ステップS143)。そして、ステップS141に移行する。
【0065】
ステップS143において、パラメタテーブル最適化部501は、認識精度が第1の基準値未満である場合には、認識精度が向上すると想定される方向にパラメタ値を変更する。認識精度が向上すると想定される方向が不明である場合には、パラメタテーブル最適化部501は、カットアンドトライ(cut and try )でパラメタ値を変更してもよい。
【0066】
ステップS143において、パラメタテーブル最適化部501は、パラメタテーブル302の回路面積が第2の基準値を超える場合には、パラメタテーブル302の回路面積が小さくなるようにパラメタ値を変更する。パラメタテーブル302の回路面積を小さくするためのパラメタ値の変更方法として、例えば、以下のような方法がある。
【0067】
・パラメタテーブル302において、絶対値が所定のしきい値よりも小さいパラメタ値を0に変更する。
・パラメタテーブル302において、所定のしきい値よりも大きいパラメタ値(正数)を、パラメタテーブル302における最大のパラメタ値で置き換える。
・所定のしきい値よりも小さいパラメタ値(負数)を、パラメタテーブル302における最小のパラメタ値で置き換える。
・パラメタテーブル302における所定の領域毎に、代表的な値を設定し、領域内の全てのパラメタ値を代表的な値に置き換える。なお、代表的な値は、一例として、偶数の値、奇数の値、最頻値などである。
・パラメタ値を、パラメタテーブル302における近傍のパラメタ値に置き換える。
【0068】
なお、パラメタテーブル最適化部501は、上記の複数の方法のうちの1つの方法を用いてもよいが、上記の複数の方法のうちの2つ以上の方法を併用してもよい。
【0069】
図7は、パラメタ値の変更方法の一例を示す説明図である。
図7には、3×3のサイズのパラメタテーブルが例示されている。
図7(A)には、パラメタ値が変更される前のパラメタテーブル302aが示されている。
図7(B)には、パラメタ値が変更された後のパラメタテーブル302bが示されている。
【0070】
図7に示す例では、所定のしきい値である「3」よりも小さいパラメタ値が「0」に変更されている。
【0071】
上記の各方法に共通する目的は、パラメタテーブル302において、同じ値が頻出する、すなわち、同値のパラメタ値が増加するか、または、同じパターンが連続するようにすることである。なお、同じパターンが連続するという意味は、例えば、パラメタ値「1」「2」「3」(同じパターンの一例)のパターンが連続して出現するということである。
【0072】
上述したように、パラメタテーブル302が組み合わせ回路で実現される場合、パラメタ値の種類が少ないほど、組み合わせ回路の回路規模が小さくなる。また、同じパターンが連続する場合にも、組み合わせ回路の回路規模が小さくなることが期待される。
【0073】
本実施形態では、情報処理回路設計装置500は、推論器の認識精度が所望のレベル以上(具体的には、第1の基準値以上)であり、かつ、回路面積が所望のサイズ以下(具体的には、第2の基準値以下)になった場合に、パラメタテーブル最適化処理を終了する。
【0074】
図5に戻り、演算器生成部504は、層毎の演算器の回路構成を生成して出力する(ステップS15,S17)。すなわち、演算器生成部504は、並列度決定部503が決定した層毎の並列度に応じた演算器の回路構成を出力する。なお、本実施形態では、各層の基本回路300があらかじめ決められているので、演算器生成部504は、並列度決定部503が決定した並列度に応じた数の基本回路300(具体的には、層に特化した積和回路301)を生成する。
【0075】
パラメタテーブル生成部502は、パラメタテーブル302の回路構成を生成して出力する(ステップS16,S17)。すなわち、パラメタテーブル生成部502は、パラメタテーブル最適化部501が最適化したパラメタ値を出力するための回路構成を生成して出力する。パラメタ値を出力するための回路構成は、例えば、
図3(B)に例示されたような真理値表を実現する組み合わせ回路の構成である。
【0076】
なお、
図5のフローチャートでは、ステップS14~S16の処理が順次に実行されるが、ステップS14,S16の処理とステップS15の処理とは、並行して実行可能である。
【0077】
また、ステップS14の処理を実行するパラメタテーブル最適化部501が設けられていない場合でも、並列度決定部503が適切な並列度を決定することによって、回路規模が小さくなるという効果を得ることができる。
【0078】
以上に説明したように、本実施形態の情報処理回路としての推論器において、パラメタテーブル302は組み合わせ回路で実現されているので、
図21に示されたパラメタ値をメモリから読み出すように構成された情報処理回路に比べて処理速度が向上する。また、推論器において各層の並列度がその層に所望される演算速度などに応じて定められているので、各層がfully-parallelで構成される場合に比べて、全ての層の演算器の稼働率を高く維持することができる。また、本実施形態の推論器は、各層がfully-parallelで構成される場合に比べて、回路規模が小さくなる。その結果、推論器の消費電力が低減する。
【0079】
また、情報処理回路設計装置500がパラメタ値を最適化するように構成される場合には、推論器の回路規模をより小さくすることができる。
【0080】
なお、本実施形態では、CNNの推論器を例にして情報処理回路が説明されたが、入力データとパラメタ値とを用いる演算を行う層を有する他のネットワークに本実施形態を適用することができる。また、本実施形態では、入力データとして画像データが用いられているが、画像データ以外を入力データとするネットワークでも、本実施形態を活用することができる。
【0081】
データセンタの電力消費量は多いので、データセンタにおいて深層学習のアルゴリズムが実行される場合に、低消費電力で実行されることが望ましい。本実施形態の情報処理回路を用いる場合には消費電力が低減するので、本実施形態の情報処理回路は、データセンタにおいて有効に活用可能である。
【0082】
また、エッジ側でも、低消費電力が求められる。本実施形態の情報処理回路は、エッジ側においても有効に活用可能である。
【0083】
実施形態2.
図8は、第2の実施形態の情報処理回路を模式的に示す説明図である。本実施形態の情報処理回路は、深層学習を行う情報処理回路が複数の用途(例えば、顔検出用や車検出用など)に用いられる場合であっても、一部のパラメタを更新できるようにすることで、各用途に対応できるようにするものである。
【0084】
本実施形態では、2種類のパラメタを想定する。第1のパラメタ(以下、第1パラメタと記す。)は、深層学習を行うそれぞれの用途で共通に用いられるパラメタである。第2のパラメタ(以下、第2パラメタと記す。)は、用途ごとに個別に用いられるパラメタである。
図8では、2種類のパラメタを用いた情報処理回路101における演算器201,202,203,204,205,206が例示されている。すなわち、
図8には、2種類のパラメタを用いたCNNのうちの6層が例示されている。
【0085】
各演算器201,202,203,204,205,206は、層で使用される第1パラメタ221,222,223,224,225,226および第2パラメタ231,232,233,234,235,236と入力データとを対象として積和演算を実行する。演算器201~206は、複数の組み合わせ回路で実現される。また、第1パラメタ221~226および第2パラメタ231~236も複数の組み合わせ回路で実現される。なお、第1の実施形態の情報処理回路100との回路構成の違いは、第1パラメタおよび第2パラメタを構成する回路がそれぞれ存在することである。
【0086】
具体的には、第1パラメタを構成する回路は、回路構成を変更できない方式で製造される。一方、第2パラメタを構成する回路は、回路構成を変更できる方式で製造される。回路構成を変更できない方式の一例として、セルベースの回路が挙げられる。また、回路構成を変更できる方式の一例として、ゲートアレイやFPGA(Field Programmable Gate Array )などが挙げられる。以下の説明では、第1パラメタを構成する回路を第1パラメタ出力回路と記し、第2パラメタを構成する回路を第2パラメタ出力回路と記す。また、第1パラメタ出力回路と第2パラメタ出力回路とを含む回路をパラメタ値出力回路と言うことができる。
【0087】
第2パラメタ出力回路は、回路構成を変更できることから、製造時に記憶される情報は任意である。製造時において、第2パラメタ出力回路は、個別の情報を保持していなくてもよく、用途に応じたいずれかのパラメタが保持されていてもよい。第2パラメタ出力回路は、用途に応じて回路が調整される(更新される)ことから、
図8では、その状態を示すため、第2パラメタ231~236を点線で囲って示している。
【0088】
第1の実施形態と同様に、演算器201~206のそれぞれにおいて並列演算が実行される。並列演算における1つの演算を実行する回路を基本回路とする。また、基本回路は、層の種類に応じてあらかじめ決定されている。
【0089】
図9は、第2の実施形態の情報処理回路の基本回路の構成例を示す説明図である。
図9には、6つの層のそれぞれの演算器(回路)201,202,203,204,205,206が例示されている。各層において、並列処理数の基本回路310が設けられる。
図9には、演算器203に含まれる基本回路310が例示されているが、他の層の演算器201,202,204,205,206も同様の回路構成を有する。
【0090】
基本回路310は、積和回路301と、レジスタ303と、第1パラメタテーブル304と、第2パラメタテーブル305とを含む。積和回路301は、第1の実施形態と同様、入力データと第1パラメタテーブル304および第2パラメタテーブル305からのパラメタ値を乗算し、乗算値を加算する回路である。なお、全ての基本回路310が同様の構成である必要はなく、例えば、複数の基本回路310のうち1つ以上に積和回路301と第1パラメタテーブル304と第2パラメタテーブル305とが含まれていてもよい。
【0091】
第1パラメタテーブル304は、上述する第1パラメタ出力回路に対応し、本実施形態の情報処理回路101を用いた深層学習を行う各用途で共通に用いられるパラメタを格納するテーブルである。また、第2パラメタテーブル305は、上述する第2パラメタ出力回路に対応し、用途ごとに個別に用いられるパラメタを格納するテーブルである。
【0092】
上述するように、
図9に示す例では、基本回路310は、入力データと、第1パラメタテーブル304および第2パラメタテーブル305からのパラメタ値とを乗算し、乗算値を加算する積和回路301を含む。なお、
図9には、パラメタ値を格納する第1パラメタテーブル304および第2パラメタテーブル305を例示する。ただし、実際には、第1パラメタテーブル304および第2パラメタテーブル305は、第1の実施形態のパラメタテーブル302と同様、記憶部(記憶回路)に記憶されているのではなく、組み合わせ回路で実現される。
【0093】
図9に示された演算器203は、制御部400を含む。第1パラメタテーブル304および第2パラメタテーブル305におけるパラメタ値が、第1の実施形態と同様に指定アドレスに応じた出力データとして実現される場合には、制御部400は、所望のタイミングで、出力データに対応する指定アドレスのデータを第1パラメタテーブル304に供給する。第1パラメタテーブル304を介した第2パラメタテーブル305は、指定アドレスに応じた出力データ、すなわち、パラメタ値を積和回路301に出力する。なお、所望のタイミングは、積和回路301が、第1パラメタテーブル304および第2パラメタテーブル305から出力されるべきパラメタ値を用いて乗算処理を実行する時点である。
【0094】
次に、
図9に例示された演算器の設計方法を説明する。
【0095】
図10は、CNNの各層における第1パラメタテーブルおよび第2パラメタテーブルの回路構成並びに演算器の回路構成を設計する情報処理回路設計装置の一例を示すブロック図である。
図10に示す例では、情報処理回路設計装置510は、パラメタテーブル最適化部511、パラメタテーブル生成部512、並列度決定部513、演算器生成部514、およびパラメタテーブル分割部515を含む。なお、情報処理回路設計装置510にパラメタテーブル分割部515が存在すること以外については、第1の実施形態の情報処理回路設計装置500と同様の構成である。
【0096】
並列度決定部513は、ネットワーク構造(具体的には、ネットワーク構造を示すデータ。)を入力する。演算器生成部514は、層毎の演算器の回路構成を出力する。パラメタテーブル最適化部511は、学習フェーズで学習された複数のパラメタセット(各層における重み)と、並列度決定部513が決定した並列度を入力する。複数のパラメタセットは、具体的には、用途ごとに用いられるニューラルネットワークのパラメタセットである。
【0097】
以下の説明では、2種類のパラメタセット(以下、パラメタセットA、パラメタセットBと記す。)が入力される場合について説明する。上述の例では、パラメタセットAが顔検出用に用いられるパラメタセットであり、パラメタセットBが車検出用に用いられるパラメタセットである。ただし、パラメタセットの種類は2種類に限定されず、3種類以上であってもよい。
【0098】
並列度決定部513は、層毎の並列度を決定する。なお、並列度決定部513が層毎の並列度を決定する方法は、第1の実施形態と同様である。また、パラメタテーブル最適化部511は、パラメタセットごとに、入力された層毎のパラメタと、並列度決定部513が決定した層毎の並列度とに基づいて、パラメタテーブルを最適化する。第1の実施形態と同様、パラメタテーブルの個数は並列度で決まり、パラメタテーブル最適化部511は、パラメタセットごとに各パラメタテーブルにおけるそれぞれのパラメタを最適化する。なお、最適化の方法は後述される。
【0099】
パラメタテーブル分割部515は、最適化された各パラメタセットのパラメタテーブルを、各パラメタセットで共通する共通部と、共通部以外の個別部とに分割する。具体的には、パラメタテーブル分割部515は、パラメタ値を出力する組み合わせ回路として、各パラメタセットで共通する論理演算を計算する組み合わせ回路(すなわち、共通部)と、パラメタテーブルの入力に加えて前記共通部の出力を入力して個別の論理演算を計算する組み合わせ回路(すなわち、個別部)とに分割した回路を作成する。また、パラメタテーブル分割部515は、パラメタ値を出力する組み合わせ回路として、各パラメタセットで共通するパラメタテーブル(すなわち、共通部)を実現する組み合わせ回路と、共通部を除く各パラメタセットにおけるパラメタテーブル(すなわち、個別部)を実現する組み合わせ回路とに分割した回路を作成してもよい。
【0100】
具体的には、パラメタテーブル分割部515は、各パラメタセットのパラメタテーブルを表わす論理式を作成する。そして、パラメタテーブル分割部515は、作成した各パラメタセットの論理式のうち、共通する論理式を共通部として抽出し、残りの論理式(すなわち、共通していない論理式)を各パラメタセットの個別部とする。この共通部を実現する組み合わせ回路が、上述する第1パラメタ出力回路に対応し、個別部を実現する組み合わせ回路が、上述する第2パラメタ出力回路に対応する。すなわち、パラメタテーブル分割部515は、このように共通部および個別部を実現する。
【0101】
共通部として生成できる回路面積が、個別部として生成される回路面積より大きいほど、総回路面積は小さくなる。すなわち、個別部が占める回路面積と共通部が占める回路面積の和に対する共通部が占める回路面積の割合が大きいほど面積効率は良い(言い換えると、個別部が占める回路面積の割合が小さいほど面積効率は良い)と言える。共通部および個別部の回路面積は、例えば、各組み合わせ回路における論理回路の数に基づいて、各々見積もることができる。
【0102】
パラメタテーブル生成部512は、第1パラメタテーブル304および第2パラメタテーブル305(すなわち、共通部および個別部)を実現するための回路構成を、パラメタテーブルの回路構成として出力する。なお、上述したように、第1パラメタテーブル304および第2パラメタテーブル305は、記憶回路で実現されるのではなく、組み合わせ回路で実現される。
【0103】
演算器生成部514は、並列度決定部513が決定した層毎の並列度を入力する。演算器生成部514は、並列度が示す数の基本回路310を並べた回路構成を、層毎に生成する。そして、演算器生成部514は、生成した層毎の回路構成を、演算器回路の構成として出力する。
【0104】
図11は、パラメタテーブルを分割する処理の一例を示す説明図である。
図11に示す例では、パラメタセットAを最適化したパラメタテーブルを実現する回路をパラメタA回路3021と示し、パラメタセットBを最適化したパラメタテーブルを実現する回路をパラメタB回路3022と示す。
【0105】
パラメタテーブル分割部515は、パラメタA回路3021とパラメタB回路3022のうち、共通部として、それぞれA回路(A-1)およびB回路(B-1)を抽出する。その結果、A回路(A-2)およびB回路(B-2)が、各パラメタセットの個別部になる。そして、パラメタテーブル分割部515は、A回路(A-1)およびB回路(B-1)を第1パラメタテーブル304(共通部)とし、A回路(A-2)またはB回路(B-2)を第2パラメタテーブル305(個別部)とする。
【0106】
次に、
図12のフローチャートを参照して、第2の実施形態の情報処理回路設計装置の動作を説明する。
図12は、第2の実施形態の情報処理回路設計装置510の動作を示すフローチャートである。
【0107】
パラメタテーブル最適化部511は、学習フェーズで学習された顔検出用・車検出用などの複数種類のパラメタセット(複数のパラメタ値)を入力し、並列度決定部513は、あらかじめ決められているネットワーク構造を示すデータを入力する(ステップS21)。
【0108】
並列度決定部503は、層毎の並列度を決定する(ステップS22)。並列度の決定方法は、第1の実施形態で用いた方法と同様である。
【0109】
パラメタテーブル最適化部511は、決定された並列度に応じて、層毎にパラメタテーブルを生成する(ステップS23)。さらに、パラメタテーブル最適化部511は、生成したパラメタテーブルを最適化し(ステップS24)、最適化されたパラメタセットをそれぞれ2つ(すなわち、共通部と個別部)に分割する(ステップS25)。
【0110】
ここで、パラメタテーブルを最適化する処理について詳述する。
図13は、パラメタテーブルを最適化する処理(パラメタ値変更処理)の一例を示すフローチャートである。
【0111】
パラメタ値変更処理において、パラメタテーブル分割部515は、上述したように、パラメタセットごとのパラメタテーブルを各々共通部と個別部とに分割する(ステップS251)。ただし、共通部がない場合は、パラメタテーブル分割部515は、分割を行わない。さらに、パラメタテーブル最適化部511は、複数種類のパラメタセット(例えば、パラメタセットAおよびパラメタセットB)を用いたCNN(推論器)の認識精度を各々測定する(ステップS252)。そして、パラメタテーブル最適化部511は、各パラメタセットを用いたCNNの認識精度が基準値(以下、精度基準値と記すこともある。)以上か否か判定する(ステップS253)。
【0112】
例えば、パラメタセットが2種類(パラメタセットAおよびパラメタセットB)の場合、パラメタテーブル最適化部511は、パラメタセットAを用いたCNNの認識精度が第1の基準値以上であり、かつ、パラメタセットBを用いたCNNの認識精度が第2の基準値以上か否か判定する。
【0113】
各認識精度が基準値(精度基準値)以上の場合(ステップS253におけるYesの場合)は、ステップS254に移行する。第1の基準値および第2の基準値は、あらかじめ定められたしきい値である。一方、各認識精度が基準値(精度基準値)以上でない場合(ステップS253におけるNoの場合)は、ステップS255に移行する。
【0114】
ステップS254において、パラメタテーブル最適化部511は、共通部が占める回路面積を見積もる。そして、共通部の面積が基準値(以下、第3の基準値または面積基準値と記す。)以上の場合(ステップS254におけるYesの場合)、処理は終了する。第3の基準値は、あらかじめ定められたしきい値である。一方、共通部の面積が基準値(面積基準値)以上でない場合(ステップS254におけるNoの場合)、ステップS255に移行する。
【0115】
ステップS255において、パラメタテーブル最適化部511は、パラメタテーブルにおけるパラメタ値(具体的には、第1パラメタ値および第2パラメタ値の少なくとも1つ)を変更する。パラメタテーブル最適化部511は、例えば、共通部が占める回路面積が第3の基準値未満である場合には、回路面積が向上すると想定される方向にパラメタテーブルのパラメタ値を変更する。回路面積が向上すると想定される方向が不明である場合には、パラメタテーブル最適化部511は、カットアンドトライ(cut and try )でパラメタ値を変更してもよい。
【0116】
以降、パラメタテーブル最適化部511は、ステップS252以下の処理を繰り返す。すなわち、パラメタテーブル最適化部511は、第1パラメタ値および第2パラメタ値のうち少なくとも1つを繰り返し変更する。なお、ステップS255にてパラメタ値を変更した結果、認識精度が基準値に達しない場合には、パラメタテーブル最適化部511は、ステップS255で変更された値を変更する前の元の値に戻してもよい。また、パラメタ値を何度変更しても、認識精度および回路面積が基準値に達しない場合には、パラメタテーブル最適化部511は、パラメタ値の変更回数が回数制限に達したときに、パラメタ値変更処理を終了してもよい。
【0117】
図14は、パラメタ値を変更する前の真理値表の一例を示す説明図である。
図14には、パラメタ変更前の回路A(パラメタA回路3021)の真理値表と、パラメタ変更前の回路B(パラメタB回路3022)の真理値表の一例が示されている。
【0118】
回路Aの真理値表401において、指定アドレスA,B,Cのそれぞれは、組み合わせ回路の入力であり、パラメタZ1は、組み合わせ回路の出力である。すなわち、Z1を、指定アドレスA,B,Cに対する出力データと見なすことができる。
【0119】
同様に、回路Bの真理値表402において、指定アドレスA,B,Cのそれぞれは、組み合わせ回路の入力であり、パラメタZ2は、組み合わせ回路の出力である。また、Z2を、指定アドレスA,B,Cに対する出力データと見なすことができる。
【0120】
真理値表401において、出力されるパラメタ(Z1)を論理式で表すと、A&(NOT B)&C|A&B&Cである。また、真理値表402において、出力されるパラメタ(Z2)を論理式で表すと、A&(NOT B)&C|(NOT A)&B&(NOT C)である。この場合、A&(NOT B)&Cは、各パラメタテーブルで共通している。したがって、A&(NOT B)&Cを共通部(D)とすると、変換後の式は、D=A&(NOT B)&C,Z1=D|A&B&C,Z2=D|(NOT A)&B&(NOT C)となる。
【0121】
一方、
図15は、
図14に例示するパラメタ値を変更した後の真理値表の一例を示す説明図である。
図15には、パラメタ変更後の回路A(パラメタA回路3021)の真理値表と、パラメタ変更後の回路B(パラメタB回路3022)の真理値表の一例が示されている。具体的には、真理値表412において、下線で示す最終行のパラメタ値(Z2)が0から1に変更されている。
【0122】
真理値表411において、出力されるパラメタ(Z1)を論理式で表すと、A&(NOT B)&C|A&B&Cである。また、真理値表412において、出力されるパラメタ(Z2)を論理式で表すと、A&(NOT B)&C|(NOT A)&B&(NOT C)|A&B&Cである。この場合、A&(NOT B)&C|A&B&Cは、各パラメタテーブルで共通している。したがって、A&(NOT B)&C|A&B&Cを共通部(D)とすると、変換後の式は、D=A&(NOT B)&C|A&B&C,Z1=D,Z2=D|(NOT A)&B&(NOT C)となる。
【0123】
ここで、変更前(
図14)と変更後(
図15)における第1パラメタテーブル304および第2パラメタテーブル305の回路面積を比較する。共通部(D)は、変更後の方が、変更前よりA&B&Cを実現する回路の分だけ大きくなっている。一方、個別部(Z1)は、変更後の方が、変更前よりA&B&Cを実現する回路の分だけ小さくなっている。すなわち、変更後は、変更前に比べて共通部の面積割合が大きく、個別部の面積割合が小さくなっている。したがって、変更後の方が、面積効率が良いと言える。
【0124】
図12に戻り、演算器生成部514は、層毎の演算器の回路構成を生成して出力する(ステップS26,S29)。すなわち、演算器生成部514は、並列度決定部513が決定した層毎の並列度に応じた演算器の回路構成を出力する。なお、本実施形態では、各層の基本回路310があらかじめ決められているので、演算器生成部514は、並列度決定部513が決定した並列度に応じた数の基本回路310(具体的には、層に特化した積和回路301)を生成する。
【0125】
パラメタテーブル生成部512は、第1パラメタテーブル304および第2パラメタテーブル305の回路構成を生成して出力する(ステップS27,S28,S29)。すなわち、パラメタテーブル生成部512は、パラメタテーブル最適化部511が最適化し、パラメタテーブル分割部515が分割したパラメタ値を出力するための回路構成を生成して出力する。パラメタ値を出力するための回路構成は、第1パラメタテーブル回路および第2パラメタテーブル回路の構成である。
【0126】
なお、
図12のフローチャートでは、ステップS24~S28の処理が順次に実行されるが、ステップS25,S27,S28の処理とステップS26の処理とは、並行して実行可能である。
【0127】
上述するように、第1パラメタテーブル回路および第2パラメタテーブル回路は、組み合わせ回路で生成される。第1パラメタテーブル回路の製造方法は、製造後に回路構成を変更できない方式、例えば、セルベース方式で製造される。また、第2パラメタテーブル回路の製造方法は、製造後に回路構成を変更できる方式、例えば、ゲートアレイ方式やFPGA方式などで製造される。
【0128】
図16は、各製造方法における製造後の回路の特徴を示す説明図である。セルベース方式で製造された回路は、製造後の回路変更は「不可」であるが、回路面積を小さくすることができる。一方、FPGA方式で製造された回路は、製造後の回路変更は「可能」であるが、回路面積は大きくなる。また、ゲートアレイ方式で製造された回路は、ある程度変更可能と言えるが、回路面積はセルベース方式よりも大きくなる。製造後の回路面積の規模を小さくするためには、回路はセルベース方式で製造される方が望ましい。しかし、製造後に回路を変更したい場合は、セルベース方式では困難であるため、回路はゲートアレイ方式やFPGA方式で製造される方が望まれる。
【0129】
一方、本実施形態の情報処理回路は、組み合わせ回路で構成されるパラメタ値出力回路として、回路構成を変更できない方式(例えば、セルベース方式)で製造された第1パラメタ値出力回路と、回路構成を変更できる方式(例えば、FPGA方式、ゲートアレイ方式)で製造された第2パラメタ値出力回路とを含むように構成される。
【0130】
具体的には、第1パラメタ値出力回路は、第1パラメタテーブル304に基づいて製造され、CNNに用いられる複数種類のパラメタセットのうち、いずれの種類のパラメタセットにおいても用いられる論理演算を計算する第1パラメタ値を出力する。また、第2パラメタ値出力回路は、製造後に回路構成を変更できる方式で製造され、製造後に第2パラメタテーブル305に基づいて調整され、パラメタテーブルの入力に加えて第1パラメタ値出力回路の出力を入力して個別の論理演算を計算する第2パラメタ値を出力する。このように、共通化できるパラメタを固定化しつつ、各用途で個別に使用されるパラメタを変更可能とすることで、面積効率を保ちつつ、重み(パラメタ)を更新することが可能になる。
【0131】
以上に説明したように、本実施形態の情報処理回路としての推論器は、入力データとパラメタ値とを用いて積和演算を行う積和回路と、パラメタ値を出力するパラメタ値出力回路とを含む。また、パラメタ値出力回路は、組み合わせ回路で構成され、回路構成を変更できない方式で製造された第1パラメタ値出力回路と、回路構成を変更できる方式で製造された第2パラメタ値出力回路とを含む。その結果、本実施形態の推論器は、面積効率を保ちつつ、重み(パラメタ)を更新することが可能になる。具体的には、本実施形態の推論器では、製造後に、パラメタテーブルの入力に加えて第1パラメタ値出力回路の出力を入力して個別の論理演算の計算結果を、第2パラメタ値出力回路が出力するように調整できる。
【0132】
図4および
図10に示された情報処理回路設計装置500,510における各構成要素は、1つのハードウエア、または、1つのソフトウエアで構成可能である。また、各構成要素は、複数のハードウエア、または、複数のソフトウエアでも構成可能である。また、各構成要素の一部をハードウエアで構成し、他部をソフトウエアで構成することもできる。
【0133】
また、第2の実施形態のパラメタテーブル最適化部511、パラメタテーブル分割部515およびパラメタテーブル生成部512によって、パラメタ値(より具体的には、第1パラメタ値および第2パラメタ値)を出力する回路が作成される。このことから、パラメタテーブル最適化部511、パラメタテーブル分割部515およびパラメタテーブル生成部512をまとめて、パラメタ値出力回路作成手段(より詳しくは、第1パラメタ値出力回路作成手段および第2パラメタ値出力回路作成手段)と言うことができる。
【0134】
図17は、CPUを有するコンピュータの一例を示すブロック図である。情報処理回路設計装置500,510における各構成要素が、CPU(Central Processing Unit )等のプロセッサやメモリ等を有するコンピュータで実現される場合には、例えば、
図17に示すCPUを有するコンピュータで実現可能である。
図17に、CPU1000に接続された、記憶装置1001およびメモリ1002を示す。CPU1000は、記憶装置1001に格納されたプログラムに従って処理(情報処理回路設計処理)を実行することによって、
図4および
図10に示された情報処理回路設計装置500,510における各機能を実現する。すなわち、コンピュータは、
図4および
図10に示された情報処理回路設計装置500,510におけるパラメタテーブル最適化部501,511、パラメタテーブル生成部502,512、並列度決定部503,513、演算器生成部504,514、およびパラメタテーブル分割部515の機能を実現する。
【0135】
記憶装置1001は、例えば、非一時的なコンピュータ可読媒体(non-transitory computer readable medium )である。非一時的なコンピュータ可読媒体は、様々なタイプの実体のある記録媒体(tangible storage medium)のいずれかである。非一時的なコンピュータ可読媒体の具体例として、磁気記録媒体(例えば、ハードディスク)、光磁気記録媒体(例えば、光磁気ディスク)、CD-ROM(Compact Disc-Read Only Memory )、CD-R(Compact Disc-Recordable )、CD-R/W(Compact Disc-ReWritable )、半導体メモリ(例えば、マスクROM、PROM(Programmable ROM)、EPROM(Erasable PROM )、フラッシュROM)がある。
【0136】
また、プログラムは、様々なタイプの一時的なコンピュータ可読媒体(transitory computer readable medium )に格納されてもよい。一時的なコンピュータ可読媒体には、例えば、有線通信路または無線通信路を介して、すなわち、電気信号、光信号または電磁波を介して、プログラムが供給される。
【0137】
メモリ1002は、例えばRAM(Random Access Memory)で実現され、CPU1000が処理を実行するときに一時的にデータを格納する記憶手段である。メモリ1002に、記憶装置1001または一時的なコンピュータ可読媒体が保持するプログラムが転送され、CPU1000がメモリ1002内のプログラムに基づいて処理を実行するような形態も想定しうる。
【0138】
図18は、情報処理回路の主要部を示すブロック図である。情報処理回路10は、深層学習における層の演算を実行する情報処理回路であって、入力データとパラメタ値とを用いて積和演算を行う積和回路11(実施形態では、積和回路301で実現される。)と、パラメタ値を出力するパラメタ値出力回路12(実施形態では、第1パラメタテーブル304および第2パラメタテーブル305で実現される。)とを含み、パラメタ値出力回路12は、組み合わせ回路で構成され、回路構成を変更できない方式で製造された第1パラメタ値出力回路13(実施形態では、第1パラメタテーブル304で実現される。)と、回路構成を変更できる方式で製造された第2パラメタ値出力回路14(実施形態では、第2パラメタテーブル305で実現される。)とを含む。
【0139】
図19は、情報処理回路設計装置の主要部を示すブロック図である。情報処理回路設計装置20は、学習済みの複数のパラメタ値を含む複数種類のパラメタセットとネットワーク構造を特定可能なデータとを入力する入力手段21(実施形態では、パラメタテーブル最適化部511の一部および並列度決定部513の一部として実現される。)と、入力データとパラメタ値とを用いて積和演算を行う回路であってネットワーク構造における層に特化した積和回路を作成する演算器生成手段22(実施形態では、演算器生成部514で実現される。)と、複数種類のパラメタセットにおけるパラメタ値を出力する組み合わせ回路を作成するパラメタ値出力回路作成手段23(実施形態では、パラメタテーブル最適化部511、パラメタテーブル分割部515、およびパラメタテーブル生成部512で実現される。)とを含み、パラメタ値出力回路作成手段23は、回路構成を変更できない方式で実現される第1パラメタ値出力回路を作成する第1パラメタ値出力回路作成手段24(実施形態では、パラメタテーブル最適化部511、パラメタテーブル分割部515およびパラメタテーブル生成部512で実現される。)と、回路構成を変更できる方式で実現される第2パラメタ値出力回路を作成する第2パラメタ値出力回路作成手段25(実施形態では、パラメタテーブル最適化部511、パラメタテーブル分割部515およびパラメタテーブル生成部512で実現される。)とを含む。
【0140】
上記の実施形態の一部または全部は、以下の付記のようにも記載され得るが、以下に限定されるわけではない。
【0141】
(付記1)深層学習における層の演算を実行する情報処理回路であって、
入力データとパラメタ値とを用いて積和演算を行う積和回路と、
前記パラメタ値を出力するパラメタ値出力回路とを備え、
前記パラメタ値出力回路は、組み合わせ回路で構成され、
回路構成を変更できない方式で製造された第1パラメタ値出力回路と、
回路構成を変更できる方式で製造された第2パラメタ値出力回路と
を含むことを特徴とする情報処理回路。
【0142】
(付記2)前記第1パラメタ値出力回路は、深層学習を行うそれぞれの用途で共通に用いられるパラメタ値を出力し、
前記第2パラメタ値出力回路は、前記用途ごとに個別に用いられるパラメタ値を出力する
付記1の情報処理回路。
【0143】
(付記3)並列処理数に応じた数の基本回路を備え、
複数の前記基本回路のうち1つ以上は、前記積和回路と前記第1パラメタ値出力回路と前記第2パラメタ値出力回路とを含む
付記1または付記2の情報処理回路。
【0144】
(付記4)深層学習における層の演算を実行する情報処理回路を生成する情報処理回路の設計方法であって、
学習済みの複数のパラメタ値を含む複数種類のパラメタセットとネットワーク構造を特定可能なデータとを入力し、
入力データとパラメタ値とを用いて積和演算を行う回路であって前記ネットワーク構造における層に特化した積和回路を作成し、
前記複数種類のパラメタセットにおけるパラメタ値を出力する組み合わせ回路として、
回路構成を変更できない方式で実現される第1パラメタ値出力回路を作成し、
回路構成を変更できる方式で実現される第2パラメタ値出力回路を作成する
ことを特徴とする情報処理回路の設計方法。
【0145】
(付記5)ニューラルネットワークに用いられる複数種類のパラメタセットのうち、いずれの種類のパラメタセットにおいても用いられる第1の論理演算を計算する前記第1パラメタ値出力回路を作成し、
パラメタテーブルの入力に加えて前記第1パラメタ値出力回路の出力を入力して個別の論理演算を計算する前記第2パラメタ値出力回路を作成する
付記4の情報処理回路の設計方法。
【0146】
(付記6)複数種類のパラメタセットを用いたニューラルネットワークにおける情報処理回路の各精度を測定し、
前記第1パラメタ値出力回路の回路面積と、前記第2パラメタ値出力回路の回路面積とを見積り、
前記複数種類のパラメタセットそれぞれを用いた各ニューラルネットワークの精度が予め定めた精度基準値以上であり、かつ、前記第1パラメタ値出力回路の回路面積の割合が予め定めた面積基準値以上であるという条件が満たされるまで、前記第1パラメタ値および前記第2パラメタ値のうち少なくとも1つを繰り返し変更する
付記4または付記5の情報処理回路の設計方法。
【0147】
(付記7)深層学習における層の演算を実行する情報処理回路を生成するための情報処理回路の設計プログラムが格納されたコンピュータ読み取り可能な記録媒体であって、
前記情報処理回路の設計プログラムは、
学習済みの複数のパラメタ値を含む複数種類のパラメタセットとネットワーク構造を特定可能なデータとを入力する処理と、
入力データとパラメタ値とを用いて積和演算を行う回路であって前記ネットワーク構造における層に特化した積和回路を作成する処理と、
前記複数種類のパラメタセットにおけるパラメタ値を出力する組み合わせ回路として、
回路構成を変更できない方式で実現される第1パラメタ値出力回路を作成する処理と、
回路構成を変更できる方式で実現される第2パラメタ値出力回路を作成する処理と
をプロセッサに実行させることを特徴とする。
【0148】
(付記8)前記情報処理回路の設計プログラムは、
ニューラルネットワークに用いられる複数種類のパラメタセットのうち、いずれの種類のパラメタセットにおいても用いられる第1の論理演算を計算する前記第1パラメタ値出力回路を作成する処理と、
パラメタテーブルの入力に加えて前記第1パラメタ値出力回路の出力を入力して個別の論理演算を計算する前記第2パラメタ値出力回路を作成する処理とをプロセッサに実行させる
付記7の記録媒体。
【0149】
(付記9)深層学習における層の演算を実行する情報処理回路を生成する情報処理回路設計装置であって、
学習済みの複数のパラメタ値を含む複数種類のパラメタセットとネットワーク構造を特定可能なデータとを入力する入力手段と、
入力データとパラメタ値とを用いて積和演算を行う回路であって前記ネットワーク構造における層に特化した積和回路を作成する演算器生成手段と、
前記複数種類のパラメタセットにおけるパラメタ値を出力する組み合わせ回路を作成するパラメタ値出力回路作成手段とを備え、
前記パラメタ値出力回路作成手段は、
回路構成を変更できない方式で実現される第1パラメタ値出力回路を作成する第1パラメタ値出力回路作成手段と、
回路構成を変更できる方式で実現される第2パラメタ値出力回路を作成する第2パラメタ値出力回路作成手段と
を備えたことを特徴とする情報処理回路設計装置。
【0150】
(付記10)前記第1パラメタ値出力回路作成手段は、ニューラルネットワークに用いられる複数種類のパラメタセットのうち、いずれの種類のパラメタセットにおいても用いられる第1の論理演算を計算する前記第1パラメタ値出力回路を作成し、
前記第2パラメタ値出力回路作成手段は、パラメタテーブルの入力に加えて前記第1パラメタ値出力回路の出力を入力して個別の論理演算を計算する前記第2パラメタ値出力回路を作成する
付記9の情報処理回路設計装置。
【0151】
(付記11)深層学習における層の演算を実行する情報処理回路を生成するためのプログラムであって、
コンピュータに、
学習済みの複数のパラメタ値を含む複数種類のパラメタセットとネットワーク構造を特定可能なデータとを入力する処理と、
入力データとパラメタ値とを用いて積和演算を行う回路であって前記ネットワーク構造における層に特化した積和回路を作成する処理と、
前記複数種類のパラメタセットにおけるパラメタ値を出力する組み合わせ回路として、
回路構成を変更できない方式で実現される第1パラメタ値出力回路を作成する処理と、
回路構成を変更できる方式で実現される第2パラメタ値出力回路を作成する処理と
を実行させるための情報処理回路の設計プログラム。
【0152】
(付記12)コンピュータに、
ニューラルネットワークに用いられる複数種類のパラメタセットのうち、いずれの種類のパラメタセットにおいても用いられる第1の論理演算を計算する前記第1パラメタ値出力回路を作成する処理と、
パラメタテーブルの入力に加えて前記第1パラメタ値出力回路の出力を入力して個別の論理演算を計算する前記第2パラメタ値出力回路を作成する処理とを実行させる
付記11の情報処理回路の設計プログラム。
【0153】
以上、実施形態を参照して本願発明を説明したが、本願発明は上記の実施形態に限定されない。本願発明の構成や詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
【符号の説明】
【0154】
10 情報処理回路
11 積和回路
12 パラメタ値出力回路
13 第1パラメタ値出力回路
14 第2パラメタ値出力回路
20 情報処理回路設計装置
21 入力手段
22 演算器生成手段
23 パラメタ値出力回路作成手段
24 第1パラメタ値出力回路作成手段
25 第2パラメタ値出力回路作成手段
100,101 情報処理回路
201,202,203,204,205,206 演算器
211,212,213,214,215,216 パラメタ
221,222,223,224,225,226 第1パラメタ
231,232,233,234,235,236 第2パラメタ
300,310 基本回路
301 積和回路
302 パラメタテーブル
3021 パラメタAテーブル
3022 パラメタBテーブル
303 レジスタ
304 第1パラメタテーブル
305 第2パラメタテーブル
400 制御部
500,510 情報処理回路設計装置
501,511 パラメタテーブル最適化部
502,512 パラメタテーブル生成部
503,513 並列度決定部
504,514 演算器生成部
515 パラメタテーブル分割部
1000 CPU
1001 記憶装置
1002 メモリ