(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-04-23
(54)【発明の名称】特定用途向け機械学習アクセラレータの生成およびグローバルなチューニング
(51)【国際特許分類】
G06N 3/06 20060101AFI20240416BHJP
【FI】
G06N3/06
【審査請求】有
【予備審査請求】未請求
(21)【出願番号】P 2023568049
(86)(22)【出願日】2021-05-03
(85)【翻訳文提出日】2023-12-13
(86)【国際出願番号】 US2021030416
(87)【国際公開番号】W WO2022235251
(87)【国際公開日】2022-11-10
(81)【指定国・地域】
(71)【出願人】
【識別番号】502208397
【氏名又は名称】グーグル エルエルシー
【氏名又は名称原語表記】Google LLC
【住所又は居所原語表記】1600 Amphitheatre Parkway 94043 Mountain View, CA U.S.A.
(74)【代理人】
【識別番号】110001195
【氏名又は名称】弁理士法人深見特許事務所
(72)【発明者】
【氏名】ヤン,ヤン
(72)【発明者】
【氏名】ヌネス・コエーリョ,クラウディオナー・ホセ,ジュニア
(72)【発明者】
【氏名】チュアン,ハオ
(72)【発明者】
【氏名】クーセラ,アキ・オスカリ
(57)【要約】
MLハードウェアアクセラレータをグローバルにチューニングおよび生成するための、コンピュータ可読媒体を含む、方法、システムおよび装置が記載されている。設計システムは、ベースラインプロセッサ構成を表すアーキテクチャを選択する。システムのMLコストモデルは、少なくとも、アーキテクチャが、複数の層を含むニューラルネットワークの計算をどのように実行するかをモデリングすることによって、アーキテクチャについての性能データを生成する。性能データに基づいて、アーキテクチャは、アーキテクチャが、ニューラルネットワークを実装しかつ標的アプリケーションのための機械学習計算を実行するときに、性能目標を満たすようにダイナミックにチューンされる。アーキテクチャをダイナミックにチューニングすることに応答して、システムは、ニューラルネットワークの複数の層の各々を実装するためのカスタマイズされたハードウェア構成を指定するMLアクセラレータの構成を生成する。
【特許請求の範囲】
【請求項1】
特定用途向け機械学習(ML)アクセラレータを生成するためのコンピュータが実行する方法であって、
ベースラインプロセッサ構成を表すアーキテクチャを選択するステップと、
MLコストモデルによって、少なくとも、前記アーキテクチャが、複数の層を含む第1のニューラルネットワークの計算をどのように実行するかをモデリングすることによって、前記アーキテクチャについての性能データを生成するステップと、
前記性能データに基づいて、前記アーキテクチャが前記第1のニューラルネットワークを実装しかつ標的アプリケーションのための機械学習計算を実行するときに性能目標を満たすために前記アーキテクチャをダイナミックにチューニングするステップと、
前記アーキテクチャをダイナミックにチューニングすることに応答して、前記第1のニューラルネットワークの前記複数の層の各々を実装するためのカスタマイズされたハードウェア構成を指定するMLアクセラレータの構成を生成するステップと、を含む、特定用途向け機械学習(ML)アクセラレータを生成するためのコンピュータが実行する方法。
【請求項2】
前記カスタマイズされたハードウェア構成に基づいて特定用途向けハードウェアMLアクセラレータを生成するステップをさらに含み、
前記特定用途向けハードウェアMLアクセラレータは、前記ニューラルネットワークが、前記標的アプリケーションのための計算を実行するために使用されるときに、前記ニューラルネットワークの異なる層の各々を実装するように最適化されている、請求項1に記載の方法。
【請求項3】
前記性能目標は、複数の別々の目標を含み、前記特定用途向けMLアクセラレータを生成するステップは、
前記特定用途向けハードウェアMLアクセラレータが前記標的アプリケーションのための計算を実行するときに、前記複数の別々の目標の各々の別々の目標を満たすように構成されている特定用途向けハードウェアMLアクセラレータを生成するステップを含む、請求項2に記載の方法。
【請求項4】
前記性能データを生成するステップは、
前記MLコストモデルによって、前記第1のニューラルネットワークの前記複数の層の各々の層を実行するために前記アーキテクチャの使用をモデリングするステップと、
各々の層を実行するために前記アーキテクチャの使用をモデリングすることに応答して、前記MLコストモデルによって、前記複数の層の各々のための前記アーキテクチャの性能パラメータを生成するステップと、を含む、請求項3に記載の方法。
【請求項5】
前記性能パラメータは、前記複数の別々の目標の各々の別々の目標に対応し、
前記複数の別々の目標は、しきい値処理レイテンシ、しきい値電力消費、しきい値データスループット、およびしきい値プロセッサ利用のうちの少なくとも1つを含む、請求項4に記載の方法。
【請求項6】
前記アーキテクチャをダイナミックにチューニングするステップは、
前記特定用途向けハードウェアMLアクセラレータに前記ハードウェアMLアクセラレータのハードウェア計算ユニットのしきい値パーセンテージを利用させる入力テンソルのための計算のマッピングを決定するステップと、
決定された前記マッピングに基づいて前記アーキテクチャをダイナミックにチューニングするステップと、を含む、請求項2に記載の方法。
【請求項7】
前記アーキテクチャをダイナミックにチューニングするステップは、
グローバルチューナの複数のMLコストモデルの各々によって実行されるオペレーションに基づいて前記アーキテクチャをダイナミックにチューニングするステップと、
前記グローバルチューナのランダムチューナまたはシミュレートされたアニーリングチューナのうちの少なくとも1つによって実行されるオペレーションに基づいて前記アーキテクチャをダイナミックにチューニングするステップと、を含む、請求項6に記載の方法。
【請求項8】
前記アーキテクチャは、集積回路の1つまたは複数のハードウェアブロックを表し、前記アーキテクチャをダイナミックにチューニングするステップは、
前記アーキテクチャが、前記標的アプリケーションのための計算を実行するために前記第1のニューラルネットワークを実装するときに、前記1つまたは複数のハードウェアブロックの各々のためのそれぞれの性能目標を満たすように前記アーキテクチャをダイナミックにチューニングするステップを含む、請求項6に記載の方法。
【請求項9】
前記ハードウェアMLアクセラレータの構成は、前記第1のニューラルネットワークのためのカスタマイズされたソフトウェア構成を指定し、
前記特定用途向けハードウェアMLアクセラレータを生成するステップは、前記カスタマイズされたハードウェア構成および前記カスタマイズされたソフトウェア構成に基づいて前記特定用途向けハードウェアMLアクセラレータを生成するステップを含む、請求項6に記載の方法。
【請求項10】
前記MLコストモデルは、1つまたは複数の個々の分析モデルを含むアーキテクチャ-アウェアコストモデルであり、
前記アーキテクチャ-アウェアコストモデルは、前記アーキテクチャを使用して処理されるデータの決定性データフローに基づいて前記アーキテクチャの性能を推定するように構成されている、請求項6に記載の方法。
【請求項11】
処理装置、および特定用途向け機械学習(ML)アクセラレータを生成するための命令を記憶する非一時的機械可読記憶装置を含むシステムであって、前記命令は、オペレーションの実行を生じるために前記処理装置によって実行可能であり、前記オペレーションは、
ベースラインプロセッサ構成を表すアーキテクチャを選択するステップと、
MLコストモデルによって、少なくとも、前記アーキテクチャが、複数の層を含む第1のニューラルネットワークの計算をどのように実行するかをモデリングすることによって、前記アーキテクチャについての性能データを生成するステップと、
前記性能データに基づいて、前記アーキテクチャが前記第1のニューラルネットワークを実装しかつ標的アプリケーションのための機械学習計算を実行するときに性能目標を満たすために前記アーキテクチャをダイナミックにチューニングするステップと、
前記アーキテクチャをダイナミックにチューニングすることに応答して、前記第1のニューラルネットワークの前記複数の層の各々を実装するためのカスタマイズされたハードウェア構成を指定するMLアクセラレータの構成を生成するステップと、を含む、システム。
【請求項12】
前記カスタマイズされたハードウェア構成に基づいて特定用途向けハードウェアMLアクセラレータを生成するステップをさらに含み、
前記特定用途向けハードウェアMLアクセラレータは、前記ニューラルネットワークが、前記標的アプリケーションのための計算を実行するために使用されるときに、前記ニューラルネットワークの異なる層の各々を実装するように最適化されている、請求項11に記載のシステム。
【請求項13】
前記性能目標は、複数の別々の目標を含み、前記特定用途向けMLアクセラレータを生成するステップは、
前記特定用途向けハードウェアMLアクセラレータが前記標的アプリケーションのための計算を実行するときに、前記複数の別々の目標の各々の別々の目標を満たすように構成されている特定用途向けハードウェアMLアクセラレータを生成するステップを含む、請求項12に記載のシステム。
【請求項14】
前記性能データを生成するステップは、
前記MLコストモデルによって、前記第1のニューラルネットワークの前記複数の層の各々の層を実行するために前記アーキテクチャの使用をモデリングするステップと、
各々の層を実行するために前記アーキテクチャの使用をモデリングすることに応答して、前記MLコストモデルによって、前記複数の層の各々のための前記アーキテクチャの性能パラメータを生成するステップと、を含む、請求項13に記載のシステム。
【請求項15】
前記性能パラメータは、前記複数の別々の目標の各々の別々の目標に対応し、
前記複数の別々の目標は、しきい値処理レイテンシ、しきい値電力消費、しきい値データスループット、およびしきい値プロセッサ利用のうちの少なくとも1つを含む、請求項14に記載のシステム。
【請求項16】
前記アーキテクチャをダイナミックにチューニングするステップは、
前記特定用途向けハードウェアMLアクセラレータに前記ハードウェアMLアクセラレータのハードウェア計算ユニットのしきい値パーセンテージを利用させる入力テンソルのための計算のマッピングを決定するステップと、
決定された前記マッピングに基づいて前記アーキテクチャをダイナミックにチューニングするステップと、を含む、請求項12に記載のシステム。
【請求項17】
前記アーキテクチャをダイナミックにチューニングするステップは、
グローバルチューナの複数のMLコストモデルの各々によって実行されるオペレーションに基づいて前記アーキテクチャをダイナミックにチューニングするステップと、
前記グローバルチューナのランダムチューナまたはシミュレートされたアニーリングチューナのうちの少なくとも1つによって実行されるオペレーションに基づいて前記アーキテクチャをダイナミックにチューニングするステップと、を含む、請求項16に記載のシステム。
【請求項18】
前記アーキテクチャは、集積回路の1つまたは複数のハードウェアブロックを表し、前記アーキテクチャをダイナミックにチューニングするステップは、
前記アーキテクチャが、前記標的アプリケーションのための計算を実行するために前記第1のニューラルネットワークを実装するときに、前記1つまたは複数のハードウェアブロックの各々のためのそれぞれの性能目標を満たすように前記アーキテクチャをダイナミックにチューニングするステップを含む、請求項16に記載のシステム。
【請求項19】
前記MLコストモデルは、1つまたは複数の個々の分析モデルを含むアーキテクチャ-アウェアコストモデルであり、
前記アーキテクチャ-アウェアコストモデルは、前記アーキテクチャを使用して処理されるデータの決定性データフローに基づいて前記アーキテクチャの性能を推定するように構成されている、請求項16に記載のシステム。
【請求項20】
特定用途向け機械学習(ML)アクセラレータを生成するための命令を記憶する非一時的機械可読記憶装置であって、前記命令は、オペレーションの実行を生じるために処理装置によって実行可能であり、前記オペレーションは、
ベースラインプロセッサ構成を表すアーキテクチャを選択するステップと、
MLコストモデルによって、少なくとも、前記アーキテクチャが、複数の層を含む第1のニューラルネットワークの計算をどのように実行するかをモデリングすることによって、前記アーキテクチャについての性能データを生成するステップと、
前記性能データに基づいて、前記アーキテクチャが前記第1のニューラルネットワークを実装しかつ標的アプリケーションのための機械学習計算を実行するときに性能目標を満たすために前記アーキテクチャをダイナミックにチューニングするステップと、
前記アーキテクチャをダイナミックにチューニングすることに応答して、前記第1のニューラルネットワークの前記複数の層の各々を実装するためのカスタマイズされたハードウェア構成を指定するMLアクセラレータの構成を生成するステップと、を含む、特定用途向け機械学習(ML)アクセラレータを生成するための命令を記憶する非一時的機械可読記憶装置。
【発明の詳細な説明】
【技術分野】
【0001】
背景
本明細書は、概して、機械学習計算を実行するために使用される集積回路に関する。
【背景技術】
【0002】
ニューラルネットワークは、受信された入力に対して出力、例えば、分類を生成するためにノードの1つまたは複数の層を使用する機械学習モデルである。幾つかのニューラルネットワークは、出力層に加えて1つまたは複数の隠れ層を含む。幾つかのニューラルネットワークは、画像処理のために構成された畳み込みニューラルネットワーク(CNN)または発話および言語処理のために構成されたリカレントニューラルネットワーク(RNN)であることができる。分類またはパターン認識、データモデリングを伴う予測、および情報クラスタリングに関する様々なタスクを実行するために異なるタイプのニューラルネットワークアーキテクチャを使用することができる。
【0003】
ニューラルネットワーク層は、パラメータまたは重みの対応するセットを有することができる。重みは、ニューラルネットワーク推論を計算するための層の対応する出力を生成するために、ニューラルネットワーク層を通じて入力(例えば、入力のバッチ)を処理するために使用される。入力のバッチおよびカーネルのセットは、入力および重みのテンソル、即ち多次元アレイとして表すことができる。ハードウェアアクセラレータは、ニューラルネットワークを実装するための専用集積回路である。回路は、回路の制御論理を使用してトラバースまたはアクセスされ得るテンソルの要素に対応するロケーションを有するメモリを含む。
【0004】
専用ハードウェアアクセラレータを設計することは、労力が大きく、時間がかかる。例えば、設計プロセスはしばしば、数か月の労力を必要とし、多数の設計反復を含むことができる。さらに、特定用途向け性能およびパワーターゲットを満たすために、設計プロセスは、基礎となるハードウェアにターゲットアプリケーションをマップするためのストラテジを必要とする。ニューラルネットワークの計算グラフはスタティックであるが、マッピング労力は、回路の実際の性能に影響する複数の設計パラメータを伴うことができる。また、設計空間のマニュアル探査はしばしば、異なるセッティングおよび異なるパラメータ間の相互関係の途方もない大きさにより法外である。
【発明の概要】
【0005】
概要
本明細書は、データ処理アーキテクチャをグローバルにチューニングし、チューンされたアーキテクチャに基づいて特定用途向け機械学習(ML)アクセラレータを自動的に生成するための技術を記載する。アーキテクチャは、アプリケーションレベル目的のセットに基づいて選択される候補アーキテクチャであることができる。例示的なアプリケーションレベル目標は、プロセッサ利用、電力消費、データスループット、およびレイテンシを含むことができる。幾つかの場合、目標は、例示的なMLアクセラレータのユーザの所望の性能属性を表す。目標のうちの幾つか(または全て)は、例示的なハードウェアアクセラレータ設計システムへのユーザ入力として受信されてよい。設計システムは、ユーザ入力から独立して目標の1つまたは複数を決定してもよい。
【0006】
システムは、候補アーキテクチャをグローバルにチューンしかつダイナミックに最適化するためにアプリケーションレベル目標(例えば、1つまたは複数の入力)を使用する。例えば、アーキテクチャは、電力消費およびプロセッサ利用などのエリアにおける効率を実現するために特定のタイプのニューラルネットワークを動作させるためにチューンおよび最適化されてよい。アクセラレータ設計システムは、アーキテクチャの様々な態様をチューンするために特定アーキテクチャ向けコストモデルを使用する。コストモデルの出力は、アクセラレータの最終構成を規定するために使用される。最適化およびチューニングの後、システムは、ハードウェアにおいて特定のニューラルネットワークを実装するために最適化された特定用途向け(ML)アクセラレータを生成するために、スケジューリング/マッピングオプションを含む、様々なアーキテクチャフィーチャを含むハードウェア構成を自動的に生成する。
【0007】
本明細書に記載された主題の1つの態様は、特定用途向け機械学習(ML)アクセラレータを生成するための、コンピュータが実行する方法において具体化することができる。方法は、ベースラインプロセッサ構成を表すアーキテクチャを選択し、少なくとも、アーキテクチャが、複数の層を含む第1のニューラルネットワークの計算をどのように実行するかをモデリングすることによって、アーキテクチャについての性能データをMLコストモデルによって生成することを含む。方法は、性能データに基づいて、アーキテクチャが、第1のニューラルネットワークを実装しかつターゲットアプリケーションのための機械学習計算を実行するときに性能目標を満たすためにアーキテクチャをダイナミックにチューニングすることを含む。方法は、アーキテクチャをダイナミックにチューニングすることに応答してMLアクセラレータの構成を生成することも含む。構成は、第1のニューラルネットワークの複数の層のそれぞれを実装するためのカスタマイズされたハードウェア構成を指定する。
【0008】
これらの実装およびその他の実装はそれぞれ選択的に、以下の特徴のうちの1つまたは複数を含むことができる。例えば、幾つかの実装において、方法は、さらに、カスタマイズされたハードウェア構成に基づいて特定用途向けハードウェアMLアクセラレータを生成することを含む。加えて、特定用途向けハードウェアMLアクセラレータは、ニューラルネットワークが、目標アプリケーションのための計算を実行するために使用されるとき、ニューラルネットワークの異なる層のそれぞれを実装するように最適化されることができる。
【0009】
性能目標は、複数の別々の目標を含み、特定用途向けMLアクセラレータを生成することは、特定用途向けハードウェアMLアクセラレータが目標アプリケーションのための計算を実行するとき複数の別々の目標の各々の別々の目標を満たすように構成された特定用途向けハードウェアMLアクセラレータを生成することを含む。幾つかの実装において、性能データを生成することは、MLコストモデルによって、第1のニューラルネットワークの複数の層の各々の層を実行するためにアーキテクチャの使用をモデリングし、各々の層を実行するためにアーキテクチャの使用をモデリングすることに応答して、MLコストモデルによって、複数の層の各々のアーキテクチャの性能パラメータを生成することを含む。
【0010】
性能パラメータは、複数の別々の目標の各々の別々の目標に対応することができ、複数の別々の目標は、しきい値処理レイテンシ、しきい値電力消費、しきい値データスループット、およびしきい値プロセッサ利用のうちの少なくとも1つを含む。幾つかの実装において、アーキテクチャをダイナミックにチューニングすることは、特定用途向けハードウェアMLアクセラレータにハードウェアMLアクセラレータのユニットを計算するハードウェアのしきい値パーセンテージを利用させる入力テンソルのための計算のマッピングを決定し、決定されたマッピングに基づいてアーキテクチャをダイナミックにチューニングすることを含む。
【0011】
アーキテクチャをダイナミックにチューニングすることは、グローバルチューナの複数のMLコストモデルの各々によって実行されるオペレーションに基づいてアーキテクチャをダイナミックにチューニングし、グローバルチューナのランダムチューナまたはシミュレートされたアニーリングチューナのうちの少なくとも1つによって実行されるオペレーションに基づいてアーキテクチャをダイナミックにチューニングすることを含むことができる。幾つかの実装において、アーキテクチャは、集積回路の1つまたは複数のハードウェアブロックを表し、アーキテクチャをダイナミックにチューニングすることは、目標アプリケーションのための計算を実行するためにアーキテクチャが第1のニューラルネットワークを実装するとき1つまたは複数のハードウェアブロックの各々のためのそれぞれの性能目標を満たすようにアーキテクチャをダイナミックにチューニングすることを含む。
【0012】
ハードウェアMLアクセラレータの構成は、第1のニューラルネットワークのためのカスタマイズされたソフトウェア構成を指定し、特定用途向けハードウェアMLアクセラレータを生成することは、カスタマイズされたハードウェア構成およびカスタマイズされたソフトウェア構成に基づいて特定用途向けハードウェアMLアクセラレータを生成することを含む。幾つかの実装において、MLコストモデルは、1つまたは複数の個々の分析モデルを含むアーキテクチャ-アウェアコストモデルは、アーキテクチャを使用して処理されるデータの決定性データフローに基づいてアーキテクチャの性能を推定するように構成されている。
【0013】
この態様およびその他の態様のその他の実装は、コンピュータ記憶装置にエンコードされた、方法のアクションを実行するように構成された、対応するシステム、装置、およびコンピュータプログラムを含む。1つまたは複数のコンピュータのシステムは、動作時にシステムにアクションを実行させるシステムにインストールされたソフトウェア、ファームウェア、ハードウェア、またはそれらの組合せによってそのように構成することができる。1つまたは複数のコンピュータプログラムは、データ処理装置によって実行されたときに、装置にアクションを実行させる命令を有することによってそのように構成することができる。
【0014】
本明細書に記載された主題は、以下の利点のうちの1つまたは複数を実現するために特定の実施形態において実装することができる。
【0015】
開示される技術は、ハードウェア回路においてニューラルネットワークを実装するためのオペレーションの効率的なスケジューリング/マッピングを含む、最適化されたハードウェアおよびソフトウェア構成を規定するためのアーキテクチャ探査プロセスを迅速化するために使用することができるフレームワークを提供する。このプロセスに基づいて、ハードウェア設計システムは、PPA(性能、電力、エリア)制約の与えられたセットのための、システムに関して最適化されたハードウェアマッピングを規定する出力構成を自動的に生成することができる。PPA制約は、少なくともプロセッサ利用、電力消費、レイテンシ、ブロックサイズ、および/またはデータスループットに関するハードウェアアクセラレータ性能しきい値であることができる。
【0016】
設計システムは、固定された数の層を有する例示的なネットワークモデルを識別し、識別されたハードウェアアーキテクチャの最適な属性(例えば、シストリックアレイ、計算タイル等)を決定することができ、識別されたハードウェアアーキテクチャの最適な属性は、ブロック接続、ハードウェアレイアウト、またはメモリなど、そのマイクロアーキテクチャの属性を含む。これらの最適化されたハードウェア属性に加えて、設計システムは、層ごとの処理のための効率的なスケジューリングおよびデータ割り当てを決定し、これにより、特定用途向けMLアクセラレータは、電力および回路面積の最小限の量をも消費しながら、層特定の処理のためのユーザまたはシステム規定された要求を満たす(または超える)ように生成されることができる。
【0017】
本明細書に記載された主題の1つまたは複数の実装の詳細は、添付の図面および以下の説明に示されている。主題のその他の潜在的な特徴、態様および利点は、説明、図面および請求項から明らかになるであろう。
【図面の簡単な説明】
【0018】
【
図1】機械学習アクセラレータを生成およびグローバルにチューニングするための例示的なコンピューティングシステムのブロック図である。
【
図2】特定用途向け機械学習アクセラレータをグローバルにチューニングするための例示的なシステムを示すブロック図である。
【
図3】多層ニューラルネットワークをチューニングするための例示的なフレームワークを示す図である。
【
図4】多層ニューラルネットワークのグラフ実行スケジュールをチューニングおよび最適化するための例示的なプロセスの流れ図である。
【
図5】機械学習アクセラレータを生成およびグローバルにチューニングするために使用される例示的なプロセスの流れ図である。
【
図6】
図1のシステムを使用して生成された例示的な特定用途向けハードウェアアクセラレータのブロック図である。
【
図7】入力テンソル、重みテンソルおよび出力テンソルの例を示す図である。
【発明を実施するための形態】
【0019】
様々な図面における同じ参照番号および指示は、同じ要素を指している。
詳細な説明
図1は、例示的なハードウェアアクセラレータ設計システム100(「システム100」)のブロック図である。概して、システム100は、プロセッサ(例えば、中央処理装置(CPU)、グラフィックス処理ユニット(GPU)、専用プロセッサ等)、メモリ、および/またはカスタマイズされたハードウェア機械学習アクセラレータをグローバルにチューニングおよび生成するための機能を実行するために使用される処理リソースを集合的に形成するデータ記憶装置を含むことができる。
【0020】
以下に説明されるように、1つまたは複数の入力目標102を使用して、システム100は、例示的なハードウェアアクセラレータを生成するための設計構成を開発および出力するように構成されている。ハードウェアアクセラレータは、特定のタイプの機械学習タスクを実行するように最適化されている専用または特定用途向けハードウェア回路として実装することができる。例えば、特定用途向け回路は、多層ニューラルネットワークを実装または動作するように構成された機械学習(ML)ハードウェアアクセラレータであってよい。
【0021】
より具体的には、特定用途向け回路は、ユーザによって指定された1つまたは複数の入力など、異なるアプリケーション目標に従ってユニークにチューンおよび/または最適化されてよい。例えば、特定のタイプのニューラルネットワーク(例えば、多層CNN)を実装する場合、特定用途向けML回路のための候補データ処理アーキテクチャは、プロセッサ利用、電力消費、データスループット、および/またはレイテンシに関するしきい値性能目標を達成(または超過)するように最適化されてよい。
【0022】
本文書において使用される場合、データ処理「アーキテクチャ」は、ハードウェア回路アーキテクチャ、ソフトウェア/ニューラルアーキテクチャ、または両方を指すことができる。このように、アーキテクチャをチューニングおよび最適化することは、ハードウェアアーキテクチャのチューニング属性およびニューラルアーキテクチャのチューニング属性を含むことができ、これにより、結果として生じるアーキテクチャは、システム100によって受信または決定されてよい各々の異なるアプリケーション目標に従って所与の機械学習タスクを実行するように最適化(例えば、完全に最適化)されている。
【0023】
システム100は、設計空間104を構築および管理するための制御論理を含む。設計空間104は、ハードウェア装置およびシステム100において実行されるソフトウェアルーチンの組合せに基づいて構築されてよい。例えば、制御論理は、様々な設計空間オペレーションを管理するためにプログラムされた命令を実行するシステムコントローラまたはホスト装置として実装されてよい。設計空間104のオペレーションは、候補アーキテクチャをチューニングするために必要とされる複数の設計アイテムまたはパラメータを処理することを含むことができる。
【0024】
概して、システム100は、設計空間104のアクティビティおよびオペレーションを管理するために制御論理を使用する。所与のMLタスクのためのアーキテクチャを最適化することに加えて、幾つかの実装において、システム100の制御論理はそれ自体、MLモデルに基づいてよい。例えば、MLモデルは、入力目標のセットに基づいて候補アーキテクチャをチューニングするために必要な設計入力および制御パラメータを処理するように訓練されてよい。幾つかの実装において、制御論理は、入力目標のセットおよび例示的なコストモデル(以下で説明される)によって実行されるオペレーションに従って候補アーキテクチャをチューンする例示的な最適化アルゴリズムを実行または適用する。
【0025】
候補アーキテクチャは、少なくともシステム100のアーキテクチャリポジトリ106から選択される。システム100は、少なくとも入力オブジェクト102に基づいてアーキテクチャリポジトリ106から候補アーキテクチャを識別または選択することができる。アーキテクチャリポジトリ106は、特定用途向けハードウェアMLアクセラレータを生成するために使用される複数の異なるハードウェアアーキテクチャを記述する情報を含む。
【0026】
例えば、アーキテクチャリポジトリ106を介してアクセスされる第1のハードウェアアーキテクチャは、シストリックアレイアーキテクチャを規定してよいのに対し、アーキテクチャリポジトリ106を介してアクセスされる第2の異なるハードウェアアーキテクチャは、計算タイルの配列に基づいてハードウェアアーキテクチャを規定してよい。同様に、アーキテクチャリポジトリ106を介してアクセスされる第3のアーキテクチャは、別々のベクトル処理ユニット(VPU)を形成するタイトに結合されたデータ処理レーンのそれぞれのセットに基づいてハードウェアアーキテクチャを規定してよいのに対し、アーキテクチャリポジトリ106を介してアクセスされる第4のアーキテクチャは、大型の共有されるスクラッチパッドメモリおよびマトリックス計算ユニットと相互作用する少なくとも2つのベクトルプロセッサコアを含むハードウェアアーキテクチャを規定してよい。
【0027】
最適化およびチューニングのために選択される候補アーキテクチャは、例えば、アーキテクチャリポジトリ106から取得されるハードウェア回路アーキテクチャと、ニューラルアーキテクチャとの組合せであることができる。ニューラルアーキテクチャは、複数の異なるタイプのニューラルネットワークグラフを含むネットワークグラフモジュール108から取得されてよい。例えば、システム100は、入力目標102、集積回路(IC)の例示的なハードウェアレイアウト、および例示的なニューラルネットワークグラフに基づいて、候補アーキテクチャを選択することができる。
【0028】
幾つかの実装において、システム100は、所与のニューラルネットワークアーキテクチャのための特定のハードウェアアーキテクチャの選択に向かってシステムをバイアスする1つまたは複数の入力目標102に基づいて候補アーキテクチャを選択する。例えば、システム100は、1つまたは複数のハードウェア変数に基づいて候補アーキテクチャを選択することができる。ハードウェア変数は、アーキテクチャ選択を制約し、設計空間104に、例えば、グラフモジュール108から取得された所与のニューラルアーキテクチャのためのリポジトリ106から特定のタイプのハードウェアアーキテクチャを選択させる、制御パラメータを表すことができる。
【0029】
システム100は、例示的なデータ処理アーキテクチャをグローバルにチューンするために1つまたは複数のコストモデルと相互作用する最適化およびチューニングモジュール112を含む。例えば、システム100は、1つまたは複数の個々のデータモデル114を含むことができるアーキテクチャ-アウェアコストモデル114を含む。幾つかの場合、これらの個々のデータモデルの各々は、入力目標のセットに基づいて候補アーキテクチャをチューニングするためのMLベース分析を実行するように構成されているそれぞれのコストモデル114である。アーキテクチャ-アウェアコストモデル114は、アーキテクチャを使用して処理されるデータの決定性データフローに基づいて候補アーキテクチャの性能を推定する。
【0030】
幾つかの実装において、システム100は、2つのタイプのコストモデルのうちの1つ、即ち分析コストモデルまたはMLベースコストモデルに基づくそれぞれのコストモデル114を含む。両モデルは、以下に記載される最適化ループにおいて論じられるように、同じ入力を受信しかつ同じ出力を生成することができる。概して、これらの2つのタイプのコストモデルの違いは、各々のモデルがそのコストを内部でどのように予測するかである。分析コストモデルとMLベースコストモデルとの間には様々な違いがある。
【0031】
例えば、分析コストモデルは、ハードウェアマッピングパラメータおよびニューラルネットワークグラフのセットに基づいて様々な「シーリング」を考慮するルーフラインベースモデルであることができる。分析コストモデルは、訓練データを必要としない。所与の入力があると、分析コストモデルは「内部論理」を使用して、ボトルネックを引き出し、コストを出力する。内部で、分析コストモデルを実装するために使用される1つまたは複数のハードウェアブロックは、「コストモジュール」を共有するように構成することができる。共有されるコストモジュールは、ハードウェアブロックにおいて動作させられるハードウェアマッピングパラメータおよびニューラルネットワーク計算が与えられるとコストを生成するように動作可能である。幾つかの場合、分析コストモデルは、決定性データフローを有するアプリケーションのための特に正確なコスト出力を生じる。
【0032】
MLベースコストモデルは、少なくともレイテンシおよびスループットを予測することができる機械学習モデルを訓練するために、ラベル付けされたデータを必要とする。例えば、機械学習モデルは、PPA制約のうちの1つまたは複数を含む、異なるアプリケーションレベル目標のためのコスト値を予測するように訓練されることができる。MLベースコストモデルは、教師あり学習およびマルチレベルパーセプトロンを使用して実装されることができる。幾つかの実装において、MLベースコストモデルの訓練データは、高レベル合成およびRTLシミュレーションによって取得される。入力の分散性質を降伏するために、MLベースコストモデルの入力は、確率的勾配降下法などの標準的な技術を使用して学習される埋め込みに変換されることができる。幾つかの場合、MLベースコストモデルは、オフラインで訓練される。訓練されたMLベースコストモデルは、候補アーキテクチャをダイナミックに最適化するために最適化ループ(以下で説明される)の間に使用される。
【0033】
最適化およびチューニングモジュール112ならびにコストモデル114のセットの各々は、設計空間104の拡張として機能することができる。幾つかの実装において、最適化およびチューニングモジュール112ならびにコストモデル114のセットは、候補アーキテクチャのハードウェアブロックおよびニューラルネットワークの両方の属性をチューンするグローバルチューナを表す。設計空間104の制御論理は、グローバルチューナのオペレーションを制御または管理するために使用することができる。例えば、グローバルチューナは、制御論理を使用して生成された制御信号に基づいて候補アーキテクチャをチューンするために設計空間104の異なる態様(例えば、変数および制約)と相互作用することができる。これは、
図2を参照して以下で詳細に説明される。
【0034】
最適化およびチューニングモジュール112は、例示的なチューナ116および例示的なスケジューラ/マッパ118を含む。幾つかの実装において、チューナ116およびスケジューラ/マッパ118は、モジュール112の例示的なチューニングおよび最適化タスクを実行するために相互作用する(以下で説明する)。上記のように、データ処理アーキテクチャは、例えば、アーキテクチャリポジトリ106から取得される、ハードウェア回路アーキテクチャと、ニューラルネットワークグラフモジュール108から取得されるニューラルアーキテクチャとの組合せであることができる。ハードウェアアーキテクチャは、各々が、シストリックアレイセル、ベクトルプロセッサレーンまたは個々の計算タイルなどのハードウェアフィーチャを含む複数の個々のハードウェアブロックを含むことができる。
【0035】
チューナ116およびスケジューラ/マッパ118は、i)1つまたは複数のハードウェアブロックへのニューラルネットワーク層の候補マッピングを構成しかつii)この候補マッピングのために、1つまたは複数のアプリケーション目標102に基づいて各々のハードウェアブロックのそれぞれのマイクロアーキテクチャをチューンする、ように協働する。このように、最適化およびチューニングモジュール112は、所与のハードウェアブロックが、ニューラルネットワークの1つまたは複数の層を実行するために最適化されるように、各々のハードウェアブロックのそれぞれのマイクロアーキテクチャをチューンするように構成されている。
【0036】
所望の性能目標を達成するために、最適化およびチューニングモジュール112は、候補マッピングを構成しかつ各々のハードウェアブロックのマイクロアーキテクチャをチューニングするプロセスを通じて反復するためにアーキテクチャ-アウェアコストモデル114と相互作用することができる。このチューニング反復は、最適化およびチューニングモジュール112から設計空間104への、例えば、選択的なデータパス120を介した、信号通信を含むことができる。通信は、例えば、コストモデル114によって生成された性能推定に基づいて候補アーキテクチャのハードウェアブロックを増大するための新たな入力、変数、制約、またはアーキテクチャフィーチャを取得するためであってよい。システム100は、反復プロセスを表すチューニングループ122を含むことができる。
【0037】
システム100は、設計空間104、最適化およびチューニングモジュール112、およびアーキテクチャ-アウェアコストモデル114の処理動作に基づいて例示的な出力構成130を生成する。以下で説明されるように、システム100は、出力構成130に基づいて特定用途向けMLハードウェアアクセラレータ(例えば、集積回路)を自動的に生成することができる。
【0038】
図2は、グローバルチューナ202を含む例示的なシステム200を示すブロック図である。幾つかの場合、システム200は、1つまたは複数の処理装置によって実行可能なプログラムされた命令を有するソフトウェア/計算モジュールのサブシステムまたはハードウェア回路としてシステム100内に含まれている。
【0039】
システム200の動作は、標的アプリケーションのための訓練および推論などの学習タスクを行うようにカスタマイズされた特定用途向けICを自動的に生成するためのグローバルチューニングフレームワークを提供する。幾つかの実装において、標的アプリケーション(または装置)は、固定されたハードウェア構成を有するカスタマイズされたハードウェアアクセラレータである。幾つかのその他の実装において、標的アプリケーションは、画像分類、オブジェクト検出、自律的車両ナビゲーション、グラフィックス処理、または科学的コンピューティングに関する作業負荷のタイプである。
【0040】
グローバルチューナ202は、特定用途向けMLアクセラレータを生成するために、異なるアプリケーション目標102に従って、候補アーキテクチャをグローバルにチューン/最適化するように構成されている。グローバルチューナ202は、1つまたは複数のチューナ変数および制約210に基づいて設計空間104を構築する設計空間ビルダ204を含む。設計空間ビルダ204は、設計空間エクスプローラ212およびグローバルチューナ202のための1つまたは複数のコストモデル214と通信する。コストモデル214は、上記で説明されているアーキテクチャ-アウェアコストモデル114の個々のモデルに対応する。
【0041】
モジュール108のパースされたニューラルネットワークグラフに基づいて、設計空間ビルダ204および設計空間エクスプローラ212は、標的アプリケーションのために最適に実行するニューラルネットワークアーキテクチャ(「ニューラルアーキテクチャ」)を選択するためのニューラルアーキテクチャサーチ(NAS)システムを実装するために相互作用することができる。NASは、強化学習、進化的探索、微分可能探索等に基づく技術など、様々な探索技術を採用してよい。設計空間ビルダ204および設計空間エクスプローラ212は、標的アプリケーションのために効率的にチューンおよび最適化されることができる異なるハードウェアアーキテクチャを探査するために類似のアプローチを採用してよい。
【0042】
設計空間ビルダ204および設計空間エクスプローラ212は、1つまたは複数のチューナ変数および制約210に基づいてNASおよびハードウェアアーキテクチャ探索技術を実装する。チューナ変数および制約210は、様々なアンロールファクタ、マックスマッパ入力/出力データ幅、またはマックスレデューサ入力/アウトデータ幅を含む。上記で説明されているように、ニューラルネットワーク層は、カーネル(例えば、重み/パラメータ)の対応するセットを有することができる。カーネルは、4つの次元、即ちC-入力チャネル、K-出力チャネル、R-カーネル高さ、およびS-カーネル幅を有する畳み込みカーネルであることができる。例示的な畳み込み動作は、4つの次元パラメータ(C、K、R、S)を使用して入れ子のループとして表すことができる。カーネルのセットは、多次元テンソルとして表されており、入れ子のループは、テンソルの異なる次元をトラバースするために使用することができる。この文脈において、アンロールファクタは、入れ子のループの各々のアンローリングに対応する。グローバルチューナ202は、全てのアンロールファクタのための入れ子のループのアンローリングをサポートし、これらのファクタに関して候補アーキテクチャをチューンすることができる。
【0043】
マッパおよびレデューサ入力/出力データ幅は、大きなテンソルが、所与の計算タイルまたはセルにマップされるより小さなピースへとどのように小さくされるかに影響する。例えば、入力テンソルおよび出力テンソルはかなり大きい可能性があり、これらのテンソルは一度に生成されない。これらのテンソルを処理するハードウェアアクセラレータの面積および電力を小さくするために、システム100は、入力テンソルおよび出力テンソルを複数のより小さなピースに分割するためにテンソルタイリングを利用することができる。例えば、システム100は、マッピング制約に基づいて大きな入力テンソルをより小さなピースに分割(または小さく)することができる。マッピング制約は、電力、面積、レイテンシ、および/またはスループットなどの目標に結合されてよい。グローバルチューナ202は、候補アーキテクチャのための計算タイルのセットの構成およびサイズを決定するためにこれらの目標を使用することができる。グローバルチューナ202は、入力テンソルの異なるピースのための計算を計算タイルのセットにおける所与のタイルにマップすることができる。
【0044】
マックスマッパ入力/出力データ幅およびマックスレデューサ入力/アウトデータ幅は、候補アーキテクチャのデータスループットに直接影響する制約である。チューナ変数および制約210は、ターゲットアプリケーションのための所与のニューラルネットワークを動作させるためにカスタマイズされたハードウェアMLアクセラレータを生成するための候補アーキテクチャを探査することに関するその他のアイテムを含むことができる。幾つかの実装において、タイルサイズが小さいほど、より長いデータ伝送時間が要求され、したがって、全体的なチップ性能もここで作用し始めることができる。全てのこれらの異なるチューナ変数および制約210は、性能、電力、および面積への暗示と共に、異なるハードウェア設計を生じることができる。したがって、グローバルチューナ202は、これらの変数/制約から設計空間を形成し、ハードウェアおよびニューラルアーキテクチャをカスタマイズするための最適なパラメータを選択することによって性能、電力、および面積間のバランスをストライクする。
【0045】
グローバルチューナ202は、少なくとも各々の個々のMLコストモデル214によって実行されるオペレーションに基づいて候補アーキテクチャをダイナミックにチューンすることができる。幾つかの実装において、グローバルチューナ202は、i)ランダムサーチチューナ、ii)シミュレートされたアニーリングチューナ、またはiii)プログレッシブチューナのうちの少なくとも1つによって実行されるオペレーションに基づいて候補アーキテクチャをダイナミックにチューンする。ランダムサーチチューナ、シミュレートされたアニーリングチューナ、およびプログレッシブチューナの各々は、上記で説明されたチューナ116に対応する。ブロックパーティションモデルのために、グローバルチューナ202は、シミュレートされたアニーリングチューナに関連した特定のチューニング軌道を実装する。ランダムチューナ、シミュレートされたアニーリングチューナ、およびプログレッシブチューナの各々は、ソフトウェア、ハードウェア、または両方において実装されてよい。これらのチューナの各々に関連した機能は、グローバルチューナ202において実装されるチューナ116に統合されてよい。
【0046】
グローバルチューナ202は、候補アーキテクチャのベースラインプロセッサ構成など、トライアル構成を取得するためにサーチ空間をランダムにサンプリングするためにランダムサーチチューナを使用する。トライアル構成/アーキテクチャにおいて目標アプリケーションを動作させるコストは、MLコストモデル214の性能およびパワーコストモデルをクエリすることによって取得される。
【0047】
シミュレートされたアニーリングは、グローバルチューナ202においてチューナとして実装されることができ、所与の機能のグローバル最適条件を近似するための確率的技術である。各々のステップにおいて、このチューナは、現在のハードウェア設計ポイントdの近隣ハードウェア設計ポイントd‘を考慮し、現在の設計ポイントを設計ポイントd’に向かって移動させるかまたは設計ポイントdと共にとどまるかどうかを確率的に決定する。温度変数は、アクセプタンス確立を制御するために生成される。シミュレートされたアニーリングチューナは、その確率結果が標的アプリケーションのための最適な設計ポイントへの到着を示すまで、これらのステップを反復するように構成されている。例えば、しきい値スコアを超過する確率スコアは、特定の設計ポイントが制約の所与のセットに対して標的アプリケーションのために最適に実行することを示すことができる。
【0048】
隣接ハードウェア設計ポイントは、ランダムに生成されてよい。幾つかの実装において、隣接ハードウェア設計ポイントは、現在のハードウェア設計ポイントと類似または極めて類似のハードウェアパラメータ選択(例えば、アンローリング、タイリング、マッピング、またはスケジューリング)を有する。パラメータ選択の類似性は、2つの設計ポイントの間のハードウェアパラメータ選択におけるオーバーラップの量(またはパーセンテージ)によって特徴づけられてよい。幾つかのその他の実装において、隣接ハードウェア設計ポイントは、現在のハードウェア設計ポイントと同じハードウェアパラメータ選択のうちの1つまたは複数を有することができる。
【0049】
グローバルチューナ202は、NASの設計空間など、例示的な設計空間のプログレッシブサーチ方法を実装するためにプログレッシブチューナを使用する。このプログレッシブサーチ方法は、候補アーキテクチャをチューニングするための設計空間探査時間を減じるために使用することができる。幾つかの実装において、グローバルチューナ202は、集積回路の機械学習ブロックへの固定されたデータレート入力などの所定のスループット要求を満たす(または超過する)ためにMLハードウェアを設計およびチューニングする際のステップとして設計空間を探査するためにプログレッシブサーチ方法を実行する。プログレッシブサーチ方法は、少なくともi)全てのニューラルネットワーク層のための最小設計としてのベースライン設計を初期化するステップ、およびii)データレート要求よりも低いデータスループットを有するボトルネック層を識別するためにコストモデル214をクエリするステップを含むことができる。コストモデル214がボトルネックを識別しないまたは示さないおよび/またはグローバルチューナ202が、ニューラルネットワークの層がボトルネックとして動作しないことを決定する場合、サーチ方法の実行は終了する。
【0050】
プログレッシブサーチ方法は、iii)全体的モデル性能において最も低いコストを有しながら、スループット要求を満たす(または超過する)ことによってボトルネックを最小限にする設計構成を決定するためにボトルネックに関してサーチ空間を徹底的に探査するステップ、およびiv)新たなベースライン設計としてステップiii)として決定される設計構成を使用し、次いで、再びステップii)へ進むステップをさらに含んでよい。幾つかの実装において、ベースライン設計は、所与のニューラルネットワークの全ての層を動作させるための最小限のハードウェア(およびニューラル)アーキテクチャ/設計パラメータを含むベースラインプロセッサ構成である。サーチ空間を徹底的に探査することは、多層ニューラルネットワークを実装するために各々の設計構成を使用し、各々の設計構成のそれぞれのデータスループットを評価し、かつ異なる設計構成の各々のためのそれぞれのコスト値を計算することによって、異なる設計構成を反復して探査することを含む。
【0051】
図2の例において、入力目標102は、ユーザ定義される、システム定義される、または両方であることができる。例えば、入力目標102は、ユーザ構成ファイルとしてまたはシステム生成された入力ファイルとして受信されることができる。構成または入力ファイルは、例えば、PPA制約のセットから引き出される様々なアプリケーションレベル目標102を規定することができる。例えば、入力ファイルは、プロセッサ利用、電力消費、データスループット、ハードウェアブロックサイズ、および/またはレイテンシなどのアプリケーションレベル目標のセットを含むことができる。入力ファイルは、各々のアプリケーションレベル目標のためのそれぞれのハードウェアアクセラレータ性能しきい値も含む。
【0052】
幾つかの実装において、入力ファイルは、標的アプリケーションが複数のベクトルオペレーションを要求することを示す目標102を含む。この指示に基づいて、制御論理は、ベクトルパラメータ(vector_ctrl)として設定される設計空間104のハードウェア変数110をトリガすることができる。設計空間104は、例えば、タイトに結合されたVPUを形成する複数のベクトル処理レーンを含むアーキテクチャに、候補アーキテクチャの選択を制約するために、vector_ctrlパラメータを使用することができる。
【0053】
図2の実例において、コストモデル214の幾つか(または全て)は、候補アーキテクチャをチューニングするためのMLベース分析を実行する。入力目標102のセットに従って、グローバルチューナ202は、1つまたは複数の最適化アルゴリズムに基づいて候補アーキテクチャのハードウェアおよびニューラルアーキテクチャをチューンする。例えば、グローバルチューナは、ニューラルネットワークの所定のハードウェアブロックに関して多層ニューラルネットワークの各々の層を実行するために候補アーキテクチャの使用をモデル化するためにコストモデル214を使用する。各々の層を実行するためのアーキテクチャの使用のモデル化に応答して、MLコストモデル214は、アーキテクチャが各々の層のためにどのように実行するかを記述する性能パラメータを生成する。
【0054】
幾つかの実装において、最適化アルゴリズムは、コストモデル相互作用ループ、例えば、最適化ループを実装するために使用される。例えば、オプティマイザまたはグローバルチューナ202(例えば、シミュレートされたアニーリング、プログレッシブ、ランダムなど)は、PEの数、シストリックアレイ次元など、ハードウェアマッピングパラメータのセットを生成することができる。ハードウェアマッピングパラメータは、層依存関係および量子化スキーム(例えば、固定されている)を含むニューラルネットワークグラフと一緒に、コストモデル214へ送信される。コストモデル214は、入力に基づいて、レイテンシ、スループット、および電力などのコストを生成する。コストモデルのコスト出力は、最適化ループにおけるステップとしてオプティマイザへフィードバックされることができる。オプティマイザは、コスト出力を処理し、探査するための次のハードウェアマッピングストラテジを決定することができる。グローバルチューナ202は、集束条件が満たされるまたはサーチ空間が完全に探査されるまで、この最適化ループを反復することができる。
【0055】
幾つかの実装において、グローバルチューナ202の第1のコストモデル214は、候補アーキテクチャのハードウェア属性についての性能推定/パラメータを計算するために使用されるのに対し、第2のコストモデル214は、候補アーキテクチャにおいて実装されるニューラルネットワークについての性能推定/パラメータを計算するために使用される。第1および第2のコストモデル214は、同じであるまたは異なってよい。コストモデル214は、アーキテクチャをチューニングしかつ候補アーキテクチャの性能を最適化するために性能推定を計算するために単一の最適化アルゴリズムを使用することができる。幾つかの他の実装において、コストモデル214は、アーキテクチャ性能の様々な態様を最適化するための性能推定を計算するために異なる最適化アルゴリズムを使用する。
【0056】
グローバルチューナ202は、探査される様々なハードウェアおよびニューラルネットワークアーキテクチャのための異なる設計空間および最適化ストラテジを実装するために、少なくとも設計空間ビルダ204、設計空間エクスプローラ212、およびコストモデル214を使用することができる。例えば、候補アーキテクチャの各々のハードウェアブロック内で、グローバルチューナ202は、特にシストリックアレイ次元の層特定タイリングおよびチューニングなどの1つの層を標的とする異なる実装を探査する。グローバルチューナ202は、並列化を増大するために層変換を探査することができる。例えば、グローバルチューナ202は、1つまたは複数のハードウェアブロックを横断する計算ユニットのスループットおよび/または利用を増大するために、密な/1×1畳み込みをn×n畳み込みに変換することができる。
【0057】
幾つかの実装において、その最適化アルゴリズムに基づいて、コストモデル214は、密な畳み込みが、複数の計算ユニットを含むハードウェアブロックの1つの計算ユニットに割り当てられていることの指示から利用推定を計算する。グローバルチューナ202は、利用推定を、アプリケーション目標102(または制約210)によって指定された利用しきい値と比較することができる。グローバルチューナ202は、計算された利用推定がしきい値よりも低いかどうかを決定する。グローバルチューナ202は、計算された利用推定がしきい値よりも低いことの決定に応答して、所与のハードウェアブロックを横断して計算ユニットの利用を増大するために、密な/1×1畳み込みをn×n畳み込みへ変換することができる。利用推定は、コストモデル214によって生成された性能パラメータ(または推定)である。
【0058】
処理エンジン(例えば、セル、タイル、または処理レーン)の多次元アレイのために、グローバルチューナ202は、所望の性能目標を達成するために必要とされる最適なサイズ/面積および予測される出力密度を決定することができる。グローバルチューナ202は、決定されたサイズに基づいてアレイの各々の次元において処理エンジン(PE)の数を変化させることができる。システム100,200は、ニューラルネットワークの1つの層のための1つまたは複数のディープハードウェアカスタマイゼーションが、ニューラルネットワークの他の層の効率的な動作またはオペレーションを不可能にしないまたは不利な影響を与えないように構成されている。
【0059】
グローバルチューナ202は、候補アーキテクチャのチューニングに応答して出力構成230を生成する。出力構成230は、特定用途向けMLアクセラレータを自動的に生成するために使用される。出力構成230は、MLモデル(またはアルゴリズム)および対応するアーキテクチャ構成を表すことができる。システム200は、例示的なコード生成モジュール240を使用して、出力構成230を表すデータを高レベル合成(HLS)コードに変換する。例えば、コード生成モジュール240は、高レベル合成言語(HLS)を使用してハードウェアアクセラレータのためのMLアルゴリズムのファームウェア実装を生成することができる。
【0060】
概して、グローバルチューナ202は、標的アプリケーションのために完全にカスタマイズされた1つまたは複数の特定用途向けMLアクセラレータを生成するために使用される。例えば、カスタマイゼーションは、1つまたは複数のニューラルネットワーク層のために調整された異種量子化およびマイクロアーキテクチャなどのアイテムを含むことができる。幾つかの実装において、グローバルチューナ202およびシステム200は、少なくとも、マイクロアーキテクチャ、空間マッピング、およびPPA制約(例えば、目標102)のセットのための全体的なアーキテクチャを最適化するための時間的マッピングなど、最適なハードウェアパラメータを識別することによって、カスタマイズされたアーキテクチャを生成するために使用される。
【0061】
ハードウェアフィーチャは、チップ上またはチップ内で分離させられてよい。アーキテクチャの空間マッピングを最適化することは、チップまたは集積プロセッサブロック内で空間的に分離された異なるニューラルネットワークオペレーションを動作させるために使用されるハードウェアブロックを含む。例えば、候補アーキテクチャは、ニューラルネットワークにおいて専用のオペレーションを実行するために専用のハードウェアブロックの特定の配列を使用することによって空間マッピングのために最適化されてよい。このマッピングは、ハードウェアブロックが、特定のアルゴリズムまたは計算パターンのために調整されることを可能にする。
【0062】
他の設計に関して、最適化された空間マッピングを有するアーキテクチャは、性能およびエネルギ効率の改善を提供することができる。改善は、少なくとも、特定のアルゴリズムまたは計算パターンを実行するために調整された専用ハードウェアブロックの配列から実現されてよい。幾つかの実装において、1つまたは複数の専用ハードウェアブロックは、固定次元テンソルを処理し、固定量子化スキームをサポートし、特定のニューラルネットワーク層のために調整されるように構成されている。
【0063】
アーキテクチャの時間マッピング(307)を最適化することは、ニューラルネットワークにおける異なるオペレーションの中で時間共有されるハードウェアブロックを含む。例えば、候補アーキテクチャは、ニューラルネットワークにおいて広範囲の様々な異なるオペレーションを実行するために同じハードウェアブロックを再利用することによって時間マッピングのために最適化されてよい。所与のハードウェアブロックのその使用においてより一般的であるが、このアプローチは、ハードウェアのプログラム可能性を高めることができる。さらに、このアプローチは、ハードウェアにおいて動作させられることができるニューラルネットワークに関して、アプリケーションデベロッパにより柔軟性を与えることができる。幾つかの例において、最適化された時間マッピングは、同じハードウェアブロックにおける異なる層の時間共有および複数の量子化スキームのサポートを提供する。
【0064】
カスタマイゼーションは、標的アプリケーションのためにカスタマイズされていない他の処理装置と比較したときに著しくより少ない電力および面積を消費する特定用途向けMLアクセラレータを生じることができる。
【0065】
図3は、多層ニューラルネットワークをチューニングするための例示的なフレームワーク300を示す。このフレームワークを使用して、システム100は、ニューラルネットワークグラフにおける計算ノードを所与のハードウェアブロックにおけるマイクロアーキテクチャ(または処理エンジン)の異なるフィーチャへ繰り返しマップすることができる。例えば、フレームワーク300は、ニューラルネットワークグラフの様々な計算ノードの間の依存性を決定および構築するためにグローバルチューナ202または最適化およびチューニングモジュール112において実装されてよい。依存性は、例えば、MLコストモデル214が候補アーキテクチャによってニューラルネットワークの各々の層の実行をモデル化するときに決定されてよい。MLコストモデル214は、ニューラルネットワークの各々の層を実行するときに候補アーキテクチャがどのように実行するかの評価を提供する性能パラメータを生成する。
【0066】
図3の例において、ニューラルネットワーク302は、5つの層(L1~L5)を含み、第1の層がL1、第2の層がL2、などである。これらの5つの層は、候補アーキテクチャの異なるハードウェアフィーチャ(例えば、処理エンジン)への初期マッピングを有してよい。例えば、5つの層の各々は、シストリックアレイの異なるセル、異なるシストリックアレイブロック、計算タイルの異なる積和セル(MAC)、または異なる計算タイルへマップされてよい。幾つかの実装において、シストリックアレイの個々のセルおよび計算タイルの個々のMACは、候補アーキテクチャのマイクロアーキテクチャの態様を表す。
【0067】
コストモデル214は、ニューラルネットワーク302を実行する候補アーキテクチャに対して性能推定を計算することができる。性能推定は、所与の層、全体的な処理レイテンシ、およびPE利用を処理するための持続時間を示すパラメータを含む。コストモデル214は、タイミング制約のセットのために最適化されたニューラルアーキテクチャスケジュール304を生成するために持続時間を処理する。性能推定に基づいて、グローバルチューナ202は、層L1+L2+L5を計算するために必要とされる時間が、層L3+L4を計算するために必要とされる時間とほぼ同じであることを決定することができる。
【0068】
この決定に基づいて、グローバルチューナ202は、同じハードウェアフィーチャB1を再利用するために層L1、L2およびL5を再マップすることができるのに対し、層L3およびL4は、同じハードウェアフィーチャB2(306)を再利用するために再マップされることができる。幾つかの例において、B1およびB2は、計算タイルまたはシストリックアレイ、MAC、シストリックアレイセル、またはさらにはVPUのベクトル処理レーンの数値演算ユニット(ALU)などの、それぞれの処理エンジン308、310である。グローバルチューナ202は、処理レイテンシを減じるためにチューニングオペレーションの一部として再マップを実行し、目標102において指定されたレイテンシ要求に従ってニューラルネットワークモデルを実行するための候補アーキテクチャを最適化することができる。
【0069】
所与のニューラルネットワークのために、各々の層は、異なる計算サイクルを要求してよい。例えば、空間的再マッピングの後、幾つかのPEは、計算的不均衡により、他のPEよりも多くのアイドル時間を生じ得る。これは、負荷不均衡と呼ぶことができる。システム100は、少なくとも時間形式において異なる層を横断してPE再利用を許容するチューニングおよび最適化メカニズムを活用することによって負荷不均衡を補償または克服することができる。例えば、チューナ116およびスケジューラ/マッパ118は、負荷不均衡を検出し、各々のPEにおける計算サイクルを均等に平衡させるために候補アーキテクチャの属性を調整することができる。
【0070】
上記のように、ニューラルネットワーク302の5つの層は、各々の層が候補アーキテクチャの異なるハードウェアフィーチャ(例えば、処理エンジン)へマップされる初期マッピングを有してよい。この初期マッピングのための性能推定は、層がマップされてよい各々の処理エンジンにおける全体的な計算能力の低い利用を示す利用パラメータを含むことができる。これらの推定およびパラメータに基づいて、グローバルチューナ202は、例えば、同じ処理エンジンB1を再利用するために層L1、L2およびL5を再マップしかつ同じ処理エンジンB2を再利用するために層L3およびL4を再マップすることによって、処理利用を増大するために再マップを実行してもよい。この再マッピングは、B1およびB2の各々における全体的な利用を増大し、目標102において指定された利用(およびレイテンシ)要求に従ってニューラルネットワークモデルを実行するために候補アーキテクチャを最適化するために実行されてもよい。
【0071】
グローバルチューナ202は、他のオペレーションをあらゆる残りのPE(例えば、B3、B4、B5)へ再割り当てするために候補アーキテクチャをチューンすることができる。幾つかの場合、グローバルチューナ202は、PEの数を減じるために(例えば、5から2へ)候補アーキテクチャのハードウェアレイアウトを増大させるように設計空間エクスプローラ212に関与する。幾つかの他の場合、グローバルチューナ202は、少なくともB1およびB2を横断して並列性の量を増大するようにPEを再構成するために設計空間エクスプローラ212に関与する。グローバルチューナ202は、残りのPE(例えば、B3、B4、B5)が、再マッピングの後により小さなデータセットを処理することを要求されることを決定してよい。この決定に基づいて、グローバルチューナ202は、例えば、より小さなデータセットを処理するためのPEのサイズおよび利用を最適化するためにこれらのPEのマイクロアーキテクチャの計算対メモリ比を調整することができる。
【0072】
フレームワーク300は、入力として、ニューラルネットワークグラフを、アプリケーションレベル目標(例えば、推論時間、スループット、電力等)、および適用可能なハードウェア制約110,210と一緒に取る、例示的なアルゴリズムまたは計算シーケンスに対応することができる。グローバルチューナ202は、フレームワーク300を、様々なアーキテクチャノブにおける層ごとの空間的マッピング探査を実行するための基礎として使用することができる。様々なアーキテクチャノブは、フレームワーク300によってサポートされてよく、このようなアーキテクチャノブは、i)シストリックアレイまたは完全にアンロールされた設計などの設計スタイル、ii)多数のマッパ(例えば、シストリックアレイクラスタ)、iii)クラスタごとの多数のシストリックアレイ、iv)入力および出力タイリング、およびv)密な層のためのハードウェア次元変換、を含むことができる。
【0073】
所与の制約210のための最適化を達成するための各々の再マップまたはチューニングは、別の制約に関する候補アーキテクチャへの対応する調整をトリガしてよい。例えば、所与のタイミングまたはレイテンシ制約のために最適化するためにB1およびB2に関する再マップは、PEのためのスループット要求の増大を必要としてよい。したがって、様々なアーキテクチャノブはしばしば、新たな(またはその他の既存の)要求にリファインされる必要がある。幾つかの実装において、システム100は、これらの制約の各々のための候補アーキテクチャを最適化するために少なくともレイテンシ、タイミング、および利用の間の相互作用を平衡させるために候補アーキテクチャのそのチューニングを通じて反復する。幾つかのその他の実装において、システム100は、複数の制約、変数、および目標の間の相互作用を平衡させる。
【0074】
アーキテクチャノブの各々は、エンドツーエンドアプリケーション性能に対してプラスまたはマイナスの影響を有することができる。さらに、アーキテクチャノブの各々は、別の層のマッピングにおいてアーキテクチャノブの効果に影響することもできる。したがって、少なくともその制御論理の機械学習態様およびアーキテクチャ-アウェアコストモデル114に基づいて、システム100は、これらのプラスまたはマイナスの影響を正確に予測するために評価の下で候補アーキテクチャの全体論的視野を提供するように構成されている。
【0075】
候補アーキテクチャは、複数の処理エンジンを含むことができ、1つまたは複数の層は、所定のマージングルール(例えば、conv2d+BN+活性化マージング;conv2d+マックスプーリングマージング)に基づいて別の処理エンジンへマップされることができる。マージングルールは、例えば、ネットワークグラフモジュール108において命令またはコード化されたルールとして、予め規定されることができる。幾つかの実装において、次の層の計算が、前の層の計算(例えば、conv2d(+BN)+活性化)に従って実行することができるならば、2つ以上のグラフノード(または層)がマージされる。例として、バッチ正規化(BN)層のための計算は、2D畳み込み層のための計算でマージされてよい。また、後続の層への入力として提供される各々の層出力のために、後続層のための入力および計算の量がしきい値サイズでありかつ特定の空間的および時間的ローカル性を有する場合、この後続層は、層出力を生成した前の層でマージされることができる。この例は、プーリング層(例えば、conv2d+プーリング)への入力として提供される2D畳み込み層の層出力に対応してよい。
【0076】
幾つかの実装において、候補アーキテクチャをチューンするために、グローバルチューナ202は、対応するPEへのそれぞれの層の初期マッピングを実行し、初期マッピングのための性能推定を生成する。初期マッピングのための性能推定に基づいて、グローバルチューナ202は、初期マッピングをチューンするために層の異なる組合せをPEに繰り返しマップすることができる。グローバルチューナ202は、各々の反復のための性能推定を生成し、そのために性能推定が目標102のPPA制約のセットと一致するマッピングを識別する。
【0077】
候補アーキテクチャをチューニングするとき、グローバルチューナ202は、異なるマッピングを通じて反復しかつ各々のマッピングのための性能パラメータを計算するために1つまたは複数のコストモデル214を使用する。性能パラメータから、システム100は、PPA制約210の所与のセットのために最適に実行する計算のマッピングを識別する。幾つかの実装において、システム100は、処理レーン内で動作するノードのシーケンスを指定する時間的マッピングによりVPUにおけるベクトル処理レーンのサブセットへ異なるベクトルオペレーションのための計算ノードを繰り返しマップすることができる。
【0078】
幾つかの実装において、フレームワーク300は、(1)各々のトライアルのためのサイクル正確シミュレーションが時間を消費し、しばしば評価するための数百万から数十億の一意の設計ポイントが存在すること、(2)ニューラルネットワークの計算が計算インテンシブでありかつ入れ子のループで表されることができるので、分析モデルを高い忠実性で構築することができることにより、各々のトライアル(ハードウェア/ニューラル構成)のコストを予測するためにアーキテクチャ-アウェア分析コストモデル114を使用する。最適化およびチューニングモジュール112は、探索空間をサンプルし、各々の設計ポイントのコストのためのコストモデル114をクエリし、設計空間104を検索するために特定の探査軌道をたどる。各々の設計ポイントのコストおよび設計空間104の探査軌道は、少なくとも、各々の設計ポイントの処理コストを最小限にするためにアーキテクチャをチューニングすることによって、候補アーキテクチャを最適化するように実装される。幾つかの場合、探査軌道は、チューナ116によって採用される異なるチューナアルゴリズムのために異なる。
【0079】
図4は、多層ニューラルネットワークのグラフ実行スケジュールに関する例示的なプロセス400の流れ図である。上記で説明されているように、グローバルチューナ202は、特定用途向けMLアクセラレータを自動的に生成するために使用される出力構成230を生成する。システム200は、例示的なコード生成モジュール240を使用して、出力構成230を表すデータをHLSコードに変換する。
【0080】
ニューラルネットワークグラフ402は、カスタマイズされた特定用途向けMLアクセラレータのためであり、ニューラルネットワーク層のセットのための例示的な割り当てまたはマッピングを示す。
図4の例において、第1のニューラルネットワーク層L1は、特定のハードウェア構成404aおよびソフトウェア構成404bに基づいて所与のPEにマップされてよいのに対し、第2の異なるニューラルネットワーク層L2は、特定のハードウェア構成406aおよびソフトウェア構成406bに基づいて所与のPEにマップされてよい。幾つかの実装において、L1およびL2は、同じPEまたは異なるPEにマップされてよい。
【0081】
図5は、特定用途向け機械学習アクセラレータを生成およびグローバルにチューニングするための例示的なプロセス500を示す流れ図である。プロセス500は、上に説明されたシステム100を使用して実装または実行することができる。プロセス500の説明は、システム100の上述のコンピューティングリソースを参照してよい。プロセス500のステップまたはアクションは、本文献に記載された装置およびリソースの1つまたは複数のプロセッサによって実行可能な、プログラムされたファームウェアまたはソフトウェア命令によって有効化されてよい。
【0082】
ここでプロセス500を参照すると、システム100は、アーキテクチャを選択する(502)。例えば、システム100のコントローラは、ベースラインプロセッサ構成を表す候補アーキテクチャを選択することができる。候補アーキテクチャは、ハードウェアアーキテクチャと、ニューラルネットワークグラフに対応するニューラルアーキテクチャとを含むことができる。幾つかの実装において、アーキテクチャは、アーキテクチャリポジトリ104のハードウェアレイアウトおよびネットワークグラフモジュール108のニューラルアーキテクチャに対して設計空間ビルダ204および設計空間エクスプローラ212によって実行される検索オペレーションに基づいて識別および選択される。
【0083】
システム200は、1つまたは複数のチューナ変数またはPPA制約210に基づいてNASおよびハードウェアアーキテクチャ検索技術を実装することができる。PPA制約は、ハードウェアアクセラレータの性能要求を規定するユーザ特定された目標102であることができる。例えば、要求は、プロセッサ利用、電力消費、処理レイテンシ、およびデータスループットのためのしきい値であることができる。幾つかの実装において、アーキテクチャを選択することは、性能目標を指定する入力基準を取得し、専用プロセッサを実装するための複数の候補アーキテクチャを識別することを含む。例えば、設計空間ビルダ204およびエクスプローラ212を含む、設計空間104を管理するための制御論理は、入力基準に基づいて複数の候補アーキテクチャの中から候補アーキテクチャを選択することができる。
【0084】
システム100は、アーキテクチャについての性能データを生成する(504)。例えば、MLコストモデル214は、少なくとも、アーキテクチャが、複数のニューラルネットワーク層を含む第1のニューラルネットワークの計算をどのように実行するかをモデル化することによって、候補アーキテクチャについての性能データを生成する。幾つかの実装において、ニューラルネットワークは、50層深さである畳み込みニューラルネットワークである、多層ResNet-50などの、公知のニューラルネットワークである。
【0085】
システム100は、性能データに基づいてアーキテクチャをダイナミックにチューンする(506)。例えば、性能データに基づいて、最適化およびチューニングモジュール112は、1つまたは複数の性能目標を満たすために候補アーキテクチャをダイナミックにチューンする。より具体的には、最適化およびチューニングモジュール112は、ニューラルネットワークの各々の層の候補アーキテクチャの実行をモデル化するために、アーキテクチャ-アウェアコストモデル114と相互作用する。例えば、MLコストモデル214は、ニューラルネットワークの各々の層を実行するときに候補アーキテクチャがどのように実行するかの評価を提供する性能パラメータを生成する。
【0086】
システム100は、性能パラメータに基づいて第1のニューラルネットワークのアーキテクチャの実装を評価、チューン、および最適化するためにチューニングループ122を使用する。幾つかの実装において、システム100は、標的ハードウェアプラットフォームにおける効率的なニューラルネットワーク実行のためのシステムごとの最適化されたパーオプマッピング(per-op mapping)を発見するためにグローバルチューニングを使用する(例えば、グローバルチューナ202を介して)。幾つかの他の実装において、システム100は、複数の層を横断する処理エンジン(PE)再利用など、許容されるときにはいつでも最適化されたグラフ実行スケジュールを発見するためにグローバルチューニングを使用する。これは、
図3を参照して上記に説明されている。
【0087】
例えば、グローバルチューナ202は、標的アプリケーションのための選択されたニューラルアーキテクチャを最適化するために、計算タイルまたはMACの同じサブセットに2つ以上の層(例えば、L1、L2、L5)を再マッピングすることによって候補アーキテクチャをチューンするように構成されている。アーキテクチャは、訓練/推論装置または画像分類作業負荷などの例示的なアプリケーションのために最適化されてよい。システム100の制御論理は、クロックされた信号のタイミングを使用して、適切な時間に、命令および制御信号を最適化およびチューニングモジュール112およびアーキテクチャ-アウェアコストモデル114の各々に送信し、再マップを達成するために使用される性能データを生成することができる。最適化およびチューニングモジュール112は、ML作業負荷を加速させる集積回路のハードウェアレイアウトを生成するために特定用途向けチューニングおよび最適化を実行するように構成されている。最適化およびチューニングモジュール112(およびコストモデル114)は、グローバルチューナ202の幾つか(または全ての)機能を組み込むことができ、これにより、グローバルチューナ202によって実行されるオペレーションの記述は、最適化およびチューニングモジュール112のオペレーションに変換される。
【0088】
システム100は、アーキテクチャをダイナミックにチューンすることに応答してMLアクセラレータの構成を生成する(508)。幾つかの実装において、ステップ506のチューニングおよび最適化は、層ごとにカスタマイズされるハードウェアアーキテクチャを有する専用集積回路を生成することを許容する出力構成230において具体化される。カスタマイゼーションのこの態様は、ハードウェアMLアクセラレータ回路が、単一の包括的なハードウェアブロックに基づく従来のアプローチに対して、エネルギ効率の数桁の改善を達成することを可能にすることができる。
【0089】
例えば、候補アーキテクチャの最適化およびチューニングの後、システム100は、様々なアーキテクチャフィーチャおよびスケジューリング/マッピングストラテジを含む互換性のあるハードウェア構成230を生成し、これにより、システム100は、特定用途向けMLアクセラレータを生成するために少なくともコード生成モジュール240によって使用されることができる。システム200は、コード生成モジュール240を使用して、構成230を表すデータを高レベル合成(HLS)コードに変換する。コード生成モジュール240は、高レベル合成言語(HLS)を使用してハードウェアアクセラレータのためのMLアルゴリズムのファームウェア実装を生じることができる。システム100は、次いで、ファームウェア実装およびHLSオペレーションに基づいて特定用途向けハードウェアMLアクセラレータを生成することができる(510)。
【0090】
図6は、例示的な特定用途向けハードウェアMLアクセラレータ600のブロック図である。ハードウェアアクセラレータ600は、少なくともシステム100および200の例示的なオペレーションを含む、本文献に開示された技術を使用して生成される。コード発生器240を使用して、システム100は、各々がニューラルネットワークの特定の層を動作するようにカスタマイズされてよいハードウェア回路のそれぞれの部分を指定する特定用途向けMLアクセラレータ600のためのハードウェアレイアウトを生成するように構成されている。
【0091】
ハードウェアアクセラレータ600は、ストリーミングおよびパイプライン式に1つまたは複数の層(例えば、それらが共通の特性を共有するならば)を実行するために別々のハードウェアブロック603a、603b、603c、603d、603e、603fを使用することができる。各々のハードウェアブロック603は、例えば、ハードウェアアクセラレータ600を横断して低電力および高利用を可能にするために特にこれらの層に調整される(例えば、量子化、層特定タイリング、シストリックアレイ次元など)。幾つかの実装において、各々のハードウェアブロック103は、ニューラルネットワークの特定の層との関連付けまたはマッピングを有し、ニューラルネットワークの層(例えば、上述したL1、L2、L3、L4またはL5)とのハードウェアブロック103の関連付けは、部分的に、ニューラルネットワークのその層に関連したフィーチャおよび最適化労力に基づく。
【0092】
データフロー指示601a、601b、601c、601d、601e、601fは、ハードウェアブロック603の間のニューラルネットワークの通信データの例示的なシーケンスを提供する。幾つかの実装において、これらのデータフロー指示601a、601b、601c、601d、601e、601fは、例えば、グローバルチューナ202の最適化およびチューニングオペレーションに基づいて予め構成された通信シーケンスである。通信されるニューラルネットワークデータは、特定のハードウェアブロック603における計算ユニットの出力、ニューラルネットワーク入力/活性化、パラメータ重みデータ、およびその他のニューラルネットワークパラメータ関連データなど、計算結果データを含むことができる。
【0093】
各々のハードウェアブロック603は、標的アプリケーションのためにカスタマイズされたマイクロアーキテクチャを含むことができる。グローバルチューナ202は、システムレベルにおけるアーキテクチャの設計を平衡させるために、そのグローバルチューニングオペレーションにおいて異なるハードウェアブロックを横断して通信を最適化するように構成されている。このような最適化は、データ伝送におけるレートマッチングのためのインターフェースタイリング、計算におけるレートマッチングのための計算ブロックの数(例えば、入力チャネルブロッキング)、バッファサイジングなどを含む。例えば、ハードウェアブロック603aは、ダイ間入力ブロック606a、609b、ダイ間出力ブロック611a、611b、およびホストインターフェースユニット613を含むことができるのに対し、ハードウェアブロック603bは、ダイ間入力ブロック621a、621b、ダイ間出力ブロック623a、623b、およびホストインターフェースユニット614を含む。
【0094】
アクセラレータ600のカスタマイズされた構成は、ハードウェアブロック603aにマップされているニューラルネットワークの第1の層と、ハードウェアブロック603dにマップされているニューラルネットワークの最後の層とを含むことができる。グローバルチューナ202は、効率的なニューラルネットワーク実行のためのパーオプ空間マッピングと、PPA制約210のサイズ/面積制約との間の相互作用を平衡させるために、例えば、ハードウェアブロック603a、603dの間のフィードバック層を組み込むようにこのアーキテクチャを構成することができる。例えば、ハードウェアアクセラレータ600は、依然として特定用途向け要求に基づいてスループット/レイテンシをマッチさせることができつつ、ニューラルネットワーク計算を効率的に実行するために最も少ない量のハードウェアを使用するように構成されている。
【0095】
図7は、入力テンソル704、重みテンソル706のバリエーション、および出力テンソル708を含むテンソルまたは多次元マトリックス700の例を示す。テンソル700は、アクセラレータ600などのMLハードウェアアクセラレータを使用して処理または生成される例示的な機械学習データ構造である。例えば、システム100は、少なくともテンソル704および706を処理するための候補アーキテクチャをチューンおよび最適化し、これらのテンソルに関連したデータを受信および処理するニューラルネットワークを実装するように構成されたカスタマイズされたハードウェアMLアクセラレータ600を自動的に生成するために使用されることができる。
【0096】
テンソル700の各々は、ニューラルネットワークの所与の層において実行される計算のためのデータ値に対応する要素を含む。計算は、別のニューラルネットワーク層への入力として提供されることができる活性化/出力値などの出力を生成するために1つまたは複数のクロックサイクルにおいてパラメータ/重みテンソル706との入力/活性化テンソル704の乗算を含むことができる。
図7の例において、出力のセットにおける各々の出力は、出力テンソル708のそれぞれの要素に対応することができる。幾つかの例において、入力テンソル704は活性化テンソルである。対応する重みテンソル706と活性化テンソル704を乗じることは、部分和を生じるためにテンソル704の要素からの活性化をテンソル706の要素からの重みと乗じることを含む。
【0097】
幾つかの実装において、MLアクセラレータ600のハードウェアブロック603は、幾つかの多次元テンソルの同じ(または異なる)次元に沿って複数の別々の要素を含むことができるベクトルにおいて動作するそれぞれのプロセッサコアである。複数の要素の各々は、テンソルの次元性に応じてX、Y座標(2D)を使用してまたはX、Y、Z座標(3D)を使用して表すことができる。MLアクセラレータ600のハードウェアレイアウトは、PPA制約の所与のセットに従って複数の部分和を計算するように最適化されることができる。部分和は、バッチ入力に、対応する重み値を乗じることから生じる積に対応する。
【0098】
入力重み乗算は、入力テンソル704の行またはスライスなど、入力ボリュームの別々の入力を乗じた各々の重み要素の積和として書かれてよい。この行またはスライスは、入力テンソル704の第1の次元710または入力テンソル704の第2の異なる次元715など、所与の次元を表すことができる。次元は、ハードウェアブロック603を横断して様々なベクトル処理ユニットにマップされてよく、これにより、MLアクセラレータ600は、負荷不均衡を除外しかつ入力目標102の所与のセットに従って、各々のハードウェアブロック603におけるしきい値処理利用を達成する形式でその計算を定期的に実行する。
【0099】
幾つかの実装において、計算の例示的なセットは、畳み込みニューラルネットワーク層のための出力を計算するために使用することができる。CNN層のための計算は、3D入力テンソル704と少なくとも1つの3Dフィルタ(重みテンソル706)との間の2D空間的畳み込みを実行することを含むことができる。例えば、3D入力テンソル704上で1つの3Dフィルタ706を畳み込みすることは、2D空間的平面720または725を生成することができる。計算は、入力ボリュームの特定の次元のためのドット積の和を計算することを含むことができる。例えば、空間的平面720は、次元710に沿って入力から計算された積の和のための出力値を含むことができるのに対し、空間的平面725は、次元715に沿って入力から計算された積の和のための出力値を含むことができる。空間的平面720および725の各々において出力値のための積の和を生成するための計算は、本文献に記載された技術を使用して生成およびチューンされるハードウェアブロック603を使用して実行されることができる。
【0100】
本明細書に記載された主題の実施形態および機能的オペレーションは、デジタル電子回路、有形的に具体化されたコンピュータソフトウェアまたはファームウェア、本明細書に開示された構造およびそれらの構造的均等物を含むコンピュータハードウェア、またはそれらのうちの1つまたは複数の組合せにおいて実装されることができる。本明細書に記載された主題の実施形態は、1つまたは複数のコンピュータプログラム、即ちデータ処理装置による実行のためにまたはデータ処理装置の作動を制御するために有形の非一時的プログラムキャリアにおいてエンコードされたコンピュータプログラム命令の1つまたは複数のモジュールとして実装されることができる。
【0101】
代替的にまたは追加的に、プログラム命令は、人工的に生成された伝播される信号、例えば、データ処理装置による実行のために適切な受信機装置への伝送のための情報をエンコードするために生成される、機械生成された電気的、光学的または電磁気的信号においてエンコードされることができる。コンピュータ記憶媒体は、機械可読記憶装置、機械可読記憶基板、ランダムまたはシリアルアクセスメモリ装置、またはそれらのうちの1つまたは複数の組合せであることができる。
【0102】
「コンピューティングシステム」という用語は、例えば、プログラマブルプロセッサ、コンピュータ、または複数のプロセッサまたはコンピュータを含む、データを処理するための全ての種類の装置(apparatus)、装置(device)および機械を包含する。装置は、専用論理回路、例えば、FPGA(フィールドプログラマブルゲートアレイ)またはASIC(特定用途向け集積回路)を含むことができる。装置は、ハードウェアに加えて、問題となっているコンピュータプログラムのための実行環境を生成するコード、例えば、プロセッサファームウェア、プロトコルスタック、データベース管理システム、オペレーティングシステム、またはそれらのうちの1つまたは複数の組合せを構成するコードも含むことができる。
【0103】
コンピュータプログラム(プログラム、ソフトウェア、ソフトウェアアプリケーション、モジュール、ソフトウェアモジュール、スクリプト、またはコードとして呼ばれるかまたは記載されてもよい)は、コンパイルされたまたは解釈された言語、または宣言型言語または手続き型言語を含むあらゆる形式のプログラミング言語において書かれることができ、それは、独立型プログラムとしてまたはモジュール、コンポーネント、サブルーチン、またはコンピューティング環境における使用に適したその他のユニットを含むあらゆる形態において展開されることができる。
【0104】
コンピュータプログラムは、そうである必要はないが、ファイルシステムにおけるファイルに対応していてよい。プログラムは、他のプログラムまたはデータを保持するファイルの一部、例えば、マークアップ言語ドキュメントに記憶された1つまたは複数のスクリプト、問題となっているプログラムに専用の単一ファイル、または複数の調和したファイル、例えば、1つまたは複数のモジュール、サブプログラム、またはコードの部分を記憶するファイルに、記憶されることができる。コンピュータプログラムは、1つのコンピュータにおいてまたは1つのサイトに配置されたまたは複数のサイトを横断して分散させられかつ通信ネットワークによって相互接続された複数のコンピュータにおいて実行されるように展開されることができる。
【0105】
本明細書に記載されたプロセスおよびロジックフローは、入力データにおいて作動しかつ出力を生成することによって機能を実行するために1つまたは複数のコンピュータプログラムを実行する1つまたは複数のプログラマブルコンピュータによって実行されることができる。プロセスおよびロジックフローは、専用論理回路、例えば、FPGA(フィールドプログラマブルゲートアレイ)、ASIC(特定用途向け集積回路)、またはGPGPU(汎用グラフィックス処理ユニット)によって実行されることもでき、装置は、これらとして実装されることもできる。
【0106】
コンピュータプログラムの実行に適したコンピュータは、例えば、汎用または専用マイクルプロセッサまたは両方、またはあらゆるその他の種類の中央処理ユニットに基づくことができる。概して、中央処理ユニットは、読み出し専用メモリまたはランダムアクセスメモリまたは両方から命令およびデータを受信する。コンピュータの幾つかの要素は、命令を行うまたは実行するための中央処理ユニットならびに命令およびデータを記憶するための1つまたは複数のメモリ装置である。概して、コンピュータは、データを記憶するための1つまたは複数の大容量記憶装置、例えば、磁気、光磁気ディスク、または光ディスクも含む、またはこれらからデータを受信するまたはこれらへデータを送信するために動作可能に結合される、またはその両方である。ただし、コンピュータは、そのような装置を有する必要はない。さらに、コンピュータは、別の装置、例えば、幾つか例を挙げれば、携帯電話、パーソナルデジタルアシスタント(PDA)、モバイルオーディオまたはビデオプレーヤ、ゲームコンソール、全地球測位システム(GPS)受信機、またはポータブル記憶装置、例えば、ユニバーサルシリアルバス(USB)フラッシュドライブに埋め込まれることができる。
【0107】
コンピュータプログラム命令およびデータを記憶するのに適したコンピュータ可読媒体は、全ての形式の不揮発性メモリ、媒体およびメモリ装置、例えば、半導体メモリ装置、例えば、EPROM、EEPROM、およびフラッシュメモリ装置、磁気ディスク、例えば、内部ハードディスクまたはリムーバブルディスク、光磁気ディスク、CD-ROMおよびDVD-ROMディスクを含む。プロセッサおよびメモリは、専用論理回路によって補足されることができるまたは専用論理回路に組み込まれることができる。
【0108】
ユーザとの相互作用を提供するために、本明細書に記載された主題の実施形態は、情報をユーザに表示するためのディスプレイ装置、例えば、LCD(液晶ディスプレイ)モニタ、ならびにそれによってユーザがコンピュータへ入力を提供することができるキーボードおよびポインティング装置、例えば、マウスまたはトラックボール、を有するコンピュータにおいて実装されることができる。ユーザとの相互作用を提供するために、その他の種類の装置も使用することができる。例えば、ユーザに提供されるフィードバックは、あらゆる形式の感覚フィードバック、例えば、視覚的フィードバック、聴覚的フィードバック、または触覚フィードバックであることができる。ユーザからの入力は、音響、発話、または触覚入力を含むあらゆる形式において受信されることができる。加えて、コンピュータは、ユーザによって使用される装置へドキュメントを送信しかつユーザによって使用される装置からドキュメントを受信することによって、例えば、ウェブブラウザから受信されたリクエストに応答してユーザのクライアント装置におけるウェブブラウザへウェブページを送信することによって、ユーザと相互作用することができる。
【0109】
本明細書に記載された主題の実施形態は、例えば、データサーバとしての、バックエンドコンポーネントを含む、またはミドルウェアコンポーネント、例えば、アプリケーションサーバを含む、またはフロントエンドコンポーネント、例えば、それを通じてユーザが本明細書に記載された主題の実装と相互作用することができるグラフィカルユーザインターフェースまたはウェブブラウザを有するクライアントコンピュータ、または1つまたは複数のこのようなバックエンド、ミドルウェア、またはフロントエンドコンポーネントの任意の組合せを含む、コンピューティングシステムにおいて実装されることができる。システムのコンポーネントは、デジタルデータ通信のあらゆる形式または媒体、例えば、通信ネットワークによって相互接続されることができる。通信ネットワークの例は、ローカルエリアネットワーク(「LAN」)およびワイドエリアネットワーク(「WAN」)、例えば、インターネットを含む。
【0110】
コンピューティングシステムは、クライアントおよびサーバを含むことができる。クライアントおよびサーバは、概して、互いに離れており、典型的には、通信ネットワークを通じて相互作用する。クライアントとサーバとの関係は、それぞれのコンピュータにおいて動作しかつ互いにクライアント-サーバ関係を有するコンピュータプログラムによって生じる。
【0111】
本明細書は、多くの特定の実装詳細を含むが、これらは、あらゆる発明または請求され得るものの範囲の限定としてではなく、むしろ、特定の発明の特定の実施形態に特定であってよい特徴の説明として解釈されるべきである。別々の実施形態の文脈において本明細書に記載されたある特徴は、1つの実施形態において組み合わされて実装されることもできる。逆に、1つの実施形態の文脈において記載された様々な特徴は、複数の実施形態において別々にまたはあらゆる適切なサブコンビネーションで実装されることもできる。さらに、特徴は、ある組合せにおいて作用するように上記に記載されかつさらに最初にそのように請求されてよいが、請求された組合せからの1つまたは複数の特徴は、幾つかの場合、組合せから削除されることができ、請求された組合せは、サブコンビネーションまたはサブコンビネーションのバリエーションに向けられてよい。
【0112】
同様に、オペレーションは、特定の順序で図面に示されているが、これは、所望の結果を達成するために、このようなオペレーションが示された特定の順序でまたは順次に実行されること、または全ての例示されたオペレーションが実行されることを要求するものとして理解されるべきではない。ある状況では、マルチタスクおよび並列処理が有利であり得る。さらに、上記に記載の実施形態における様々なシステムモジュールおよびコンポーネントの分離は、全ての実施形態におけるこのような分離を要求するものと理解されるべきではなく、記載されたプログラムコンポーネントおよびシステムは、概して、1つのソフトウェア製品において一緒に統合されるまたは複数のソフトウェア製品にパッケージされることができることが理解されるべきである。
【0113】
主題の特定の実施形態が説明されている。その他の実施形態は、以下の請求項の範囲内にある。例えば、請求項に列挙された行為は、異なる順序で実行されることができ、依然として所望の結果を達成することができる。一例として、添付の図面に示されたプロセスは、所望の結果を達成するために、示された特定の順序または順番を必ずしも要求しない。ある実装において、マルチタスクおよび並列処理が有利であり得る。
【手続補正書】
【提出日】2024-04-09
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
特定用途向け機械学習(ML)アクセラレータを生成するためのコンピュータが実行する方法であって、
ベースラインプロセッサ構成を表すアーキテクチャを選択するステップと、
MLコストモデルによって、少なくとも、前記アーキテクチャが、複数の層を含む第1のニューラルネットワークの計算をどのように実行するかをモデリングすることによって、前記アーキテクチャについての性能データを生成するステップと、
前記性能データに基づいて、前記アーキテクチャが前記第1のニューラルネットワークを実装しかつ標的アプリケーションのための機械学習計算を実行するときに性能目標を満たすために前記アーキテクチャをダイナミックにチューニングするステップと、
前記アーキテクチャをダイナミックにチューニングすることに応答して、前記第1のニューラルネットワークの前記複数の層の各々を実装するためのカスタマイズされたハードウェア構成を指定するMLアクセラレータの構成を生成するステップと、を含む、特定用途向け機械学習(ML)アクセラレータを生成するためのコンピュータが実行する方法。
【請求項2】
前記カスタマイズされたハードウェア構成に基づいて特定用途向けハードウェアMLアクセラレータを生成するステップをさらに含み、
前記特定用途向けハードウェアMLアクセラレータは、前記ニューラルネットワークが、前記標的アプリケーションのための計算を実行するために使用されるときに、前記ニューラルネットワークの異なる層の各々を実装するように最適化されている、請求項1に記載の方法。
【請求項3】
前記性能目標は、複数の別々の目標を含み、前記特定用途向けMLアクセラレータを生成するステップは、
前記特定用途向けハードウェアMLアクセラレータが前記標的アプリケーションのための計算を実行するときに、前記複数の別々の目標の各々の別々の目標を満たすように構成されている特定用途向けハードウェアMLアクセラレータを生成するステップを含む、請求項2に記載の方法。
【請求項4】
前記性能データを生成するステップは、
前記MLコストモデルによって、前記第1のニューラルネットワークの前記複数の層の各々の層を実行するために前記アーキテクチャの使用をモデリングするステップと、
各々の層を実行するために前記アーキテクチャの使用をモデリングすることに応答して、前記MLコストモデルによって、前記複数の層の各々のための前記アーキテクチャの性能パラメータを生成するステップと、を含む、請求項3に記載の方法。
【請求項5】
前記性能パラメータは、前記複数の別々の目標の各々の別々の目標に対応し、
前記複数の別々の目標は、しきい値処理レイテンシ、しきい値電力消費、しきい値データスループット、およびしきい値プロセッサ利用のうちの少なくとも1つを含む、請求項4に記載の方法。
【請求項6】
前記アーキテクチャをダイナミックにチューニングするステップは、
前記特定用途向けハードウェアMLアクセラレータに前記ハードウェアMLアクセラレータのハードウェア計算ユニットのしきい値パーセンテージを利用させる入力テンソルのための計算のマッピングを決定するステップと、
決定された前記マッピングに基づいて前記アーキテクチャをダイナミックにチューニングするステップと、を含む、請求項2
~5のいずれか1項に記載の方法。
【請求項7】
前記アーキテクチャをダイナミックにチューニングするステップは、
グローバルチューナの複数のMLコストモデルの各々によって実行されるオペレーションに基づいて前記アーキテクチャをダイナミックにチューニングするステップと、
前記グローバルチューナのランダムチューナまたはシミュレートされたアニーリングチューナのうちの少なくとも1つによって実行されるオペレーションに基づいて前記アーキテクチャをダイナミックにチューニングするステップと、を含む、請求項6に記載の方法。
【請求項8】
前記アーキテクチャは、集積回路の1つまたは複数のハードウェアブロックを表し、前記アーキテクチャをダイナミックにチューニングするステップは、
前記アーキテクチャが、前記標的アプリケーションのための計算を実行するために前記第1のニューラルネットワークを実装するときに、前記1つまたは複数のハードウェアブロックの各々のためのそれぞれの性能目標を満たすように前記アーキテクチャをダイナミックにチューニングするステップを含む、請求項6に記載の方法。
【請求項9】
前記ハードウェアMLアクセラレータの構成は、前記第1のニューラルネットワークのためのカスタマイズされたソフトウェア構成を指定し、
前記特定用途向けハードウェアMLアクセラレータを生成するステップは、前記カスタマイズされたハードウェア構成および前記カスタマイズされたソフトウェア構成に基づいて前記特定用途向けハードウェアMLアクセラレータを生成するステップを含む、請求項6に記載の方法。
【請求項10】
前記MLコストモデルは、1つまたは複数の個々の分析モデルを含むアーキテクチャ-アウェアコストモデルであり、
前記アーキテクチャ-アウェアコストモデルは、前記アーキテクチャを使用して処理されるデータの決定性データフローに基づいて前記アーキテクチャの性能を推定するように構成されている、請求項6に記載の方法。
【請求項11】
処理装置、および特定用途向け機械学習(ML)アクセラレータを生成するための命令を記憶する非一時的機械可読記憶装置を含むシステムであって、前記命令は、オペレーションの実行を生じるために前記処理装置によって実行可能であり、前記オペレーションは、
ベースラインプロセッサ構成を表すアーキテクチャを選択するステップと、
MLコストモデルによって、少なくとも、前記アーキテクチャが、複数の層を含む第1のニューラルネットワークの計算をどのように実行するかをモデリングすることによって、前記アーキテクチャについての性能データを生成するステップと、
前記性能データに基づいて、前記アーキテクチャが前記第1のニューラルネットワークを実装しかつ標的アプリケーションのための機械学習計算を実行するときに性能目標を満たすために前記アーキテクチャをダイナミックにチューニングするステップと、
前記アーキテクチャをダイナミックにチューニングすることに応答して、前記第1のニューラルネットワークの前記複数の層の各々を実装するためのカスタマイズされたハードウェア構成を指定するMLアクセラレータの構成を生成するステップと、を含む、システム。
【請求項12】
前記カスタマイズされたハードウェア構成に基づいて特定用途向けハードウェアMLアクセラレータを生成するステップをさらに含み、
前記特定用途向けハードウェアMLアクセラレータは、前記ニューラルネットワークが、前記標的アプリケーションのための計算を実行するために使用されるときに、前記ニューラルネットワークの異なる層の各々を実装するように最適化されている、請求項11に記載のシステム。
【請求項13】
前記性能目標は、複数の別々の目標を含み、前記特定用途向けMLアクセラレータを生成するステップは、
前記特定用途向けハードウェアMLアクセラレータが前記標的アプリケーションのための計算を実行するときに、前記複数の別々の目標の各々の別々の目標を満たすように構成されている特定用途向けハードウェアMLアクセラレータを生成するステップを含む、請求項12に記載のシステム。
【請求項14】
前記性能データを生成するステップは、
前記MLコストモデルによって、前記第1のニューラルネットワークの前記複数の層の各々の層を実行するために前記アーキテクチャの使用をモデリングするステップと、
各々の層を実行するために前記アーキテクチャの使用をモデリングすることに応答して、前記MLコストモデルによって、前記複数の層の各々のための前記アーキテクチャの性能パラメータを生成するステップと、を含む、請求項13に記載のシステム。
【請求項15】
前記性能パラメータは、前記複数の別々の目標の各々の別々の目標に対応し、
前記複数の別々の目標は、しきい値処理レイテンシ、しきい値電力消費、しきい値データスループット、およびしきい値プロセッサ利用のうちの少なくとも1つを含む、請求項14に記載のシステム。
【請求項16】
前記アーキテクチャをダイナミックにチューニングするステップは、
前記特定用途向けハードウェアMLアクセラレータに前記ハードウェアMLアクセラレータのハードウェア計算ユニットのしきい値パーセンテージを利用させる入力テンソルのための計算のマッピングを決定するステップと、
決定された前記マッピングに基づいて前記アーキテクチャをダイナミックにチューニングするステップと、を含む、請求項12
~15のいずれか1項に記載のシステム。
【請求項17】
前記アーキテクチャをダイナミックにチューニングするステップは、
グローバルチューナの複数のMLコストモデルの各々によって実行されるオペレーションに基づいて前記アーキテクチャをダイナミックにチューニングするステップと、
前記グローバルチューナのランダムチューナまたはシミュレートされたアニーリングチューナのうちの少なくとも1つによって実行されるオペレーションに基づいて前記アーキテクチャをダイナミックにチューニングするステップと、を含む、請求項16に記載のシステム。
【請求項18】
前記アーキテクチャは、集積回路の1つまたは複数のハードウェアブロックを表し、前記アーキテクチャをダイナミックにチューニングするステップは、
前記アーキテクチャが、前記標的アプリケーションのための計算を実行するために前記第1のニューラルネットワークを実装するときに、前記1つまたは複数のハードウェアブロックの各々のためのそれぞれの性能目標を満たすように前記アーキテクチャをダイナミックにチューニングするステップを含む、請求項16に記載のシステム。
【請求項19】
前記MLコストモデルは、1つまたは複数の個々の分析モデルを含むアーキテクチャ-アウェアコストモデルであり、
前記アーキテクチャ-アウェアコストモデルは、前記アーキテクチャを使用して処理されるデータの決定性データフローに基づいて前記アーキテクチャの性能を推定するように構成されている、請求項16に記載のシステム。
【請求項20】
処理装置に請求項1~10のいずれか1項に記載の方法を実行させる、プログラム。
【国際調査報告】