(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-08-15
(45)【発行日】2024-08-23
(54)【発明の名称】実装コストを目的として含めることによるニューラルネットワークのトレーニング
(51)【国際特許分類】
G06N 3/08 20230101AFI20240816BHJP
G06N 3/063 20230101ALI20240816BHJP
G06N 3/0985 20230101ALI20240816BHJP
G06N 20/00 20190101ALI20240816BHJP
【FI】
G06N3/08
G06N3/063
G06N3/0985
G06N20/00
(21)【出願番号】P 2021516572
(86)(22)【出願日】2019-09-12
(86)【国際出願番号】 US2019050740
(87)【国際公開番号】W WO2020068437
(87)【国際公開日】2020-04-02
【審査請求日】2022-08-30
(32)【優先日】2018-09-28
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】591025439
【氏名又は名称】ザイリンクス インコーポレイテッド
【氏名又は名称原語表記】XILINX INCORPORATED
(74)【代理人】
【識別番号】110002077
【氏名又は名称】園田・小林弁理士法人
(72)【発明者】
【氏名】デノルフ, クリストフ
(72)【発明者】
【氏名】フレーザー, ニコラス
(72)【発明者】
【氏名】ビサー, コルネリス エー.
(72)【発明者】
【氏名】ガンバルデラ, ジュリオ
【審査官】新井 則和
(56)【参考文献】
【文献】中国特許出願公開第108229517(CN,A)
【文献】HSU, C. et al.,MONAS: Multi-Objective Neural Architecture Search using Reinforcement Learning,arXiv:1806.10332v1 [cs.LG],2018年06月27日,pp. 1-8,[online], [retrieved on 2023-08-23]. Retrieved from <https://arxiv.org/abs/1806.10332v1> <doi: 10.48550/arXiv.1806.10332>
【文献】QIU, J. et al.,Going Deeper with Embedded FPGA Platform for Convolutional Neural Network,Proceedings of the 2016 ACM/SIGDA International Symposium on Field-Programmable Gate Arrays (FPGA '16),米国,Association for Computing Machinery,2016年02月21日,pp. 26-35,[online], [retrieved on 2023-08-23]. Retrieved from <https://dl.acm.org/doi/10.1145/2847263.2847265> <doi: 10.1145/2847263.2847265>
【文献】CHENG, A. et al.,Searching Toward Pareto-Optimal Device-Aware Neural Architectures,arXiv:1808.09830 [cs.LG],2018年08月30日,pp. 1-11,[online], [retrieved on 2023-08-23]. Retrieved from <https://arxiv.org/abs/1808.09830> <doi: 10.48550/arXiv.1808.09830>
【文献】TAN, M. et al.,MnasNet: Platform-Aware Neural Architecture Search for Mobile,arXiv:1807.11626v1 [cs.CV],2018年07月31日,pp. 1-9,[online], [retrieved on 2023-08-23]. Retrieved from <https://arxiv.org/abs/1807.11626v1> <doi: 10.48550/arXiv.1807.11626>
(58)【調査した分野】(Int.Cl.,DB名)
G06N 3/08
G06N 3/063
G06N 20/00
(57)【特許請求の範囲】
【請求項1】
ニューラルネットワークを実装する方法であって、
検索空間から第1のニューラル・ネットワーク・アーキテクチャを選択することと、
精度および実装コストを取得するために、前記第1のニューラル・ネットワーク・アーキテクチャを有する前記ニューラルネットワークをトレーニングすることであって、前記実装コストは、推論プラットフォームのプログラマブルデバイスに基づく、トレーニングすることと、
前記精度および前記実装コストに基づいて、前記検索空間から第2のニューラル・ネットワーク・アーキテクチャを選択することと、
前記第2のニューラル・ネットワーク・アーキテクチャを有する前記ニューラルネットワークの重み、レイヤ数、レイヤあたりのチャネル数、
実装属性、および誤差許容
度を出力すること
であって、前記ニューラルネットワークの記述が前記実装属性を含んでいる、前記ニューラルネットワークの重み、レイヤ数、レイヤあたりのチャネル数、
実装属性、および誤差許容
度を出力することと、
前記
ニューラルネットワークの前記記述に基づいて生成される
、前記実装コストに関連する回路設計を、前記プログラマブルデバイスに実装することと、
を含
み、
前記実装属性は、テンソル要素のビット幅、数値フォーマット、テンソル要素のビット幅、数フォーマット、及び、スケジューリングを含む、方法。
【請求項2】
前記第1のニューラル・ネットワーク・アーキテクチャを選択することは、強化エージェントによって実行され、前記強化エージェントは、確率Pで前記検索空間から前記第1のニューラル・ネットワーク・アーキテクチャを選択し、前記強化エージェントは、前記精度および前記実装コストの関数に基づいて前記確率Pを調整する、請求項1に記載の方法。
【請求項3】
前記強化エージェントは、リカレント・ニューラル・ネットワーク(RNN)である、請求項2に記載の方法。
【請求項4】
前記第1のニューラル・ネットワーク・アーキテクチャは、複数のニューラル・ネットワーク・アーキテクチャのうちの1つであり、前記トレーニングすることは、適応度関数を使用して前記複数のニューラル・ネットワーク・アーキテクチャを評価することを含む、請求項1に記載の方法。
【請求項5】
前記第1のニューラル・ネットワーク・アーキテクチャを選択することは、調整エージェントによって実行され、前記調整エージェントは、前記精度および前記実装コストの関数に基づいて、前記第2のニューラル・ネットワーク・アーキテクチャのハイパーパラメータを選択する、請求項1に記載の方法。
【請求項6】
前記調整エージェントは、グリッド検索、ランダム検索、またはベイジアン検索を使用して前記ハイパーパラメータを選択する、請求項5に記載の方法。
【請求項7】
コンピュータシステムであって、
プログラムコードが格納されたメモリと、
前記プログラムコードを実行するように構成されたプロセッサであって、
検索空間から第1のニューラル・ネットワーク・アーキテクチャを選択することと、
精度および実装コストを取得するために、前記第1のニューラル・ネットワーク・アーキテクチャを有するニューラルネットワークをトレーニングすることであって、前記実装コストは、推論プラットフォームのプログラマブルデバイスに基づく、トレーニングすることと、
前記精度および前記実装コストに基づいて、前記検索空間から第2のニューラル・ネットワーク・アーキテクチャを選択することと、
前記第2のニューラル・ネットワーク・アーキテクチャを有する前記ニューラルネットワークの重み、レイヤ数、レイヤあたりのチャネル数、
実装属性、および誤差許容
度を出力すること
であって、前記ニューラルネットワークの記述が前記実装属性を含んでいる、前記ニューラルネットワークの重み、レイヤ数、レイヤあたりのチャネル数、
実装属性、および誤差許容
度を出力することと、
前記
ニューラルネットワークの前記記述に基づいて生成される
、前記実装コストに関連する回路設計を、前記プログラマブルデバイスに実装することと
によって前記ニューラルネットワークを実装するプロセッサと、
を含
み、
前記実装属性は、テンソル要素のビット幅、数値フォーマット、テンソル要素のビット幅、数フォーマット、及び、スケジューリングを含む、コンピュータシステム。
【請求項8】
前記プロセッサは、強化エージェントを使用して前記第1のニューラル・ネットワーク・アーキテクチャを選択するために前記プログラムコードを実行するように構成され、前記強化エージェントは、確率Pで前記検索空間から前記第1のニューラル・ネットワーク・アーキテクチャを選択し、前記強化エージェントは、前記精度および前記実装コストの関数に基づいて前記確率Pを調整する、請求項7に記載のコンピュータシステム。
【請求項9】
前記強化エージェントは、リカレント・ニューラル・ネットワーク(RNN)である、請求項8に記載のコンピュータシステム。
【請求項10】
前記第1のニューラル・ネットワーク・アーキテクチャは、複数のニューラル・ネットワーク・アーキテクチャのうちの1つであり、前記プロセッサは、適応度関数を使用して前記複数のニューラル・ネットワーク・アーキテクチャを評価することによって前記トレーニングを実行するために前記プログラムコードを実行する、請求項7に記載のコンピュータシステム。
【請求項11】
前記プロセッサは、調整エージェントを使用して前記第1のニューラル・ネットワーク・アーキテクチャを選択するために前記プログラムコードを実行し、前記調整エージェントは、前記精度および前記実装コストの関数に基づいて、前記第2のニューラル・ネットワーク・アーキテクチャのハイパーパラメータを選択する、請求項7に記載のコンピュータシステム。
【請求項12】
前記調整エージェントは、グリッド検索、ランダム検索、またはベイジアン検索を使用して前記ハイパーパラメータを選択する、請求項11に記載のコンピュータシステム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示の例は、一般に、ニューラルネットワークに関連し、特に、実装コストを目的として含めることによるニューラルネットワークのトレーニングに関する。
【背景技術】
【0002】
機械学習は、明示的にプログラムされていなくてもコンピューティングシステムが動作するように誘導する科学である。古典的な機械学習には、K-meansクラスタリング、線形回帰とロジスティック回帰、確率的勾配降下法、および相関ルール学習など、様々なクラスタリングと分類の技法が含まれる。ディープラーニングは、機械学習の新しいフロンティアである。ディープラーニングは、特徴抽出と変換に非線形処理ユニットの複数のレイヤを使用する機械学習アルゴリズムのクラスである。ディープ・ラーニング・アルゴリズムは、教師なし(例えばパターン解析)または教師あり(例えば分類)にすることができる。ディープ・ラーニング・アルゴリズムは、人工ニューラルネットワーク(ANN)(本明細書では「ニューラルネットワーク」と呼ばれる)のレイヤを使用して実装することができる。
【0003】
一般に、ニューラルネットワークは、グラフで接続されたノード(すなわち、「ニューロン」)の集合である。ニューラルネットワークのノードは、重み付けされた入力の合計を計算し、その合計にオプションのバイアスを追加する。ノードの出力は、最終合計の関数(「活性化関数」と呼ばれる)である。活性化関数の例には、シグモイド関数、双曲線正接(tanh)関数、正規化線形ユニット(ReLU)関数、および恒等関数が含まれる。ニューラル・ネットワーク・モデルは、多くの場合、特定のトポロジーとそれに対応する重みとバイアスを定義するノードのレイヤに編成される。重みとバイアスはネットワークパラメータと呼ばれる。
【0004】
一般に、ニューラルネットワークは入力レイヤと出力レイヤを含み、オプションで入力レイヤと出力レイヤの間に1つまたは複数の隠れレイヤを含むことができる。ディープ・ラーニング・アプリケーションで使用されるニューラルネットワークには、通常、多くの隠れレイヤが含まれているため、ディープ・ニューラル・ネットワーク(DNN)という用語が使用される。ニューラルネットワークのレイヤは、密に接続される(例えば、レイヤ内の各ノードが前のレイヤのすべてのノードに完全に接続される)か、あるいは、まばらに接続され(例えば、レイヤ内の各ノードが前のレイヤのノードの一部にのみ接続され)得る。畳み込みニューラルネットワーク(CNN)は、畳み込みレイヤと呼ばれる1つまたは複数のまばらに接続されたレイヤを含むDNNの一種である。CNNは、画像またはビデオデータの処理に最適である。他のタイプのDNNには、スピーチおよびテキストデータの処理に最適なリカレント・ニューラル・ネットワーク(RNN)が含まれる。
【0005】
任意のトポロジーまたはタイプのニューラルネットワークは、ネットワークを特定のタスクに適応させるために、すべてのレイヤにわたるネットワークパラメータの正しい値を必要とする。教師ありトレーニング手順を使用して、指定されたタスクに必要な精度をもたらすネットワークパラメータのセットを決定することができる。トレーニングには、ネットワークの順方向パスを介してトレーニングデータセットを実行し(順方向伝播)、ネットワークの逆方向パスを介して重みを更新し(逆方向伝播)、予測誤差を補正することが含まれる。次に、トレーニングされたニューラルネットワークが展開され、入力データセットに対して指定されたタスクが実行される(推論と呼ばれる)。ニューラルネットワークのトレーニングに使用されるコンピューティングプラットフォーム(トレーニングプラットフォーム)は、推論に使用されるコンピューティングプラットフォーム(推論プラットフォーム)よりもパフォーマンスが高いことが多い。しかし、推論プラットフォームは、トレーニングプラットフォームよりも電力効率が高いことが多い。従来のトレーニング技法では、推論プラットフォームのアーキテクチャの態様が考慮されていないため、ターゲット推論プラットフォームのニューラルネットワークの実装が最適化されない可能性がある。
【発明の概要】
【0006】
実装コストを目的として含めることによるニューラルネットワークのトレーニングの技法が記載されている。一例では、ニューラルネットワークを実装する方法は、検索空間から第1のニューラル・ネットワーク・アーキテクチャを選択することと、精度および実装コストを取得するために、第1のニューラル・ネットワーク・アーキテクチャを有するニューラルネットワークをトレーニングすることであって、実装コストは、推論プラットフォームのプログラマブルデバイスに基づく、トレーニングすることと、精度および実装コストに基づいて、検索空間から第2のニューラル・ネットワーク・アーキテクチャを選択することと、第2のニューラル・ネットワーク・アーキテクチャを有するニューラルネットワークの重みおよびハイパーパラメータを出力することと、を含む。
【0007】
別の例では、命令を含む非一時的なコンピュータ可読媒体は、コンピュータシステムで実行されると、コンピュータシステムに、検索空間から第1のニューラル・ネットワーク・アーキテクチャを選択することと、精度および実装コストを取得するために、第1のニューラル・ネットワーク・アーキテクチャを有するニューラルネットワークをトレーニングすることであって、実装コストは、推論プラットフォームのプログラマブルデバイスに基づく、トレーニングすることと、精度および実装コストに基づいて、検索空間から第2のニューラル・ネットワーク・アーキテクチャを選択することと、第2のニューラル・ネットワーク・アーキテクチャを有するニューラルネットワークの重みおよびハイパーパラメータを出力することと、を含む、ニューラルネットワークを実装する方法を実行させる。
【0008】
別の例では、コンピュータシステムは、プログラムコードが格納されたメモリと、プログラムコードを実行するように構成されたプロセッサであって、検索空間から第1のニューラル・ネットワーク・アーキテクチャを選択することと、精度および実装コストを取得するために、第1のニューラル・ネットワーク・アーキテクチャを有するニューラルネットワークをトレーニングすることであって、実装コストは、推論プラットフォームのプログラマブルデバイスに基づく、トレーニングすることと、精度および実装コストに基づいて、検索空間から第2のニューラル・ネットワーク・アーキテクチャを選択することと、第2のニューラル・ネットワーク・アーキテクチャを有するニューラルネットワークの重みおよびハイパーパラメータを出力することと、によってニューラルネットワークを実装するプロセッサと、を含む。
【0009】
これらおよび他の態様は、以下の詳細な説明を参照して理解することができる。
【0010】
上記の特徴を詳細に理解できるように、上記で簡単に要約されたより具体的な説明は、例示的な実施態様を参照することによって得ることができ、そのいくつかは添付の図面に示されている。しかし、添付の図面は典型的な例示的実施態様のみを示しているため、その範囲を限定するものとは見なされないことに留意されたい。
【図面の簡単な説明】
【0011】
【
図1】一例によるニューラルネットワークをトレーニングおよび実装するためのシステムを示すブロック図である。
【
図2】一例によるコンピューティングシステムを示すブロック図である。
【
図3】一例によるニューラルネットワークをトレーニングする方法を示す図である。
【
図4】別の例によるニューラルネットワークをトレーニングする方法を示す図である。
【
図5】別の例によるニューラルネットワークをトレーニングする方法を示す図である。
【
図6】一例による推論プラットフォームを実装する方法を示す流れ図である。
【
図7】一例によるプログラマブル集積回路(IC)を示すブロック図である。
【
図8】
図7のプログラマブルICのシステムオンチップ(SoC)実装を示すブロック図である。
【
図9】
図7のプログラマブルICのフィールド・プログラマブル・ゲート・アレイ(FPGA)の実装を示す図である。
【発明を実施するための形態】
【0012】
理解を容易にするために、可能な場合は、図面に共通する同一の要素を示すために同一の符号が使用されている。1つの例の要素が他の例に有益に組み込まれ得ることが企図される。
【0013】
以下、図を参照して様々な特徴を説明する。図は一定の縮尺で描かれている場合と描かれていない場合があり、同様の構造または機能の要素は、図面全体で同様の符号で表されていることに留意されたい。図面は、特徴の説明を容易にすることのみを目的としていることに留意されたい。それらは、特許請求される発明の網羅的な説明として、または特許請求される発明の範囲に対する限定として意図されていない。さらに、例示された例は、示されたすべての態様または利点を有する必要はない。特定の例に関連して説明される態様または利点は、必ずしもその例に限定されず、そのように例示されない場合であっても、または明示的に説明されない場合であっても、他の任意の例で実施することができる。
【0014】
実装コストを目的として含めることによるニューラルネットワークのトレーニングの技法が記載されている。この技法は、ニューラル・ネットワーク・トポロジーのコストを意識したアーキテクチャ検索を提供する。そのため、ニューラルネットワークのトレーニングは、特定のタスクでニューラルネットワークの精度を最大化することだけを目標としているわけではない。むしろ、ニューラル・ネットワーク・トレーニングは、トレーニングの別の目的として含まれているニューラルネットワークの実装コストに対して精度のバランスを取る。このようにして、トレーニングは多目的検索になり、重みの値がトレーニングされるだけでなく、ニューラルネットワークのトポロジーと特定の実装関連の属性も見いだされる。
【0015】
ここで説明する技法は、ニューラルネットワークでの高いコンピューティング/メモリ要求と、トレーニングフェーズ中のハードウェアバックエンドへの実際の実装に対応する。本技法には、ニューラルネットワークの(推論)実装コストを(初期の、多くの場合、精度に関した目的の次に)トレーニング中の追加目的とすることで、ネットワークトポロジー、そのハイパーパラメータ、および特定の実装関連属性を導出/代替すること、ならびに、誤差耐性(例えば、セーフティクリティカルなアプリケーションの場合)などの他の特性が含まれる。従来のトレーニングでは、推論プラットフォームのアーキテクチャの態様は考慮されていない。複雑さの最適化技法は、重みおよび/または特徴マップをプルーニング/圧縮することによってメモリ帯域幅を削減し、重みおよび/または特徴マップの精度(ビット幅)を削減することに焦点を当てている。強化学習は多目的最適化を提供するが、目的としてニューラルネットワーク自体の実装コストを追加することはない。実装コストを目的として使用するトレーニングのためにここで説明する技法は、これらの技法を補完するものである。推論プラットフォームのアーキテクチャ制約に基づいてネットワークパラメータおよび/または特徴マップを最適化するこれらのおよびさらなる態様は、図面に関して以下に説明される。
【0016】
図1は、一例によるニューラルネットワークをトレーニングおよび実装するためのシステム100を示すブロック図である。システム100は、トレーニングプラットフォーム102および推論プラットフォーム104を含む。トレーニングプラットフォーム102は、特定のタスク(例えば、画像分類、対象物検出など)のためにニューラルネットワーク106をトレーニングするように構成されたハードウェアおよびソフトウェアを含む。以下に説明するように、トレーニングプラットフォームは、強化エージェント103および調整エージェント105を含む。推論プラットフォーム104は、指定されたタスクを実行するためにニューラルネットワーク106を実装するように構成されたハードウェアおよび/またはソフトウェアを含む。トレーニングプラットフォーム102および推論プラットフォーム104の例を以下に説明する。
【0017】
ニューラルネットワーク実装の実装効率は、スループット、エネルギー、サイズ、誤差許容度などの様々なコスト、またはそれらの組み合わせによって測定され得る。このコストは、操作の数、帯域幅、データの局所性、ハードウェアバックエンドでのスケジューリングなど、様々な設計態様の結果である。これらの態様は、トレーニングアルゴリズムの特性に関しており、アルゴリズムのパフォーマンスが向上すると、実装コストが高くなることがよくある(パレートの法則)。通常、特定のタスク/能力のアルゴリズムの精度を最大化することが、トレーニング中の主な目的である。さらに、ネットワークトポロジーはしばしば設計されており、トレーニングはニューラルネットワークの様々なレイヤのすべての重みの正しい値を見つけることに焦点を当てている。これらの重みは、推論中にこのタスク/機能を実行するために使用される。トレーニングアルゴリズムの構成は、「アルゴリズム動作」ハイパーパラメータによって制御される。さらに、ハイパーパラメータという用語は、ニューラルネットワークの容量(例えば、ニューラルネットワークの隠れレイヤの数)を定義するパラメータにも使用されるため、ネットワークトポロジーに関している。これらのハイパーパラメータは、本明細書では「モデル容量」ハイパーパラメータと呼ばれ、すべての実装属性(例えばビット幅)を含む。
【0018】
トレーニングプラットフォーム102は、トレーニングデータセット110および初期ネットワーク重み113を受け取る。トレーニングデータセット110は、トレーニングされたネットワーク重み114を生成するためにニューラルネットワーク106をトレーニングするためのデータを含む。例えば、ニューラルネットワーク106が画像を分類するように構成されている場合には、トレーニングデータセット110は、予め分類された画像のセットであり得る。初期ネットワーク重み113は、ニューラルネットワーク106の重みの初期値を含む。一例では、トレーニングプラットフォーム102は、アルゴリズム動作ハイパーパラメータ112を受け取るための入力も含む。アルゴリズム動作ハイパーパラメータ112は、学習率、早期停止基準などを含む。トレーニングプラットフォーム102はまた、推論実装コスト115を受け取るための入力を含む。トレーニングプラットフォーム102は、推論実装コスト115をトレーニング目的として用いて、精度、実装コストのパレート空間において最良のトレードオフを達成する最適な重み114、ネットワークトポロジー120、モデル容量ハイパーパラメータ108、および実装属性122(例えば、重みまたはテンソル要素のビット幅、数値フォーマットなど)を学習する。
【0019】
このパレート空間を探索している間、最小の精度を強制することができる。この場合、トレーニングは、少なくとも期待される精度を達成する最低コストの実装を探す。精度と推論固有の実装コストトレーニングの目標を組み合わせることで、あらゆるコンピューティングプラットフォーム(例えばCPU、GPU、ASSP、FPGA、ACAPなど、またはそれらの任意の組み合わせ)に適用可能である。推論固有の実装コストには、スループット、エネルギー、サイズ、誤差許容度など、またはそれらの組み合わせが含まれる。そのような推論固有の実装コストは、本明細書では、より一般的には実装コストとも呼ばれる。FPGAの柔軟なアーキテクチャは、すべてのアーキテクチャ設計パラメータ/態様(例えばビット幅、処理要素の数など)が固定されておらず、トレーニング中に学習できるため、この精度と実装コストのトレーニング目標を組み合わせるのに最適である。
【0020】
トポロジー120は、一般に、ニューロンの配置を含む。例えば、トポロジー120は、ニューロンの複数のレイヤを含むことができる。レイヤは一般に、入力レイヤ、出力レイヤ、および0または1以上の隠れレイヤを含む。各ニューロンは、複数の入力および出力を含む。各ニューロンの複数の入力は、複数の重みに関連付けられている。各ニューロンには、その出力に関連するバイアスがさらに含まれている。ニューラルネットワーク106の重みおよびバイアスは、トレーニングされたネットワーク重み114と呼ばれる。特定のレイヤについて、そのニューロンの入力は入力特徴マップと呼ばれ、そのニューロンの出力は出力特徴マップと呼ばれる。入力特徴マップおよび出力特徴マップは、一般に「特徴マップ」と呼ばれる。
【0021】
推論プラットフォーム104は、ニューラルネットワーク106を実装する。入力データセット116は、ニューラルネットワーク106によって処理されるデータを含む。例えば、ニューラルネットワークが画像を分類するように構成されている場合には、入力データセット116は、分類される画像を含むことができる。推論プラットフォーム104は、結果データセット118を生成する。例えば、画像分類スキームでは、結果データセット118は、入力データセット116内の画像の分類を含む。ニューラルネットワーク106は、推論プラットフォーム104の実装コストに基づいて最適化されているので、ニューラルネットワーク106は、推論実装コスト115によって捕捉されたその特徴、要素、および制限を利用して、推論プラットフォーム104によって効率的に実装することができる。
【0022】
図2は、一例によるコンピューティングシステム(「コンピュータ200」)を示すブロック図である。コンピュータ200は、ハードウェアプラットフォーム202上で実行されるソフトウェアプラットフォーム204を含む。ハードウェアプラットフォーム202は、中央処理装置(CPU)206、システムメモリ208、記憶装置210、サポート回路211、トレーニングプラットフォーム212、およびハードウェアアクセラレータ214を含む。ソフトウェアプラットフォーム204は、オペレーティングシステム(OS)230、ドライバ232、ライブラリ234、およびアプリケーション236を含む。
【0023】
一例では、CPU206は、x86ベースのプロセッサ、ARM(登録商標)ベースのプロセッサなどの、任意のタイプの汎用中央処理装置(CPU)であり得る。CPU206は、1つまたは複数のコアおよび関連する回路(例えば、キャッシュメモリ、メモリ管理ユニット(MMU)、割り込みコントローラなど)を含むことができる。CPU206は、本明細書で説明される1つまたは複数の動作を実行し、システムメモリ208および/または記憶装置210に格納され得るプログラムコードを実行するように構成される。サポート回路211は、CPU206と協調して、CPU206、システムメモリ208、記憶装置210、トレーニングプラットフォーム212、ハードウェアアクセラレータ214、または任意の他の周辺機器との間のデータフローを管理する様々な装置を含む。例えば、サポート回路211は、チップセット(例えば、ノースブリッジ、サウスブリッジ、プラットフォーム・ホスト・コントローラなど)、電圧レギュレータ、ファームウェア(例えば、BIOS)などを含むことができる。いくつかの例では、CPU206は、チップセット(例えば、ノースブリッジ、サウスブリッジなど)の機能のすべてまたはかなりの部分を吸収するシステムインパッケージ(SiP)、システムオンチップ(SoC)などであり得る。別の例では、CPU206は、ベクトルプロセッサであってもよく、またはベクトルプロセッサを含んでもよい。
【0024】
システムメモリ208は、実行可能な命令およびデータなどの情報を格納および検索することを可能にするデバイスである。システムメモリ208は、例えば、ダブルデータレート(DDR)ダイナミックRAM(DRAM)などの1つまたは複数のランダム・アクセス・メモリ(RAM)モジュールを含むことができる。システムメモリ208は、ソフトウェアプラットフォーム204を実装するために、CPU206によって処理および実行されるデータ226およびプログラムコード(「コード228」)を格納することができる。記憶装置210は、局所的記憶装置(例えば、1つまたは複数のハードディスク、フラッシュ・メモリ・モジュール、ソリッド・ステート・ディスク、および光ディスク)、および/またはコンピュータ200が1つまたは複数のネットワーク・データ・ストレージ・システムと通信することを可能にするストレージインターフェースを含む。ハードウェアプラットフォーム202は、グラフィックスカード、ユニバーサル・シリアル・バス(USB)インターフェースなどの、コンピューティングシステムの他の様々な従来のデバイスおよび周辺機器を含むことができる。
【0025】
トレーニングプラットフォーム212は、プロセッサ、メモリ、入力/出力(IO)回路などを含むことができるハードウェア216を含む。一例では、ハードウェア216は、グラフィックス処理ユニット(GPU)および関連するサポート回路を含む。別の例では、ハードウェア216は、関連するサポート回路と共に、特定用途向け集積回路(ASIC)、プログラマブルICなどを含むことができる。一例では、トレーニングプラットフォーム212は、ハードウェアアクセラレータ214よりも性能が高いが、ハードウェアアクセラレータ214よりも多くのエネルギーを消費する。トレーニングプラットフォーム212は、ニューラルネットワークをトレーニングするために使用することができる。
【0026】
ハードウェアアクセラレータ214は、IC220およびメモリ224を含む。IC220は、計算エンジン222を含む。一例では、IC220は、フィールド・プログラマブル・ゲート・アレイ(FGPA)またはFPGAを有するシステムオンチップ(SoC)などのプログラマブルICである。計算エンジン222は、IC220でプログラムすることができる。別の例では、IC220はASICなどであり、計算エンジン222はその中の専用回路である。ハードウェアアクセラレータ214は、ニューラルネットワークの推論プラットフォームで使用され得る。
【0027】
OS230は、Linux(登録商標)、Microsoft Windows(登録商標)、Mac OS(登録商標)などの当技術分野で知られている任意のコモディティ・オペレーティング・システムであり得る。ドライバ232およびライブラリ234は、トレーニングプラットフォーム212にアプリケーション・プログラミング・インターフェース(API)を提供するソフトウェアと、それらのコマンドおよび制御のためのハードウェアアクセラレータ214と、を含む。アプリケーション236は、トレーニングプラットフォーム212上でニューラルネットワークをトレーニングし、ハードウェアアクセラレータ214上にニューラルネットワークを実装するソフトウェアを含む。アプリケーション236は、ドライバ232およびライブラリ234を介してトレーニングプラットフォーム212およびハードウェアアクセラレータ214と通信する。
【0028】
トレーニングの目標として実装コストを含めると、トレーニングは多目的問題になる。ネットワークの精度と実装コストを組み合わせるための多目的最適化の技法を以下に説明する。この実装と精度駆動型ニューラルネットワーク検索のトレーニング手法の3つの例を説明する。(1)強化学習を使用する、(2)進化ベースのアルゴリズムを使用する、(3)ハイパーパラメータ解析/最適化を使用する。ニューラル・ネットワーク・アーキテクチャの検索空間のサイズを縮小するための技法についても説明する。
【0029】
多目的最適化
ネットワークのパフォーマンスを評価するときに推論実装コストを含めることは、最適化する必要のある目標が少なくとも2つあることを意味する。そのため、複数の目的は意味のある方法でバランスを取る必要がある。例えば、ネットワークの精度が分類誤差CEによって与えられ、推定実装コストが新しい入力CTの処理にかかる時間によって与えられると仮定する。CTの最小化が非常に重要である場合、オプティマイザがゼロレイヤ、ゼロ操作、およびゼロメモリ要件のネットワークを生成する可能性がある。これにより、CEが大幅に高くなるにもかかわらず、CT=0のネットワークが生成され得る。多目的最適化は、CEとCTのバランスを取り、望ましいソリューションを提供することを目的としている。
【0030】
多目的最適化の一般的な定式化は次のとおりである。
ここで、f
1、…、f
kは最適化される各目的のコストを定義する関数、xは現在の解を表すベクトル、Xはすべての可能な解の検索空間である。本明細書で説明される例では、xは、ニューラル・ネットワーク・トポロジーおよびそれに関連するハイパーパラメータ(すなわち、モデル容量ハイパーパラメータ108)を表す。関数f
1、…、f
kは、その精度と実装/ハードウェアコストに関連して、現在のニューラル・ネットワーク・トポロジーの対象となるメトリックを表す。正確さのために、これらの関数には、平均二乗誤差(MSE)、分類誤差、l
pノルム、ヒンジ損失、またはターゲットドメインに適した同様のメトリックが含まれる。実装/ハードウェアコストの場合、これらの関数には、メモリ要件、帯域幅要件、クロックサイクル、データパス幅、量子化スキーム、算術スタイル、数値フォーマット、シリコン領域、エネルギー消費、および誤差許容度が含まれる。
【0031】
場合によっては、目的関数を数学的に理解しやすい方法で簡単に組み合わせることができない。これらの場合、2つの解x
1とx
2を比較すると、f
i(x
1)<f-
i(x
2)∀iならば、x
1はx
2よりも優れた解である。x
1よりも優れた解が見つからなければ、x
1はパレート最適解であると見なされる。その他の場合、複数の目的関数を組み合わせて、複数の目的のトレードオフをカプセル化することを目的とした単一の目的関数を形成することができる。これはスカラー化と呼ばれ、一般的な場合は次のように定式化される。
ここで、gεR
k→Rである。gの一般的な例は次のとおりである。
・線形スカラー化、g=Σw
if
i(x)、ここで、w
i>0は、各目的関数に関連する重みであり、
・L
pノルム、
ここでf={f
1(x)、f
2(x)、…、f
k(x)}、およびgεR
kは理想的なコスト値のベクトルである。
選択したオプティマイザ(例えば、以下で説明)に応じて、目的関数は、MSE、クロスエントロピー、ヒンジ損失などの、半微分可能である必要があり得る。コストを意識したアーキテクチャ検索のための3つの学習技法を以下に紹介する。これらの各技法は、互いに組み合わせて使用できることに留意されたい。
【0032】
リストされた例は、追加の最適化コストとして実装コストCを示している(精度Rの隣)。これは、推論固有の実装コストの一般的な表現である。これは、エネルギーEや誤差許容度Tなどの単一の実装コスト、またはコストの任意の組み合わせを表すことができる。
【0033】
強化学習ベースのアーキテクチャ検索
図3は、一例によるニューラルネットワークをトレーニングする方法300である。方法300は、ステップ302で始まり、ここで、強化エージェント103は、確率Pで検索空間Sからサンプル・ニューラル・ネットワーク・アーキテクチャ記述Aを選択する。ニューラルネットワークのトポロジー(例えば、その構造および接続性)は、テキストフォーマット(例えば、prototxtまたはニューラルネットワークまたは機械学習フレームワークで使用される他の任意のプレゼンテーション)で記述され得る。ニューラルネットワークの記述は、実装固有の属性(例えば、テンソル要素のビット幅、数値フォーマット、スケジューリングなど)で拡張される。拡張されたニューラルネットワーク記述は、ニューラル・ネットワーク・アーキテクチャ記述になる。
【0034】
ステップ304で、トレーニングプラットフォームはニューラルネットワークをトレーニングし、検証セットの精度Rを得る。ニューラル・ネットワーク・アーキテクチャの記述には実装属性が含まれているため、実装コストC(推論プラットフォームに基づく)を測定または推定/モデル化することができる(ステップ306)。ステップ308で、トレーニングプラットフォームは、精度Rと実装コストCの組み合わせを報酬として使用して、強化エージェント103を更新するためのポリシー勾配を計算する。ステップ310で、強化エージェント103は、トレーニングのための終了条件が満たされているかどうかを判定する。満たされていない場合には、方法300は繰り返され、検索空間Sから別のネットワークアーキテクチャ記述を選択する。方法300は、処理のために次のネットワークアーキテクチャを選択するときに、前の反復と同じネットワークアーキテクチャを選択できることを理解されたい。すなわち、同じネットワークアーキテクチャを複数のトレーニング反復で使用することができる。そうでなければ、方法300は、ステップ312に進み、そこで、トレーニングプラットフォームは、トレーニングされたニューラルネットワークを出力する。
【0035】
一例では、強化エージェント103は、リカレント・ニューラル・ネットワーク(RNN)などのシーケンス予測用に調整された機械学習アルゴリズムであってもよい。このRNNは、前のネットワークレイヤのパラメータを入力として受け取り、次のレイヤのパラメータの予測を生成する。RNNは、停止基準に達するまでこの方法で続行する。停止基準の例には、特定のレイヤ数に到達した、または特定のハードウェアコストに到達した(例えばメモリ使用量/操作数)ことが含まれる。ネットワークの精度と実装コストのために半微分可能な目的関数が選択された場合には、いくつかのパラメータは、目的関数に関してそれらを微分することによって更新され得る。その他のパラメータについては、勾配についてのポリシーが定義されている。
【0036】
進化ベースのアーキテクチャ検索
図4は、別の例によるニューラルネットワークをトレーニングする方法400を示すブロック図である。方法400は、トレーニングプラットフォームによって実装され得る。アーキテクチャ検索の代替手法は、進化ベースのアルゴリズムを使用することである。進化的アルゴリズムを使用してアーキテクチャ検索を実行するには、2つのことが必要であり、それは、1)ニューラル・ネットワーク・アーキテクチャの遺伝子への符号化、および2)特定の構造のパフォーマンスを評価するための適応度関数である。適応度関数は、スカラー化された関数または多目的関数を含む、多目的最適化セクションで前述した任意の関数にすることができる。進化的アルゴリズムは、そのようなネットワークの実装コストを理解する。この場合、進化的アルゴリズムを使用して、最適解(スカラー化)または一連のパレート最適解、または近似を見つけることができる。ニューラル・ネットワークアーキテクチャを遺伝子に符号化するために、ニューラルネットワーク記述をアルファベットに変換することができる。これは、caffeのprototxtなどのネットワーク設計プロトコルへの同等のマッピングであり、アルゴリズムを進化的アルゴリズムにより適したものにするためにコンパクトな方法で記述され得る。ニューラル・ネットワーク・レイヤ、グラフ接続、および個々のニューロンとシナプスはすべて遺伝子として表現することができる。
【0037】
進化的アルゴリズムの基本的な方法論は、遺伝子のN個のランダムな文字列(ニューラル・ネットワーク・アーキテクチャに対応する)を生成することである(ステップ402)。次に、これらのアーキテクチャは、適応度関数を使用して評価され、これは、各ネットワークアーキテクチャを個別にトレーニングする必要があり得る(ステップ404)。この時点で、アーキテクチャのサブセットが選択され、ランダムに組み合わされ、変更されて、次のN個のアーキテクチャが生成される(ステップ406)。時間の経過と共に、これにより、特定のコスト関数に対して高度に最適化されたアーキテクチャが得られ、これは、この場合、高精度と低実装/ハードウェアコストを意味する。ステップ408で、終了するかどうかの判定がなされる。終了しない場合には、方法400はステップ404に進み、繰り返される。そうでなければ、方法400は、ステップ410に進み、そこで、トレーニングプラットフォームは、トレーニングされたニューラルネットワークを出力する。
【0038】
ハイパーパラメータ解析ベースのトレーニング
図5は、一例によるニューラルネットワークをトレーニングする方法500である。方法500は、ステップ502で始まり、ここで、調整エージェント105は、ハイパーパラメータのセットを選択する。上記のように、モデル容量ハイパーパラメータにより、ニューラルネットワークのアーキテクチャの定義/記述が可能になる。モデル容量ハイパーパラメータは、トポロジーパラメータ(例えば、レイヤ数、レイヤあたりのチャネル数など)と関する実装属性の両方を定義する。調整エージェント105は、ハイパーパラメータ(アルゴリズムの動作とモデル容量の両方)の間の関係についての知識を収集する。
【0039】
ステップ504で、トレーニングプラットフォームはニューラルネットワークをトレーニングし、検証セットの精度Rを得る。ニューラル・ネットワーク・アーキテクチャの記述には実装属性が含まれているため、実装コストC(推論プラットフォームに基づく)を測定または推定/モデル化することができる(ステップ506)。ステップ508で、調整エージェント105は、ハイパーパラメータとニューラルネットワーク性能(精度Rと実装コストCの両方)との間の関係を使用して、ハイパーパラメータの次のセットに対してよりパレート最適な選択を行う。ハイパーパラメータ最適化技法を適用することにより、限られた数の最適化ステップで優れた最適化を実現できる。
【0040】
ハイパーパラメータ最適化技法の例には、グリッド検索、ランダム検索、ベイズ最適化が含まれる。グリッド検索では、ニューラルネットワーク内の各ハイパーパラメータの候補値のセットを選択する。次に、ハイパーパラメータの順列ごとにネットワークをトレーニングすることにより、グリッド検索が実行される。次に、上記の多目的最適化のセクションで説明したように、コスト関数に関して望ましいパフォーマンスを発揮するモデルとして最適なモデルが選択される。
【0041】
ランダム検索は、グリッドから選択するのではなく、ハイパーパラメータごとに指定された範囲からランダム値を選択することを除いて、概念的にグリッド検索に似ている。これには、テストされるハイパーパラメータのバリエーションが多いこと、各ハイパーパラメータについてグリッド検索よりも優れた結果が得られる可能性が高いこと、実験を任意の時点で中断しても検索データポイントの完全なセットと見なすことができること、を含むいくつかの利点がある。
【0042】
ベイジアンハイパーパラメータ検索は、ハイパーパラメータ値をコスト関数にマッピングする統計モデルの開発を試みる、より高度な技法である。通常、この統計モデルは、観測データを厳密に近似する関数を生成するガウス過程(GP)である。GPは、ハイパーパラメータ空間で選択されたコスト関数の予測を、そのような予測の不確実性と共に提供し、これには、ランダム検索やグリッド検索に比べて次の利点がある。1.)次の反復で、GPを最小化するポイントを選択する。すなわち、目的の結果に関してハイパーパラメータ空間の現在のモデルに基づいて最適である可能性が最も高いポイントを選択する。および2.)次の反復で、不確実性の高いポイント、すなわちハイパーパラメータ空間に関する大量のさらなる情報を明らかにするポイントを選択する。
【0043】
アーキテクチャ検索空間の削減
上記の方法では、ネットワークの特定の態様を可変にするだけで、ニューラルアーキテクチャの検索空間のサイズ/複雑さを減らすことができる。例えば、特徴マップ要素のビット幅および特徴マップのチャネル数のみを可変にすることで、最適な設定のためのトレーニングが可能になる。通常、特徴マップ要素のビット幅を小さくすると、精度が低下するが、より効率的な実装が可能になる。精度の低下は、実装の複雑さが増す代わりに、特徴マップチャネルの量を増やすことで回復することができる。特徴マップ要素のビット幅とチャネル数は、ニューラル・ネットワーク・アーキテクチャ記述の一部(強化学習技法の場合)またはモデル容量ハイパーパラメータ(ハイパーパラメータ解析の場合)として表すことができる。アーキテクチャ検索の両方の技法は、(削減された)検索空間を探索して、パレート最適(精度対実装コスト)なニューラル・ネットワーク・アーキテクチャを見つける。
【0044】
実装は通常、最適化検索空間内の個別のポイントとして提供され、実装は特定のチップ/プラットフォームのリソースを完全に活用しようとすることに留意されたい。これにより、検索空間のサイズが縮小されるだけでなく、実装コストを意識したネットワーク検索の別の最適化目標にも触れる。すなわち、その個別の実装ポイントの精度を最大化する。これは、(検討中のチップファミリのメンバーの)合計デバイスリソースのリストも、実装コストを意識したアーキテクチャ検索への入力になる可能性があることを示している。
【0045】
確かにFPGAアーキテクチャでは、LUT、FF、DSP、BRAM/URAMなどの実装リソースは、通常、特定のファミリ内のデバイスに対して特定の比率で提供されることに留意されたい。これらの比率は、多目的最適化の変数の数を減らすことができる。
【0046】
最後に、現在のニューラル・ネットワーク・トポロジーの多くは、データに依存するレイヤの実行に依存していないことに留意されたい。ニューラルネットワーク内のすべてのレイヤのこの「静的」実行により、ニューラルネットワークの実装コストのモデリングが簡素化される。データ依存レイヤの実行がネットワークに存在する場合には、ニューラル・ネットワーク・アーキテクチャの検索には、より複雑な動的実装コストが必要になる。あるいは、(推論)プラットフォームでトポロジー候補を実行しているときに行われた実装コストの測定値をニューラル・ネットワーク・アーキテクチャの検索に使用することができる。
【0047】
プログラマブルデバイスの実装
図6は、一例による推論プラットフォームを実装する方法600を示す流れ図である。ステップ602で、トレーニングプラットフォームは、上記の技法で説明されているように、実装コストを考慮してニューラルネットワークをトレーニングする。トレーニングプラットフォームは、トレーニングされたニューラルネットワーク記述を出力する。ステップ604で、ユーザは、回路設計ツールと対話して、トレーニングされたニューラルネットワークの記述に基づいて回路設計を生成する。ステップ606で、回路設計ツールは、FGPAまたはプログラマブルロジックを有するSoCなどのプログラマブルデバイスの回路設計を実装する。ステップ608で、回路設計ツールは、ビットストリームをプログラマブルデバイスにロードして、推論プラットフォームを実装する。
【0048】
図7は、推論プラットフォームおよび/またはトレーニングプラットフォームを実装するために使用することができる例によるプログラマブルIC1を示すブロック図である。プログラマブルIC1は、
図2のIC220として使用することができる。プログラマブルIC1は、プログラマブルロジック3、構成ロジック25、および構成メモリ26を含む。プログラマブルIC1は、不揮発性メモリ27、DRAM28、および他の回路29などの外部回路に結合され得る。プログラマブルロジック3は、ロジックセル30、サポート回路31、およびプログラマブル相互接続32を含む。ロジックセル30は、複数の入力の一般的なロジック機能を実装するように構成され得る回路を含む。サポート回路31は、トランシーバ、入力/出力ブロック、デジタル信号プロセッサ、メモリなどの専用回路を含む。ロジックセルおよびサポート回路31は、プログラマブル相互接続32を使用して相互接続され得る。ロジックセル30をプログラミングするための、サポート回路31のパラメータを設定するための、およびプログラマブル相互接続32をプログラミングするための情報は、構成ロジック25によって構成メモリ26に格納される。構成ロジック25は、不揮発性メモリ27または他の任意のソース(例えば、DRAM28または他の回路29)から構成データを取得することができる。いくつかの例では、プログラマブルIC1は、処理システム2を含む。処理システム2は、マイクロプロセッサ、メモリ、サポート回路、IO回路などを含むことができる。
【0049】
図8は、一例による、プログラマブルIC1のシステムオンチップ(SoC)実装を示すブロック図である。この例では、プログラマブルIC1は、処理システム2およびプログラマブルロジック3を含む。処理システム2は、リアルタイム処理ユニット(RPU)4、アプリケーション処理ユニット(APU)5、グラフィックス処理ユニット(GPU)6、構成およびセキュリティユニット(CSU)12、プラットフォーム管理ユニット(PMU)122などの様々な処理ユニットを含む。処理システム2はまた、オンチップメモリ(OCM)14、トランシーバ7、周辺機器8、相互接続16、DMA回路9、メモリコントローラ10、周辺機器15、および多重化IO(MIO)回路13などの様々なサポート回路を含む。処理ユニットおよびサポート回路は、相互接続16によって相互接続されている。PL3はまた、相互接続16に結合されている。トランシーバ7は、外部ピン24に結合されている。PL3は、外部ピン23に結合されている。メモリコントローラ10は、外部ピン22に結合されている。MIO13は、外部ピン20に結合されている。PS2は、一般に、外部ピン21に結合されている。APU5は、CPU17、メモリ18、およびサポート回路19を含むことができる。
【0050】
PS2を参照すると、各処理ユニットは、1つまたは複数の中央処理装置(CPU)と、メモリ、割り込みコントローラ、ダイレクト・メモリ・アクセス(DMA)コントローラ、メモリ管理ユニット(MMU)、浮動小数点ユニット(FPU)などの関連回路と、を含む。相互接続16は、処理ユニットを相互接続するように構成された様々なスイッチ、バス、通信リンクなどを含み、また、PS2内の他の構成要素を処理ユニットに相互接続する。
【0051】
OCM14には、PS2全体に分散できる1つまたは複数のRAMモジュールが含まれている。例えば、OCM14は、バッテリバックアップRAM(BBRAM)、密結合メモリ(TCM)などを含むことができる。メモリコントローラ10は、外部DRAMにアクセスするためのDRAMインターフェースを含むことができる。周辺機器8、15は、PS2へのインターフェースを提供する1つまたは複数の構成要素を含むことができる。例えば、周辺機器132は、グラフィックス処理ユニット(GPU)、ディスプレイインターフェース(例えば、ディスプレイポート、高精細マルチメディアインターフェース(HDMI)ポートなど)、ユニバーサル・シリアル・バス(USB)ポート、イーサネットポート、ユニバーサル非同期トランシーバ(UART)ポート、シリアル・ペリフェラル・インターフェース(SPI)ポート、汎用IO(GPIO)ポート、シリアル・アドバンスト・テクノロジー・アタッチメント(SATA)ポート、PCIeポートなどを含むことができる。周辺機器15は、MIO13に結合することができる。周辺機器8は、トランシーバ7に結合することができる。トランシーバ7は、シリアライザ/デシリアライザ(SERDES)回路、MGTなどを含むことができる。
【0052】
図9は、プログラマブルIC1のフィールド・プログラマブル・ゲートアレイ(FPGA)の実装を示し、FPGAは多数の異なるプログラマブルタイルを含み、それには、トランシーバ37、構成可能ロジックブロック(「CLB」)33、ランダム・アクセス・メモリ・ブロック(「BRAM」)34、入力/出力ブロック(「IOB」)36、構成およびクロックロジック(「CONFIG/CLOCKS」)42、デジタル信号処理ブロック(「DSP」)35、特殊な入力/出力ブロック(「I/O」)41(例えば、構成ポートおよびクロックポート)、ならびに、デジタル・クロック・マネージャ、アナログデジタル変換器、システム監視ロジックなどの他のプログラマブルロジック39が含まれる。FPGAはまた、PCIeインターフェース40、アナログデジタル変換器(ADC)38などを含むことができる。
【0053】
いくつかのFPGAでは、各プログラマブルタイルは、
図9の上部に含まれる例によって示されるように、同じタイル内のプログラマブルロジック素子の入力および出力端子48への接続を有する少なくとも1つのプログラマブル相互接続素子(「INT」)43を含むことができる。各プログラマブル相互接続素子43は、同じタイルまたは他のタイル内の隣接するプログラマブル相互接続素子の相互接続セグメント49への接続も含むことができる。各プログラマブル相互接続素子43は、ロジックブロック(図示せず)間の一般的なルーティングリソースの相互接続セグメント50への接続も含むことができる。一般的なルーティングリソースは、相互接続セグメント(例えば、相互接続セグメント50)のトラックを含むロジックブロック(図示せず)と相互接続セグメントを接続するためのスイッチブロック(図示せず)との間のルーティングチャネルを含むことができる。一般的なルーティングリソースの相互接続セグメント(例えば、相互接続セグメント50)は、1つまたは複数のロジックブロックにまたがることができる。プログラマブル相互接続素子43は、一般的なルーティングリソースと共に、図示したFPGA用のプログラマブル相互接続構造(「プログラマブル相互接続」)を実装する。
【0054】
例示的な実施態様では、CLB33は、ユーザロジックに加えて単一のプログラマブル相互接続素子(「INT」)43を実装するようにプログラムされ得る構成可能ロジック素子(「CLE」)44を含むことができる。BRAM34は、1つまたは複数のプログラマブル相互接続素子に加えて、BRAMロジック素子(「BRL」)45を含むことができる。通常、タイルに含まれる相互接続素子の数は、タイルの高さに依存する。図示した例では、BRAMタイルの高さは5つのCLBと同じであるが、他の数字(例えば4)を使用することもできる。DSPタイル35は、適切な数のプログラマブル相互接続素子に加えて、DSPロジック素子(「DSPL」)46を含むことができる。IOB36は、例えば、プログラマブル相互接続素子43の1つのインスタンスに加えて、入力/出力ロジック素子(「IOL」)47の2つのインスタンスを含むことができる。当業者には明らかであるように、例えばI/Oロジック素子47に接続された実際のI/Oパッドは、通常は入力/出力ロジック素子47の領域に限定されない。
【0055】
写真の例では、ダイの中心近くの水平領域(
図9に示されている)が、構成、クロック、およびその他の制御ロジックに使用されている。この水平領域またはカラムから延在する垂直カラム51は、FPGAの幅全体にクロックおよび構成信号を分配するために使用される。
【0056】
図9に示すアーキテクチャを利用するいくつかのFPGAは、FPGAの大部分を構成する通常のカラム構造を破壊する追加のロジックブロックを含む。追加のロジックブロックは、プログラマブルブロックおよび/または専用ロジックであり得る。
【0057】
図9は、例示的なFPGAアーキテクチャのみを説明することを意図していることに留意されたい。例えば、行のロジックブロックの数、行の相対的な幅、行の数と順序、行に含まれるロジックブロックのタイプ、ロジックブロックの相対的なサイズ、および
図9の上部に含まれる相互接続/ロジック実装は、純粋に例示的なものである。例えば、実際のFPGAでは、ユーザロジックの効率的な実装を容易にするために、通常CLBが表示される場所に複数のCLBの隣接する行が含まれるが、隣接するCLBの行の数はFPGAの全体的なサイズによって異なる。
【0058】
一例では、ニューラルネットワークを実装する方法は、検索空間から第1のニューラル・ネットワーク・アーキテクチャを選択することと、精度および実装コストを取得するために、第1のニューラル・ネットワーク・アーキテクチャを有するニューラルネットワークをトレーニングすることであって、実装コストは、推論プラットフォームのプログラマブルデバイスに基づく、トレーニングすることと、精度および実装コストに基づいて、検索空間から第2のニューラル・ネットワーク・アーキテクチャを選択することと、第2のニューラル・ネットワーク・アーキテクチャを有するニューラルネットワークの重みおよびハイパーパラメータを出力することと、を含む。
【0059】
一例では、第1のニューラル・ネットワーク・アーキテクチャを選択するステップは、強化エージェントによって実行され、強化エージェントは、確率Pで検索空間から第1のニューラル・ネットワーク・アーキテクチャを選択し、強化エージェントは、精度および実装コストの関数に基づいて確率Pを調整する
【0060】
一例では、強化エージェントはリカレント・ニューラル・ネットワーク(RNN)である。
【0061】
一例では、第1のニューラル・ネットワーク・アーキテクチャは、複数のニューラル・ネットワーク・アーキテクチャのうちの1つであり、トレーニングするステップは、適応度関数を使用して複数のニューラル・ネットワーク・アーキテクチャを評価することを含む。
【0062】
一例では、第1のニューラル・ネットワーク・アーキテクチャを選択するステップは、調整エージェントによって実行され、調整エージェントは、精度および実装コストの関数に基づいて、第2のニューラル・ネットワーク・アーキテクチャのハイパーパラメータを選択する。
【0063】
一例では、調整エージェントは、グリッド検索、ランダム検索、またはベイジアン検索を使用してハイパーパラメータを選択する。
【0064】
一例では、本方法は、ニューラルネットワークの重みおよびハイパーパラメータに基づいて回路設計を生成することと、プログラマブル・ロジック・デバイスのために回路設計を実装することと、をさらに含む。
【0065】
一例では、コンピュータシステムは、プログラムコードが格納されたメモリと、プログラムコードを実行するように構成されたプロセッサであって、検索空間から第1のニューラル・ネットワーク・アーキテクチャを選択することと、精度および実装コストを取得するために、第1のニューラル・ネットワーク・アーキテクチャを有するニューラルネットワークをトレーニングすることであって、実装コストは、推論プラットフォームのプログラマブルデバイスに基づく、トレーニングすることと、精度および実装コストに基づいて、検索空間から第2のニューラル・ネットワーク・アーキテクチャを選択することと、第2のニューラル・ネットワーク・アーキテクチャを有するニューラルネットワークの重みおよびハイパーパラメータを出力することと、によってニューラルネットワークを実装するプロセッサと、を含む。
【0066】
一例では、プロセッサは、強化エージェントを使用して第1のニューラル・ネットワーク・アーキテクチャを選択するためにコードを実行するように構成され、強化エージェントは、確率Pで検索空間から第1のニューラル・ネットワーク・アーキテクチャを選択し、強化エージェントは、精度および実装コストの関数に基づいて確率Pを調整する。
【0067】
一例では、強化エージェントはリカレント・ニューラル・ネットワーク(RNN)である。
【0068】
一例では、第1のニューラル・ネットワーク・アーキテクチャは、複数のニューラル・ネットワーク・アーキテクチャのうちの1つであり、プロセッサは、適応度関数を使用して複数のニューラル・ネットワーク・アーキテクチャを評価することによってトレーニングを実行するためにコードを実行する。
【0069】
一例では、プロセッサは、調整エージェントを使用して第1のニューラル・ネットワーク・アーキテクチャを選択するためにコードを実行し、調整エージェントは、精度および実装コストの関数に基づいて、第2のニューラル・ネットワーク・アーキテクチャのハイパーパラメータを選択する。
【0070】
一例では、調整エージェントは、グリッド検索、ランダム検索、またはベイジアン検索を使用してハイパーパラメータを選択する。
【0071】
本明細書で説明される様々な例は、コンピュータシステムに格納されたデータを含む様々なコンピュータで実施される操作を使用することができる。例えば、これらの操作には物理量の物理的操作が必要な場合があり、通常、必ずしもそうとは限らないが、これらの量は電気信号または磁気信号の形態を取り、それらまたはそれらの表現が格納、転送、結合、比較、または操作され得る。さらに、そのような操作は、生成、識別、決定、または比較などの用語で呼ばれることが多い。本明細書に記載の1つまたは複数の例示的な技法の一部を形成する本明細書に記載の任意の操作は、有用な機械操作であり得る。さらに、1つまたは複数の例示的な技法はまた、これらの操作を実行するためのデバイスまたは装置に関する。装置は、特定の必要な目的のために特別に構築され得るか、またはコンピュータに格納されたコンピュータプログラムによって選択的に起動または構成される汎用コンピュータであってもよい。特に、本明細書の教示に従って書かれたコンピュータプログラムと共に様々な汎用機械を使用することができ、または必要な操作を実行するためのより特殊な装置を構築することがより便利であってもよい。本明細書に記載の様々な例は、ハンドヘルドデバイス、マイクロプロセッサシステム、マイクロプロセッサベースまたはプログラム可能な家庭用電化製品、ミニコンピュータ、メインフレームコンピュータなどを含む他のコンピューティングシステム構成で実施されてもよい。
【0072】
本明細書に記載の1つまたは複数の例示的な技法は、1つまたは複数のコンピュータプログラムとして、あるいは1つまたは複数のコンピュータ可読媒体に具現化された1つまたは複数のコンピュータ・プログラム・モジュールとして実装されてもよい。コンピュータ可読媒体という用語は、後でコンピュータシステムに入力できるデータを格納できる任意のデータ記憶装置を指し、コンピュータ可読媒体は、コンピュータプログラムをコンピュータで読み取るように具現化するための既存またはその後に開発された技術に基づいてもよい。コンピュータ可読媒体の例には、ハードドライブ、ネットワーク接続ストレージ(NAS)、読み取り専用メモリ、ランダム・アクセス・メモリ(例えばフラッシュ・メモリ・デバイス)、CD(コンパクトディスク)-CD-ROM、CD-R、またはCD-RW、DVD(デジタル多用途ディスク)、磁気テープ、ならびにその他の光学的および非光学的データ記憶装置が含まれる。コンピュータ可読媒体はまた、コンピュータ可読コードが分散方式で格納および実行されるように、ネットワーク結合コンピュータシステム上に分散することができる。
【0073】
上記は特定の例に向けられているが、他のさらなる例は、その基本的な範囲から逸脱することなく考案することができ、その範囲は、以下の特許請求の範囲によって決定される。