(57)【特許請求の範囲】
【請求項１】
複数の層を備えたニューラルネットワークモデルにより表される動作を実行する回路のアーキテクチャを推定するアーキテクチャ推定装置において、
前記ニューラルネットワークモデルを表すニューラルネットワーク情報と、前記回路に要求される非機能要件とを受け付ける受付部と、
前記複数の層の層間のアーキテクチャである層間アーキテクチャと、前記複数の層の各層ごとの層内のアーキテクチャである層内アーキテクチャとの組み合わせをアーキテクチャ組み合わせとして生成し、前記アーキテクチャ組み合わせから前記非機能要件として遅延量を削減するアーキテクチャ組み合わせの候補を複数のアーキテクチャ組み合わせ候補として探索する探索部と、
前記複数のアーキテクチャ組み合わせ候補の各々について、前記非機能要件を満たすか否かを判定する判定部と、
前記複数のアーキテクチャ組み合わせ候補のうち前記非機能要件を満たすアーキテクチャ組み合わせ候補をアーキテクチャ候補として含む候補情報を生成する候補情報生成部と
を備えたアーキテクチャ推定装置。
【請求項２】
前記受付部は、
前記回路に要求される遅延量を含む前記非機能要件を受け付け、
前記探索部は、
時分割アーキテクチャと非同期型パイプラインアーキテクチャとを前記層間アーキテクチャとして前記複数のアーキテクチャ組み合わせ候補を探索する請求項１に記載のアーキテクチャ推定装置。
【請求項３】
前記アーキテクチャ推定装置は、
前記層間アーキテクチャが前記非同期型パイプラインアーキテクチャであるアーキテクチャ組み合わせに対して前記遅延量を削減させる層内アーキテクチャのパターンをパターン情報として記憶する記憶部を備え、
前記層間アーキテクチャが前記非同期型パイプラインアーキテクチャであり、かつ、前記層内アーキテクチャの組み合わせパターンが前記パターン情報を満たすアーキテクチャ組み合わせを、前記複数のアーキテクチャ組み合わせ候補として探索する請求項２に記載のアーキテクチャ推定装置。
【請求項４】
前記探索部は、
ループの順序とループの展開数から決定される入力演算優先型アーキテクチャと出力演算優先型アーキテクチャとを前記層内アーキテクチャとして、前記複数のアーキテクチャ組み合わせ候補を探索し、
前記パターン情報は、
前層と後層との組み合わせパターンが前記入力演算優先型アーキテクチャと前記出力演算優先型アーキテクチャとの組み合わせにより決定されている請求項３に記載のアーキテクチャ推定装置。
【請求項５】
複数の層を備えたニューラルネットワークモデルにより表される動作を実行する回路のアーキテクチャを推定するアーキテクチャ推定装置のアーキテクチャ推定方法において、
受付部が、前記ニューラルネットワークモデルを表すニューラルネットワーク情報と、前記回路に要求される非機能要件とを受け付け、
探索部が、前記複数の層の層間のアーキテクチャである層間アーキテクチャと、前記複数の層の各層ごとの層内のアーキテクチャである層内アーキテクチャとの組み合わせをアーキテクチャ組み合わせとして生成し、前記アーキテクチャ組み合わせから前記非機能要件として遅延量を削減するアーキテクチャ組み合わせの候補を複数のアーキテクチャ組み合わせ候補として探索し、
判定部が、前記複数のアーキテクチャ組み合わせ候補の各々について、前記非機能要件を満たすか否かを判定し、
候補情報生成部が、前記複数のアーキテクチャ組み合わせ候補のうち前記非機能要件を満たすアーキテクチャ組み合わせ候補をアーキテクチャ候補として含む候補情報を生成するアーキテクチャ推定方法。
【請求項６】
複数の層を備えたニューラルネットワークモデルにより表される動作を実行する回路のアーキテクチャを推定するアーキテクチャ推定装置のアーキテクチャ推定プログラムにおいて、
前記ニューラルネットワークモデルを表すニューラルネットワーク情報と、前記回路に要求される非機能要件とを受け付ける受付処理と、
前記複数の層の層間のアーキテクチャである層間アーキテクチャと、前記複数の層の各層ごとの層内のアーキテクチャである層内アーキテクチャとの組み合わせをアーキテクチャ組み合わせとして生成し、前記アーキテクチャ組み合わせから前記非機能要件として遅延量を削減するアーキテクチャ組み合わせの候補を複数のアーキテクチャ組み合わせ候補として探索する探索処理と、
前記複数のアーキテクチャ組み合わせ候補の各々について、前記非機能要件を満たすか否かを判定する判定処理と、
前記複数のアーキテクチャ組み合わせ候補のうち前記非機能要件を満たすアーキテクチャ組み合わせ候補をアーキテクチャ候補として含む候補情報を生成する候補情報生成処理とをコンピュータであるアーキテクチャ推定装置に実行させるアーキテクチャ推定プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、アーキテクチャ推定装置、アーキテクチャ推定方法、およびアーキテクチャ推定プログラムに関する。特に、最適なＮＮ（ニューラルネットワーク）アーキテクチャを生成するアーキテクチャ推定装置、アーキテクチャ推定方法、およびアーキテクチャ推定プログラムに関する。
【背景技術】
【０００２】
近年、人工知能といった分野では、多層のニューラルネットワークであるＤＮＮ（ディープニューラルネットワーク）による機械学習手法が注目されている。この機械学習手法のアルゴリズムは、深層学習といわれる。
非特許文献１では、ニューラルネットワークが入力されると、ＲＴＬ（Ｒｅｇｉｓｔｅｒ  Ｔｒａｎｓｆｅｒ  Ｌｅｖｅｌ）が生成される技術が開示されている。非特許文献１では、内部的には高位合成が動作する。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】Ａｎ  Ｏｂｊｅｃｔ  Ｄｅｔｅｃｔｏｒ  ｂａｓｅｄ  ｏｎ  Ｍｕｌｔｉｓｃａｌｅ  Ｓｌｉｄｉｎｇ  Ｗｉｎｄｏｗ  Ｓｅａｒｃｈ  ｕｓｉｎｇ  ａ  Ｆｕｌｌｙ  Ｐｉｐｅｌｉｎｅｄ  Ｂｉｎａｒｉｚｅｄ  ＣＮＮ  ｏｎ  ａｎ  ＦＰＧＡ
【発明の概要】
【発明が解決しようとする課題】
【０００４】
非特許文献１の技術では、処理時間の要求によっては、回路規模が最小とはならないアーキテクチャが取得される。つまり、ニューロン数および層数といったＮＮ情報と処理時間および回路規模といった非機能要件とから、最適な回路アーキテクチャを得ることができない場合がある。
人工知能の処理は重たく、回路規模が大きくなる傾向にある。そのため、人工知能処理を開発する開発者あるいは回路の部品を選ぶ回路設計者には、その人工知能の処理がどのくらいの回路規模となるかを予め見積もりたいという要望がある。しかし、非特許文献１の技術では、最適な回路アーキテクチャを得ることができないため、回路規模と適切に見積もることはできないという課題がある。【０００５】
本発明は、非機能要件を満たす回路アーキテクチャの候補を迅速かつ適切に推定することにより、より的確な回路アーキテクチャの見積もりを支援することを目的とする。
【課題を解決するための手段】
【０００６】
本発明に係るアーキテクチャ推定装置は、複数の層を備えたニューラルネットワークモデルにより表される動作を実行する回路のアーキテクチャを推定するアーキテクチャ推定装置において、
前記ニューラルネットワークモデルを表すニューラルネットワーク情報と、前記回路に要求される非機能要件とを受け付ける受付部と、
前記複数の層の層間のアーキテクチャである層間アーキテクチャと、前記複数の層の各層ごとの層内のアーキテクチャである層内アーキテクチャとの組み合わせをアーキテクチャ組み合わせとして生成し、前記アーキテクチャ組み合わせから前記非機能要件として遅延量を削減するアーキテクチャ組み合わせの候補を複数のアーキテクチャ組み合わせ候補として探索する探索部と、
前記複数のアーキテクチャ組み合わせ候補の各々について、前記非機能要件を満たすか否かを判定する判定部と、
前記複数のアーキテクチャ組み合わせ候補のうち前記非機能要件を満たすアーキテクチャ組み合わせ候補をアーキテクチャ候補として含む候補情報を生成する候補情報生成部と
を備えた。
【発明の効果】
【０００７】
本発明に係るアーキテクチャ推定装置によれば、非機能要件を満たす回路アーキテクチャの候補を迅速かつ適切に推定することにより、より的確な回路アーキテクチャの見積もりを支援することができる。
【図面の簡単な説明】
【０００８】
【図１】実施の形態１に係るアーキテクチャ推定装置の構成図。
【図２】実施の形態１に係るアーキテクチャ推定装置の入出力の例。
【図３】実施の形態１に係るＮＮ情報の構成例。
【図４】実施の形態１に係る非機能要件の構成例。
【図５】実施の形態１に係るアーキテクチャ推定装置の動作を表すフロー図。
【図６】実施の形態１に係るＤＮＮ情報を表す模式図。
【図７】実施の形態１に係るＤＮＮ構造の層内アーキテクチャの処理構成例。
【図８】実施の形態１に係るＤＮＮ構造の時分割アーキテクチャを示す図。
【図９】実施の形態１に係るＤＮＮ構造の非同期型パイプラインアーキテクチャを示す図。
【図１０】実施の形態１に係るパターン情報の例を示す図。
【図１１】実施の形態１に係るアーキテクチャ別の処理時間と乗算器数の見積もり方式を示す図。
【図１２】実施の形態１に係る非同期型パイプラインアーキテクチャにおけるパターン別の遅延量の見積もり詳細を示す図。
【図１３】実施の形態１に係る非同期型パイプラインアーキテクチャにおけるパターン別の遅延量の見積もり詳細を示す図。
【図１４】実施の形態１に係る候補情報の構成例。
【図１５】実施の形態１の変形例に係るアーキテクチャ推定装置の構成図。
【発明を実施するための形態】
【０００９】
実施の形態１．
＊＊＊構成の説明＊＊＊
図１を用いて、本実施の形態に係るアーキテクチャ推定装置１００の構成について説明する。
【００１０】
アーキテクチャ推定装置１００は、コンピュータである。アーキテクチャ推定装置１００は、プロセッサ９１０を備えるとともに、メモリ９２１、補助記憶装置９２２、入力インタフェース９３０、出力インタフェース９４０、および通信装置９５０といった他のハードウェアを備える。プロセッサ９１０は、信号線を介して他のハードウェアと接続され、これら他のハードウェアを制御する。
【００１１】
アーキテクチャ推定装置１００は、機能要素として、受付部１１０と探索部１２０と判定部１３０と候補情報生成部１４０と記憶部１５０を備える。記憶部１５０には、ＮＮ情報１５１（ニューラルネットワーク情報）と非機能要件１５２とパターン情報１５３と候補情報１５４が記憶される。
【００１２】
受付部１１０と探索部１２０と判定部１３０と候補情報生成部１４０の機能は、ソフトウェアにより実現される。記憶部１５０は、メモリ９２１あるいは補助記憶装置９２２に備えられる。
【００１３】
プロセッサ９１０は、アーキテクチャ推定プログラムを実行する装置である。アーキテクチャ推定プログラムは、受付部１１０と探索部１２０と判定部１３０と候補情報生成部１４０の機能を実現するプログラムである。
プロセッサ９１０は、演算処理を行うＩＣ（Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）である。プロセッサ９１０の具体例は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）、ＤＳＰ（Ｄｉｇｉｔａｌ  Ｓｉｇｎａｌ  Ｐｒｏｃｅｓｓｏｒ）、ＧＰＵ（Ｇｒａｐｈｉｃｓ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）である。
【００１４】
メモリ９２１は、データを一時的に記憶する記憶装置である。メモリ９２１の具体例は、ＳＲＡＭ（Ｓｔａｔｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、あるいはＤＲＡＭ（Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）である。
補助記憶装置９２２は、データを保管する記憶装置である。補助記憶装置９２２の具体例は、ＨＤＤである。また、補助記憶装置９２２は、ＳＤ（登録商標）メモリカード、ＣＦ、ＮＡＮＤフラッシュ、フレキシブルディスク、光ディスク、コンパクトディスク、ブルーレイ（登録商標）ディスク、ＤＶＤといった可搬の記憶媒体であってもよい。なお、ＨＤＤは、Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅの略語である。ＳＤ（登録商標）は、Ｓｅｃｕｒｅ  Ｄｉｇｉｔａｌの略語である。ＣＦは、ＣｏｍｐａｃｔＦｌａｓｈ（登録商標）の略語である。ＤＶＤは、Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｋの略語である。
【００１５】
入力インタフェース９３０は、マウス、キーボード、あるいはタッチパネルといった入力装置と接続されるポートである。入力インタフェース９３０は、具体的には、ＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）端子である。なお、入力インタフェース９３０は、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）と接続されるポートであってもよい。
出力インタフェース９４０は、ディスプレイといった出力機器のケーブルが接続されるポートである。出力インタフェース９４０は、具体的には、ＵＳＢ端子またはＨＤＭＩ（登録商標）（Ｈｉｇｈ  Ｄｅｆｉｎｉｔｉｏｎ  Ｍｕｌｔｉｍｅｄｉａ  Ｉｎｔｅｒｆａｃｅ）端子である。ディスプレイは、具体的には、ＬＣＤ（Ｌｉｑｕｉｄ  Ｃｒｙｓｔａｌ  Ｄｉｓｐｌａｙ）である。
【００１６】
通信装置９５０は、レシーバとトランスミッタを有する。通信装置９５０は、無線で、ＬＡＮ、インターネット、あるいは電話回線といった通信網に接続している。通信装置９５０は、具体的には、通信チップまたはＮＩＣ（Ｎｅｔｗｏｒｋ  Ｉｎｔｅｒｆａｃｅ  Ｃａｒｄ）である。
【００１７】
アーキテクチャ推定プログラムは、プロセッサ９１０に読み込まれ、プロセッサ９１０によって実行される。メモリ９２１には、アーキテクチャ推定プログラムだけでなく、ＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）も記憶されている。プロセッサ９１０は、ＯＳを実行しながら、アーキテクチャ推定プログラムを実行する。アーキテクチャ推定プログラムおよびＯＳは、補助記憶装置９２２に記憶されていてもよい。補助記憶装置９２２に記憶されているアーキテクチャ推定プログラムおよびＯＳは、メモリ９２１にロードされ、プロセッサ９１０によって実行される。なお、アーキテクチャ推定プログラムの一部または全部がＯＳに組み込まれていてもよい。
【００１８】
アーキテクチャ推定装置１００は、プロセッサ９１０を代替する複数のプロセッサを備えていてもよい。これら複数のプロセッサは、アーキテクチャ推定プログラムの実行を分担する。それぞれのプロセッサは、プロセッサ９１０と同じように、アーキテクチャ推定プログラムを実行する装置である。
【００１９】
アーキテクチャ推定プログラムにより利用、処理または出力されるデータ、情報、信号値および変数値は、メモリ９２１、補助記憶装置９２２、または、プロセッサ９１０内のレジスタあるいはキャッシュメモリに記憶される。
【００２０】
受付部１１０と探索部１２０と判定部１３０と候補情報生成部１４０の各部の「部」を「処理」、「手順」あるいは「工程」に読み替えてもよい。また受付処理と探索処理と判定処理と候補情報生成処理の「処理」を「プログラム」、「プログラムプロダクト」または「プログラムを記録したコンピュータ読取可能な記録媒体」に読み替えてもよい。
アーキテクチャ推定プログラムは、上記の各部の「部」を「処理」、「手順」あるいは「工程」に読み替えた各処理、各手順あるいは各工程を、コンピュータに実行させる。また、アーキテクチャ推定方法は、アーキテクチャ推定装置１００がアーキテクチャ推定プログラムを実行することにより行われる方法である。
アーキテクチャ推定プログラムは、コンピュータ読取可能な記録媒体に格納されて提供されてもよい。また、アーキテクチャ推定プログラムは、プログラムプロダクトとして提供されてもよい。
【００２１】
＜アーキテクチャ推定装置１００の入出力＞
図２は、本実施の形態に係るアーキテクチャ推定装置１００の入出力の例を示す図である。
アーキテクチャ推定装置１００は、複数の層を備えたニューラルネットワークモデルにより表される動作を実行する回路のアーキテクチャを推定する装置である。
アーキテクチャ推定装置１００には、入力インタフェース９３０あるいは通信装置９５０を介して、ＮＮ（ニューラルネットワーク）情報１５１と、非機能要件１５２とが入力される。そして、アーキテクチャ推定装置１００は、出力インタフェース９４０あるいは通信装置９５０を介して、候補情報１５４を出力する。
【００２２】
図３は、本実施の形態に係るＮＮ情報１５１の構成例である。
図４は、本実施の形態に係る非機能要件１５２の構成例である。
図３では、説明の簡単のために、ＮＮ情報１５１を表で表している。ＮＮ情報１５１は、複数の層を備えたニューラルネットワークモデルを表す。ＮＮ情報１５１は、全結合のＤＮＮ（Ｄｅｅｐ  ｎｅｕｒａｌ  ｎｅｔｗｏｒｋ）構造である。本実施の形態では、全結合のＤＮＮ構造で説明を行うが、全結合していない順伝播型のＣＮＮ（Ｃｏｎｖｏｌｕｔｉｏｎａｌ  Ｎｅｕｒａｌ  Ｎｅｔｗｏｒｋ）構造でも適用可能である。
【００２３】
非機能要件１５２には、回路に要求される非機能要件が定義される。具体的には、非機能要件１５２には、回路に要求される遅延量が含まれる。具体的には、非機能要件１５２には、図４に示すように、要求する回路の遅延量、周期、およびＤＳＰ（Ｄｉｇｉｔａｌ  Ｓｉｇｎａｌ  Ｐｒｏｃｅｓｓｏｒ）数といった情報が定義されている。ＤＳＰ数は、乗算器の数である。
【００２４】
アーキテクチャ推定装置１００から出力される候補情報１５４については後述する。
【００２５】
＊＊＊動作の説明＊＊＊
次に、本実施の形態に係るアーキテクチャ推定装置１００の動作について説明する。
図５は、本実施の形態に係るアーキテクチャ推定装置１００の動作を表すフロー図である。
【００２６】
＜受付処理：ステップＳ１０１＞
ステップＳ１０１において、受付部１１０は、ニューラルネットワークモデルを表すＮＮ情報１５１と、回路に要求される非機能要件１５２とを受け付ける。受付部１１０は、ＮＮ情報１５１と非機能要件１５２とを記憶部１５０に記憶する。具体的には、受付部１１０は、学習フレームワークで定義されたＮＮフォーマットを構文分析（パース）し、ＮＮ構造を取得する。ＮＮフォーマットは、具体的には、Ｃａｆｆｅであればｐｒｏｔｏｔｘｔである。
【００２７】
＜探索処理：ステップＳ１０２＞
ステップＳ１０２において、探索部１２０は、複数の層の層間のアーキテクチャである層間アーキテクチャ２１と、複数の層の各層ごとの層内のアーキテクチャである層内アーキテクチャ２２との組み合わせをアーキテクチャ組み合わせ１２１として生成する。探索部１２０は、アーキテクチャ組み合わせから、非機能要件１５２として遅延量を削減するアーキテクチャ組み合わせの候補を複数のアーキテクチャ組み合わせ候補１２２として探索する。
【００２８】
＜探索処理：ステップＳ１０２の詳細＞
図６は、本実施の形態に係るＤＮＮ情報１５１を表す模式図である。
図７は、本実施の形態に係るＤＮＮ構造の層内アーキテクチャの処理構成例である。
図８は、本実施の形態に係るＤＮＮ構造の時分割アーキテクチャを示す図である。
図９は、本実施の形態に係るＤＮＮ構造の非同期型パイプラインアーキテクチャを示す図である。
【００２９】
通常、ＤＮＮ構造では、層間に、Ｐｏｏｌｉｎｇあるいはバッチ正規化といった処理が入る場合がある。しかし、図６のＤＮＮ情報１５１では説明を簡単にするため省略する。
また、図７に示すように、ＤＮＮ構造の層内アーキテクチャ２２には、処理の順序、すなわちループの順番と、ループの展開数分のアーキテクチャが存在する。
【００３０】
また、図８に示すように、ＤＮＮ構造の層間アーキテクチャ２１には、時分割回路による計算方式を取る時分割アーキテクチャが存在する。また、図９に示すように、ＤＮＮ構造の層間アーキテクチャ２１には、非同期型パイプライン回路による計算方式を取る非同期型パイプラインアーキテクチャが存在する。
【００３１】
探索部１２０は、ループの順序とループの展開数から決定される入力演算優先型アーキテクチャと出力演算優先型アーキテクチャとを層内アーキテクチャ２２として、複数のアーキテクチャ組み合わせを探索する。また、探索部１２０は、時分割アーキテクチャと非同期型パイプラインアーキテクチャとを層間アーキテクチャ２１として、複数のアーキテクチャ組み合わせを探索する。
まず、探索部１２０は、これらの処理方式のすべての組み合わせを構築し、全てのアーキテクチャ組み合わせ１２１を生成する。
【００３２】
図１０は、本実施の形態に係るパターン情報１５３の例を示す図である。
図１０に示すように、時分割アーキテクチャ２１１は、前層の計算が終わらないと、次の層の計算が開始できない。また、非同期型パイプラインアーキテクチャ２１２は、前層の計算結果を、後層が直ちに利用し、計算を開始できる。
パターン情報１５３には、層間アーキテクチャ２１が非同期型パイプラインアーキテクチャ２１２であるアーキテクチャ組み合わせに対して遅延量を削減させる層内アーキテクチャ２２の組み合わせパターンが記憶されている。図１０のパターン情報１５３に示すように、前層と後層との組み合わせパターンが入力演算優先型アーキテクチャと出力演算優先型アーキテクチャとの組み合わせにより決定されている。
パターン情報１５３のパターン１からパターン４は、遅延量（レイテンシ）の削減が可能なアーキテクチャの組み合わせである。
【００３３】
探索部１２０は、全てのアーキテクチャ組み合わせ１２１から、層間アーキテクチャ２１が非同期型パイプラインアーキテクチャであり、かつ、層内アーキテクチャ２２の組み合わせパターンがパターン情報１５３を満たすアーキテクチャ組み合わせを、複数のアーキテクチャ組み合わせ候補１２２として探索する。
つまり、探索部１２０は、まず全てのアーキテクチャ組み合わせ１２１を生成し、全てのアーキテクチャ組み合わせ１２１から、パターン情報１５３に基づいて、複数のアーキテクチャ組み合わせ１２１を探索する。探索部１２０は、全てのアーキテクチャ組み合わせ１２１から、層間アーキテクチャ２１が非同期型パイプラインアーキテクチャであり、かつ、層内アーキテクチャ２２の組み合わせパターンがパターン情報１５３を満たすアーキテクチャ組み合わせを、複数のアーキテクチャ組み合わせ１２１として探索する。
【００３４】
＜判定処理：ステップＳ１０３＞
ステップＳ１０３において、判定部１３０は、複数のアーキテクチャ組み合わせ候補１２２の各々について、非機能要件１５２を満たすか否かを判定する。判定部１３０は、複数のアーキテクチャ組み合わせ候補１２２のうち、非機能要件１５２を満たすと判定したアーキテクチャ組み合わせ候補をアーキテクチャ候補１３１として出力する。
【００３５】
図１１は、本実施の形態に係るアーキテクチャ別の処理時間と乗算器（ＤＳＰ）数見積もり方式を示す図である。
図１２および図１３は、本実施の形態に係る非同期型パイプラインアーキテクチャにおけるパターン別の遅延量の見積もり詳細を示す図である。
【００３６】
判定部１３０は、図１１から図１３に示すような手法を用いて、複数のアーキテクチャ組み合わせ候補１２２について、非機能要件１５２を満たすか否かを判定する。
【００３７】
このように、アーキテクチャ推定装置１００では、ＮＮ情報１５１から、層内アーキテクチャであるＮＮの計算順序を考慮し、各アーキテクチャで実現した場合の、ＤＳＰ数、周期、および遅延量といったリソース情報を見積もる。このとき、高位合成は用いない。アーキテクチャ推定装置１００では、非同期型パイプラインアーキテクチャにおいては、予めパターン情報１５３設定されているレイテンシ削減が可能なアーキテクチャの組み合わせを用いる。
【００３８】
＜候補情報生成処理：ステップＳ１０４＞
ステップＳ１０４において、候補情報生成部１４０は、複数のアーキテクチャ組み合わせ候補１２２のうち非機能要件１５２を満たすアーキテクチャ組み合わせ候補をアーキテクチャ候補１３１として含む候補情報１５４を生成する。候補情報生成部１４０は、判定部１３０からアーキテクチャ候補１３１を取得し、取得したアーキテクチャ候補１３１を候補情報１５４に設定することにより候補情報１５４を生成する。候補情報１５４は、出力インタフェース９４０あるいは通信装置９５０を介して、ディスプレイといった出力機器に出力される。
【００３９】
図１４は、本実施の形態に係る候補情報１５４の構成例を示す図である。
１層、２層、および３層には、各層の層内アーキテクチャ２２が設定される。非同期型パイプラインアーキテクチャにおける１層、２層、および３層の層内アーキテクチャ２２の組み合わせは、パターン情報１５３を用いて決定される。層間アーキテクチャ２１には、非同期型パイプラインアーキテクチャを表すＡＳＹＮＣ、あるいは、時分割アーキテクチャを表すＳＥＱが設定される。候補情報１５４では、１行に、アーキテクチャ候補１３１と、アーキテクチャ候補１３１について推定される非機能要件とが設定される。
ＡＩ開発者あるいは回路設計者は、人工知能の処理がどのくらいの回路規模となるかを、この候補情報１５４を用いて予め見積もることができる。
【００４０】
以上で、本実施の形態に係るアーキテクチャ推定装置１００のアーキテクチャ推定処理についての説明を終わる。
【００４１】
＊＊＊他の構成＊＊＊
＜変形例１＞
本実施の形態では、受付部１１０と探索部１２０と判定部１３０と候補情報生成部１４０の機能がソフトウェアで実現される。変形例として、受付部１１０と探索部１２０と判定部１３０と候補情報生成部１４０の機能がハードウェアで実現されてもよい。
【００４２】
図１５は、本実施の形態の変形例に係るアーキテクチャ推定装置１００の構成を示す図である。
アーキテクチャ推定装置１００は、電子回路９０９、メモリ９２１、補助記憶装置９２２、入力インタフェース９３０、および出力インタフェース９４０を備える。
【００４３】
電子回路９０９は、受付部１１０と探索部１２０と判定部１３０と候補情報生成部１４０の機能を実現する専用の電子回路である。
電子回路９０９は、具体的には、単一回路、複合回路、プログラム化したプロセッサ、並列プログラム化したプロセッサ、ロジックＩＣ、ＧＡ、ＡＳＩＣ、または、ＦＰＧＡである。ＧＡは、Ｇａｔｅ  Ａｒｒａｙの略語である。ＡＳＩＣは、Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔの略語である。ＦＰＧＡは、Ｆｉｅｌｄ−Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙの略語である。
受付部１１０と探索部１２０と判定部１３０と候補情報生成部１４０の機能は、１つの電子回路で実現されてもよいし、複数の電子回路に分散して実現されてもよい。
別の変形例として、受付部１１０と探索部１２０と判定部１３０と候補情報生成部１４０の一部の機能が電子回路で実現され、残りの機能がソフトウェアで実現されてもよい。
また、別の変形例として、受付部１１０と探索部１２０と判定部１３０と候補情報生成部１４０の一部あるいはすべての機能が、ファームウェアで実現されていてもよい。
【００４４】
プロセッサと電子回路の各々は、プロセッシングサーキットリとも呼ばれる。つまり、アーキテクチャ推定装置１００において、受付部１１０と探索部１２０と判定部１３０と候補情報生成部１４０の機能は、プロセッシングサーキットリにより実現される。
【００４５】
＊＊＊本実施の形態の効果の説明＊＊＊
本実施の形態に係るアーキテクチャ推定装置１００は、ニューラルネットワークのモデルと、スループットとＦＰＧＡ上で利用可能なＤＳＰ数とを含む非機能要件とを入力とする。そして、アーキテクチャ推定装置１００は、非機能要件を満たすＦＰＧＡ上のＤＮＮ回路構成を探索する。ＤＮＮ計算順序最適化部は、ＤＮＮの各層の計算順序を変更する。また、アーキテクチャ推定装置１００は、利用可能なＤＳＰ数を上限に、ＦＰＧＡ上で回路アーキテクチャを探索し、スループットとレイテンシを満足するＦＰＧＡ上のアーキテクチャを出力する。アーキテクチャ推定装置１００は、ＡＩ開発者あるいは設計者に依存せず、短時間で最適な回路の設計が可能になる。
【００４６】
また、本実施の形態に係るアーキテクチャ推定装置１００は、回路実装知識がなくとも、短時間で最適なＡＩ推論回路アーキテクチャを得ることができる。また、ＬＳＩ化でどれくらい高速化できるか、回路規模が必要かを設計することなく、短時間で得ることができる。また、ＤＮＮ回路情報（各層のレイテンシおよび規模）を出力することで、回路のボトルネックがわかり、ＤＮＮ設計にフィードバックができる。
【００４７】
また、本実施の形態に係るアーキテクチャ推定装置１００は、ＡＩ推論について、高性能かつ小規模な適切な回路アーキテクチャは要求されるネットワークに依存する。そのため、ネットワークに合った回路を生成できる。また、本実施の形態に係るアーキテクチャ推定装置１００によれば、ＡＩの層間アーキテクチャあるいは探索技術をＤＮＮに特化し、層内の計算順序を変更し、複数の層間で最適な計算順序にすることができる。
【００４８】
また、本実施の形態に係るアーキテクチャ推定装置１００は、ＤＮＮの各層の計算順序の変更を考慮して、設定されたＤＳＰ上限を制約に、取り得るアーキテクチャ全ての非機能を見積もることができる。そして、その中から、非機能要件を満たし、かつリソースが最も小さいアーキテクチャを選択することができる。このようにすることで、自動的に処理時間を満たし、かつ最小回路規模なアーキテクチャを取得することができる。
【００４９】
以上の実施の形態１では、アーキテクチャ推定装置の各部を独立した機能ブロックとして説明した。しかし、アーキテクチャ推定装置の構成は、上述した実施の形態のような構成でなくてもよい。アーキテクチャ推定装置の機能ブロックは、上述した実施の形態で説明した機能を実現することができれば、どのような構成でもよい。また、アーキテクチャ推定装置は、１つの装置でなく、複数の装置から構成されたシステムでもよい。
また、実施の形態１のうち、複数の部分を組み合わせて実施しても構わない。あるいは、この実施の形態のうち、１つの部分を実施しても構わない。その他、この実施の形態を、全体としてあるいは部分的に、どのように組み合わせて実施しても構わない。
すなわち、実施の形態１では、各実施の形態の自由な組み合わせ、あるいは各実施の形態の任意の構成要素の変形、もしくは各実施の形態において任意の構成要素の省略が可能である。
なお、上記の実施の形態は、本質的に好ましい例示であって、本発明、その適用物あるいは用途の範囲を制限することを意図するものではなく、必要に応じて種々の変更が可能である。
【符号の説明】
【００５０】
２１  層間アーキテクチャ、２２  層内アーキテクチャ、１００  アーキテクチャ推定装置、１１０  受付部、１２０  探索部、１２１  アーキテクチャ組み合わせ、１２２  複数のアーキテクチャ組み合わせ候補、１３０  判定部、１３１  アーキテクチャ候補、１４０  候補情報生成部、１５０  記憶部、１５１  ＮＮ情報、１５２  非機能要件、１５３  パターン情報、１５４  候補情報、２１１  時分割アーキテクチャ、２１２  非同期型パイプラインアーキテクチャ、９０９  電子回路、９１０  プロセッサ、９２１  メモリ、９２２  補助記憶装置、９３０  入力インタフェース、９４０  出力インタフェース、９５０  通信装置。
【図１】
0006890741.tif 000002
【図２】
0006890741.tif 000003
【図３】
0006890741.tif 000004
【図４】
0006890741.tif 000005
【図５】
0006890741.tif 000006
【図６】
0006890741.tif 000007
【図７】
0006890741.tif 000008
【図８】
0006890741.tif 000009
【図９】
0006890741.tif 000010
【図１０】
0006890741.tif 000011
【図１１】
0006890741.tif 000012
【図１２】
0006890741.tif 000013
【図１３】
0006890741.tif 000014
【図１４】
0006890741.tif 000015
【図１５】
0006890741.tif 000016