(57)【特許請求の範囲】
【請求項１】
コンピュータによって実行可能で前記コンピュータに操作を実行させる命令を含むコンピュータプログラムであって、前記操作は、
機能の仕様及び複数のハードウェア設計パラメータを取得することであって、前記ハードウェア設計パラメータはメモリ容量、計算リソースの数、通信帯域幅、及び、ニューラルアーキテクチャ推論を実行するためのテンプレート構成を含む、前記取得することと、
各ニューラルアーキテクチャはある精度で前記機能を実行するよう訓練されている、複数のニューラルアーキテクチャのうちの各ニューラルアーキテクチャに対して、前記ハードウェア設計パラメータ内でアクセラレータによる前記ニューラルアーキテクチャの推論の実行の全体の待ち時間を決定することと、
前記複数のニューラルアーキテクチャのうちから、前記全体の待ち時間及び前記精度に基づいてニューラルアーキテクチャを選択することと
を備え、前記全体の待ち時間を決定することは、活性化データを格納している外部メモリと相互作用しつつ前記アクセラレータによって前記ニューラルアーキテクチャの推論の前記実行を遂行するために複数のハイパー・パラメータの待ち時間モデルを決定することをさらに含む、コンピュータプログラム。
【請求項２】
前記複数のハイパー・パラメータは、タイリング設計、及び、前記アクセラレータによる前記ニューラルアーキテクチャの推論の実行中の帯域幅の割当を含む請求項１に記載のコンピュータプログラム。
【請求項３】
前記待ち時間モデルを決定することは、
各層に対して、待ち時間要因のうちの待ち時間ボトルネックを検出することをさらに含み、
前記待ち時間要因は、
外部メモリから前記アクセラレータの内部メモリへの活性化データのコピー、
前記外部メモリから前記内部メモリへの重み付け値のコピー、
前記活性化データに対しての計算の実行及び、
前記内部メモリから前記外部メモリへの前記活性化データのコピー、
である請求項１または２に記載のコンピュータプログラム。
【請求項４】
前記待ち時間モデルを決定することは、前記選択されたニューラルアーキテクチャの少なくとも１つの層に対し、前記待ち時間ボトルネックに対応する待ち時間削減技術を割り当てることをさらに含み、
各待ち時間削減技術は前記複数のハイパー・パラメータのうちのあるハイパー・パラメータ及び範囲に関連付けられる請求項３に記載のコンピュータプログラム。
【請求項５】
前記待ち時間モデル決定することは、前記選択されたニューラルアーキテクチャの少なくとも１つの層に対して、前記待ち時間ボトルネック以外の前記待ち時間要因のうちのいずれかに対応する精度向上技術を割り当てることをさらに含み、各待ち時間削減技術は前記複数のハイパー・パラメータのうちのあるハイパー・パラメータ及び範囲に関連付けられている、請求項３または４に記載のコンピュータプログラム。
【請求項６】
前記全体の待ち時間を決定することは、前記待ち時間モデル内の前記ハイパー・パラメータの値の一意の組み合わせを複数生成することをさらに含む請求項１から５のいずれか１項に記載のコンピュータプログラム。
【請求項７】
前記全体の待ち時間を決定することは、前記ハイパー・パラメータの値の一意の組み合わせの前記複数の各々に対し、結果として得られる待ち時間を計算することをさらに含む請求項６に記載のコンピュータプログラム。
【請求項８】
前記待ち時間モデルの前記ハイパー・パラメータの値を決定することをさらに備える請求項１から７のいずれか１項に記載のコンピュータプログラム。
【請求項９】
前記待ち時間モデルの前記ハイパー・パラメータの前記値を決定することは、前記待ち時間モデルに機能近似器を適用することをさらに含む請求項８に記載のコンピュータプログラム。
【請求項１０】
前記機能近似器は、待ち時間要素及び精度要素を含む報酬を用いた強化学習を有する再帰型ニューラルネットワークである請求項９に記載のコンピュータプログラム。
【請求項１１】
前記待ち時間モデルの前記ハイパー・パラメータの前記値を決定することは、ホールドアウト訓練データセットを用いた前記ニューラルアーキテクチャの訓練によって前記精度要素を決定することを含む請求項９に記載のコンピュータプログラム。
【請求項１２】
前記選択することは、待ち時間閾値より低い推論の実行の待ち時間を有する前記複数のニューラルアーキテクチャ内のニューラルアーキテクチャのうちから、最も高い精度で前記機能を実行するよう訓練されたニューラルアーキテクチャを選択することをさらに含む請求項１から１１のいずれか１項に記載のコンピュータプログラム。
【請求項１３】
機能の仕様及び複数のハードウェア設計パラメータを取得する段階であって、前記ハードウェア設計パラメータは、メモリ容量、計算リソースの数、通信帯域幅及びニューラルアーキテクチャの推論を実行するためのテンプレート構成を含む、前記取得する段階と、
各ニューラルアーキテクチャがある精度で前記機能を実行するよう訓練されている複数のニューラルアーキテクチャのうちの各ニューラルアーキテクチャに対して、前記ハードウェア設計パラメータ内でアクセラレータによるニューラルアーキテクチャの推論の実行の全体の待ち時間を決定する段階と、
前記複数のニューラルアーキテクチャのうちから、前記全体の待ち時間及び前記精度に基づいてニューラルアーキテクチャを選択する段階と
を備え、前記全体の待ち時間を決定する段階は、活性化データを格納する外部メモリと相互作用しつつ前記アクセラレータによって前記ニューラルアーキテクチャの推論の前記実行を遂行するために複数のハイパー・パラメータの待ち時間モデルを決定する段階をさらに含む、方法。
【請求項１４】
前記複数のハイパー・パラメータは、前記アクセラレータによる前記ニューラルアーキテクチャの推論の実行中の、タイリング設計と帯域幅割当とを含む請求項１３に記載の方法。
【請求項１５】
前記待ち時間モデルを決定する段階は、
各層に対して、待ち時間要因のうち待ち時間ボトルネックを検出する段階をさらに含み、
前記待ち時間要因は、
外部メモリから前記アクセラレータの内部メモリへの活性化データのコピー、
前記外部メモリから前記内部メモリへの重み付け値のコピー、
前記活性化データに対しての計算の実行、及び、
前記内部メモリから前記外部メモリへの前記活性化データのコピー
である請求項１３または１４に記載の方法。
【請求項１６】
前記待ち時間モデルを決定する段階は、前記選択されたニューラルアーキテクチャの少なくとも１つの層に対して、前記待ち時間ボトルネックに対応する待ち時間削減技術を割り当てる段階をさらに含み、各待ち時間削減技術は、前記複数のハイパー・パラメータのうちのあるハイパー・パラメータ及び範囲に関連付けられている、請求項１５に記載の方法。
【請求項１７】
前記待ち時間モデルを決定する段階は、前記選択されたニューラルアーキテクチャの少なくとも１つの層に対して、前記待ち時間ボトルネック以外の前記待ち時間要因うちのいずれかに対応する精度向上技術を割り当てる段階をさらに含み、各待ち時間削減技術は前記複数のハイパー・パラメータのうちのあるハイパー・パラメータ及び範囲に関連付けられている、請求項１５または１６に記載の方法。
【請求項１８】
機能の仕様及び複数のハードウェア設計パラメータを取得するよう構成された取得部であって、前記ハードウェア設計パラメータは、メモリ容量、計算リソースの数、通信帯域幅及びニューラルアーキテクチャの推論を実行するためのテンプレート構成を含む、前記取得部と、
各ニューラルアーキテクチャがある精度で前記機能を実行するよう訓練されている複数のニューラルアーキテクチャのうちの各ニューラルアーキテクチャに対して、前記ハードウェア設計パラメータ内でアクセラレータによる前記ニューラルアーキテクチャの推論の実行の全体の待ち時間を決定するよう構成された決定部と、
前記複数のニューラルアーキテクチャのうちから、前記全体の待ち時間及び前記精度に基づいてニューラルアーキテクチャを選択するよう構成された選択部と
を備え、前記決定部は、活性化データを格納している外部メモリと相互作用しつつ前記アクセラレータによって前記ニューラルアーキテクチャの推論の前記実行を遂行するために複数のハイパー・パラメータの待ち時間モデルをさらに決定する、装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はハードウェアとニューラルアーキテクチャとの共同探索に関する。より具体的に、本発明は事前訓練済ニューラルアーキテクチャからのハードウェアとニューラルアーキテクチャとの共同探索に関する。
【背景技術】
【０００２】
ディープニューラルネットワーク（ＤＮＮ）の成功は、人工知能（ＡＩ）を我々の生活のあらゆる態様に入り込むことを推進してきており、異型のハードウェア上の多様なアプリケーションに広く使用されている。ニューラルアーキテクチャ探索（ＮＡＳ）、自動機械学習（ＡｕｔｏＭＬ）の成功した成果物、は所与のデータセットから最新式の精度を有するニューラルアーキテクチャまでの道を築いてきた。
【０００３】
最近、ニューラルアーキテクチャとハードウェア設計との間のギャップを埋め合わせるのに、ニューラルアーキテクチャ及びハードウェア設計（アーキテクチャ・ハードウェアと略す）共同探索フレームワークが提唱されてきている。これらのフレームワークは、高精度かつ低コストシステムを生成するという有望な結果を示してきている。しかし、それらの探索の効率は低く、既存の共同探索フレームワークは普通、目的とするハードウェアあたり数百ＧＰＵ時間かかる。これは、迅速なターンアラウンドまたは短い市場化までの時間が要求される多くの新興アプリケーションにおいてボトルネックになり得る。一方、一つのニューラルネットワークモデルに対するＮＡＳの二酸化炭素排出量（ＣＯ２の重量）は、自動車のライフタイム排出の約５倍近くに相当することがすでに示されている。本研究において、我々は、既存の共同探索フレームワーク、それは、探査が大きな探索時間及び低い効率をもたらす最初から必ず開始する（すなわち、コールドスタート）、によって用いられる初期設定を再考している。
【発明の概要】
【０００４】
本発明のある態様によれば、ハードウェアとニューラルアーキテクチャとの共同探索のための操作をコンピュータに実行させるためのコンピュータで実行可能な命令を含むコンピュータプログラムを提供する。操作は、機能の仕様及び複数のハードウェア設計パラメータを取得することを含む。ハードウェア設計パラメータは、メモリ容量、計算リソースの数、通信帯域幅、及び、ニューラルアーキテクチャ推論を実行するためのテンプレート構成を含む。操作は、複数のニューラルアーキテクチャのうちの各ニューラルアーキテクチャに対して、ハードウェア設計パラメータ内でアクセラレータによるニューラルアーキテクチャの推論の実行の全体の待ち時間を決定することをさらに含む。各ニューラルアーキテクチャはある精度で機能を実行するよう訓練されている。操作は、複数のニューラルアーキテクチャのうちから、全体の待ち時間及び精度に基づいてニューラルアーキテクチャを選択することをさらに含む。
【０００５】
この態様はさらに、コンピュータプログラムの命令を実行するプロセッサにより実行される方法、及び、当該方法を実行する装置を含んでよい。装置は、機能の仕様及び複数のハードウェア設計パラメータを取得するよう構成された取得部と、アクセラレータによるニューラルアーキテクチャの推論の実行の全体の待ち時間を決定するよう構成される決定部と、複数のニューラルアーキテクチャのうちから、全体の待ち時間及び精度に基づいてニューラルアーキテクチャを選択するよう構成された選択部とを含んでよい。
【０００６】
上記の発明の概要は、本発明の複数の実施形態の必要な特徴の全てを必ずしも列挙したものではない。上記の特徴群のサブコンビネーションもまた本発明となり得る。
【図面の簡単な説明】
【０００７】
【図１】本発明の実施形態によるハードウェアとニューラルアーキテクチャとの共同探索に対する操作フローを示す。
【０００８】
【図２】本発明の実施形態による複数の事前訓練済ニューラルアーキテクチャを示す。
【０００９】
【図３】本発明の実施形態による、ニューラルアーキテクチャの全体の待ち時間ポテンシャルを決定するための操作フローを示す。
【００１０】
【図４】本発明の実施形態による、ニューラルアーキテクチャの推論を実行するアクセラレータを介したデータフローの図を示す。
【００１１】
【図５】本発明の実施形態による、待ち時間モデルを拡張するための操作フローを示す。
【００１２】
【図６】本発明の実施形態によるパターン枝刈りのための例示的なパターンを示す。
【００１３】
【図７】本願発明の別の実施形態による、パターン枝刈りから待ち時間の減少を実現するための入力特徴マップの並べ替えの図を示す。
【００１４】
【図８】本発明の実施形態によるチャネルカッティングの図を示す。
【００１５】
【図９】本発明の実施形態によるカーネル拡張の図を示す。
【００１６】
【図１０】本発明の実施形態による重み付け量子化の図を示す。
【００１７】
【図１１】本発明の実施形態による、ハイパー・パラメータ最適化に対する機能近似器のニューラルネットワークを示す。
【００１８】
【図１２】本願発明の別の実施形態による、修正されたハイパー・パラメータを決定するための操作フローを示す。
【００１９】
【図１３】本発明の実施形態による、ハードウェアとニューラルアーキテクチャとの共同探索のためのハードウェア構成を示す。
【発明を実施するための形態】
【００２０】
続いて、本発明の複数の実施形態の例を通じて本発明が説明されるであろう。例示の実施形態は、特許請求の範囲に係る本発明を限定するものではなく、実施形態に記載された特徴の組み合わせは、必ずしも本発明に不可欠なものではない。
【００２１】
異なるアプリケーションを使用可能かつ加速するようＡＩを使用できるように、エッジデバイスに対するリアルタイム制約、ＩｏＴデバイスに対する低電力割当量などのような設計仕様が、目的とするハードウェア上で満たされるようなやり方でニューラルアーキテクチャが設計され得る。
【００２２】
上述した全ての定義に基づいて、アーキテクチャ・ハードウェア共同探索の最適化問題は以下の通り定義され得る：所与のモデル群（ｍｏｄｅｌ  ｚｏｏ）Ｍ、特定用途ＦＰＧＡ（ＦＰ）、ＦＰ上のＭ内のニューラルネットワークモデルＡのアクセラレータ設計Ｄ、目的タイミング制約Ｔ、精度基準線ａｃｃ、基準線を決定していく：
【００２３】
Ｓ：群ＭからＡ０として示されたアーキテクチャの選択；
【００２４】
Ｐ，Ｃ，Ｘ，Ｑ：Ａ０のアーキテクチャハイパー・パラメータの調整；
【００２５】
Ｈ：Ｄ０上のハードウェア設計ハイパー・パラメータの調整。
【００２６】
それは、ハードウェア設計Ｄ０'における新しいアーキテクチャＡ０'がタイミング制約Ｔを満たし得つつ、基準線ａｃｃを超える精度に匹敵するＡ０'が特定され得るようになされる。
【００２７】
図１は、本発明の実施形態による、ハードウェアとニューラルアーキテクチャとの共同探索のための操作フローを示す。操作フローは、ハードウェアとニューラルアーキテクチャとの共同探索のための方法を提供してよい。この方法は、続いて説明されるであろう、図１１に示される装置等、ある操作を実行するための部を含む装置によって実現されてよい。
【００２８】
Ｓ１００で、取得部は機能の仕様及び複数のハードウェア設計パラメータを取得する。この機能は、自動車のための先進運転支援システム（ＡＤＡＳ）、医学的診断などの画像処理アプリケーション、データ類別、または、ニューラルアーキテクチャ推論によって実現されてよい任意の他の機能等であってよい。ハードウェア設計パラメータは、メモリ容量、計算リソースの数、通信帯域幅、及び、ニューラルアーキテクチャ推論を実行するためのテンプレート構成を含んでよい。幾つかの実施形態において、特定ＦＰＧＡチップは特定のアプリケーションのために推論を実行するのに用いられるよう選択されていてよい。特定ＦＰＧＡチップは、あるメモリ容量、計算リソースの数及び通信帯域幅を有するであろう。例えば、ＸＣＺＵ９ＥＧチップ付きＸＩＬＩＮＸ（ＲＴＭ）ＺＣＵ１０２ボードは、６００Ｋの論理セル、３２．１Ｍｂのオンチップバッファ及び２，５２０個のＤＳＰからなる。オンチップ・オフチップメモリ間のデータ移動に対して、４つのＨＰポートが存在し、各々は１２８ビットの帯域幅を有する。
【００２９】
Ｓ１１０で、各ニューラルアーキテクチャはある精度で機能を実行するよう訓練されており、決定部は、複数のニューラルアーキテクチャのうちの各ニューラルアーキテクチャに対し、ハードウェア設計パラメータ内で、アクセラレータによってニューラルアーキテクチャの推論を実行する全体の待ち時間を決定する。複数のニューラルアーキテクチャは「モデル群」と呼ばれてよい。モデル群は、関心のある機能を実行するよう事前訓練されたニューラルアーキテクチャを含むであろう。モデル群内の各ニューラルアーキテクチャが訓練されたところの機能は、汎用的なもの、または、取得された関心のある機能に特に当てはまるものであってよい。例えば、もし取得された関心のある機能がＡＤＡＳに対する歩行者の検出であるなら、歩行者の検出の実行に特に訓練されたニューラルアーキテクチャは、勿論モデル群に含まれ得るが、画像ベースの医学的診断またはそのような他のアプリケーションを特に実行するよう訓練されたニューラルアーキテクチャは、おおむね画像解析の特徴認識を実行するものだから、モデル群に含まれてよい。
【００３０】
図２は、本発明の実施形態による、モデル群２０２内の複数の事前訓練済ニューラルアーキテクチャを示す。ニューラルアーキテクチャが中間データ（すなわち、入力及び出力特徴マップ）を表す一組のノードＶ、及び、一対のノードの間の依存性を表す一組のエッジＥ⊆Ｖ×Ｖからなるように、ニューラルアーキテクチャＡは、Ａ＝＜Ｖ，Ｅ，ｒ，ｃ，ｃｈ，ｏ，ｆ，ｐａｒａ，ａｃｃ＞として定義されてよい。Ｖ内のノードｖｉは３つのハイパー・パラメータ：それぞれｖｉの行、列及びチャネルの数を表すｒｉ、ｃｉ及びｃｈｉを有する。エッジｅｊ∈Ｅは、従来の畳み込み、深さ方向畳み込み、プーリング等などの演算子ｏｊに関連付けられる。ｆｊは演算子ｏｊで用いられるフィルタ（すなわち、重み付け）を表し、それは一組のカーネルからなる。各フィルタは２つのハイパー・パラメータに関連付けられる。すなわち、フィルタのサイズ（例えば１×１、３×３など）を示すｓ（ｆｉ）、及び、ｆｉの枝刈りに適用されるパターンを示すｐ（ｆｉ）。フィルタのサイズ及びパターンの両方は、ハードウェアとニューラルアーキテクチャとの共同探索中に修正され得る。
【００３１】
事前訓練済ニューラルアーキテクチャはニューラルネットワークモデルと呼ばれてよく、モデル群Ｍ＝｛Ａ０，Ａ１，．．，ＡＮ−１｝はＮニューラルネットワークモデルからなる。これらニューラルネットワークモデルは、ＡｌｅｘＮｅｔ、ＶＧＧＮｅｔ、ＲｅｓＮｅｔのように専門家によって手動で設計され得、ＭｎａｓＮｅｔ、ＰｒｏｘｙｌｅｓｓＮａｓ、ＦＢＮｅｔのようにニューラルアーキテクチャ探索で自動で探索され得、または、ＢｉＴのように他のデータセットに対するニューラルネットワークモデルから移植され得る。 オープンソースＴＯＲＣＨＶＩＳＯＮからの既存のモデル群などのが用いられ得る。 最新式の事前訓練済ニューラルネットワークモデルは、ＧＩＴＨＵＢ上の適したオープンソースコードレポジトリから集められてよく、モデル群に追加されてよい。 これはモデル群を構築するコストの著しい減少をもたらすであろう。 当技術分野の知識を有する者は、本開示を読むことにより、モデル群形成のための他のソースを認識するであろう。
【００３２】
続いて説明されるであろうように、上述のハイパー・パラメータの全てが決定された後に、ニューラルアーキテクチャＡは、ＩｍａｇｅＮｅｔデータセットまたはＣＩＦＡＲ−１０データセットのような一般的な訓練データセットであってよい、アプリケーションに特定した訓練データセットでさらなる訓練がされ得、パラメータ及び重み付けｐａｒａ（Ａ）が取得される。訓練データセットの部分であってよい、ホールドアウト訓練データセット上の試験精度ａｃｃ（Ａ）がさらに取得され得る。
【００３３】
図３は、本発明の実施形態による、図１のＳ１１０などの、ニューラルアーキテクチャの全体の待ち時間ポテンシャルを決定するための操作フローを示す。この操作フローのうちの操作は、決定部またはこれに対応して名付けられたサブセクションによって実行されてよい。図１で説明したように、機能仕様及びハードウェア設計パラメータは、ニューラルアーキテクチャの全体の待ち時間を決定する前に取得される。
【００３４】
Ｓ３１１で、決定部はニューラルアーキテクチャに対する待ち時間モデルを決定する。各ニューラルアーキテクチャの推論の実行の全体の待ち時間は、推論を実行するハードウェアで変化する。したがって、全体の待ち時間を決定するため、決定部は、ハードウェア仕様内で推論を実行するための待ち時間モデルを決定する。換言すれば、全体の待ち時間を決定することは、活性化データを格納する外部メモリと相互作用しつつアクセラレータによってニューラルアーキテクチャの推論の実行を遂行するために複数のハイパー・パラメータの待ち時間モデルを決定することをさらに含み得る。したがって、待ち時間モデルの複数のハイパー・パラメータは、ニューラルアーキテクチャのハイパー・パラメータＡだけではなく、アクセラレータのハイパー・パラメータＤをさらに含む。
【００３５】
全体として、アクセラレータ設計はＤ＝＜Ｔｍ，Ｔｎ，Ｔｒ，Ｔｃ，Ｉｂ，Ｗｂ，Ｏｂ＞のように定義されてよく、
ここで、ループタイリング設計は＜Ｔｍ，Ｔｎ，Ｔｒ，Ｔｃ＞によって表され、帯域幅割当は＜Ｉｂ，Ｗｂ，Ｏｂ＞によって表される。 特に、アーキテクチャ内のノードのペアｖｉ→ｖｊに関連する演算子に対して、Ｔｍ，Ｔｎ，Ｔｒ及びＴｃは出力特徴マップ（ＯＦＭ）チャネルｃｈｊ、入力特徴マップ（ＩＦＭ）チャネルｃｈｉ、行ｒｉ及び列ｃｉのタイリングパラメータであり、一方、＜Ｉｂ，Ｗｂ，Ｏｂ＞はＩＦＭ（すなわちｖｉ）、ＯＦＭ（すなわちＶｊ）及び重み付け（すなわちｆｋ）を動かすのに割り当てられた帯域幅である。設計Ｄ及びアーキテクチャＡに対し、ｏｋのような各演算子の待ち時間は、ハードウェアとニューラルアーキテクチャとの共同探索中に決定され得る。全演算子の和算はＡの待ち時間であり、ｌａｔ（Ａ）で示されるであろう。
【００３６】
図４は、本発明の実施形態による、ニューラルアーキテクチャの推論を実行するアクセラレータ４２０を介したデータフローの図を示す。アクセラレータ４２０は、入力特徴マップタイルデータ４２３、出力特徴マップタイルデータ４２６及び重み付けタイルデータ４２８のオンチップメモリを含む。アクセラレータ４２０はさらに、少なくとも一つの従来の畳み込みモジュール４２２及び少なくとも一つの深さ方向畳み込みモジュールを含む。アクセラレータ４２０のモジュールは、特定の機能を実行するよう配置されたロジックゲートのグループであってよい。アクセラレータ４２０のオンチップメモリは、ＲＡＭ、フラッシュメモリまたは他の埋め込み型書き込み可能メモリであってよい。
【００３７】
アクセラレータ４２０は外部メモリ４３０と、入力帯域幅割当（Ｉｂ）４３２、重み付け帯域幅割当（Ｗｂ）４３４及び出力帯域幅割当（Ｏｂ）４３６に分割された帯域幅で通信する。外部メモリ４３０は、入力特徴マップ（ＩＦＭ）データ４４２、フィルタデータ４４３、重み付けデータ４４４及び出力特徴マップ（ＯＦＭ）データ４４６を含む。
【００３８】
ハードウェアの効率は、ニューラルアーキテクチャだけではなく、ハードウェアリソース及びアクセラレータ設計にも関連する。本実施形態において、アクセラレータ４２０として用いられるＦＰＧＡ（ｆｐ）は３つの属性を有する。すなわち、オンチップメモリのサイズｍｅｍｆｐ、計算リソース（例えばＤＳＰ）の数ｃｏｍｐｆｐ、及び、外部メモリ４３０とオンチップメモリ４２３、４２６および４２８との間の帯域幅ＢＷｆｐである。
【００３９】
アクセラレータ４２０の設計は、ＦＰＧＡのリソース制約の全ての範囲内にある。アクセラレータ４２０の設計は２つの部分からなる。すなわち、計算のサブシステムの設計及び通信サブシステムの設計である。アーキテクチャＡ内の基本演算子Oは入れ子ループ内で行われるので、ループ最適化、特にループタイリング、は計算サブシステムの設計内で用いられてよい。加えて、大きな量のデータ（すなわち、中間データ、重み付けデータ）及びオンチップメモリ容量の制限を考慮すると、データの全をＦＰＧＡ上に載せることは実行できないであろう。したがって、データは外部メモリ４３０とオンチップメモリ４２３、４２６および４２８との間を移動する。そのため、入力帯域幅割当（Ｉｂ）４３２、重み付け帯域幅割当（Ｗｂ）４３４及び出力帯域幅割当（Ｏｂ）４３６が待ち時間モデルに含まれており、ハードウェアとニューラルアーキテクチャとの共同探索中に決定される。
【００４０】
従来の畳み込みモジュールに示されるように、従来の畳み込みは、Ｔｍ×Ｔｎ積和演算（ＭＡＣ）操作を伴う。 １６ビットデータに対して、各ＭＡＣは一つのＤＳＰを必要とする。 加えて、全データをオンチップメモリ４２３、４２６および４２８内で費やすためには、計算はＫ・Ｋ・Ｔｒ・Ｔｃ回の繰り返しが必要であり、パイプラインの初期間隔（ＩＩ）は１サイクルに最適化される必要がある。ここでＫはフィルタのサイズである。 これらの条件は、計算リソース及び待ち時間上の以下の制約をもたらすであろう。
【００４１】
【数１】
0006885553.tif 000002
【００４２】
0006885553.tif 000003
【００４３】
【数２】
0006885553.tif 000004
【００４４】
ここで、ｔＣｏｍｐはオンチップメモリによって提供された全データに対する計算の待ち時間である。
【００４５】
0006885553.tif 000005
外部メモリ４３０とアクセラレータ４２０との間で転送されるデータの３つの型、すなわち、ＩＦＭデータ４４２、ＯＦＭデータ４４６及び重み付けデータ４４４、のうち、ｂＩ、ｂＯ及びｂＷで示される、各データの型に対するオンチップメモリのサイズは、外部メモリ４３０から決定され得る。一つのオンチップバッファ（ＢＲＡＭ）のサイズは制限されており、例えば、ＺＣＵ１０２ＦＰＧＡに対してオンチップバッファごとに１８Ｋである。 並列にアクセスされる必要があるデータの次元、例えば、Ｔｎで示される、ＩＦＭデータ４４２のチャネル、は異なるＢＲＡＭに分けられる必要がある。従って、並列を要求しないデータの量は、ＩＦＭデータ４４２内のＴｒ及びＴｃで示され、１８Ｋに分割される。 結局、オンチップバッファのサイズはタイルサイズの２倍に等しく、ここで２は、計算によって通信を隠すために利用される倍増バッファを示す。これは以下の制約をもたらす：
【００４６】
【数３】
0006885553.tif 000006
【００４７】
【数４】
0006885553.tif 000007
【００４８】
【数５】
0006885553.tif 000008
【００４９】
【数６】
0006885553.tif 000009
【００５０】
ここで、ｂｉｔＩ、ｂｉｔＷ及びｂｉｔＯは、ＩＦＭデータ４４２、重み付けデータ４４４及びＯＦＭデータ４４６に対してそれぞれ用いられるデータ型のビット幅であり、Ｂは最大帯域幅である。
【００５１】
データバッファの各型に割り当てられた、バッファサイズ及び帯域幅Ｉｂ４３２、Ｗｂ４３４及びＯｂ４３６に基づいて、通信待ち時間ｔＩｍｅｍ，ｔＷｍｅｍ及びｔＯｍｅｍは以下の通り導かれ得る：
【００５２】
【数７】
0006885553.tif 000010
【００５３】
【数８】
0006885553.tif 000011
【００５４】
【数９】
0006885553.tif 000012
【００５５】
【数１０】
0006885553.tif 000013
【００５６】
0006885553.tif 000014
【００５７】
上述の数式に基づいて、待ち時間モデルが導びかれてよい。Ｍ，Ｎ，Ｒ及びＣがそれぞれＯＦＭチャネル、ＩＦＭチャネル、畳み込み層の行及び列の数を表すならば、以下の待ち時間モデルが導かれる。
【００５８】
【数１１】
0006885553.tif 000015
【００５９】
【数１２】
0006885553.tif 000016
【００６０】
【数１３】
0006885553.tif 000017
【００６１】
ＯＦＭ４４６データが再使用されるから、ＩＦＭデータ４４２及び重み付けデータ４４４が読み込まれる［Ｎ／Ｔｎ］時間ごとに対してオフチップメモリに吐き出されるまで、それはオンチップメモリ４２６に残るであろう。 Ｌａｔ１は計算の１ラウンド、ＩＦＭデータ４４２の読み込み及び重み付けデータ４４４の読み込みの待ち時間を示し、Ｌａｔ２は外部メモリ４３０に吐き出されるＯＦＭデータ４４６の１ラウンドの待ち時間を示す。１つの層に対し、オンチップメモリ４２６に格納されたＯＦＭタイルデータがＢ×［Ｒ／Ｔｒ］×［Ｃ／Ｔｃ］×［Ｍ／Ｔｍ］の各バッチで外部メモリ４３０に吐き出され、１つの層に対する総待ち時間Ｌａｔを取得する。本態様において、待ち時間モデルの複数のハイパー・パラメータは、タイリング設計、及び、アクセラレータによるニューラルアーキテクチャの推論の実行中の帯域幅の割当を含む。
【００６２】
深さ方向畳み込みの待ち時間モデルに対し、上述の数式のＴｍはＴｍ（ｄ）に修正され、Ｔｎは単に１になる。バッチサイズが１の場合（Ｂ＝１）、２つの型の畳み込みの通信サブシステム（式３から６のオンチップメモリモデル及び式７から９の外部メモリアクセスモデルを含む）は共有される。しかしながら、アクセラレータは独立しており、したがって式１は以下の通りに書き換えられ得る。
【００６３】
【数１４】
0006885553.tif 000018
【００６４】
Ｓ３１２で、決定部またはそれらのサブセクション等である拡張部は、圧縮技術及び適用可能なあらゆる精度向上技術を含むよう待ち時間モデルを広げる。
【００６５】
図５は、本発明の実施形態による、図３のＳ３１２等の待ち時間モデルを拡張するための操作フローを示す。この操作フローの内の操作は、拡張部またはそれらに対応して名付けられたサブセクションにより実行されてよい。図３で説明したように、待ち時間モデルは待ち時間モデルを拡張する前に決定される。
【００６６】
Ｓ５５１で、拡張部またはそれらのサブセクション等である検出部は、図３のＳ３１１で決定された待ち時間モデル等の、ニューラルアーキテクチャの待ち時間モデルに従ってニューラルアーキテクチャの層内の待ち時間ボトルネックを検出する。待ち時間モデルをどのように広げるか決定する前に、拡張部は、最大の待ち時間に関連する待ち時間要因等の、層の実行ボトルネックを検出してよい。待ち時間ボトルネックを検出すべく、待ち時間モデルは、層毎のマルチ待ち時間要因にブレイクダウンされてよい。幾つかの実施形態において、これらの待ち時間要因の各々は、待ち時間モデル内にすでに現れてよく、そこから導きだされ得る。式１３よって定義される待ち時間モデルに対して、待ち時間モデルを決定することにはさらに、各層に対し、４つの待ち時間要因のうち待ち時間ボトルネックを検出することを含む。第１の待ち時間要因は、外部メモリからアクセラレータの内部メモリへ活性化データをコピーすることに関連する待ち時間である。第２の待ち時間要因は、外部メモリから内部メモリへ重み付け値をコピーすることに関連する待ち時間である。第３の待ち時間要因は、活性化データに対して計算を実行することに関連する待ち時間である。第４の待ち時間要因は、内部メモリから外部メモリへ活性化データをコピーすることに関連する待ち時間である。本実施形態において、検出部はＳ５５１の１つのインスタンスで１つの層に対し待ち時間要因を決定する。
【００６７】
所与の層及び関連するハイパー・パラメータで、検出部は、上記のようにＬａｔ１及びＬａｔ２を考慮することによって待ち時間ボトルネックを検出し得る。もしＬａｔ２がｔＯｍｅｍによって支配されるなら、待ち時間ボトルネックはＯＦＭデータを送信することにあり、それはアクセラレータの内部メモリから外部メモリへ活性化データをコピーすることである。さもなくば、待ち時間ボトルネックはＬａｔ１から決定されるであろう。もしＬａｔ１がｔＩｍｅｍによって支配されるなら、待ち時間ボトルネックはＩＦＭデータを送信することにあり、それは外部メモリからアクセラレータの内部メモリへ活性化データをコピーすることである。もしＬａｔ１がｔＷｍｅｍによって支配されるなら、待ち時間ボトルネックは重み付けを送信することにあり、それは外部メモリから内部メモリへ重み付け値をコピーすることである。もしＬａｔ１がｔＣｏｍｐによって支配されるなら、アクセラレータの関与する計算リソースはフルに利用されており、それは活性化データに対して計算を実行することが待ち時間ボトルネックであると言える。一旦層の待ち時間ボトルネックが検出されると、拡張部は待ち時間ボトルネックに基づいて圧縮技術及び／または精度向上技術を割り当て得る。
【００６８】
Ｓ５５２で、拡張部またはそれらのサブセクション等の割当部は、層の待ち時間ボトルネックに対応した層へ圧縮技術を割り当てる。圧縮技術を割り当てることは、待ち時間モデルの複数のハイパー・パラメータのうちいずれのハイパー・パラメータを待ち時間の減少のために修正し得えるか、および、そのハイパー・パラメータをどの程度まで修正し得るかを決定することを含んでよい。換言すると、待ち時間モデルを決定することは、選択されたニューラルアーキテクチャの少なくとも１つの層に対して、待ち時間ボトルネックに対応する待ち時間削減技術を割り当てることをさらに含んでよく、各待ち時間削減技術は複数のハイパー・パラメータのうちのあるハイパー・パラメータ及び範囲に関連付けられる。多くの圧縮技術が存在するが、それらの全てが待ち時間の減少に効果的であるというわけではないであろう。しかしながら、待ち時間ボトルネックを知ることは、いずれの圧縮技術が層に対して効果的であろうかを決定するのを助けるであろう。以下の例において、パターン枝刈り、チャネルカッティング及び量子化の圧縮技術が導入されるであろう。
【００６９】
パターン枝刈りは、ニューラルアーキテクチャＡのフィルタが枝刈りされるところの圧縮技術である。パターンはマスク行列Ｍａｔ［ｘ］［ｙ］として定義される。Ｍａｔ［ｘ］［ｙ］＝０は、位置＜ｘ、ｙ＞で重み付けが枝刈りされるであろうことを示すが、Ｍａｔ［ｘ］［ｙ］＝１は重み付けが残るであろうことを示す。Ｍａｔ［ｘ］［ｙ］のゼロの数に従って、パターンはＰＡＴｃの異なるカテゴリに分類され得、ここでｃはパターン内のゼロの数を示す。パターン枝刈りは、待ち時間を減少させ得る技術である。しかしながら、その実行ボトルネックが通信時である層にパターンを適用することは、待ち時間の減少を助けないであろうし、精度を低下させるであろう。
【００７０】
図６は、本発明の実施形態による、パターン枝刈りに対するパターンの例を示す。全パターンのうち、ＰＡＴｃの１つのカテゴリが枝刈りのために選択されるであろう。各パターンカテゴリはさらに、多くのパターンからなっている。例えば、ＰＡＴｃ＝３のカテゴリ内に８４のポテンシャルパターンが存在する。アクセラレータ上のニューラルアーキテクチャ推論に対して、あるパターンを適用することは、大きな数のマルチプレクサをもたらすであろうし、設計を非効率にする。したがって、ＰＡＴｎで示される選択カテゴリから、制限された数のパターンが選択される。図６において、３×３フィルタに対するパターン枝刈りスペースの例で、ＰＡＴｎ＝４パターンはＰＡＴｃ＝３のカテゴリから選択され、それはトータルで８４の候補を含む。したがって、圧縮技術６７１はＰＡＴｎ＝４パターンである。
【００７１】
選択されたパターンは、一組のフィルタに対して適用されるであろう。パターンの各型によって枝刈りされたカーネルの数は、タイリング係数Ｔｍ及びＴｎに連結される。図４に示されるように、重み付けタイルデータ４２８のオンチップメモリから従来の畳み込みモジュール４２２へのデータ移動は、画素単位で行われる。結果としてフィルタ全体を通過するのにＫ×Ｋの反復が実行される。 待ち時間の減少を実現するために、１つのデータタイル内で全パターンが同じであることが必要である。 そのため、外側のループ内の枝刈りされた重み付けは、計算時間を減少するためにスキップされ得る。 待ち時間モデル上の効果の観点で、式２は以下の通り修正され得る。
【００７２】
【数１５】
0006885553.tif 000019
【００７３】
ここで、ＰＡＴｎはパターンマスク内のゼロの数である。
【００７４】
式１２に示されるように、ユークリッドノルムを適用することによって、フィルタ内の各カーネルに対し一つのパターンが特定され得、すなわち、ニューラルアーキテクチャＡ内のｐ（ｆｉ）の決定である。カーネルに対するパターン選択はユークリッドノルムに基づいているから、同型のデータタイルに対して異なるパターンが選択されるであろう。しかしながら、アクセラレータ上にパターン枝刈りが実装される場合に、タイル内に複数の型のパターンが適用されるなら、それは実行パイプラインを分解するるであろうし、パターン枝刈りは実行性を全く改善できない。入力特徴マップの並べ替えがこの問題を解決するであろう。
【００７５】
図７は、本願発明の別の実施形態によるる、パターン枝刈りからの待ち時間減少を実現するための入力特徴マップ並べ替えの図を示す。入力特徴マップの並べ替えは、実行パイプラインの分割を避けるのに有用であろう。
【００７６】
図７で示されるように、演算子ｏｊ，ｋに用いられる、フィルタ７４３Ａ１及びフィルタ７４３Ａ２を含む第３のチャネルと、フィルタ７４３Ｂ１及びフィルタ７４３Ｂ２を含む第５のチャネルとがスイッチされる。対応して、ノードｖｊの特徴マップ７４５Ａと特徴マップ７４５Ｂとがスイッチされる。これは、重み付け７４４Ａの第３のフィルタと重み付け７４４Ｂの第５のフィルタとの切り替えを必要とする、ｖｉからｖｊへの演算子にさらに影響するであろう。このやり方において、パターン枝刈りからの計算待ち時間の減少は効果が得られ得る。
【００７７】
式５及び式８から、パターン枝刈りはオンチップバッファサイズ及び重み付け読み込待ち時間をさらに減少させ得ることが明らかであろう。しかしながら、ほとんどの実施形態において、バッファサイズに対し、全層がこのバッファを再使用し、したがってサイズは１つの層に対し専用にはできないし、重み付けの読み込みに対し、パターン枝刈りは逐次的メモリアクセスからランダムアクセスへと読み込手順を導き、待ち時間増加に対するポテンシャルをもたらすであろう。したがって、逐次的メモリアクセスは実行を遅らせないよう、維持されてよい。
【００７８】
チャネルカッティングは他の圧縮技術である。構造が変化するパターン枝刈りとは異なり、チャネルカッティングはニューラルアーキテクチャを変化させないであろう。
【００７９】
図８は、本発明の実施形態によるチャネルカッティングの図を示す。チャネルカッティングは、ノード内の特徴マップのチャネルの数を直接減少させ、それは潜在的に待ち時間を減少させ得る。この実施形態において、チャネルカッティングは、アーキテクチャＡ内のノードｖｉ∈Ｖに対するチャネルの数を修正する。ＣＵＴｎは、ノードｖｉの特徴マップから切除するチャネルの数を表す。ｖｉが演算子に対するＩＦＭとして働く場合、式１２は以下の通りに修正される：
【００８０】
【数１６】
0006885553.tif 000020
【００８１】
そして、ｖｉが演算子に対する出力特徴マップとして働く場合、式１３は以下の通り訂正される：
【００８２】
【数１７】
0006885553.tif 000021
【００８３】
この実施形態において、ＣＵＴｎ＝２チャネルがカットされる。したがって圧縮技術８７３はＣＵＴｎ＝２チャネルである。三連続ノードｖｉ→ｖｊ→ｖｋが存在し、チャネルカッティングはｖｊに適用される。この図において、ｖｊ内の特徴マップ８４５Ａ及び特徴マップ８４５Ｂのチャネルが切除される。これらのチャネルの切除によって、リップル効果が、フィルタ８４４Ａ及びフィルタ８４４Ｂ等のｆｉ→ｊのフィルタ、及び、フィルタ８４３Ａ及びフィルタ８４３Ｂ等のｆｊ→ｋのフィルタにもたらされる。しかしながら、チャネル枝刈りは精度低下を容易にもたらすであろうし、特徴が直接的に削除されるから、チャネルカッティングの圧縮技術は注意深く定式化され、かつ、少なくとも幾つかの実施形態において、待ち時間ボトルネックが、ここで説明された他の圧縮技術等の、他の圧縮技術によって緩和できない場合だけに用いられるだけでよい。
【００８４】
チャネル枝刈りは以下の場合に限って層の待ち時間を減少できる：
【００８５】
【数１８】
0006885553.tif 000022
【００８６】
【数１９】
0006885553.tif 000023
【００８７】
Ｌａｔ２は、活性化データをアクセラレータの内部メモリから外部メモリへコピーするｔＯｍｅｍによって支配されない。この特性は、少数のチャネルを枝刈りすることは、待ち時間を減少させないであろうことを示す。そのため、この特性は、段階としてＴｍまたはＴｎを取る待ち時間モデルのガイドとして用られ得る。
【００８８】
量子化は他の圧縮技術である。量子化は、ニューラルアーキテクチャ推論をＦＰＧＡに実装するのに広く用られる。しかしながら、量子化は特定の型の実行ボトルネックを軽減できない。
【００８９】
図９は、本発明の実施形態による、重み付け量子化の図を示す。この実施形態において、元のニューラルアーキテクチャは３２ビット浮動点のデータ型を用るけれども、これは精度低下せずに１６ビット固定点に変換され得る。そのような固定点表示は、＜Ｉ，Ｆ＞によって表される２つの部分、整数部及び分数部、からなる。所与の事前訓練済ニューラルアーキテクチャＡに対して、拡張部は、一つの演算子の最大及び最小パラメータを取得してよい。その後、拡張部は整数部Ｉによって必要とされるビットの数を分析してよい。整数部が最も実質的なビットを含むから、それらのビット幅は維持されるであろうし、図９に示されるようにＱｕａｎｆで示される分数部だけをさらに絞るであろう。 本実施形態において、圧縮技術９７７はＱｕａｎｆ＝４である。
【００９０】
混合量子化は、異なる層内での重み付けが異なるビット幅を有する場合に、待ち時間を減少させるポテンシャルを有する。式８から分かり得るように、量子化は重み付けの読み込の待ち時間を減少させるポテンシャルを有する。これは、複数の重み付けを１つのパッケージの中に構成することによって実装され得る。計算待ち時間と同様に、式１５で示されるように、初期間隔はすでに１サイクルに対して最適化されているから、下位ビット幅演算はクロックサイクルをさらに減少させることはできない。下位ビット幅演算は、計算リソースの数を減少させ得、クロック周波数を増加させるポテンシャルを有し得る。しかしながら、徹底した実装において、計算エンジンは全層によって共有される。したがって、最大ビット幅の層が設計の実行性を支配するであろう。換言すれば、単一層上の量子化は、重み付けの読み込の待ち時間を減少し得るが、より大きなビット幅の他の層が存在すると、計算待ち時間を減少させないであろう。
【００９１】
Ｓ５５４で、拡張部またはそれらのサブセクションは、層の精度を高めるのに適したいずれかの技術が存在するか否かを決定する。もしそのような適した精度向上技術が存在するなら、操作フローはＳ５５５に進んで精度向上技術を割り当てる。もしそのような適した精度向上技術が存在しないなら、操作フローはＳ５５７に進んで、ニューラルアーキテクチャ内に他の残存層が存在するかどうかを決定する。
【００９２】
Ｓ５５５で、割当部は層に精度向上技術を割り当てる。精度向上技術を割り当てることには、精度を向上させるのに、待ち時間モデル内の複数のハイパー・パラメータのうちいずれのハイパー・パラメータが修正され得るか、及び、そのハイパー・パラメータをどの程度まで修正し得るかを決定することを含んでよい。待ち時間ボトルネックに対応してよい圧縮技術を割り当てることとは異なり、精度向上技術は、待ち時間を増加させるポテンシャルを有し、したがって他の待ち時間要因に適用されてよい。換言すれば、待ち時間モデルを決定することは、選択されたニューラルアーキテクチャの少なくとも１つの層に対して、待ち時間ボトルネック以外の待ち時間要因のうちのいずれかに対応する精度向上技術を割り当てることをさらに含んでよく、各待ち時間削減技術は、複数のハイパー・パラメータのうちのあるハイパー・パラメータ及び範囲に関連付けられる。多くの精度向上技術が存在するが、それらの全てが精度を高めるのにまたは待ち時間の増加を避けるのに効果的なわけではないであろう。しかしながら、待ち時間ボトルネックを知ることは、いずれの精度向上技術が層に対して効果的であろうかを決定するのを助けるであろう。以下の例において、カーネル拡張の精度向上技術が導入されるであろう。
【００９３】
フィルタ拡張は、ニューラルアーキテクチャＡだけのハイパー・パラメータの修正である。（１）多くの最新式のニューラルアーキテクチャがより大きなサイズのフィルタを含むこと、及び、（２）特定の層に対して、フィルタサイズの増加が待ち時間オーバーヘッドを加えることにならないであろうということから、フィルタ拡張の使用が動機付けられるであろう。
【００９４】
図１０は、本発明の実施形態によるカーネル拡張の図を示す。この実施形態において、ＥＸＰｎはフィルタ上の拡張係数として定義される。この実施形態において、元のカーネルフィルタ１０４３Ｏは拡張カーネルフィルタ１０４３Ｘへ変換される。一つのカーネルによって全側面上でフィルタが増加したから、精度向上技術１０７５に対して、ＥＸＰｎ＝１である。Ｋ＝２・ＥＸＰｎ＋Ｋ、であるようなＫの増加によって、カーネル拡張は待ち時間モデルに影響を与えるであろう。
【００９５】
以下の理論は、カーネルを拡張することによって精度が減少しないであろうことを保証するであろう：所与の事前訓練済ニューラルネットワークモデルＡ＝＜Ｖ，Ｅ，ｒ，ｃ，ｃｈ，ｏ，ｆ，ｐａｒａ，ａｃｃ＞で、エッジｅｉ上のいかなる演算子ｏｉに対しても、もしｆｉ上に新たに加算された重み付けの初期重み付けがゼロに設定され、ｏｉが図１０に示されるようにＥＸＰｎによってパディングされるならば、係数ＥＸＰｎでのフィルタｆｉの拡張は精度を低下させないであろう。カーネルサイズを増加させてさらなるゼロでパッディングする場合に全ての計算は同じままであるから、これの証明は容易である。精度低下がない保証ともに、拡張カーネルはさらなる訓練で精度を向上させることがあり得る。
【００９６】
Ｓ５５７で、拡張部またはそれらのサブセクションは、ニューラルアーキテクチャ内に残存層が存在するか否かを決定する。もしニューラルアーキテクチャ内に層がもっと存在するなら、操作フローは、Ｓ５５１の他の反復に進む前に次の層を選択し（Ｓ５５８）、次の層の待ち時間ボトルネックを検出する。もしニューラルアーキテクチャ内に層がもう存在しないなら、全ての層に対して待ち時間モデルが完了し、操作フローは終了する。
【００９７】
Ｓ３１３で、決定部またはそれらのサブセクション等である試験部は、待ち時間モデルにモンテカルロテストを適用する。モンテカルロテストにおいて、待ち時間モデルの制約のうちで無作為に生成されたハイパー・パラメータのサンプルが待ち時間モデルに入力され、これらのハイパー・パラメータで結果として得られる全体の待ち時間を決定する。Ｓ３１３の反復が進むにつれ、試験部またはそれらのサブセクション等である生成部は、結果として得られる待ち時間の統計情報を決定するべく入力のための多くのサンプルを生成してよい。換言すれば、全体の待ち時間を決定することは、待ち時間モデル内のハイパー・パラメータの値の一意の組み合わせを複数生成することをさらに含み得る。全体の待ち時間を決定することは、ハイパー・パラメータの値の一意の組み合わせの複数の各々に対して、結果として得られる待ち時間を計算することをさらに含んでよい。ほとんどの実施形態において、サンプルは、前のモンテカルロテストで結果として得られる待ち時間のいずれにも関係なく、ハイパー・パラメータの、完全に無作為抽出された値から成る。
【００９８】
Ｓ３１４で、決定部またはそれらのサブセクションは、テストのために残っているサンプルが存在するか否かを決定する。もし未検査のサンプルがもっと存在するなら、操作フローは、Ｓ３１３の他の反復に進む前に次のサンプルを選択し（Ｓ３１５）、モンテカルロテストを次のサンプルに対して適用する。もし未検査のサンプルがもう存在しないなら、操作フローはＳ３１７に進み、そこで待ち時間の結果が統合される。
【００９９】
Ｓ３１７で決定部またはそれらのサブセクション等である統合部は、モンテカルロテストからの待ち時間の結果を統合する。最小待ち時間、平均待ち時間及び最大待ち時間等の統計情報は、いずれのニューラルアーキテクチャが最も速い及び／または最も正確となるポテンシャルを有するかを決定するのに役立つであろうし、したがって、待ち時間モデルの機能の近似を介するハイパー・パラメータ最適化に適している。
【０１００】
Ｓ３１８で、決定部またはそれらのサブセクションは、全体の待ち時間決定のために残っているニューラルアーキテクチャが存在するか否かを決定する。もし未決定のニューラルアーキテクチャがもっと存在するなら、操作フローは、Ｓ３１１の他の反復に進む前に次のニューラルアーキテクチャを選択し（Ｓ３１９）、次のニューラルアーキテクチャに対する待ち時間モデルを決定する。もし未決定のニューラルアーキテクチャがもう存在しないなら、操作フローは終了する。
【０１０１】
最適化に進む前に、多くの実施形態において、選択部は、モンテカルロテストの結果の集合からの各ニューラルアーキテクチャの統計情報に基づいて、モデル群の中の複数のニューラルアーキテクチャのうちから、最も速い及び／または最も正確になるポテンシャルを有するニューラルアーキテクチャのサブセットを選択するであろう。幾つかの実施形態において、最小の全体の待ち時間だけがニューラルアーキテクチャのサブセットの選択に用いられる。他の実施形態において、選択は最小及び平均に基づいてよい。
【０１０２】
Ｓ１６０で、決定部は、最適化に適すると思われるあらゆるニューラルアーキテクチャのハイパー・パラメータ値を決定する。幾つかの実施形態において、決定部はハイパー・パラメータ値を決定するため機能近似器を待ち時間モデルに適用する。例えば、機能近似器は、待ち時間要素及び精度要素を含む報酬を用いた強化学習を有する再帰型ニューラルアーキテクチャであってよい。これらの実施形態において、決定部は待ち時間モデルのハイパー・パラメータの値を決定してよい。他の実施形態において、総当たり法がハイパー・パラメータ値を決定するのに用いられてよい。幾つかの実施形態において、目標は、待ち時間を最小にしかつ精度を最大にするようハイパー・パラメータ値を最適化することである。幾つかの実施形態において、目標は、待ち時間閾値またはそれ以下でに精度を最大にすることである。幾つかの実施形態において、Ｓ１６０でのハイパー・パラメータ値の決定は、最低待ち時間をもたらしたモンテカルロテストを用いたサンプル、または、待ち時間閾値より低い推論の実行の待ち時間で最大の精度をもたらしたサンプルの単純な取り込みである。
【０１０３】
図１１は、本発明の実施形態による、ハイパー・パラメータ値の最適化のための機能近似器のニューラルネットワーク１１７０を示す。この実施形態において、ニューラルネットワーク１１７０は、強化学習によって訓練された、ロングショートタームメモリ（ＬＳＴＭ）再帰型ニューラルネットワーク（ＲＮＮ）である。より具体的には、ＲＮＮコントローラは、ニューラルアーキテクチャの各層の、パターン枝刈りハイパーパラメータ１１７１、チャネルカッティングハイパーパラメータ１１７３及び量子化ハイパーパラメータ１１７７を含む割り当てられた圧縮技術、並びに、カーネル拡張ハイパーパラメータ１１７５、及び、タイリング設計及び帯域幅割当等、ハードウェア設計ハイパーパラメータ１１７９を含む割り当てられた精度向上技術の各々に対するハイパーパラメータ値を予測するソフトマックス分類器からなる。予測されたハイパーパラメータ値は、特定のニューラルアーキテクチャ及びハードウェア設計を特定するであろうし、それは精度及び待ち時間の観点で報酬を導出し得る。探索プロセスは、報酬の期待置を最大にするそのパラメータθｃを調整することによってコントローラを最適化するであろう。方策勾配法は、一連のエピソードに渡ってより良いアーキテクチャを予測することを目的とし、パラメータθｃを更新するのに使用されるであろう。
【０１０４】
図１２は、本発明の実施形態による、図１のＳ１６０等の、ハイパー・パラメータ値を決定するための操作フローを示す。この操作フローのうちの操作は、決定部またはこれに対応して名付けられたサブセクションによって実行されてよい。図１で説明されたように、待ち時間モデルは、ハイパー・パラメータ値が決定される前に決定されかつ拡張される。
【０１０５】
この実施形態において、ハイパー・パラメータは、図１１の機能近似器のニューラルネットワーク１１７０等の、強化学習によって訓練された機能近似器のニューラルネットワークを用いて決定される。
【０１０６】
Ｓ１２６１で、決定部またはそれらのサブセクション等である初期化部は、機能近似器のニューラルネットワークのコントローラを初期化する。初期化は、コントローラへの最初の入力を形成するハイパー・パラメータへ無作為な値を割り当てることによって得られてよい。
【０１０７】
Ｓ１２６３で、決定部またはそれらのサブセクション等である予測部は、精度及び待ち時間の観点で報酬を最大にするであろうハイパー・パラメータ値を予測する。Ｓ１２６３の最初の反復において、予測されたハイパー・パラメータ値は高い報酬を導出することは期待されない。しかしながら、Ｓ１２６３からＳ１２６８の反復が進むにつれ、Ｓ１２６３で予測されたハイパー・パラメータ値は、どんどん高い報酬を導出するであろう。各反復、場合によりエピソードと呼ばれる、において、予測されたハイパー・パラメータは行動とみなされ得る。行動に基づいて、最適化されたニューラルアーキテクチャＡ及びハードウェア設計が導出されてよい。次のエピソードに対してコントローラを更新するため、報酬は以下の手順に従って算出される。
【０１０８】
Ｓ１２６４で、決定部またはそれらのサブセクション等である算出部は、Ｓ１２６３で予測されたハイパー・パラメータ値に従って、アクセラレータによるニューラルアーキテクチャ推論の実行の待ち時間を算出する。算出部は、全体の待ち時間を算出するために、単に、ハイパー・パラメータ値を各層の待ち時間モデルに入力してよい。算出部は、待ち時間モデルを用いることによって、設計Ｄ上のニューラルアーキテクチャＡの待ち時間ｌａｔを算出する。
【０１０９】
Ｓ１２６５で、決定部は、予測されたハイパー・パラメータ値から算出された待ち時間が受け入れられるか否かを決定する。幾つかの実施形態において、待ち時間の受け入れ可能性は、場合によりタイミング制約と呼ばれる待ち時間閾値によって定義される。もし算出された待ち時間が受け入れられるなら、操作フローはＳ１２６６に進み、そこでニューラルアーキテクチャは制限された訓練に供される。もし算出された待ち時間が受け入れられないなら、操作フローはＳ１２６７に進み、そこで報酬が算出される。換言すれば、決定部はタイミング制約Ｔが満され得るか否かを照合している。もしｌａｔ＞Ｔなら、ニューラルアーキテクチャを微調整せずに、報酬が直接的に算出される。さもなくば、報酬は精度及び待ち時間に基づいて算出される。
【０１１０】
Ｓ１２６６で、決定部またはそれらのサブセクション等である訓練部は、制限された量の訓練データでニューラルアーキテクチャを訓練する。幾つかの実施形態において、訓練データの量は予測されたハイパー・パラメータでニューラルアーキテクチャを微調整するのにちょうど十分である。その後、訓練部は、ホールドアウトデータセットを使用してニューラルネットワークモデルの精度を試験する。例えば、訓練部は、ホールドアウトデータセット上の精度ａｃｃを取得するため、ニューラルアーキテクチャを微調整してよい。ニューラルネットワークモデルは事前訓練されているから、ニューラルネットワークモデルを最初から訓練する必要がない。そうではなく、訓練部はａｃｃを取得するため、β＝１０等、少数のデータバッチに対してニューラルネットワークモデルを微調整してよい。換言すれば、待ち時間モデルのハイパー・パラメータの値を決定することは、ホールドアウト訓練データセットを用いたニューラルアーキテクチャの訓練によって精度要素を決定することを含む。他の実施形態において、βはニューラルネットワークモデルのより細かい調整のために増加し得、それは精度の向上につながるであろう。
【０１１１】
Ｓ１２６７で、算出部は、制限された訓練の後に試験から算出された待ち時間及び結果として得られる精度に基づいて報酬を算出する。報酬の算出は以下の式に基づいてよい：
【０１１２】
【数２０】
0006885553.tif 000024
【０１１３】
ここで、αは、より高い精度（すなわち、より大きいα）またはより低い待ち時間（すなわち、より小さいα）に対して、探索で制御するスケーリングパラメータであり、もし、タイミング制約を満たすことができないことを示す、ｌａｔ＞Ｔならば、算出部は、ｒａｃｃ＝−１及びｒｌａｔ＝Ｔ−ｌａｔを設定するであろう。さもなくば、算出部は以下の通りに、ｒａｃｃ及びｒｌａｔを−１から１までの範囲に正規化する：
【０１１４】
【数２１】
0006885553.tif 000025
【０１１５】
【数２２】
0006885553.tif 000026
【０１１６】
ここで、Ａｏｒｉはニューラルアーキテクチャの元の精度であり、Ｔはタイミング制約であり、Ａｍｉｎ及びＴｍｉｎは正規化の改善に関与させられた精度及び待ち時間の下界である。
【０１１７】
Ｓ１２６８で、決定部またはそれらのサブセクション等である更新部は、報酬に基づいてコントローラのパラメータを更新する。コントローラがハイパー・パラメータ値を予測して、かつ、報酬Ｒが算出された後に、更新部はコントローラを更新すべくモンテカルロ方策勾配アルゴリズムを適用してよい。
【０１１８】
【数２３】
0006885553.tif 000027
【０１１９】
ここで、ｍはバッチサイズであり、Ｔは各エピソード内の段階の数である。報酬は段階ごとに指数の底γだけ割り引かれ、基準線ｂは報酬の指数移動平均である。
【０１２０】
Ｓ１２６９で、決定部またはそれらのサブセクションは、ハイパー・パラメータ値の決定が完了したか否かを決定する。もしハイパー・パラメータ値の決定が完了していないなら、操作フローはＳ１２６３に戻り、そこでコントローラはＳ１２６３−Ｓ１２６８の他の反復のため、予測されたハイパー・パラメータを出力する。もしハイパー・パラメータ値の決定が完了しているなら、操作フローは終了する。
【０１２１】
Ｓ１７０で、選択部はニューラルアーキテクチャを選択する。幾つかの実施形態において、選択部は、Ｓ１６０でハイパー・パラメータ値決定に供されたニューラルアーキテクチャのうちから選択する。幾つかの実施形態において、選択部は、待ち時間閾値より低い推論の実行の待ち時間を有する複数のニューラルアーキテクチャ内のニューラルアーキテクチャのうちから、最も高い精度で機能を実行するよう訓練されたニューラルアーキテクチャを選択する。他の実施形態において、Ｓ１６０でのハイパー・パラメータ値の決定が、最低待ち時間をもたらしたモンテカルロテストを用いたサンプル、または、待ち時間閾値より低い推論の実行の待ち時間で最大の精度をもたらしたサンプルの単純な取り込みである場合のように、選択部は、モデル群の全てのニューラルアーキテクチャのうちから選択する。
【０１２２】
上述の実施形態において、コールドスタート共同探索と比較して、事前訓練済ニューラルネットワークモデルのモデル群で始めることによって、最新式のニューラルネットワークモデルに匹敵する精度を実現しつつ、探索時間は、数百ＧＰＵ時間から、ＩｍａｇｅＮｅｔに対して３ＧＰＵ時間未満及びプロキシなしでＣＩＦＡＲ−１０に対して２０ＧＰＵ分未満に減少し得る。ここで説明された本発明の複数の実施形態は、ＣＩＦＡＲ−１０及びＩｍａｇｅＮｅｔ等の異なるデータセットに対して、精度・待ち時間パレートフロンティアを推し進めるであろう。換言すれば、ハードウェアに依存しない、ベースラインアーキテクチャと同様の精度を実現しつつ、厳密な待ち時間制約が満され得る。
【０１２３】
図１３は、本発明の実施形態による、ハードウェアとニューラルアーキテクチャとの共同探索に対するハードウェア構成１３９０を示す。例示的ハードウェア構成は、装置１３９０を含み、それは、ネットワーク１３９８と通信するとともに、推論環境１３９６と相互作用する。装置１３９０は、業務用アプリケーションを実行し、それを使用するクライアントコンピューターをホストするサーバコンピュータまたはメインフレームコンピュータなどのホストコンピュータであってよく、その場合の装置１３９０は推論環境１３９６に直接接続されていなくてもよいが、ネットワーク１３９８を介して端末デバイスを介して接続される。装置１３９０は、２つまたはそれ以上のコンピュータを含むコンピュータシステムであってよい。装置１３９０は、装置１３９０のユーザのためアプリケーションを実行するパーソナルコンピュータであってよい。
【０１２４】
装置１３９０は、論理部１３７０、格納部１３８０、通信インターフェース１３９２及び入出力コントローラ１３９４を含む。論理部１３７０は、様々な部分の操作をプロセッサまたはプログラマブル回路に実行させるためにプロセッサまたはプログラマブル回路で実行可能なプログラム命令を集合的に格納している１または複数のコンピュータ可読記憶媒体を含むコンピュータプログラムプロダクトであってよい。論理部１３７０は、あるいは、アナログもしくはデジタルプログラマブル回路、またはそれらのいずれかの組み合わせであり得る。論理部１３７０は、通信を介して相互作用する、物理的に切り離された記憶装置または回路から構成され得る。格納部１３８０は、本書のプロセスの実行中に論理部１３７０がアクセスするための実行不能データを格納することができる不揮発性コンピュータ可読媒体であり得る。通信インターフェース１３９２は、格納部１３８０等の記録媒体に設けられた送信バッファ領域に格納され得る送信データを読み取り、読み取った送信データをネットワーク１３９８へ送信する、またはネットワーク１３９８から受信した受信データを、記録媒体に設けられた受信バッファ領域に書き込む。入出力コントローラ１３９４は、推論環境１３９６などの様々な入出力ユニットに、パラレルポート、シリアルポート、キーボードポート、マウスポート、モニターポート、及び、コマンドを受け入れたり情報を表示したりするそのようなもので接続する。推論環境１３９６はＦＰＧＡなどニューラルアーキテクチャ推論を実行できるハードウェアチップであってよく、または、スマートフォンやスマートカー等など、それらもメモリと通信するＦＰＧＡを含むような、プロセッサ及びメモリを有するコンピュータまたはそれと同様のデバイスであってよい。
【０１２５】
論理部１３７０は、取得部１３７２、決定部１３７４及び選択部１３７８を含み、決定部１３７４は拡張部１３７６を含む。格納部１３８０は、ハードウェア設計パラメータ１３８２、機能仕様１３８３、事前訓練済ニューラルアーキテクチャ候補１３８５、訓練データ１３８６、待ち時間モデル１３８８及び機能近似器１３８９を含む。
【０１２６】
取得部１３７２は、ハードウェアとニューラルアーキテクチャとの共同探索に対する情報を取得する論理部１３７０の一部である。例えば、取得部１３７２は、機能仕様及びハードウェア設計パラメータを取得するよう構成し得る。取得部１３７２は取得された情報をハードウェア設計パラメータ１３８２及び機能仕様１３８３として格納部１３８０に保存し得る。取得部１３７２は、上記フローチャートで記載されたように、追加の機能を実行するためのサブセクションを含んでよい。そのようなサブセクションは、それらの機能に関連付けられた名前によって呼ばれてよい。
【０１２７】
決定部１３７４は、待ち時間、待ち時間モデル、ハイパー・パラメータ値などのような、ハードウェアとニューラルアーキテクチャとの共同探索に対する様々な決定をする論理部１３７０の部分である。決定中に、決定部１３７４は、ハードウェア設計パラメータ１３８２、訓練データ１３８６、待ち時間モデル１３８８及び機能近似器１３８９にアクセスし得る。決定部１３７４は、上記フローチャートで記載されたように、追加の機能を実行するためのサブセクションを含んでよい。そのようなサブセクションは、それらの機能に関連付けられた名前によって呼ばれてよい。
【０１２８】
拡張部１３７５は、待ち時間モデルを圧縮技術及び／または精度向上技術を含むよう広げる論理部１３７０の部分である。拡張中に、拡張部１３７５は待ち時間モデル１３８８にアクセスし得る。拡張部１３７５は、上記フローチャートで記載されたように、追加の機能を実行するためのサブセクションを含んでよい。そのようなサブセクションは、それらの機能に関連付けられた名前によって呼ばれてよい。
【０１２９】
選択部１３７７は、ハードウェアとニューラルアーキテクチャとの共同探索中にニューラルアーキテクチャを選択する論理部１３７０の部分である。例えば、選択部１３７７は、ハイパー・パラメータ値決定に適したニューラルアーキテクチャを選択するよう、及び／または、最終ニューラルアーキテクチャを選択するよう構成され得る。選択中に、選択部１３７７は待ち時間モデル１３８８及び機能近似器１３８９にアクセスし得る。選択部１３７７は、上記フローチャートで記載されたように、追加の機能を実行するためのサブセクションを含んでよい。そのようなサブセクションは、それらの機能に関連付けられた名前によって呼ばれてよい。
【０１３０】
他の実施形態において、装置は、ここでの処理を実行するために論理的機能を処理することができる任意の他のデバイスであってよい。装置は、入力、出力及び全ての情報が直接接続された環境において、ネットワークに接続される必要はなくてよい。論理部及び記憶部は完全に切り離された装置である必要はなく、１または複数のコンピュータ可読媒体を共有し得る。例えば、記憶部は、論理セクションによってアクセスされる、コンピュータが実行可能な命令及びデータの両方を記憶するハードドライブであってよく、論理セクションは、中央処理装置（ＣＰＵ）及びランダムアクセスメモリ（ＲＡＭ）の組み合わせであってよく、論理セクションでは、本書のプロセスの実行中にＣＰＵによって実行されるために、コンピュータが実行可能な命令が全体的にまたは部分的に複製され得る。
【０１３１】
装置がコンピュータである実施形態において、当該コンピュータにインストールされるプログラムは、当該コンピュータに、本発明の複数の実施形態の装置またはそれらの１または複数のセクション（モジュール、コンポーネント、要素などを含む）として機能させ、または、それらに関連付けられた操作を実行させ、及び／または、当該コンピュータに本発明の複数の実施形態の処理またはそれらのステップを実行させ得る。上記プログラムはプロセッサによって実行され、コンピュータに、本書に記載のフロー図及びブロック図のブロックの一部または全てに関連付けられた特定の操作を実行させ得る。
【０１３２】
本発明の様々な実施形態は、ブロックが（１）操作が実行されるプロセスのステップ、または（２）操作を実行する役割を果たす装置のセクションを表し得るフロー図及びブロック図を参照して、説明することができる。あるステップ及びセクションは、専用回路、コンピュータ可読媒体上に記憶されたコンピュータ可読命令が供給されているプログラマブル回路、及び／またはコンピュータ可読媒体上に記憶されたコンピュータ可読命令が供給されているプロセッサによって実装され得る。専用回路は、デジタル及び／またはアナログハードウェア回路を含んでいてよく、集積回路（ＩＣ）及び／または個別の回路を含み得る。プログラマブル回路は、論理ＡＮＤ、ＯＲ、ＸＯＲ、ＮＡＮＤ、ＮＯＲ、及び他の論理演算、フリップ−フロップ、レジスタ、メモリ素子等、例えばフィールドプログラマブルゲートアレイ（ＦＰＧＡ）、プログラマブル論理アレイ（ＰＬＡ）等などを含む再構成可能なハードウェア回路を含み得る。
【０１３３】
本発明は、システム、方法、及び／または、コンピュータプログラムプロダクトであり得る。コンピュータプログラム製品は、プロセッサに本発明の態様を実現させるためのコンピュータ可読プログラム命令を有する（１または複数の）コンピュータ可読記憶媒体を含んでよい。
【０１３４】
コンピュータ可読記憶媒体は、命令実行デバイスによって使用される命令を保持及び保存できる有形のデバイスであり得る。コンピュータ可読記憶媒体は、例えば、ただしこれに限定されないが、電気的格納デバイス、磁気的格納デバイス、光学的格納デバイス、電磁気的格納デバイス、半導体格納デバイス、または、それらの任意の好適な組み合わせであってよい。コンピュータ可読記憶媒体のより詳細な例の非限定的リストは以下を含む：ポータブルコンピュータディスケット、ハードディスク、ランダムアクセスメモリ（ＲＡＭ）、リードオンリメモリ（ＲＯＭ）、消去可能プログラミング可能リードオンリメモリ（ＥＰＲＯＭまたはフラッシュメモリ）、スタティックランダムアクセスメモリ（ＳＲＡＭ）ポータブルコンパクトディスクリードオンリメモリ（ＣＤ−ＲＯＭ）、デジタルバーサタイルディスク（ＤＶＤ）、メモリスティック、フロッピディスク、パンチカードや、その上に記録された命令を有する溝内の突起構造などの機械的に暗号化されたデバイス、それらの任意の好適な組み合わせ。コンピュータ可読記憶媒体は、ここで用いられる場合において、ラジオ波や他の自由に伝搬する電磁波、導波管や他の伝送媒体を介して伝搬する電磁波（例えば光ファイバケーブルを透過する光パルス）、または、電線を介して伝送される電気信号、などの一時的な信号それ自体と解釈されるべきでない。
【０１３５】
ここで記載されるコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体から対応する計算・処理デバイスまたは外部コンピュータ若しくは外部格納デバイスへ、例えばインターネット、ローカルエリアネットワーク、ワイドエリアネットワーク及び／または無線ネットワークなどのネットワークを介して、ダウンロードされ得る。ネットワークは、銅送信ケーブル、光送信ファイバ、無線送信、ルータ、ファイアウォール、スイッチ、ゲートウェイコンピュータ及び／またはエッジサーバーを備えてよい。各計算・処理デバイスのネットワークアダプターカードまたはネットワークインターフェースは、ネットワークからコンピュータ可読プログラム命令を受信し、各々の計算・処理デバイス内のコンピュータ可読記憶媒体に格納するためのコンピュータ可読プログラム命令を送る。
【０１３６】
本発明の操作を遂行するコンピュータ可読プログラム命令は、アセンブラ命令、命令セットアーキテクチャー（ＩＳＡ）命令、機械的命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データ、または、Ｓｍａｌｌｔａｌｋ、Ｃ＋＋等のオブジェクト指向プログラミング言語、及び、"Ｃ"プログラミング言語や同様のプログラミング言語など従来の手続きプログラミング言語を含む、１または複数のプログラミング言語のいずれかの組み合わせで書かれたソースコードまたはオブジェクトコードのいずれかであってよい。コンピュータ可読プログラム命令は、ユーザのコンピュータ上で全て実行され得るか、スタンドアロンのソフトウェアパッケージとして部分的にユーザのコンピュータ上で実行され得るか、部分的にユーザのコンピュータ上で、部分的にリモートコンピュータ上で実行され得るか、または、リモートコンピュータまたはサーバ上で全て実行され得る。後者のシナリオにおいて、リモートコンピュータは、ローカルエリアネットワーク（ＬＡＮ）またはワイドエリアネットワーク（ＷＡＮ）を含む任意のタイプのネットワークを通してユーザのコンピュータに接続されてもよく、または外部コンピュータ（例えばインターネットサービスプロバイダを用いてインターネットを通して）接続が行われてもよい。いくつかの実施形態において、例えば、プログラミング可能論理回路、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）またはプログラマブル論理アレイ（ＰＬＡ）を含む電子回路は、本発明の態様を実行するため、電子回路を適合させるコンピュータ可読プログラム命令の状態情報を利用することによって、コンピュータ可読プログラム命令を実行してよい。
【０１３７】
以上、本発明の複数の実施形態を用いて説明したが、本発明の技術的範囲は上記実施形態に記載の範囲には限定されない。上記実施の形態に、多様な変更または改良を加えることが可能であることが当業者に明らかである。その様な変更または改良を加えた形態も本発明の技術的範囲に含まれ得ることが、特許請求の範囲の記載から明らかである。
【０１３８】
特許請求の範囲、明細書、および図面中において示した装置、システム、プログラム、および方法における動作、手順、ステップ、および段階等の各処理の実行順序は、特段「より前に」、「先立って」等と明示しておらず、また、前の処理の出力を後の処理で用いるのでない限り、任意の順序で実現しうることに留意すべきである。特許請求の範囲、明細書、および図面中の動作フローに関して、便宜上「まず、」、「次に、」等を用いて説明したとしても、この順で実施することが必須であることを意味するものではない。
【要約】      （修正有）【課題】ハードウェアとニューラルアーキテクチャとの共同探索による機能の仕様及び複数のハードウェア設計パラメータを取得する。【解決手段】ハードウェアとニューラルアーキテクチャとの共同探索は、機能の仕様及び複数のハードウェア設計パラメータを取得する。ハードウェア設計パラメータは、メモリ容量、計算リソースの数、通信帯域幅及びニューラルアーキテクチャ推論を実行するためのテンプレート構成を含む。操作は、複数のニューラルアーキテクチャのうちの各ニューラルアーキテクチャに対して、ハードウェア設計パラメータ内でアクセラレータによるニューラルアーキテクチャの推論の実行の全体の待ち時間を決定することを含む。各ニューラルアーキテクチャは、ある精度で機能を実行するよう訓練されている。操作は、複数のニューラルアーキテクチャの中から、全体の待ち時間及び精度に基づいてニューラルアーキテクチャを選択することをさらに含む。【選択図】図１【図１】
0006885553.tif 000028
【図２】
0006885553.tif 000029
【図３】
0006885553.tif 000030
【図４】
0006885553.tif 000031
【図５】
0006885553.tif 000032
【図６】
0006885553.tif 000033
【図７】
0006885553.tif 000034
【図８】
0006885553.tif 000035
【図９】
0006885553.tif 000036
【図１０】
0006885553.tif 000037
【図１１】
0006885553.tif 000038
【図１２】
0006885553.tif 000039
【図１３】
0006885553.tif 000040