(57)【要約】  ニューラルネットワークを実装する例示的な方法は、検索空間から第１のニューラル・ネットワーク・アーキテクチャを選択すること、ならびに精度および実装コストを得るために第１のニューラル・ネットワーク・アーキテクチャを有するニューラルネットワークをトレーニングすることを含む。実装コストは、推論プラットフォームのプログラマブルデバイスに基づく。本方法はさらに、精度および実装コストに基づいて検索空間から第２のニューラル・ネットワーク・アーキテクチャを選択すること、および第２のニューラル・ネットワーク・アーキテクチャを有するニューラルネットワークの重みおよびハイパーパラメータを出力することを含む。【選択図】図３
2022502752.tif 000002
【特許請求の範囲】
【請求項１】
ニューラルネットワークを実装する方法であって、
検索空間から第１のニューラル・ネットワーク・アーキテクチャを選択することと、
精度および実装コストを取得するために、前記第１のニューラル・ネットワーク・アーキテクチャを有する前記ニューラルネットワークをトレーニングすることであって、前記実装コストは、推論プラットフォームのプログラマブルデバイスに基づく、トレーニングすることと、
前記精度および前記実装コストに基づいて、前記検索空間から第２のニューラル・ネットワーク・アーキテクチャを選択することと、
前記第２のニューラル・ネットワーク・アーキテクチャを有する前記ニューラルネットワークの重みおよびハイパーパラメータを出力することと、
を含む方法。
【請求項２】
前記第１のニューラル・ネットワーク・アーキテクチャを選択するステップは、強化エージェントによって実行され、前記強化エージェントは、確率Ｐで前記検索空間から前記第１のニューラル・ネットワーク・アーキテクチャを選択し、前記強化エージェントは、前記精度および前記実装コストの関数に基づいて前記確率Ｐを調整する、請求項１に記載の方法。
【請求項３】
前記強化エージェントは、リカレント・ニューラル・ネットワーク（ＲＮＮ）である、請求項１に記載の方法。
【請求項４】
前記第１のニューラル・ネットワーク・アーキテクチャは、複数のニューラル・ネットワーク・アーキテクチャのうちの１つであり、前記トレーニングするステップは、適応度関数を使用して前記複数のニューラル・ネットワーク・アーキテクチャを評価することを含む、請求項１に記載の方法。
【請求項５】
前記第１のニューラル・ネットワーク・アーキテクチャを選択するステップは、調整エージェントによって実行され、前記調整エージェントは、前記精度および前記実装コストの関数に基づいて、前記第２のニューラル・ネットワーク・アーキテクチャのハイパーパラメータを選択する、請求項１に記載の方法。
【請求項６】
前記調整エージェントは、グリッド検索、ランダム検索、またはベイジアン検索を使用して前記ハイパーパラメータを選択する、請求項５に記載の方法。
【請求項７】
前記ニューラルネットワークの前記重みおよび前記ハイパーパラメータに基づいて回路設計を生成することと、
前記プログラマブル・ロジック・デバイスのために前記回路設計を実装することと、
をさらに含む、請求項１に記載の方法。
【請求項８】
コンピュータシステムであって、
プログラムコードが格納されたメモリと、
前記プログラムコードを実行するように構成されたプロセッサであって、
検索空間から第１のニューラル・ネットワーク・アーキテクチャを選択することと、
精度および実装コストを取得するために、前記第１のニューラル・ネットワーク・アーキテクチャを有する前記ニューラルネットワークをトレーニングすることであって、前記実装コストは、推論プラットフォームのプログラマブルデバイスに基づく、トレーニングすることと、
前記精度および前記実装コストに基づいて、前記検索空間から第２のニューラル・ネットワーク・アーキテクチャを選択することと、
前記第２のニューラル・ネットワーク・アーキテクチャを有する前記ニューラルネットワークの重みおよびハイパーパラメータを出力することと、
によってニューラルネットワークを実装するプロセッサと、
を含むコンピュータシステム。
【請求項９】
前記プロセッサは、強化エージェントを使用して前記第１のニューラル・ネットワーク・アーキテクチャを選択するために前記コードを実行するように構成され、前記強化エージェントは、確率Ｐで前記検索空間から前記第１のニューラル・ネットワーク・アーキテクチャを選択し、前記強化エージェントは、前記精度および前記実装コストの関数に基づいて前記確率Ｐを調整する、請求項８に記載のコンピュータシステム。
【請求項１０】
前記強化エージェントは、リカレント・ニューラル・ネットワーク（ＲＮＮ）である、請求項８に記載のコンピュータシステム。
【請求項１１】
前記第１のニューラル・ネットワーク・アーキテクチャは、複数のニューラル・ネットワーク・アーキテクチャのうちの１つであり、前記プロセッサは、適応度関数を使用して前記複数のニューラル・ネットワーク・アーキテクチャを評価することによって前記トレーニングを実行するために前記コードを実行する、請求項８に記載のコンピュータシステム。
【請求項１２】
前記プロセッサは、調整エージェントを使用して前記第１のニューラル・ネットワーク・アーキテクチャを選択するために前記コードを実行し、前記調整エージェントは、前記精度および前記実装コストの関数に基づいて、前記第２のニューラル・ネットワーク・アーキテクチャのハイパーパラメータを選択する、請求項８に記載のコンピュータシステム。
【請求項１３】
前記調整エージェントは、グリッド検索、ランダム検索、またはベイジアン検索を使用して前記ハイパーパラメータを選択する、請求項１２に記載のコンピュータシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示の例は、一般に、ニューラルネットワークに関連し、特に、実装コストを目的として含めることによるニューラルネットワークのトレーニングに関する。
【背景技術】
【０００２】
機械学習は、明示的にプログラムされていなくてもコンピューティングシステムが動作するように誘導する科学である。古典的な機械学習には、Ｋ−ｍｅａｎｓクラスタリング、線形回帰とロジスティック回帰、確率的勾配降下法、および相関ルール学習など、様々なクラスタリングと分類の技法が含まれる。ディープラーニングは、機械学習の新しいフロンティアである。ディープラーニングは、特徴抽出と変換に非線形処理ユニットの複数のレイヤを使用する機械学習アルゴリズムのクラスである。ディープ・ラーニング・アルゴリズムは、教師なし（例えばパターン解析）または教師あり（例えば分類）にすることができる。ディープ・ラーニング・アルゴリズムは、人工ニューラルネットワーク（ＡＮＮ）（本明細書では「ニューラルネットワーク」と呼ばれる）のレイヤを使用して実装することができる。
【０００３】
一般に、ニューラルネットワークは、グラフで接続されたノード（すなわち、「ニューロン」）の集合である。ニューラルネットワークのノードは、重み付けされた入力の合計を計算し、その合計にオプションのバイアスを追加する。ノードの出力は、最終合計の関数（「活性化関数」と呼ばれる）である。活性化関数の例には、シグモイド関数、双曲線正接（ｔａｎｈ）関数、正規化線形ユニット（ＲｅＬＵ）関数、および恒等関数が含まれる。ニューラル・ネットワーク・モデルは、多くの場合、特定のトポロジーとそれに対応する重みとバイアスを定義するノードのレイヤに編成される。重みとバイアスはネットワークパラメータと呼ばれる。
【０００４】
一般に、ニューラルネットワークは入力レイヤと出力レイヤを含み、オプションで入力レイヤと出力レイヤの間に１つまたは複数の隠れレイヤを含むことができる。ディープ・ラーニング・アプリケーションで使用されるニューラルネットワークには、通常、多くの隠れレイヤが含まれているため、ディープ・ニューラル・ネットワーク（ＤＮＮ）という用語が使用される。ニューラルネットワークのレイヤは、密に接続される（例えば、レイヤ内の各ノードが前のレイヤのすべてのノードに完全に接続される）か、あるいは、まばらに接続され（例えば、レイヤ内の各ノードが前のレイヤのノードの一部にのみ接続され）得る。畳み込みニューラルネットワーク（ＣＮＮ）は、畳み込みレイヤと呼ばれる１つまたは複数のまばらに接続されたレイヤを含むＤＮＮの一種である。ＣＮＮは、画像またはビデオデータの処理に最適である。他のタイプのＤＮＮには、スピーチおよびテキストデータの処理に最適なリカレント・ニューラル・ネットワーク（ＲＮＮ）が含まれる。
【０００５】
任意のトポロジーまたはタイプのニューラルネットワークは、ネットワークを特定のタスクに適応させるために、すべてのレイヤにわたるネットワークパラメータの正しい値を必要とする。教師ありトレーニング手順を使用して、指定されたタスクに必要な精度をもたらすネットワークパラメータのセットを決定することができる。トレーニングには、ネットワークの順方向パスを介してトレーニングデータセットを実行し（順方向伝播）、ネットワークの逆方向パスを介して重みを更新し（逆方向伝播）、予測誤差を補正することが含まれる。次に、トレーニングされたニューラルネットワークが展開され、入力データセットに対して指定されたタスクが実行される（推論と呼ばれる）。ニューラルネットワークのトレーニングに使用されるコンピューティングプラットフォーム（トレーニングプラットフォーム）は、推論に使用されるコンピューティングプラットフォーム（推論プラットフォーム）よりもパフォーマンスが高いことが多い。しかし、推論プラットフォームは、トレーニングプラットフォームよりも電力効率が高いことが多い。従来のトレーニング技法では、推論プラットフォームのアーキテクチャの態様が考慮されていないため、ターゲット推論プラットフォームのニューラルネットワークの実装が最適化されない可能性がある。
【発明の概要】
【０００６】
実装コストを目的として含めることによるニューラルネットワークのトレーニングの技法が記載されている。一例では、ニューラルネットワークを実装する方法は、検索空間から第１のニューラル・ネットワーク・アーキテクチャを選択することと、精度および実装コストを取得するために、第１のニューラル・ネットワーク・アーキテクチャを有するニューラルネットワークをトレーニングすることであって、実装コストは、推論プラットフォームのプログラマブルデバイスに基づく、トレーニングすることと、精度および実装コストに基づいて、検索空間から第２のニューラル・ネットワーク・アーキテクチャを選択することと、第２のニューラル・ネットワーク・アーキテクチャを有するニューラルネットワークの重みおよびハイパーパラメータを出力することと、を含む。
【０００７】
別の例では、命令を含む非一時的なコンピュータ可読媒体は、コンピュータシステムで実行されると、コンピュータシステムに、検索空間から第１のニューラル・ネットワーク・アーキテクチャを選択することと、精度および実装コストを取得するために、第１のニューラル・ネットワーク・アーキテクチャを有するニューラルネットワークをトレーニングすることであって、実装コストは、推論プラットフォームのプログラマブルデバイスに基づく、トレーニングすることと、精度および実装コストに基づいて、検索空間から第２のニューラル・ネットワーク・アーキテクチャを選択することと、第２のニューラル・ネットワーク・アーキテクチャを有するニューラルネットワークの重みおよびハイパーパラメータを出力することと、を含む、ニューラルネットワークを実装する方法を実行させる。
【０００８】
別の例では、コンピュータシステムは、プログラムコードが格納されたメモリと、プログラムコードを実行するように構成されたプロセッサであって、検索空間から第１のニューラル・ネットワーク・アーキテクチャを選択することと、精度および実装コストを取得するために、第１のニューラル・ネットワーク・アーキテクチャを有するニューラルネットワークをトレーニングすることであって、実装コストは、推論プラットフォームのプログラマブルデバイスに基づく、トレーニングすることと、精度および実装コストに基づいて、検索空間から第２のニューラル・ネットワーク・アーキテクチャを選択することと、第２のニューラル・ネットワーク・アーキテクチャを有するニューラルネットワークの重みおよびハイパーパラメータを出力することと、によってニューラルネットワークを実装するプロセッサと、を含む。
【０００９】
これらおよび他の態様は、以下の詳細な説明を参照して理解することができる。
【００１０】
上記の特徴を詳細に理解できるように、上記で簡単に要約されたより具体的な説明は、例示的な実施態様を参照することによって得ることができ、そのいくつかは添付の図面に示されている。しかし、添付の図面は典型的な例示的実施態様のみを示しているため、その範囲を限定するものとは見なされないことに留意されたい。
【図面の簡単な説明】
【００１１】
【図１】一例によるニューラルネットワークをトレーニングおよび実装するためのシステムを示すブロック図である。
【図２】一例によるコンピューティングシステムを示すブロック図である。
【図３】一例によるニューラルネットワークをトレーニングする方法を示す図である。
【図４】別の例によるニューラルネットワークをトレーニングする方法を示す図である。
【図５】別の例によるニューラルネットワークをトレーニングする方法を示す図である。
【図６】一例による推論プラットフォームを実装する方法を示す流れ図である。
【図７】一例によるプログラマブル集積回路（ＩＣ）を示すブロック図である。
【図８】図７のプログラマブルＩＣのシステムオンチップ（ＳｏＣ）実装を示すブロック図である。
【図９】図７のプログラマブルＩＣのフィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ）の実装を示す図である。
【発明を実施するための形態】
【００１２】
理解を容易にするために、可能な場合は、図面に共通する同一の要素を示すために同一の符号が使用されている。１つの例の要素が他の例に有益に組み込まれ得ることが企図される。
【００１３】
以下、図を参照して様々な特徴を説明する。図は一定の縮尺で描かれている場合と描かれていない場合があり、同様の構造または機能の要素は、図面全体で同様の符号で表されていることに留意されたい。図面は、特徴の説明を容易にすることのみを目的としていることに留意されたい。それらは、特許請求される発明の網羅的な説明として、または特許請求される発明の範囲に対する限定として意図されていない。さらに、例示された例は、示されたすべての態様または利点を有する必要はない。特定の例に関連して説明される態様または利点は、必ずしもその例に限定されず、そのように例示されない場合であっても、または明示的に説明されない場合であっても、他の任意の例で実施することができる。
【００１４】
実装コストを目的として含めることによるニューラルネットワークのトレーニングの技法が記載されている。この技法は、ニューラル・ネットワーク・トポロジーのコストを意識したアーキテクチャ検索を提供する。そのため、ニューラルネットワークのトレーニングは、特定のタスクでニューラルネットワークの精度を最大化することだけを目標としているわけではない。むしろ、ニューラル・ネットワーク・トレーニングは、トレーニングの別の目的として含まれているニューラルネットワークの実装コストに対して精度のバランスを取る。このようにして、トレーニングは多目的検索になり、重みの値がトレーニングされるだけでなく、ニューラルネットワークのトポロジーと特定の実装関連の属性も見いだされる。
【００１５】
ここで説明する技法は、ニューラルネットワークでの高いコンピューティング／メモリ要求と、トレーニングフェーズ中のハードウェアバックエンドへの実際の実装に対応する。本技法には、ニューラルネットワークの（推論）実装コストを（初期の、多くの場合、精度に関した目的の次に）トレーニング中の追加目的とすることで、ネットワークトポロジー、そのハイパーパラメータ、および特定の実装関連属性を導出／代替すること、ならびに、誤差耐性（例えば、セーフティクリティカルなアプリケーションの場合）などの他の特性が含まれる。従来のトレーニングでは、推論プラットフォームのアーキテクチャの態様は考慮されていない。複雑さの最適化技法は、重みおよび／または特徴マップをプルーニング／圧縮することによってメモリ帯域幅を削減し、重みおよび／または特徴マップの精度（ビット幅）を削減することに焦点を当てている。強化学習は多目的最適化を提供するが、目的としてニューラルネットワーク自体の実装コストを追加することはない。実装コストを目的として使用するトレーニングのためにここで説明する技法は、これらの技法を補完するものである。推論プラットフォームのアーキテクチャ制約に基づいてネットワークパラメータおよび／または特徴マップを最適化するこれらのおよびさらなる態様は、図面に関して以下に説明される。
【００１６】
図１は、一例によるニューラルネットワークをトレーニングおよび実装するためのシステム１００を示すブロック図である。システム１００は、トレーニングプラットフォーム１０２および推論プラットフォーム１０４を含む。トレーニングプラットフォーム１０２は、特定のタスク（例えば、画像分類、対象物検出など）のためにニューラルネットワーク１０６をトレーニングするように構成されたハードウェアおよびソフトウェアを含む。以下に説明するように、トレーニングプラットフォームは、強化エージェント１０３および調整エージェント１０５を含む。推論プラットフォーム１０４は、指定されたタスクを実行するためにニューラルネットワーク１０６を実装するように構成されたハードウェアおよび／またはソフトウェアを含む。トレーニングプラットフォーム１０２および推論プラットフォーム１０４の例を以下に説明する。
【００１７】
ニューラルネットワーク実装の実装効率は、スループット、エネルギー、サイズ、誤差許容度などの様々なコスト、またはそれらの組み合わせによって測定され得る。このコストは、操作の数、帯域幅、データの局所性、ハードウェアバックエンドでのスケジューリングなど、様々な設計態様の結果である。これらの態様は、トレーニングアルゴリズムの特性に関しており、アルゴリズムのパフォーマンスが向上すると、実装コストが高くなることがよくある（パレートの法則）。通常、特定のタスク／能力のアルゴリズムの精度を最大化することが、トレーニング中の主な目的である。さらに、ネットワークトポロジーはしばしば設計されており、トレーニングはニューラルネットワークの様々なレイヤのすべての重みの正しい値を見つけることに焦点を当てている。これらの重みは、推論中にこのタスク／機能を実行するために使用される。トレーニングアルゴリズムの構成は、「アルゴリズム動作」ハイパーパラメータによって制御される。さらに、ハイパーパラメータという用語は、ニューラルネットワークの容量（例えば、ニューラルネットワークの隠れレイヤの数）を定義するパラメータにも使用されるため、ネットワークトポロジーに関している。これらのハイパーパラメータは、本明細書では「モデル容量」ハイパーパラメータと呼ばれ、すべての実装属性（例えばビット幅）を含む。
【００１８】
トレーニングプラットフォーム１０２は、トレーニングデータセット１１０および初期ネットワーク重み１１３を受け取る。トレーニングデータセット１１０は、トレーニングされたネットワーク重み１１４を生成するためにニューラルネットワーク１０６をトレーニングするためのデータを含む。例えば、ニューラルネットワーク１０６が画像を分類するように構成されている場合には、トレーニングデータセット１１０は、予め分類された画像のセットであり得る。初期ネットワーク重み１１３は、ニューラルネットワーク１０６の重みの初期値を含む。一例では、トレーニングプラットフォーム１０２は、アルゴリズム動作ハイパーパラメータ１１２を受け取るための入力も含む。アルゴリズム動作ハイパーパラメータ１１２は、学習率、早期停止基準などを含む。トレーニングプラットフォーム１０２はまた、推論実装コスト１１５を受け取るための入力を含む。トレーニングプラットフォーム１０２は、推論実装コスト１１５をトレーニング目的として用いて、精度、実装コストのパレート空間において最良のトレードオフを達成する最適な重み１１４、ネットワークトポロジー１２０、モデル容量ハイパーパラメータ１０８、および実装属性１２２（例えば、重みまたはテンソル要素のビット幅、数値フォーマットなど）を学習する。
【００１９】
このパレート空間を探索している間、最小の精度を強制することができる。この場合、トレーニングは、少なくとも期待される精度を達成する最低コストの実装を探す。精度と推論固有の実装コストトレーニングの目標を組み合わせることで、あらゆるコンピューティングプラットフォーム（例えばＣＰＵ、ＧＰＵ、ＡＳＳＰ、ＦＰＧＡ、ＡＣＡＰなど、またはそれらの任意の組み合わせ）に適用可能である。推論固有の実装コストには、スループット、エネルギー、サイズ、誤差許容度など、またはそれらの組み合わせが含まれる。そのような推論固有の実装コストは、本明細書では、より一般的には実装コストとも呼ばれる。ＦＰＧＡの柔軟なアーキテクチャは、すべてのアーキテクチャ設計パラメータ／態様（例えばビット幅、処理要素の数など）が固定されておらず、トレーニング中に学習できるため、この精度と実装コストのトレーニング目標を組み合わせるのに最適である。
【００２０】
トポロジー１２０は、一般に、ニューロンの配置を含む。例えば、トポロジー１２０は、ニューロンの複数のレイヤを含むことができる。レイヤは一般に、入力レイヤ、出力レイヤ、および０または１以上の隠れレイヤを含む。各ニューロンは、複数の入力および出力を含む。各ニューロンの複数の入力は、複数の重みに関連付けられている。各ニューロンには、その出力に関連するバイアスがさらに含まれている。ニューラルネットワーク１０６の重みおよびバイアスは、トレーニングされたネットワーク重み１１４と呼ばれる。特定のレイヤについて、そのニューロンの入力は入力特徴マップと呼ばれ、そのニューロンの出力は出力特徴マップと呼ばれる。入力特徴マップおよび出力特徴マップは、一般に「特徴マップ」と呼ばれる。
【００２１】
推論プラットフォーム１０４は、ニューラルネットワーク１０６を実装する。入力データセット１１６は、ニューラルネットワーク１０６によって処理されるデータを含む。例えば、ニューラルネットワークが画像を分類するように構成されている場合には、入力データセット１１６は、分類される画像を含むことができる。推論プラットフォーム１０４は、結果データセット１１８を生成する。例えば、画像分類スキームでは、結果データセット１１８は、入力データセット１１６内の画像の分類を含む。ニューラルネットワーク１０６は、推論プラットフォーム１０４の実装コストに基づいて最適化されているので、ニューラルネットワーク１０６は、推論実装コスト１１５によって捕捉されたその特徴、要素、および制限を利用して、推論プラットフォーム１０４によって効率的に実装することができる。
【００２２】
図２は、一例によるコンピューティングシステム（「コンピュータ２００」）を示すブロック図である。コンピュータ２００は、ハードウェアプラットフォーム２０２上で実行されるソフトウェアプラットフォーム２０４を含む。ハードウェアプラットフォーム２０２は、中央処理装置（ＣＰＵ）２０６、システムメモリ２０８、記憶装置２１０、サポート回路２１１、トレーニングプラットフォーム２１２、およびハードウェアアクセラレータ２１４を含む。ソフトウェアプラットフォーム２０４は、オペレーティングシステム（ＯＳ）２３０、ドライバ２３２、ライブラリ２３４、およびアプリケーション２３６を含む。
【００２３】
一例では、ＣＰＵ２０６は、ｘ８６ベースのプロセッサ、ＡＲＭ（登録商標）ベースのプロセッサなどの、任意のタイプの汎用中央処理装置（ＣＰＵ）であり得る。ＣＰＵ２０６は、１つまたは複数のコアおよび関連する回路（例えば、キャッシュメモリ、メモリ管理ユニット（ＭＭＵ）、割り込みコントローラなど）を含むことができる。ＣＰＵ２０６は、本明細書で説明される１つまたは複数の動作を実行し、システムメモリ２０８および／または記憶装置２１０に格納され得るプログラムコードを実行するように構成される。サポート回路２１１は、ＣＰＵ２０６と協調して、ＣＰＵ２０６、システムメモリ２０８、記憶装置２１０、トレーニングプラットフォーム２１２、ハードウェアアクセラレータ２１４、または任意の他の周辺機器との間のデータフローを管理する様々な装置を含む。例えば、サポート回路２１１は、チップセット（例えば、ノースブリッジ、サウスブリッジ、プラットフォーム・ホスト・コントローラなど）、電圧レギュレータ、ファームウェア（例えば、ＢＩＯＳ）などを含むことができる。いくつかの例では、ＣＰＵ２０６は、チップセット（例えば、ノースブリッジ、サウスブリッジなど）の機能のすべてまたはかなりの部分を吸収するシステムインパッケージ（ＳｉＰ）、システムオンチップ（ＳｏＣ）などであり得る。別の例では、ＣＰＵ２０６は、ベクトルプロセッサであってもよく、またはベクトルプロセッサを含んでもよい。
【００２４】
システムメモリ２０８は、実行可能な命令およびデータなどの情報を格納および検索することを可能にするデバイスである。システムメモリ２０８は、例えば、ダブルデータレート（ＤＤＲ）ダイナミックＲＡＭ（ＤＲＡＭ）などの１つまたは複数のランダム・アクセス・メモリ（ＲＡＭ）モジュールを含むことができる。システムメモリ２０８は、ソフトウェアプラットフォーム２０４を実装するために、ＣＰＵ２０６によって処理および実行されるデータ２２６およびプログラムコード（「コード２２８」）を格納することができる。記憶装置２１０は、局所的記憶装置（例えば、１つまたは複数のハードディスク、フラッシュ・メモリ・モジュール、ソリッド・ステート・ディスク、および光ディスク）、および／またはコンピュータ２００が１つまたは複数のネットワーク・データ・ストレージ・システムと通信することを可能にするストレージインターフェースを含む。ハードウェアプラットフォーム２０２は、グラフィックスカード、ユニバーサル・シリアル・バス（ＵＳＢ）インターフェースなどの、コンピューティングシステムの他の様々な従来のデバイスおよび周辺機器を含むことができる。
【００２５】
トレーニングプラットフォーム２１２は、プロセッサ、メモリ、入力／出力（ＩＯ）回路などを含むことができるハードウェア２１６を含む。一例では、ハードウェア２１６は、グラフィックス処理ユニット（ＧＰＵ）および関連するサポート回路を含む。別の例では、ハードウェア２１６は、関連するサポート回路と共に、特定用途向け集積回路（ＡＳＩＣ）、プログラマブルＩＣなどを含むことができる。一例では、トレーニングプラットフォーム２１２は、ハードウェアアクセラレータ２１４よりも性能が高いが、ハードウェアアクセラレータ２１４よりも多くのエネルギーを消費する。トレーニングプラットフォーム２１２は、ニューラルネットワークをトレーニングするために使用することができる。
【００２６】
ハードウェアアクセラレータ２１４は、ＩＣ２２０およびメモリ２２４を含む。ＩＣ２２０は、計算エンジン２２２を含む。一例では、ＩＣ２２０は、フィールド・プログラマブル・ゲート・アレイ（ＦＧＰＡ）またはＦＰＧＡを有するシステムオンチップ（ＳｏＣ）などのプログラマブルＩＣである。計算エンジン２２２は、ＩＣ２２０でプログラムすることができる。別の例では、ＩＣ２２０はＡＳＩＣなどであり、計算エンジン２２２はその中の専用回路である。ハードウェアアクセラレータ２１４は、ニューラルネットワークの推論プラットフォームで使用され得る。
【００２７】
ＯＳ２３０は、Ｌｉｎｕｘ（登録商標）、Ｍｉｃｒｏｓｏｆｔ  Ｗｉｎｄｏｗｓ（登録商標）、Ｍａｃ  ＯＳ（登録商標）などの当技術分野で知られている任意のコモディティ・オペレーティング・システムであり得る。ドライバ２３２およびライブラリ２３４は、トレーニングプラットフォーム２１２にアプリケーション・プログラミング・インターフェース（ＡＰＩ）を提供するソフトウェアと、それらのコマンドおよび制御のためのハードウェアアクセラレータ２１４と、を含む。アプリケーション２３６は、トレーニングプラットフォーム２１２上でニューラルネットワークをトレーニングし、ハードウェアアクセラレータ２１４上にニューラルネットワークを実装するソフトウェアを含む。アプリケーション２３６は、ドライバ２３２およびライブラリ２３４を介してトレーニングプラットフォーム２１２およびハードウェアアクセラレータ２１４と通信する。
【００２８】
トレーニングの目標として実装コストを含めると、トレーニングは多目的問題になる。ネットワークの精度と実装コストを組み合わせるための多目的最適化の技法を以下に説明する。この実装と精度駆動型ニューラルネットワーク検索のトレーニング手法の３つの例を説明する。（１）強化学習を使用する、（２）進化ベースのアルゴリズムを使用する、（３）ハイパーパラメータ解析／最適化を使用する。ニューラル・ネットワーク・アーキテクチャの検索空間のサイズを縮小するための技法についても説明する。
【００２９】
多目的最適化
ネットワークのパフォーマンスを評価するときに推論実装コストを含めることは、最適化する必要のある目標が少なくとも２つあることを意味する。そのため、複数の目的は意味のある方法でバランスを取る必要がある。例えば、ネットワークの精度が分類誤差ＣＥによって与えられ、推定実装コストが新しい入力ＣＴの処理にかかる時間によって与えられると仮定する。ＣＴの最小化が非常に重要である場合、オプティマイザがゼロレイヤ、ゼロ操作、およびゼロメモリ要件のネットワークを生成する可能性がある。これにより、ＣＥが大幅に高くなるにもかかわらず、ＣＴ＝０のネットワークが生成され得る。多目的最適化は、ＣＥとＣＴのバランスを取り、望ましいソリューションを提供することを目的としている。
【００３０】
多目的最適化の一般的な定式化は次のとおりである。
2022502752.tif 000003
ここで、ｆ１、…、ｆｋは最適化される各目的のコストを定義する関数、ｘは現在の解を表すベクトル、Ｘはすべての可能な解の検索空間である。本明細書で説明される例では、ｘは、ニューラル・ネットワーク・トポロジーおよびそれに関連するハイパーパラメータ（すなわち、モデル容量ハイパーパラメータ１０８）を表す。関数ｆ１、…、ｆｋは、その精度と実装／ハードウェアコストに関連して、現在のニューラル・ネットワーク・トポロジーの対象となるメトリックを表す。正確さのために、これらの関数には、平均二乗誤差（ＭＳＥ）、分類誤差、ｌｐノルム、ヒンジ損失、またはターゲットドメインに適した同様のメトリックが含まれる。実装／ハードウェアコストの場合、これらの関数には、メモリ要件、帯域幅要件、クロックサイクル、データパス幅、量子化スキーム、算術スタイル、数値フォーマット、シリコン領域、エネルギー消費、および誤差許容度が含まれる。
【００３１】
場合によっては、目的関数を数学的に理解しやすい方法で簡単に組み合わせることができない。これらの場合、２つの解ｘ１とｘ２を比較すると、ｆｉ（ｘ１）＜ｆ−ｉ（ｘ２）∀ｉならば、ｘ１はｘ２よりも優れた解である。ｘ１よりも優れた解が見つからなければ、ｘ１はパレート最適解であると見なされる。その他の場合、複数の目的関数を組み合わせて、複数の目的のトレードオフをカプセル化することを目的とした単一の目的関数を形成することができる。これはスカラー化と呼ばれ、一般的な場合は次のように定式化される。
2022502752.tif 000004
ここで、ｇεＲｋ→Ｒである。ｇの一般的な例は次のとおりである。
・線形スカラー化、ｇ＝Σｗｉｆｉ（ｘ）、ここで、ｗｉ＞０は、各目的関数に関連する重みであり、
・Ｌｐノルム、
2022502752.tif 000005
ここでｆ＝｛ｆ１（ｘ）、ｆ２（ｘ）、…、ｆｋ（ｘ）｝、およびｇεＲｋは理想的なコスト値のベクトルである。
選択したオプティマイザ（例えば、以下で説明）に応じて、目的関数は、ＭＳＥ、クロスエントロピー、ヒンジ損失などの、半微分可能である必要があり得る。コストを意識したアーキテクチャ検索のための３つの学習技法を以下に紹介する。これらの各技法は、互いに組み合わせて使用できることに留意されたい。
【００３２】
リストされた例は、追加の最適化コストとして実装コストＣを示している（精度Ｒの隣）。これは、推論固有の実装コストの一般的な表現である。これは、エネルギーＥや誤差許容度Ｔなどの単一の実装コスト、またはコストの任意の組み合わせを表すことができる。
【００３３】
強化学習ベースのアーキテクチャ検索
図３は、一例によるニューラルネットワークをトレーニングする方法３００である。方法３００は、ステップ３０２で始まり、ここで、強化エージェント１０３は、確率Ｐで検索空間Ｓからサンプル・ニューラル・ネットワーク・アーキテクチャ記述Ａを選択する。ニューラルネットワークのトポロジー（例えば、その構造および接続性）は、テキストフォーマット（例えば、ｐｒｏｔｏｔｘｔまたはニューラルネットワークまたは機械学習フレームワークで使用される他の任意のプレゼンテーション）で記述され得る。ニューラルネットワークの記述は、実装固有の属性（例えば、テンソル要素のビット幅、数値フォーマット、スケジューリングなど）で拡張される。拡張されたニューラルネットワーク記述は、ニューラル・ネットワーク・アーキテクチャ記述になる。
【００３４】
ステップ３０４で、トレーニングプラットフォームはニューラルネットワークをトレーニングし、検証セットの精度Ｒを得る。ニューラル・ネットワーク・アーキテクチャの記述には実装属性が含まれているため、実装コストＣ（推論プラットフォームに基づく）を測定または推定／モデル化することができる（ステップ３０６）。ステップ３０８で、トレーニングプラットフォームは、精度Ｒと実装コストＣの組み合わせを報酬として使用して、強化エージェント１０３を更新するためのポリシー勾配を計算する。ステップ３１０で、強化エージェント１０３は、トレーニングのための終了条件が満たされているかどうかを判定する。満たされていない場合には、方法３００は繰り返され、検索空間Ｓから別のネットワークアーキテクチャ記述を選択する。方法３００は、処理のために次のネットワークアーキテクチャを選択するときに、前の反復と同じネットワークアーキテクチャを選択できることを理解されたい。すなわち、同じネットワークアーキテクチャを複数のトレーニング反復で使用することができる。そうでなければ、方法３００は、ステップ３１２に進み、そこで、トレーニングプラットフォームは、トレーニングされたニューラルネットワークを出力する。
【００３５】
一例では、強化エージェント１０３は、リカレント・ニューラル・ネットワーク（ＲＮＮ）などのシーケンス予測用に調整された機械学習アルゴリズムであってもよい。このＲＮＮは、前のネットワークレイヤのパラメータを入力として受け取り、次のレイヤのパラメータの予測を生成する。ＲＮＮは、停止基準に達するまでこの方法で続行する。停止基準の例には、特定のレイヤ数に到達した、または特定のハードウェアコストに到達した（例えばメモリ使用量／操作数）ことが含まれる。ネットワークの精度と実装コストのために半微分可能な目的関数が選択された場合には、いくつかのパラメータは、目的関数に関してそれらを微分することによって更新され得る。その他のパラメータについては、勾配についてのポリシーが定義されている。
【００３６】
進化ベースのアーキテクチャ検索
図４は、別の例によるニューラルネットワークをトレーニングする方法４００を示すブロック図である。方法４００は、トレーニングプラットフォームによって実装され得る。アーキテクチャ検索の代替手法は、進化ベースのアルゴリズムを使用することである。進化的アルゴリズムを使用してアーキテクチャ検索を実行するには、２つのことが必要であり、それは、１）ニューラル・ネットワーク・アーキテクチャの遺伝子への符号化、および２）特定の構造のパフォーマンスを評価するための適応度関数である。適応度関数は、スカラー化された関数または多目的関数を含む、多目的最適化セクションで前述した任意の関数にすることができる。進化的アルゴリズムは、そのようなネットワークの実装コストを理解する。この場合、進化的アルゴリズムを使用して、最適解（スカラー化）または一連のパレート最適解、または近似を見つけることができる。ニューラル・ネットワークアーキテクチャを遺伝子に符号化するために、ニューラルネットワーク記述をアルファベットに変換することができる。これは、ｃａｆｆｅのｐｒｏｔｏｔｘｔなどのネットワーク設計プロトコルへの同等のマッピングであり、アルゴリズムを進化的アルゴリズムにより適したものにするためにコンパクトな方法で記述され得る。ニューラル・ネットワーク・レイヤ、グラフ接続、および個々のニューロンとシナプスはすべて遺伝子として表現することができる。
【００３７】
進化的アルゴリズムの基本的な方法論は、遺伝子のＮ個のランダムな文字列（ニューラル・ネットワーク・アーキテクチャに対応する）を生成することである（ステップ４０２）。次に、これらのアーキテクチャは、適応度関数を使用して評価され、これは、各ネットワークアーキテクチャを個別にトレーニングする必要があり得る（ステップ４０４）。この時点で、アーキテクチャのサブセットが選択され、ランダムに組み合わされ、変更されて、次のＮ個のアーキテクチャが生成される（ステップ４０６）。時間の経過と共に、これにより、特定のコスト関数に対して高度に最適化されたアーキテクチャが得られ、これは、この場合、高精度と低実装／ハードウェアコストを意味する。ステップ４０８で、終了するかどうかの判定がなされる。終了しない場合には、方法４００はステップ４０４に進み、繰り返される。そうでなければ、方法４００は、ステップ４１０に進み、そこで、トレーニングプラットフォームは、トレーニングされたニューラルネットワークを出力する。
【００３８】
ハイパーパラメータ解析ベースのトレーニング
図５は、一例によるニューラルネットワークをトレーニングする方法５００である。方法５００は、ステップ５０２で始まり、ここで、調整エージェント１０５は、ハイパーパラメータのセットを選択する。上記のように、モデル容量ハイパーパラメータにより、ニューラルネットワークのアーキテクチャの定義／記述が可能になる。モデル容量ハイパーパラメータは、トポロジーパラメータ（例えば、レイヤ数、レイヤあたりのチャネル数など）と関する実装属性の両方を定義する。調整エージェント１０５は、ハイパーパラメータ（アルゴリズムの動作とモデル容量の両方）の間の関係についての知識を収集する。
【００３９】
ステップ５０４で、トレーニングプラットフォームはニューラルネットワークをトレーニングし、検証セットの精度Ｒを得る。ニューラル・ネットワーク・アーキテクチャの記述には実装属性が含まれているため、実装コストＣ（推論プラットフォームに基づく）を測定または推定／モデル化することができる（ステップ５０６）。ステップ５０８で、調整エージェント１０５は、ハイパーパラメータとニューラルネットワーク性能（精度Ｒと実装コストＣの両方）との間の関係を使用して、ハイパーパラメータの次のセットに対してよりパレート最適な選択を行う。ハイパーパラメータ最適化技法を適用することにより、限られた数の最適化ステップで優れた最適化を実現できる。
【００４０】
ハイパーパラメータ最適化技法の例には、グリッド検索、ランダム検索、ベイズ最適化が含まれる。グリッド検索では、ニューラルネットワーク内の各ハイパーパラメータの候補値のセットを選択する。次に、ハイパーパラメータの順列ごとにネットワークをトレーニングすることにより、グリッド検索が実行される。次に、上記の多目的最適化のセクションで説明したように、コスト関数に関して望ましいパフォーマンスを発揮するモデルとして最適なモデルが選択される。
【００４１】
ランダム検索は、グリッドから選択するのではなく、ハイパーパラメータごとに指定された範囲からランダム値を選択することを除いて、概念的にグリッド検索に似ている。これには、テストされるハイパーパラメータのバリエーションが多いこと、各ハイパーパラメータについてグリッド検索よりも優れた結果が得られる可能性が高いこと、実験を任意の時点で中断しても検索データポイントの完全なセットと見なすことができること、を含むいくつかの利点がある。
【００４２】
ベイジアンハイパーパラメータ検索は、ハイパーパラメータ値をコスト関数にマッピングする統計モデルの開発を試みる、より高度な技法である。通常、この統計モデルは、観測データを厳密に近似する関数を生成するガウス過程（ＧＰ）である。ＧＰは、ハイパーパラメータ空間で選択されたコスト関数の予測を、そのような予測の不確実性と共に提供し、これには、ランダム検索やグリッド検索に比べて次の利点がある。１．）次の反復で、ＧＰを最小化するポイントを選択する。すなわち、目的の結果に関してハイパーパラメータ空間の現在のモデルに基づいて最適である可能性が最も高いポイントを選択する。および２．）次の反復で、不確実性の高いポイント、すなわちハイパーパラメータ空間に関する大量のさらなる情報を明らかにするポイントを選択する。
【００４３】
アーキテクチャ検索空間の削減
上記の方法では、ネットワークの特定の態様を可変にするだけで、ニューラルアーキテクチャの検索空間のサイズ／複雑さを減らすことができる。例えば、特徴マップ要素のビット幅および特徴マップのチャネル数のみを可変にすることで、最適な設定のためのトレーニングが可能になる。通常、特徴マップ要素のビット幅を小さくすると、精度が低下するが、より効率的な実装が可能になる。精度の低下は、実装の複雑さが増す代わりに、特徴マップチャネルの量を増やすことで回復することができる。特徴マップ要素のビット幅とチャネル数は、ニューラル・ネットワーク・アーキテクチャ記述の一部（強化学習技法の場合）またはモデル容量ハイパーパラメータ（ハイパーパラメータ解析の場合）として表すことができる。アーキテクチャ検索の両方の技法は、（削減された）検索空間を探索して、パレート最適（精度対実装コスト）なニューラル・ネットワーク・アーキテクチャを見つける。
【００４４】
実装は通常、最適化検索空間内の個別のポイントとして提供され、実装は特定のチップ／プラットフォームのリソースを完全に活用しようとすることに留意されたい。これにより、検索空間のサイズが縮小されるだけでなく、実装コストを意識したネットワーク検索の別の最適化目標にも触れる。すなわち、その個別の実装ポイントの精度を最大化する。これは、（検討中のチップファミリのメンバーの）合計デバイスリソースのリストも、実装コストを意識したアーキテクチャ検索への入力になる可能性があることを示している。
【００４５】
確かにＦＰＧＡアーキテクチャでは、ＬＵＴ、ＦＦ、ＤＳＰ、ＢＲＡＭ／ＵＲＡＭなどの実装リソースは、通常、特定のファミリ内のデバイスに対して特定の比率で提供されることに留意されたい。これらの比率は、多目的最適化の変数の数を減らすことができる。
【００４６】
最後に、現在のニューラル・ネットワーク・トポロジーの多くは、データに依存するレイヤの実行に依存していないことに留意されたい。ニューラルネットワーク内のすべてのレイヤのこの「静的」実行により、ニューラルネットワークの実装コストのモデリングが簡素化される。データ依存レイヤの実行がネットワークに存在する場合には、ニューラル・ネットワーク・アーキテクチャの検索には、より複雑な動的実装コストが必要になる。あるいは、（推論）プラットフォームでトポロジー候補を実行しているときに行われた実装コストの測定値をニューラル・ネットワーク・アーキテクチャの検索に使用することができる。
【００４７】
プログラマブルデバイスの実装
図６は、一例による推論プラットフォームを実装する方法６００を示す流れ図である。ステップ６０２で、トレーニングプラットフォームは、上記の技法で説明されているように、実装コストを考慮してニューラルネットワークをトレーニングする。トレーニングプラットフォームは、トレーニングされたニューラルネットワーク記述を出力する。ステップ６０４で、ユーザは、回路設計ツールと対話して、トレーニングされたニューラルネットワークの記述に基づいて回路設計を生成する。ステップ６０６で、回路設計ツールは、ＦＧＰＡまたはプログラマブルロジックを有するＳｏＣなどのプログラマブルデバイスの回路設計を実装する。ステップ６０８で、回路設計ツールは、ビットストリームをプログラマブルデバイスにロードして、推論プラットフォームを実装する。
【００４８】
図７は、推論プラットフォームおよび／またはトレーニングプラットフォームを実装するために使用することができる例によるプログラマブルＩＣ１を示すブロック図である。プログラマブルＩＣ１は、図２のＩＣ２２０として使用することができる。プログラマブルＩＣ１は、プログラマブルロジック３、構成ロジック２５、および構成メモリ２６を含む。プログラマブルＩＣ１は、不揮発性メモリ２７、ＤＲＡＭ２８、および他の回路２９などの外部回路に結合され得る。プログラマブルロジック３は、ロジックセル３０、サポート回路３１、およびプログラマブル相互接続３２を含む。ロジックセル３０は、複数の入力の一般的なロジック機能を実装するように構成され得る回路を含む。サポート回路３１は、トランシーバ、入力／出力ブロック、デジタル信号プロセッサ、メモリなどの専用回路を含む。ロジックセルおよびサポート回路３１は、プログラマブル相互接続３２を使用して相互接続され得る。ロジックセル３０をプログラミングするための、サポート回路３１のパラメータを設定するための、およびプログラマブル相互接続３２をプログラミングするための情報は、構成ロジック２５によって構成メモリ２６に格納される。構成ロジック２５は、不揮発性メモリ２７または他の任意のソース（例えば、ＤＲＡＭ２８または他の回路２９）から構成データを取得することができる。いくつかの例では、プログラマブルＩＣ１は、処理システム２を含む。処理システム２は、マイクロプロセッサ、メモリ、サポート回路、ＩＯ回路などを含むことができる。
【００４９】
図８は、一例による、プログラマブルＩＣ１のシステムオンチップ（ＳｏＣ）実装を示すブロック図である。この例では、プログラマブルＩＣ１は、処理システム２およびプログラマブルロジック３を含む。処理システム２は、リアルタイム処理ユニット（ＲＰＵ）４、アプリケーション処理ユニット（ＡＰＵ）５、グラフィックス処理ユニット（ＧＰＵ）６、構成およびセキュリティユニット（ＣＳＵ）１２、プラットフォーム管理ユニット（ＰＭＵ）１２２などの様々な処理ユニットを含む。処理システム２はまた、オンチップメモリ（ＯＣＭ）１４、トランシーバ７、周辺機器８、相互接続１６、ＤＭＡ回路９、メモリコントローラ１０、周辺機器１５、および多重化ＩＯ（ＭＩＯ）回路１３などの様々なサポート回路を含む。処理ユニットおよびサポート回路は、相互接続１６によって相互接続されている。ＰＬ３はまた、相互接続１６に結合されている。トランシーバ７は、外部ピン２４に結合されている。ＰＬ３は、外部ピン２３に結合されている。メモリコントローラ１０は、外部ピン２２に結合されている。ＭＩＯ１３は、外部ピン２０に結合されている。ＰＳ２は、一般に、外部ピン２１に結合されている。ＡＰＵ５は、ＣＰＵ１７、メモリ１８、およびサポート回路１９を含むことができる。
【００５０】
ＰＳ２を参照すると、各処理ユニットは、１つまたは複数の中央処理装置（ＣＰＵ）と、メモリ、割り込みコントローラ、ダイレクト・メモリ・アクセス（ＤＭＡ）コントローラ、メモリ管理ユニット（ＭＭＵ）、浮動小数点ユニット（ＦＰＵ）などの関連回路と、を含む。相互接続１６は、処理ユニットを相互接続するように構成された様々なスイッチ、バス、通信リンクなどを含み、また、ＰＳ２内の他の構成要素を処理ユニットに相互接続する。
【００５１】
ＯＣＭ１４には、ＰＳ２全体に分散できる１つまたは複数のＲＡＭモジュールが含まれている。例えば、ＯＣＭ１４は、バッテリバックアップＲＡＭ（ＢＢＲＡＭ）、密結合メモリ（ＴＣＭ）などを含むことができる。メモリコントローラ１０は、外部ＤＲＡＭにアクセスするためのＤＲＡＭインターフェースを含むことができる。周辺機器８、１５は、ＰＳ２へのインターフェースを提供する１つまたは複数の構成要素を含むことができる。例えば、周辺機器１３２は、グラフィックス処理ユニット（ＧＰＵ）、ディスプレイインターフェース（例えば、ディスプレイポート、高精細マルチメディアインターフェース（ＨＤＭＩ）ポートなど）、ユニバーサル・シリアル・バス（ＵＳＢ）ポート、イーサネットポート、ユニバーサル非同期トランシーバ（ＵＡＲＴ）ポート、シリアル・ペリフェラル・インターフェース（ＳＰＩ）ポート、汎用ＩＯ（ＧＰＩＯ）ポート、シリアル・アドバンスト・テクノロジー・アタッチメント（ＳＡＴＡ）ポート、ＰＣＩｅポートなどを含むことができる。周辺機器１５は、ＭＩＯ１３に結合することができる。周辺機器８は、トランシーバ７に結合することができる。トランシーバ７は、シリアライザ／デシリアライザ（ＳＥＲＤＥＳ）回路、ＭＧＴなどを含むことができる。
【００５２】
図９は、プログラマブルＩＣ１のフィールド・プログラマブル・ゲートアレイ（ＦＰＧＡ）の実装を示し、ＦＰＧＡは多数の異なるプログラマブルタイルを含み、それには、トランシーバ３７、構成可能ロジックブロック（「ＣＬＢ」）３３、ランダム・アクセス・メモリ・ブロック（「ＢＲＡＭ」）３４、入力／出力ブロック（「ＩＯＢ」）３６、構成およびクロックロジック（「ＣＯＮＦＩＧ／ＣＬＯＣＫＳ」）４２、デジタル信号処理ブロック（「ＤＳＰ」）３５、特殊な入力／出力ブロック（「Ｉ／Ｏ」）４１（例えば、構成ポートおよびクロックポート）、ならびに、デジタル・クロック・マネージャ、アナログデジタル変換器、システム監視ロジックなどの他のプログラマブルロジック３９が含まれる。ＦＰＧＡはまた、ＰＣＩｅインターフェース４０、アナログデジタル変換器（ＡＤＣ）３８などを含むことができる。
【００５３】
いくつかのＦＰＧＡでは、各プログラマブルタイルは、図９の上部に含まれる例によって示されるように、同じタイル内のプログラマブルロジック素子の入力および出力端子４８への接続を有する少なくとも１つのプログラマブル相互接続素子（「ＩＮＴ」）４３を含むことができる。各プログラマブル相互接続素子４３は、同じタイルまたは他のタイル内の隣接するプログラマブル相互接続素子の相互接続セグメント４９への接続も含むことができる。各プログラマブル相互接続素子４３は、ロジックブロック（図示せず）間の一般的なルーティングリソースの相互接続セグメント５０への接続も含むことができる。一般的なルーティングリソースは、相互接続セグメント（例えば、相互接続セグメント５０）のトラックを含むロジックブロック（図示せず）と相互接続セグメントを接続するためのスイッチブロック（図示せず）との間のルーティングチャネルを含むことができる。一般的なルーティングリソースの相互接続セグメント（例えば、相互接続セグメント５０）は、１つまたは複数のロジックブロックにまたがることができる。プログラマブル相互接続素子４３は、一般的なルーティングリソースと共に、図示したＦＰＧＡ用のプログラマブル相互接続構造（「プログラマブル相互接続」）を実装する。
【００５４】
例示的な実施態様では、ＣＬＢ３３は、ユーザロジックに加えて単一のプログラマブル相互接続素子（「ＩＮＴ」）４３を実装するようにプログラムされ得る構成可能ロジック素子（「ＣＬＥ」）４４を含むことができる。ＢＲＡＭ３４は、１つまたは複数のプログラマブル相互接続素子に加えて、ＢＲＡＭロジック素子（「ＢＲＬ」）４５を含むことができる。通常、タイルに含まれる相互接続素子の数は、タイルの高さに依存する。図示した例では、ＢＲＡＭタイルの高さは５つのＣＬＢと同じであるが、他の数字（例えば４）を使用することもできる。ＤＳＰタイル３５は、適切な数のプログラマブル相互接続素子に加えて、ＤＳＰロジック素子（「ＤＳＰＬ」）４６を含むことができる。ＩＯＢ３６は、例えば、プログラマブル相互接続素子４３の１つのインスタンスに加えて、入力／出力ロジック素子（「ＩＯＬ」）４７の２つのインスタンスを含むことができる。当業者には明らかであるように、例えばＩ／Ｏロジック素子４７に接続された実際のＩ／Ｏパッドは、通常は入力／出力ロジック素子４７の領域に限定されない。
【００５５】
写真の例では、ダイの中心近くの水平領域（図９に示されている）が、構成、クロック、およびその他の制御ロジックに使用されている。この水平領域またはカラムから延在する垂直カラム５１は、ＦＰＧＡの幅全体にクロックおよび構成信号を分配するために使用される。
【００５６】
図９に示すアーキテクチャを利用するいくつかのＦＰＧＡは、ＦＰＧＡの大部分を構成する通常のカラム構造を破壊する追加のロジックブロックを含む。追加のロジックブロックは、プログラマブルブロックおよび／または専用ロジックであり得る。
【００５７】
図９は、例示的なＦＰＧＡアーキテクチャのみを説明することを意図していることに留意されたい。例えば、行のロジックブロックの数、行の相対的な幅、行の数と順序、行に含まれるロジックブロックのタイプ、ロジックブロックの相対的なサイズ、および図９の上部に含まれる相互接続／ロジック実装は、純粋に例示的なものである。例えば、実際のＦＰＧＡでは、ユーザロジックの効率的な実装を容易にするために、通常ＣＬＢが表示される場所に複数のＣＬＢの隣接する行が含まれるが、隣接するＣＬＢの行の数はＦＰＧＡの全体的なサイズによって異なる。
【００５８】
一例では、ニューラルネットワークを実装する方法は、検索空間から第１のニューラル・ネットワーク・アーキテクチャを選択することと、精度および実装コストを取得するために、第１のニューラル・ネットワーク・アーキテクチャを有するニューラルネットワークをトレーニングすることであって、実装コストは、推論プラットフォームのプログラマブルデバイスに基づく、トレーニングすることと、精度および実装コストに基づいて、検索空間から第２のニューラル・ネットワーク・アーキテクチャを選択することと、第２のニューラル・ネットワーク・アーキテクチャを有するニューラルネットワークの重みおよびハイパーパラメータを出力することと、を含む。
【００５９】
一例では、第１のニューラル・ネットワーク・アーキテクチャを選択するステップは、強化エージェントによって実行され、強化エージェントは、確率Ｐで検索空間から第１のニューラル・ネットワーク・アーキテクチャを選択し、強化エージェントは、精度および実装コストの関数に基づいて確率Ｐを調整する
【００６０】
一例では、強化エージェントはリカレント・ニューラル・ネットワーク（ＲＮＮ）である。
【００６１】
一例では、第１のニューラル・ネットワーク・アーキテクチャは、複数のニューラル・ネットワーク・アーキテクチャのうちの１つであり、トレーニングするステップは、適応度関数を使用して複数のニューラル・ネットワーク・アーキテクチャを評価することを含む。
【００６２】
一例では、第１のニューラル・ネットワーク・アーキテクチャを選択するステップは、調整エージェントによって実行され、調整エージェントは、精度および実装コストの関数に基づいて、第２のニューラル・ネットワーク・アーキテクチャのハイパーパラメータを選択する。
【００６３】
一例では、調整エージェントは、グリッド検索、ランダム検索、またはベイジアン検索を使用してハイパーパラメータを選択する。
【００６４】
一例では、本方法は、ニューラルネットワークの重みおよびハイパーパラメータに基づいて回路設計を生成することと、プログラマブル・ロジック・デバイスのために回路設計を実装することと、をさらに含む。
【００６５】
一例では、コンピュータシステムは、プログラムコードが格納されたメモリと、プログラムコードを実行するように構成されたプロセッサであって、検索空間から第１のニューラル・ネットワーク・アーキテクチャを選択することと、精度および実装コストを取得するために、第１のニューラル・ネットワーク・アーキテクチャを有するニューラルネットワークをトレーニングすることであって、実装コストは、推論プラットフォームのプログラマブルデバイスに基づく、トレーニングすることと、精度および実装コストに基づいて、検索空間から第２のニューラル・ネットワーク・アーキテクチャを選択することと、第２のニューラル・ネットワーク・アーキテクチャを有するニューラルネットワークの重みおよびハイパーパラメータを出力することと、によってニューラルネットワークを実装するプロセッサと、を含む。
【００６６】
一例では、プロセッサは、強化エージェントを使用して第１のニューラル・ネットワーク・アーキテクチャを選択するためにコードを実行するように構成され、強化エージェントは、確率Ｐで検索空間から第１のニューラル・ネットワーク・アーキテクチャを選択し、強化エージェントは、精度および実装コストの関数に基づいて確率Ｐを調整する。
【００６７】
一例では、強化エージェントはリカレント・ニューラル・ネットワーク（ＲＮＮ）である。
【００６８】
一例では、第１のニューラル・ネットワーク・アーキテクチャは、複数のニューラル・ネットワーク・アーキテクチャのうちの１つであり、プロセッサは、適応度関数を使用して複数のニューラル・ネットワーク・アーキテクチャを評価することによってトレーニングを実行するためにコードを実行する。
【００６９】
一例では、プロセッサは、調整エージェントを使用して第１のニューラル・ネットワーク・アーキテクチャを選択するためにコードを実行し、調整エージェントは、精度および実装コストの関数に基づいて、第２のニューラル・ネットワーク・アーキテクチャのハイパーパラメータを選択する。
【００７０】
一例では、調整エージェントは、グリッド検索、ランダム検索、またはベイジアン検索を使用してハイパーパラメータを選択する。
【００７１】
本明細書で説明される様々な例は、コンピュータシステムに格納されたデータを含む様々なコンピュータで実施される操作を使用することができる。例えば、これらの操作には物理量の物理的操作が必要な場合があり、通常、必ずしもそうとは限らないが、これらの量は電気信号または磁気信号の形態を取り、それらまたはそれらの表現が格納、転送、結合、比較、または操作され得る。さらに、そのような操作は、生成、識別、決定、または比較などの用語で呼ばれることが多い。本明細書に記載の１つまたは複数の例示的な技法の一部を形成する本明細書に記載の任意の操作は、有用な機械操作であり得る。さらに、１つまたは複数の例示的な技法はまた、これらの操作を実行するためのデバイスまたは装置に関する。装置は、特定の必要な目的のために特別に構築され得るか、またはコンピュータに格納されたコンピュータプログラムによって選択的に起動または構成される汎用コンピュータであってもよい。特に、本明細書の教示に従って書かれたコンピュータプログラムと共に様々な汎用機械を使用することができ、または必要な操作を実行するためのより特殊な装置を構築することがより便利であってもよい。本明細書に記載の様々な例は、ハンドヘルドデバイス、マイクロプロセッサシステム、マイクロプロセッサベースまたはプログラム可能な家庭用電化製品、ミニコンピュータ、メインフレームコンピュータなどを含む他のコンピューティングシステム構成で実施されてもよい。
【００７２】
本明細書に記載の１つまたは複数の例示的な技法は、１つまたは複数のコンピュータプログラムとして、あるいは１つまたは複数のコンピュータ可読媒体に具現化された１つまたは複数のコンピュータ・プログラム・モジュールとして実装されてもよい。コンピュータ可読媒体という用語は、後でコンピュータシステムに入力できるデータを格納できる任意のデータ記憶装置を指し、コンピュータ可読媒体は、コンピュータプログラムをコンピュータで読み取るように具現化するための既存またはその後に開発された技術に基づいてもよい。コンピュータ可読媒体の例には、ハードドライブ、ネットワーク接続ストレージ（ＮＡＳ）、読み取り専用メモリ、ランダム・アクセス・メモリ（例えばフラッシュ・メモリ・デバイス）、ＣＤ（コンパクトディスク）−ＣＤ−ＲＯＭ、ＣＤ−Ｒ、またはＣＤ−ＲＷ、ＤＶＤ（デジタル多用途ディスク）、磁気テープ、ならびにその他の光学的および非光学的データ記憶装置が含まれる。コンピュータ可読媒体はまた、コンピュータ可読コードが分散方式で格納および実行されるように、ネットワーク結合コンピュータシステム上に分散することができる。
【００７３】
上記は特定の例に向けられているが、他のさらなる例は、その基本的な範囲から逸脱することなく考案することができ、その範囲は、以下の特許請求の範囲によって決定される。
【図１】
2022502752.tif 000006
【図２】
2022502752.tif 000007
【図３】
2022502752.tif 000008
【図４】
2022502752.tif 000009
【図５】
2022502752.tif 000010
【図６】
2022502752.tif 000011
【図７】
2022502752.tif 000012
【図８】
2022502752.tif 000013
【図９】
2022502752.tif 000014
【国際調査報告】
2022502752.tif 000015
2022502752.tif 000016
2022502752.tif 000017