(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-04-04
(54)【発明の名称】ニューラル・ネットワークのパフォーマンス・ホット・スポットの特定
(51)【国際特許分類】
G06F 11/34 20060101AFI20240328BHJP
G06N 3/02 20060101ALI20240328BHJP
G06F 8/41 20180101ALI20240328BHJP
【FI】
G06F11/34 171
G06F11/34 109
G06F11/34 176
G06N3/02
G06F8/41 100
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2023558441
(86)(22)【出願日】2022-03-08
(85)【翻訳文提出日】2023-09-22
(86)【国際出願番号】 CN2022079778
(87)【国際公開番号】W WO2022227869
(87)【国際公開日】2022-11-03
(32)【優先日】2021-04-30
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】390009531
【氏名又は名称】インターナショナル・ビジネス・マシーンズ・コーポレーション
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MACHINES CORPORATION
【住所又は居所原語表記】New Orchard Road, Armonk, New York 10504, United States of America
(74)【復代理人】
【識別番号】110000420
【氏名又は名称】弁理士法人MIP
(74)【代理人】
【識別番号】100112690
【氏名又は名称】太佐 種一
(74)【代理人】
【識別番号】100120710
【氏名又は名称】片岡 忠彦
(72)【発明者】
【氏名】チェン、チンユエ
(72)【発明者】
【氏名】ツァオ、リ
(72)【発明者】
【氏名】リ、フェイフェイ
(72)【発明者】
【氏名】スー、ハン
【テーマコード(参考)】
5B042
5B081
【Fターム(参考)】
5B042MA08
5B042MC03
5B081AA10
5B081CC16
(57)【要約】
パフォーマンス・ホット・スポットを特定するための実装は、命令アドレスを有するサンプル・データを収集することであって、サンプル・データがニューラル・ネットワーク・モデルに関するものである、収集することと、パフォーマンス・ホット・スポットである命令アドレス内の命令を決定することとを含む。リスト・ファイルが、パフォーマンス・ホット・スポットであるサンプル・データの命令を、より低いレベルの中間表現内の位置にマッピングするために使用される。マッピング・ファイルが、パフォーマンス・ホット・スポットであるより低いレベルの中間表現の位置を、1つまたは複数のより高いレベルの表現内の動作にマッピングするために使用され、動作のうちの1つまたは複数が、パフォーマンス・ホット・スポットに対応し、マッピング・ファイルが、ニューラル・ネットワーク・モデルをコンパイルすることから生成される。
【特許請求の範囲】
【請求項1】
命令アドレスを有するサンプル・データを収集することであって、前記サンプル・データがニューラル・ネットワーク・モデルに関するものである、前記収集することと、
パフォーマンス・ホット・スポットである前記命令アドレス内の命令を決定することと、
リスト・ファイルを使用して、パフォーマンス・ホット・スポットである前記サンプル・データの前記命令を、より低いレベルの中間表現内の位置にマッピングすることと、
マッピング・ファイルを使用して、パフォーマンス・ホット・スポットである前記より低いレベルの中間表現の前記位置を、1つまたは複数のより高いレベルの表現内の動作にマッピングすることであって、前記動作のうちの1つまたは複数が、前記パフォーマンス・ホット・スポットに対応し、前記マッピング・ファイルが、前記ニューラル・ネットワーク・モデルをコンパイルすることから生成される、前記マッピングすることと
を含む、コンピュータ実装方法。
【請求項2】
前記マッピング・ファイルを使用して、前記1つまたは複数のより高いレベルの表現内の前記動作を前記ニューラル・ネットワーク・モデル内のノードにマッピングすることをさらに含む、請求項1に記載のコンピュータ実装方法。
【請求項3】
前記サンプル・データからマッピングされた前記より低いレベルの中間表現からマッピングされた前記1つまたは複数のより高いレベルの表現からマッピングすることに基づいて、前記ニューラル・ネットワーク・モデル内のどのノードが前記パフォーマンス・ホット・スポットを表すかを決定することをさらに含む、請求項1に記載のコンピュータ実装方法。
【請求項4】
前記マッピング・ファイルを使用して、前記ニューラル・ネットワーク・モデルのコンパイルの異なるレベルで前記パフォーマンス・ホット・スポットを分類することをさらに含み、前記異なるレベルは、前記より低いレベルの中間表現から前記1つまたは複数のより高いレベルの表現までを含む、請求項1に記載のコンピュータ実装方法。
【請求項5】
前記サンプル・データは、1つまたは複数のカウンタからの情報をさらに含む、請求項1に記載のコンピュータ実装方法。
【請求項6】
前記パフォーマンス・ホット・スポットは、1つまたは複数のしきい値を満たすかまたは超える、1つまたは複数のメトリックを含む、請求項1に記載のコンピュータ実装方法。
【請求項7】
前記パフォーマンス・ホット・スポットを最適化しそれによって前記パフォーマンス・ホット・スポットに対処する、前記1つまたは複数のより高いレベルの表現内の前記動作のうちの1つまたは複数を決定することをさらに含む、請求項1に記載のコンピュータ実装方法。
【請求項8】
コンピュータ可読命令を有するメモリと、
前記コンピュータ可読命令を実行するための1つまたは複数のプロセッサと
を備えているシステムであって、前記コンピュータ可読命令が、前記1つまたは複数のプロセッサを制御して、
命令アドレスを有するサンプル・データを収集することであって、前記サンプル・データがニューラル・ネットワーク・モデルに関するものである、前記収集することと、
パフォーマンス・ホット・スポットである前記命令アドレス内の命令を決定することと、
リスト・ファイルを使用して、パフォーマンス・ホット・スポットである前記サンプル・データの前記命令を、より低いレベルの中間表現内の位置にマッピングすることと、
マッピング・ファイルを使用して、前記より低いレベルの中間表現の前記位置を、1つまたは複数のより高いレベルの表現内の動作にマッピングすることであって、前記マッピング・ファイルが、前記ニューラル・ネットワーク・モデルをコンパイルすることから生成される、前記マッピングすることと
を含むプロセスを実行する、システム。
【請求項9】
前記マッピング・ファイルを使用して、前記1つまたは複数のより高いレベルの表現内の前記動作を前記ニューラル・ネットワーク・モデル内のノードにマッピングすることをさらに含む、請求項8に記載のシステム。
【請求項10】
前記サンプル・データからマッピングされた前記より低いレベルの中間表現からマッピングされた前記1つまたは複数のより高いレベルの表現からマッピングすることに基づいて、前記ニューラル・ネットワーク・モデル内のどのノードが前記パフォーマンス・ホット・スポットを表すかを決定することをさらに含む、請求項8に記載のシステム。
【請求項11】
前記マッピング・ファイルを使用して、前記ニューラル・ネットワーク・モデルのコンパイルの異なるレベルで前記パフォーマンス・ホット・スポットを分類することをさらに含み、前記異なるレベルが、前記より低いレベルの中間表現から前記1つまたは複数のより高いレベルの表現までを含む、請求項8に記載のシステム。
【請求項12】
前記サンプル・データは、1つまたは複数のカウンタからの情報をさらに含む、請求項8に記載のシステム。
【請求項13】
前記パフォーマンス・ホット・スポットは、1つまたは複数のしきい値を満たすかまたは超える、1つまたは複数のメトリックを含む、請求項8に記載のシステム。
【請求項14】
前記パフォーマンス・ホット・スポットを最適化しそれによって前記パフォーマンス・ホット・スポットに対処する、前記1つまたは複数のより高いレベルの表現内の前記動作のうちの1つまたは複数を決定することをさらに含む、請求項8に記載のシステム。
【請求項15】
プログラム命令が具現化されているコンピュータ可読ストレージ媒体を備えているコンピュータ・プログラム製品であって、前記プログラム命令は、1つまたは複数のプロセッサに、
命令アドレスを有するサンプル・データを収集することであって、前記サンプル・データがニューラル・ネットワーク・モデルに関するものである、前記収集することと、
パフォーマンス・ホット・スポットである前記命令アドレス内の命令を決定することと、
リスト・ファイルを使用して、パフォーマンス・ホット・スポットである前記サンプル・データの前記命令を、より低いレベルの中間表現内の位置にマッピングすることと、
マッピング・ファイルを使用して、前記より低いレベルの中間表現の前記位置を、1つまたは複数のより高いレベルの表現内の動作にマッピングすることであって、前記マッピング・ファイルが、前記ニューラル・ネットワーク・モデルをコンパイルすることから生成される、前記マッピングすることと
を含むプロセスを実行させるように、前記1つまたは複数のプロセッサによって実行可能である、コンピュータ・プログラム製品。
【請求項16】
前記マッピング・ファイルを使用して、前記1つまたは複数のより高いレベルの表現内の前記動作を前記ニューラル・ネットワーク・モデル内のノードにマッピングすることをさらに含む、請求項15に記載のコンピュータ・プログラム製品。
【請求項17】
前記サンプル・データからマッピングされた前記より低いレベルの中間表現からマッピングされた前記1つまたは複数のより高いレベルの表現からマッピングすることに基づいて、前記ニューラル・ネットワーク・モデル内のどのノードが前記パフォーマンス・ホット・スポットを表すかを決定することをさらに含む、請求項15に記載のコンピュータ・プログラム製品。
【請求項18】
前記マッピング・ファイルを使用して、前記ニューラル・ネットワーク・モデルのコンパイルの異なるレベルで前記パフォーマンス・ホット・スポットを分類することをさらに含み、前記異なるレベルが、前記より低いレベルの中間表現から前記1つまたは複数のより高いレベルの表現までを含む、請求項15に記載のコンピュータ・プログラム製品。
【請求項19】
前記サンプル・データが1つまたは複数のカウンタからの情報をさらに含む、請求項15に記載のコンピュータ・プログラム製品。
【請求項20】
前記パフォーマンス・ホット・スポットが、1つまたは複数のしきい値を満たすかまたは超える、1つまたは複数のメトリックを含む、請求項15に記載のコンピュータ・プログラム製品。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、一般に、コンピュータ・システムに関し、より詳細には、ニューラル・ネットワークのパフォーマンス・ホット・スポットを特定するために構成されて配置されたコンピュータ実装方法、コンピュータ・システム、およびコンピュータ・プログラム製品に関する。
【背景技術】
【0002】
通常はニューラル・ネットワークと呼ばれる人工ニューラル・ネットワークは、動物の脳を構成する生物学的ニューラル・ネットワークから着想を得たコンピューティング・システムである。人工ニューラル・ネットワークは、生物学的脳内のニューロンを大まかにモデル化する、人工ニューロンと呼ばれる接続されたユニットまたはノードの集合に基づく。生物学的脳内のシナプスのような各接続は、信号を他のニューロンに送信することができる。信号を受信する人工ニューロンは、次に、信号を処理し、その人工ニューロンに接続されたニューロンに信号を送ることができる。接続での「信号」は実数であり、各ニューロンの出力は、入力の合計の何らかの非線形関数によって計算される。接続は、エッジと呼ばれる。ニューロンおよびエッジは、通常、学習が進むにつれて適応する重みを有する。重みは、接続での信号の強度を増やすか、または減らす。ニューロンは、しきい値を有することがあり、集まった信号がそのしきい値を超える場合にのみ、信号が送信されるようにする。通常、ニューロンは層に集約される。異なる層は、それらの層の入力に対して異なる変換を実行してよい。信号は、最初の層(入力層)から、1つまたは複数の隠れ層を通り、場合によっては層を複数回横断した後に、最後の層(出力層)に移動する。
【0003】
ニューラル・ネットワークは、コンパイルされた多数の命令で構成されて、非常に複雑なものとすることができる。ある時には、1つまたは複数の命令に関するパフォーマンス・ホット・スポットが存在することがある。コンピュータ科学におけるパフォーマンス・ホット・スポットは、最も一般的には、実行される命令の高い比率が発生するか、もしくはプログラムの実行中に最も多くの時間が費やされるか、またはその両方である、コンピュータ・プログラムの領域として定義される。プログラムがランダムに中断される場合、プログラム・カウンタ(実行される次の命令へのポインタ)が、特定の範囲内の命令のアドレスを含むということがしばしば判明し、このことは、最適化を必要とするコードを示す可能性がある。しかし、ニューラル・ネットワーク・モデル内、特に、最新のコンパイラを使用してコンパイルされたニューラル・ネットワーク・モデル内の、最適化を必要としているパフォーマンス・ホット・スポットを決定するか、もしくは特定するか、またはその両方を行うことは、困難であることがあり、したがって改善が必要とされる。
【発明の概要】
【0004】
本発明の実施形態は、最適化のためにニューラル・ネットワークのパフォーマンス・ホット・スポットを特定するためのコンピュータ実装方法を対象にする。非限定的な例示的コンピュータ実装方法は、命令アドレスを有するサンプル・データを収集することを含み、メモリ・サンプル・データは、ニューラル・ネットワーク・モデルに関するものである。この方法は、パフォーマンス・ホット・スポットである命令アドレス内の命令を決定することと、リスト・ファイルを使用して、パフォーマンス・ホット・スポットであるサンプル・データの命令を、より低いレベルの中間表現内の位置にマッピングすることとを含む。また、この方法は、マッピング・ファイルを使用して、パフォーマンス・ホット・スポットであるより低いレベルの中間表現の位置を、1つまたは複数のより高いレベルの表現内の動作にマッピングすることを含み、これらの動作のうちの1つまたは複数は、パフォーマンス・ホット・スポットに対応し、マッピング・ファイルは、ニューラル・ネットワーク・モデルをコンパイルすることから生成される。
【0005】
これによって、ニューラル・ネットワーク・モデルに関連するより高いレベルの中間表現でパフォーマンス・ホット・スポットを効率的に決定して特定することにより、パフォーマンス・ホット・スポットのための既知の方法を上回る改善をもたらすことができる。より高いレベルの表現は、人間のユーザが読み、理解し、変更することがより容易であり、それゆえに、ニューラル・ネットワーク・モデルに影響を与えるパフォーマンス・ホット・スポットに対して最適化が行われ得るものとなり、それによって、ニューラル・ネットワーク・モデルの実行が改善される。さらに、1つまたは複数の実施形態では、任意の適切なレベルでパフォーマンス・ホット・スポットを特定するための改善が利用され得る。1つまたは複数の実施形態は、ホット・スポットのパフォーマンスを最適化するために最小限の労力が利用され得るように、最大のホット・スポットを見つけることができる。
【0006】
上記または下記で説明される特徴のうちの1つまたは複数に加えて、または代替として、本発明のさらなる実施形態では、この方法は、マッピング・ファイルを使用して、1つまたは複数のより高いレベルの表現内の動作をニューラル・ネットワーク・モデル内のノードにマッピングすることを含んでよい。したがって、改善は、ニューラル・ネットワーク・モデル内のどのノードがパフォーマンス・ホット・スポットであるかを有利に識別する。
【0007】
上記または下記で説明される特徴のうちの1つまたは複数に加えて、または代替として、本発明のさらなる実施形態では、この方法は、サンプル・データからマッピングされたより低いレベルの中間表現からマッピングされた1つまたは複数のより高いレベルの表現からマッピングすることに基づいて、ニューラル・ネットワーク・モデル内のどのノードがパフォーマンス・ホット・スポットを表すかを決定することを含んでよい。したがって、改善は、バイナリ・コードなどのより難しい機械可読コードから、人間のユーザによって読むこと、理解すること、および変更することがより容易であるレベルでの動作まで、パフォーマンス・ホット・スポットを有利に追跡する。コンパイルはトップダウンのプロセスであるが、1つまたは複数の実施形態は、マッピング・ファイルを使用して、より低いレベルから上に関係をマッピングする、ボトムアップのマッピング・プロセスを提供する。
【0008】
上記または下記で説明される特徴のうちの1つまたは複数に加えて、または代替として、本発明のさらなる実施形態では、この方法は、マッピング・ファイルを使用して、ニューラル・ネットワーク・モデルのコンパイルの異なるレベルでパフォーマンス・ホット・スポットを分類することを含んでよく、異なるレベルは、より低いレベルの中間表現から1つまたは複数のより高いレベルの表現までを含む。したがって、改善は、ニューラル・ネットワーク・モデル内のパフォーマンス・ホット・スポットを最適化するための、異なるレベルでの選択肢を有利に提供する。
【0009】
上記または下記で説明される特徴のうちの1つまたは複数に加えて、または代替として、本発明のさらなる実施形態では、サンプル・データは、1つまたは複数のカウンタからの情報をさらに含む。
【0010】
上記または下記で説明される特徴のうちの1つまたは複数に加えて、または代替として、本発明のさらなる実施形態では、パフォーマンス・ホット・スポットは、1つまたは複数のしきい値を満たすか、または超える1つまたは複数のメトリックを含む。
【0011】
上記または下記で説明される特徴のうちの1つまたは複数に加えて、または代替として、本発明のさらなる実施形態では、この方法は、パフォーマンス・ホット・スポットを最適化しそれによってパフォーマンス・ホット・スポットに対処する、1つまたは複数のより高いレベルの表現内の動作のうちの1つまたは複数を決定することを含む。
【0012】
本発明の他の実施形態は、コンピュータ・システムおよびコンピュータ・プログラム製品において、前述の方法の特徴を実装する。
【0013】
その他の技術的特徴および利点が、本発明の技術によって実現される。本発明の実施形態および態様は、本明細書において詳細に説明され、請求される主題の一部と見なされる。さらに良く理解するために、詳細な説明および図面を参照されたい。
【0014】
本明細書に記載された専有権の詳細は、本明細書の最後にある特許請求の範囲において具体的に指摘され、明確に請求される。本発明の各実施形態の前述および他の特徴と長所は、添付の図面と併せて行われる以下の詳細な説明から明らかになる。
【図面の簡単な説明】
【0015】
【
図1】本発明の1つまたは複数の実施形態と共に使用するための例示的なコンピュータ・システムのブロック図を示す図である。
【
図2】本発明の1つまたは複数の実施形態に従って、例示的なニューラル・ネットワーク・モデル/アーキテクチャのブロック図を示す図である。
【
図3】本発明の1つまたは複数の実施形態に従って、ニューラル・ネットワーク・モデル内のパフォーマンス・ホット・スポットを特定して最適化するためのシステムのブロック図を示す図である。
【
図4】本発明の1つまたは複数の実施形態に従って、ニューラル・ネットワーク・モデルをコンパイルしているときのコンパイラの例示的なアーキテクチャのブロック図を示す図である。
【
図5】本発明の1つまたは複数の実施形態に従う、ニューラル・ネットワーク・モデル内のパフォーマンス・ホット・スポットを特定するためのコンピュータ実装プロセスのフローチャートである。
【
図6】本発明の1つまたは複数の実施形態に従って、コンパイルの異なるレベルで相互関係があるパフォーマンス・ホット・スポットを表示する例示的なパフォーマンス・マトリックスのブロック図を示す図である。
【
図7】本発明の1つまたは複数の実施形態に従って、最適化のためにニューラル・ネットワーク・モデル内のパフォーマンス・ホット・スポットを特定するためのコンピュータ実装制御フローのブロック図を示す図である。
【
図8】本発明の1つまたは複数の実施形態に従う、ニューラル・ネットワーク・モデル内のパフォーマンス・ホット・スポットを特定し、1つまたは複数のパフォーマンス・ホット・スポットを最適化するためのコンピュータ実装方法のフローチャートである。
【
図9】本発明の1つまたは複数の実施形態に従って、クラウド・コンピューティング環境を示す図である。
【
図10】本発明の1つまたは複数の実施形態に従って、抽象化モデル・レイヤを示す図である。
【発明を実施するための形態】
【0016】
本発明の1つまたは複数の実施形態は、ニューラル・ネットワークのパフォーマンス・ホット・スポットを特定して最適化するために配置されて構成されたコンピュータ実装方法、コンピュータ・システム、およびコンピュータ・プログラム製品を提供する。1つまたは複数の実施形態は、ニューラル・ネットワークのパフォーマンスを最適化するために、マルチレベル中間表現(MLIR)命令アドレス(IA)マッピング・ファイル(multi-level intermediate representation (MLIR) instruction address (IA) mapping files)をニューラル・ネットワーク・モデルに使用して、異なるコンパイル・レベルでパフォーマンス・ホット・スポットを特定することを含む、ニューラル・ネットワーク・ノードにおけるパフォーマンス・ホット・スポットを特定する問題を解決するように構成される。1つまたは複数の実施形態によれば、MLIR IAマッピング・ファイルは、命令アドレスのサンプルをMLIRコンパイルにおける名前/位置要素にマッピングするために利用され、MLIRコンパイルは、MLIR方言の操作およびMLIRパスに加えて、ニューラル・ネットワーク・ノードを含むことができる。MLIR IAマッピング・ファイルおよびMLIR方言は、パフォーマンス・ホット・インデックス情報(performance hot index information)を使用してデータ・フロー・グラフおよびMLIRの要素に注釈を付けるために利用される。さらに、1つまたは複数の実施形態は、最もホットなニューラル・ネットワーク動作、各コンパイラのレベルでの最もホットな動作に加えて、最もホットなパフォーマンスの命令の範囲を検索して見つける。
【0017】
パフォーマンス分析において、例えば、解決されるべき実際のパフォーマンス問題およびパフォーマンス問題の解決方法を示す、プログラムのどの部分に最も多くの実行時間がかかるかなどの、包括的な実際の質問が存在する。最も多くの実行時間(中央処理装置(CPU)時間とも呼ばれる)がかかるコード領域は、パフォーマンス・ホット・スポットと呼ばれる。パフォーマンス・ホット・スポットは、最も多くのCPU使用量(例えば、コードの他の部分と比較した、特定の期間にわたる命令のCPU割合)を必要とするコードの部分とも呼ばれ得る。パフォーマンス・ホット・スポットをより速くすることにおける少ない労力で、ニューラル・ネットワーク・モデルにおけるパフォーマンスを大きく改善することができるため、パフォーマンス・ホット・スポットは、調整して最適化するのに最も良い場所である。ニューラル・ネットワーク・モデル内のパフォーマンス・ホット・スポットを見つけるのは、困難である可能性がある。機能レベルのシンボルを含まない単一のモジュールが、ニューラル・ネットワーク・モジュール内に存在することがあり、1万個以上の命令に分散されたホットな命令(すなわち、パフォーマンス・ホット・スポットを引き起こす命令)が存在することがある。最もホットな基本的ブロック・パターンを見つけることが可能である場合でも、どの部分を最適化するべきかを知るのは困難である。
【0018】
ニューラル・ネットワーク・モデルのパフォーマンス・ホット・スポットの決定および特定を改善するための技術的解決策および利点として、1つまたは複数の実施形態は、グラフ内のどのニューラル・ネットワーク・ノードがパフォーマンス・ホット・スポットであるか、もしくはMLIRにおけるどの動作がパフォーマンス・ホット・スポットであるか、またはその両方を特定し、それによって、ニューラル・ネットワークのパフォーマンス・ホット・スポットを特定するように構成される。1つまたは複数の実施形態は、MLIRのコンパイル・レベルなどの、ニューラル・ネットワーク・モデルのコンパイルの異なるレベルを含む異なるレベルで、パフォーマンス・ホット・スポットを最適化する(すなわち、改善する)ための機会を提供する。パフォーマンス・ホット・スポット、ホット・スポット、ホット・スポット情報、ホット・インデックス情報、ホットなどは、他の命令/動作もしくは既定のしきい値またはその両方よりも多くの実行時間(すなわち、CPU時間)を利用するか、もしくは多くのCPU使用量/割合を必要とするか、またはその両方である、1つまたは複数の命令もしくは動作またはその両方のことを指すために同義で利用され得るということが、理解されるべきである。ニューラル・ネットワーク・モデルの実行を改善し、それによって、ニューラル・ネットワーク・モデルを実行するコンピュータ・システム(自体)の機能を改善するために、より低いレベルもしくはより高いレベルまたはその両方の中間表現のうちの1つにおいてパフォーマンス・ホット・スポットを決定することによって、任意のレベルで最適化が行われ得る。パフォーマンス・ホット・スポットを決定して、ニューラル・ネットワーク・モデルを最適化することによって、実行時間(execution time)を減らすこと(すなわち、実行時間(runtime)を減らすこと)、CPU使用量を減らすこと、メモリ使用量を減らすこと、帯域幅を減らすことなどが可能になる。
【0019】
ここで
図1を参照すると、本発明の1つまたは複数の実施形態に従って、コンピュータ・システム100が概して示されている。コンピュータ・システム100は、本明細書において説明されているように、さまざまな通信技術を利用する任意の数および組合せのコンピューティング・デバイスおよびネットワークを備えるか、もしくは採用するか、またはその両方である、電子的コンピュータ・フレームワークとすることができる。コンピュータ・システム100は、容易に拡大縮小可能で拡張可能なモジュール式であり、異なるサービスに変化する能力、または他の機能とは無関係に、一部の機能を再構成する能力を有することができる。コンピュータ・システム100は、例えば、サーバ、デスクトップ・コンピュータ、ラップトップ・コンピュータ、タブレット・コンピュータ、またはスマートフォンであることがある。一部の例では、コンピュータ・システム100は、クラウド・コンピューティング・ノードであることがある。コンピュータ・システム100は、コンピュータ・システムによって実行されているプログラム・モジュールなどの、コンピュータ・システムによって実行可能な命令との一般的な関連において説明され得る。通常、プログラム・モジュールは、特定のタスクを実行するか、または特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、コンポーネント、論理、データ構造などを含むことがある。コンピュータ・システム100は、通信ネットワークを介してリンクされたリモート処理デバイスによってタスクが実行される、分散クラウド・コンピューティング環境内で実践され得る。分散クラウド・コンピューティング環境において、プログラム・モジュールは、メモリ・ストレージ・デバイスを含む、ローカルおよびリモートの両方のコンピュータ・システム・ストレージ媒体に配置され得る。
【0020】
図1に示されているように、コンピュータ・システム100は、1つまたは複数の中央処理装置(CPU)101a、101b、101cなど(総称して、または一般的に、プロセッサ101と呼ばれる)を有する。プロセッサ101は、シングルコア・プロセッサ、マルチコア・プロセッサ、コンピューティング・クラスタ、または任意の数の他の構成とすることができる。プロセッサ101は、処理回路とも呼ばれ、システム・バス102を介してシステム・メモリ103およびさまざまな他のコンポーネントに結合される。システム・メモリ103は、リード・オンリ・メモリ(ROM)104およびランダム・アクセス・メモリ(RAM)105を含むことができる。ROM104は、システム・バス102に結合され、コンピュータ・システム100の特定の基本機能を制御する基本入出力システム(BIOS)または統合拡張ファームウェア・インターフェイス(UEFI)のようなその後継を含むことがある。RAMは、プロセッサ101によって使用するためにシステム・バス102に結合されたリード・ライト・メモリである。システム・メモリ103は、動作中の前述の命令の動作のための一時的メモリ空間を提供する。システム・メモリ103は、ランダム・アクセス・メモリ(RAM)、リード・オンリ・メモリ、フラッシュ・メモリ、または任意の他の適切なメモリ・システムを含むことができる。
【0021】
コンピュータ・システム100は、システム・バス102に結合された入出力(I/O)アダプタ106および通信アダプタ107を備えている。I/Oアダプタ106は、ハード・ディスク108もしくは任意の他の類似するコンポーネントまたはその両方と通信する小型コンピュータ・システム・インターフェイス(SCSI)アダプタであることがある。I/Oアダプタ106およびハード・ディスク108は、本明細書では、マス・ストレージ110と総称される。
【0022】
コンピュータ・システム100上で実行するためのソフトウェア111は、マス・ストレージ110に格納され得る。マス・ストレージ110は、プロセッサ101によって読み取り可能な有形のストレージ媒体の例であり、ソフトウェア111は、プロセッサ101による実行のための命令として格納され、コンピュータ・システム100に、さまざまな図に関して本明細書において以下で説明されているように動作させる。本明細書では、コンピュータ・プログラム製品およびそのような命令の実行の例がさらに詳細に説明される。通信アダプタ107は、システム・バス102を、外部のネットワークであることがあるネットワーク112と相互接続し、コンピュータ・システム100が他のそのようなシステムと通信できるようにする。一実施形態では、システム・メモリ103およびマス・ストレージ110の一部は、
図1に示されたさまざまなコンポーネントの機能を調整するために、任意の適切なオペレーティング・システムであることがあるオペレーティング・システムを集合的に格納する。
【0023】
その他の入出力デバイスが、ディスプレイ・アダプタ115およびインターフェイス・アダプタ116を介してシステム・バス102に接続されているものとして示されている。一実施形態では、アダプタ106、107、115、および116は、1つまたは複数のI/Oバスに接続されることがあり、I/Oバスは、中間バス・ブリッジ(図示せず)を介してシステム・バス102に接続される。ディスプレイ119(例えば、画面または表示モニタ)は、ディスプレイ・アダプタ115によってシステム・バス102に接続され、ディスプレイ・アダプタ115は、グラフィックス重視のアプリケーションおよびビデオ・コントローラの性能を改善するために、グラフィック・コントローラを含むことがある。キーボード121、マウス122、スピーカ123などは、インターフェイス・アダプタ116を介してシステム・バス102に相互接続することができ、例えばインターフェイス・アダプタ116は、複数のデバイス・アダプタを単一の集積回路に統合するスーパーI/Oチップを含むことがある。ハード・ディスク・コントローラ、ネットワーク・アダプタ、およびグラフィックス・アダプタなどの周辺機器を接続するのに適したI/Oバスは、通常、ペリフェラル・コンポーネント・インターコネクト(PCI)およびペリフェラル・コンポーネント・インターコネクト・エクスプレス(PCIe)などの一般的なプロトコルを含む。したがって、
図1で構成されているように、コンピュータ・システム100は、プロセッサ101の形態での処理能力と、システム・メモリ103およびマス・ストレージ110を含むストレージ能力と、キーボード121およびマウス122などの入力手段と、スピーカ123およびディスプレイ119を含む出力能力とを含む。
【0024】
一部の実施形態では、通信アダプタ107は、特に、インターネット、小型コンピュータ・システム・インターフェイスなどの任意の適切なインターフェイスまたはプロトコルを使用して、データを送信することができる。ネットワーク112は、特に、セルラー・ネットワーク、無線ネットワーク、広域ネットワーク(WAN)、ローカル・エリア・ネットワーク(LAN)、またはインターネットであることがある。外部コンピューティング・デバイスは、ネットワーク112を介してコンピュータ・システム100に接続することがある。一部の例では、外部コンピューティング・デバイスは、外部Webサーバまたはクラウド・コンピューティング・ノードであることがある。
【0025】
図1のブロック図は、コンピュータ・システム100が
図1に示されたコンポーネントのすべてを含むものとなることを示すよう意図されていないことが、理解されるべきである。むしろ、コンピュータ・システム100は、任意の適切なより少ないコンポーネントまたは
図1に示されていない追加のコンポーネント(例えば、追加のメモリ・コンポーネント、組み込まれたコントローラ、モジュール、追加のネットワーク・インターフェイスなど)を含むことができる。さらに、コンピュータ・システム100に関して本明細書に記載された実施形態は、任意の適切な論理を使用して実装されてよく、論理は、本明細書で参照されるとき、さまざまな実施形態において、任意の適切なハードウェア(例えば、特に、プロセッサ、組み込みコントローラ、または特定用途向け集積回路)、ソフトウェア(例えば、特に、アプリケーション)、ファームウェア、またはハードウェア、ソフトウェア、およびファームウェアの任意の適切な組合せを含むことができる。
【0026】
ここで
図2を参照すると、1つまたは複数の実施形態に従って、例示的なニューラル・ネットワーク・モデル/アーキテクチャ200が示されている。ニューラル・ネットワーク・モデル/アーキテクチャ200は、コンピュータ・システム100上で1つまたは複数のソフトウェア・アプリケーション111を使用して実装され得る。1つまたは複数の実施形態では、コンピュータ・システム100は、ニューラル・ネットワーク・モデル/アーキテクチャと共に使用するための、アクセラレータなどの1つまたは複数の特殊なハードウェアを含んでよい。ここで、例示的なニューラル・ネットワーク・モデル200の動作が説明される。フィードフォワード動作の間に、入力ニューロン202のセットの各々が、対応する入力電圧を重み204の各行に並列に送信する。出力された電流が重み204から各隠れニューロン206に流れて、重み付けされた入力を表すように、重み204の各々は設定可能な抵抗値を有する。特定の重みによって出力される電流は、I=V/rとして決定され、Vは入力ニューロン202からの入力電圧であり、rは重み204の設定された抵抗である。各重みからの電流は、列ごとに加算され、隠れニューロン206に流れる。基準重み207のセットは、固定された抵抗を有し、それらの出力を、隠れニューロン206の各々に供給される基準電流に結合する。コンダクタンス値は正数のみとなり得るため、マトリックス内の正値および負値の両方をエンコードするために、何らかの基準コンダクタンスが必要とされる。重み204によって生成された電流は、継続的に評価され、正であり、したがって、基準電流を供給するために基準重み207が使用され、基準電流を超える電流は正値を持つと見なされ、基準電流を下回る電流は負値を持つと見なされる。一部の実施形態では、重みの各アレイは、静的抵抗を有する1つまたは複数の基準重みを含んでよい。
【0027】
基準重み207を使用することの代替手段として、1つまたは複数の実施形態は、重み204の別のアレイを使用して負値を捕捉してよい。各手法には、利点および欠点がある。一部の実施形態では、基準重み207を使用することは、チップ面積においてより効率的であるが、基準値が互いに厳密に一致する必要がある。1つまたは複数の実施形態では、負値のための別のアレイの使用は、各値に比較のための重みの対があるため、厳密な一致を伴わない。しかし、負の重みのマトリックス手法は、単一の基準重み列と比較して、おおよそ2倍のチップ面積を使用する。加えて、基準重み列は、比較のために各ニューロンにコピーされる必要がある電流を生成し、一方、負のマトリックス・アレイは、ニューロンごとに基準値を直接提供する。負のアレイの実施形態では、正のアレイおよび負のアレイの両方の重み204が更新されるが、これによって、各重み値が2つのコンダクタンス値の差であるため、信号対ノイズ比も増やす。この2つの実施形態は、負値をエンコードすることにおいて同一の機能を提供し、当業者は、目下の応用に適した実施形態を選択することができる。
【0028】
隠れニューロン206は、重み204および基準重み207のアレイからの電流を使用して、何らかの計算を実行する。次に、隠れニューロン206は、それら自身の電圧を、重み207の別のアレイに出力する。このアレイは同じ方法で実行し、重み204の列が、それらの各隠れニューロン206から電圧を受信して、重み付けされた電流出力を生成し、この電流出力が行ごとに加算され、出力ニューロン208に供給される。
【0029】
アレイおよび隠れニューロン206の追加の層を挿入することによって、任意の数のこれらの段階が実装されてよいということが、理解されるべきである。一部のニューロンが、定電圧をアレイに供給する定数ニューロン209であってよいということにも注意するべきである。定数ニューロン209は、入力ニューロン202もしくは隠れニューロン206またはその両方の間に存在することができ、フィードフォワード動作中にのみ使用される。
【0030】
1つまたは複数の実施形態では、逆伝搬中に、出力ニューロン208は、重み204のアレイにわたって電圧を逆向きに供給する。出力層は、生成されたネットワーク応答をトレーニング・データと比較し、誤差を計算する。この誤差は、電圧パルスとしてアレイに適用され、パルスの高さもしくは持続時間またはその両方が、誤差値に比例して調節される。この例では、重み204の行は、各出力ニューロン208から電圧を並列に受信して、その電圧を電流に変換し、この電流が列ごとに加算されて、隠れニューロン206に入力を提供する。隠れニューロン206は、重み付けされたフィードバック信号をフィードフォワード計算の導関数と結合し、誤差値を格納し、その後、フィードバック信号電圧を重み204の各列に出力する。この逆伝搬は、すべての隠れニューロン206および入力ニューロン202が誤差値を格納するまで、ニューラル・ネットワーク・モデル200全体を通って移動する。
【0031】
1つまたは複数の実施形態では、重みの更新中に、ニューラル・ネットワーク・モデル200を通って、入力ニューロン202および隠れニューロン206が、第1の重み更新電圧を前方に加え、出力ニューロン208および隠れニューロン206が、第2の重み更新電圧を後方に加える。これらの電圧の結合は、各重み204内の状態変化を引き起こし、重み204に新しい抵抗値を獲得させる。このようにして、重み204は、処理中にニューラル・ネットワーク・モデル200を誤差に適応させるように、トレーニングされ得る。フィードフォワード、逆伝搬、および重みの更新という3つの動作モードが互いに重複しないということに、注意するべきである。
【0032】
図3は、本発明の1つまたは複数の実施形態に従って、ニューラル・ネットワーク・モデル内のパフォーマンス・ホット・スポットを特定して最適化するためのシステム300のブロック図である。
図3は、本明細書において説明されるように、通信して情報を交換する、コンピュータ・システム320に結合された1つまたは複数のコンピュータ・システム302を示している。コンピュータ・システム320は、有線ネットワークもしくはワイヤレス・ネットワークまたはその両方を経由して、コンピュータ・システム302と通信することができる。コンピュータ・システム100の要素は、コンピュータ(複数)・システム302およびコンピュータ・システム320内で使用されるか、もしくはコンピュータ・システム302およびコンピュータ・システム320に統合されるか、またはその両方であってよい。ソフトウェア・アプリケーション304は、
図1で説明されたように、1つまたは複数のプロセッサ101上で実行されるソフトウェア111として実装されてよい。同様に、コンパイラ322、診断ツール306、およびニューラル・ネットワーク・モデル200は、1つまたは複数のプロセッサ101上で実行されるように構成されたソフトウェア111を使用して実装されてよい。
【0033】
コンパイラ322は、例えば、ニューラル・ネットワーク・モデル200または任意の他のニューラル・ネットワーク・モデルなどの、ニューラル・ネットワーク・モデルをコンパイルするために利用される。コンパイラ322およびニューラル・ネットワーク・モデル200は、コンピュータ・システム320内、もしくはコンピュータ・システム302内、またはその両方で実行されてよい。コンパイラ322は、マルチレベル中間表現(MLIR)コンパイラであるか、もしくはMLIRコンパイラ・フレームワークを使用するか、またはその両方である。MLIRは、再利用可能かつ拡張可能な最新のコンパイラ・インフラストラクチャである。MLIRコンパイラは、方言および最適化パスを定義することができる。方言は、抽象化レベルまたは中間表現として機能し、最適化パスは、抽象化レベルでの最適化または抽象化レベル間の変換を可能にする。MLIRには、例えば、llvm、std、scf、およびaffineといった、すぐに使える方言が存在する。llvm方言は、低レベルの方言である。llvm方言は、LLVM中間表現(IR)タイプおよび命令をMLIRタイプおよび動作にラップする。std方言は、load、store、addi、addf、absf、およびcallなどの標準的動作を含む。scf方言は、forおよびifなどの制御フロー動作を定義する。affine方言は、affineの動作および分析の抽象化を提供する。当業者は、マルチレベル中間コンパイラ(multi-level intermediate compiler)を理解している。
【0034】
さらに、コンパイラ322は、オープン・ニューラル・ネットワーク・エクスチェンジ(ONNX)を、MLIRと組み合わせてコンパイラ322の入力モデル(例えば、ニューラル・ネットワーク・モデル200)を表すための形式として使用して、追加的に実装され得る。ONNXは、当業者によって理解されているように、オープンソースのマシン独立型形式であり、ニューラル・ネットワーク・モデルを交換するために広く使用されている。コンパイラ322は、MLIRを使用して記述され、MLIRは、マルチレベル中間表現のための、LLVMプロジェクトを使用する最新のオープンソースのコンパイラ・インフラストラクチャである。LLVMプロジェクトは、モジュール式の再利用可能なコンパイラおよびツール・チェーン技術の集合である、コンパイラ・インフラストラクチャである。コンパイラ322は、ONNX-MLIRコンパイラ、MLIRコンパイラ、もしくは単にコンパイラ、またはその組合せと、同義で呼ばれ得る。
【0035】
ニューラル・ネットワーク・モデル200は、ONNXまたはONNX形式で記述されるか、もしくは生成されるか、またはその両方とすることができる。ニューラル・ネットワーク・モデル200は、ONNXモデルと呼ばれることがある、ONNXニューラル・ネットワーク・モデル200とすることができる。ニューラル・ネットワーク・モデルは、人工知能(AI)モデルと呼ばれることもある。実行時間の間にコンピュータ・システム302もしくはコンピュータ・システム320またはその両方によって実行するために、コンパイラ322を使用して、ニューラル・ネットワーク・モデル200の命令を実行形式(例えば、実行ファイル334など)に(最初に)コンパイルすることを含む、ニューラル・ネットワーク・モデル200が実行され得る。1つまたは複数の実施形態では、ソフトウェア・アプリケーション304は、ニューラル・ネットワーク・モデル200のコンパイルおよび実行可能な/コンパイルされたニューラル・ネットワーク・モデル200の(その後の)実行を引き起こすため、もしくは開始するため、またはその両方のために利用され得る。
【0036】
図4は、本発明の1つまたは複数の実施形態に従って、ONNXモデル(例えば、ニューラル・ネットワーク・モデル200)をコンパイルしているときのONNX-MLIRコンパイラの例示的なアーキテクチャのブロック図である。
図4では、先頭に「--」が付いている名前は、パスとして指定される。
図4では、入力はONNXモデル(例えば、ニューラル・ネットワーク・モデル200)であり、出力は、コンパイルされたコード(例えば、実行ファイル334)を含んでいるライブラリである。出力ライブラリは、「_dyn_entry_point_main_graph」と呼ばれるエントリ関数を含むことができ、この関数の入力および出力は、ONNXモデルの入力および出力とそれぞれ同様である。出力ライブラリを使用して推論を実行するために、ユーザは、入力を関数に渡すことによってエントリ関数を呼び出して結果を取得するように、自分のプログラムを記述する。より少ないか、またはより多い方言が存在することができるが、onnx-mlirには5つの主要な方言があり、それらの方言は、4つの抽象化レベルに編成されるonnx、krnl、affine、std、およびllvmである。第1の抽象化レベルは、ONNX動作の高レベルの表現である。第1の抽象化レベルは、onnx方言およびstd方言での動作で構成され、onnx方言は、例えばPython(登録商標)スクリプトまたは別のスクリプトであるインポータを介して、自動的に生成される。第2の抽象化レベルは、krnl方言、affine方言、およびstd方言を含む。krnl方言は、タイル、スキュー、および並べ替えなどのアフィン変換を簡単に実行することができる、ループ最適化に適した表現を提供する。krnl方言は、onnx方言を低レベルの方言(例えば、affine、std、およびllvm)に効率的に下げるための中間方言として機能する。第3の抽象化レベルは、affine方言およびstd方言を含み、MLIRにおける既存の最適化パスが自由に適用され得る。第4の抽象化レベルは、ビットコード(すなわち、バイナリ・コード)(すなわち、実行ファイル334)を生成する準備ができた、llvm方言のみを含む。
【0037】
1つの方言を別の方言に変換するため、および特定の方言で最適化を実行するための、MLIRパスが存在する。マルチパス・コンパイラは、プログラムのソース・コードまたは抽象構文木を複数回処理するコンパイラの一種である。マルチパス・コンパイラは、プログラムを1回だけ横断するワンパス・コンパイラとは対照的である。各パスは、前のパスの結果を入力として受け取り、中間出力を作成する。このようにして、最後のパスが最終的なコードを生成するまで、パスごとに(中間)コードが改善される。onnx方言は、パス--convert-onnx-to-krnlを介して、krnl方言に変換される。その後、krnl方言(その動作の一部を除く)は、パス--convert-krnl-to-affineを介して、affine方言およびstd方言に変換される。krnl方言での残りの動作ならびにaffine方言およびstd方言での動作は、パス--convert-krnl-to-llvmを介してllvmでの命令に直接変換される。
図4の右側は、各抽象化レベルで実行され得る最適化パスを陰影付きパターンで示している。最適化パスのリストが網羅的でないということが、理解されるべきである。本明細書において述べたように、MLIRは、コンパイラ・パスのよく知られた概念を使用して、動作に対する変換のための拡張可能なフレームワークを提供する。各変換が任意の動作の意味を考慮しなければならない可能性があるため、動作の任意のセットに対するパスの任意のセットを可能にすることは、重大なスケーリングの課題をもたらす。しかし、MLIRは、TraitsおよびInterfacesを使用して、動作の意味が抽象的に記述されることを可能にし、変換が動作に対してより一般的に動作することを可能にすることによって、この複雑さに対処する。Traitsは、多くの場合、有効なIRに対する検証制約を記述し、複雑な不変式が捕捉され、チェックされることを可能にする。
【0038】
コンパイラ322は、
図7に示されているように、コンパイル/変換プロセスの各段階でマッピング・ファイル330を生成するように構成される。例えば、
図3のマッピング・ファイル330は、ONNXモデル(例えば、ニューラル・ネットワーク・モデル200もしくは人工知能モデルまたはその両方)をonnx IR(コード)に変換するために使用されるonnx中間表現(IR)マッピング・ファイル、onnx IR(コード)をkrnl IR(コード)に変換するために使用されるkrnl IRマッピング・ファイル、krnl IR(コード)をaffine IR(コード)に変換するために使用されるaffine IRマッピング・ファイル、およびaffine IR(コード)をllvm IR(コード)に変換するために使用されるLLVM IRマッピング・ファイルを含む。
図7に示されているように、コンパイラ322は、llvm IR(コード)を、実行ファイル(executable)、ライブラリ、バイナリ・コード、アセンブリ言語などとも呼ばれる実行ファイル(executable file)334に変換するために使用されるリスト・ファイル332を生成し、実行ファイル334は、コンピュータ・システム302もしくはコンピュータ・システム320またはその両方のハードウェア/ソフトウェアによって読み取り、実行することができる。したがって、実行ファイル334は、コンピュータ・システム302(もしくはコンピュータ・システム320またはその両方)によって実行(run)/実行(executed)され、これは、
図7にも示されているように、推論を実行するためにニューラル・ネットワーク・モデル200を実行する(running)/実行する(executing)ことに対応する。例えば、ニューラル・ネットワーク・モデル200は、受信データを受信し、データを出力として分類するように設計される。実行時に、コンピュータ・システム302は、命令、命令アドレス、パフォーマンス・メトリック・データなどを含む、さまざまな情報を含んでいるデータ・ファイル340を生成し、これらの情報は、本明細書においてさらに説明されるように、ニューラル・ネットワーク・モデル200に対する改善を支援するために使用可能である。
【0039】
図5は、本発明の1つまたは複数の実施形態に従う、ニューラル・ネットワーク・モデル内のパフォーマンス・ホット・スポットを特定するためのコンピュータ実装プロセス500のフローチャートである。コンピュータ実装プロセス500は、
図2のコンピュータ・システム302を使用して実行されてよい。
図5のコンピュータ実装プロセス500は、
図2を参照して説明される。
【0040】
ブロック502で、データ・ファイル340を生成した実行時間の後に、ソフトウェア・アプリケーション304は、データ・ファイル340からサンプル・データ352を収集するように構成される。サンプル・データ352は、データ・ファイル340の一部であってよい。1つまたは複数の実施形態では、サンプル・データ352は、データ・ファイル340のすべてを含んでよい。データ・ファイル340は、前にコンパイルされたニューラル・ネットワーク・モデル200の実行結果として生成される。データ・ファイル340は、命令、命令の命令アドレス、各命令もしくは命令アドレスまたはその両方に関するパフォーマンス・メトリックなどを含む。パフォーマンス・メトリックは、キャッシュ・ミス、ハードウェア・カウンタからの情報、ソフトウェア・カウンタからの情報、CPU使用量、メモリ使用量などを含む。サンプル・データ352は、サンプル発生数と共に、データ・ファイル340に含まれている情報のすべての種類を含む。異なるコンピューティング・アーキテクチャは、異なるカウンタ数を含む可能性がある。1つのアーキテクチャは、例えば、10~1000のカウンタ数を含むことがある。1つまたは複数の実施形態では、
図7の制御フローに示されているように、データ・ファイル340はETBファイルとすることができる。
【0041】
ブロック504で、ソフトウェア・アプリケーション304は、サンプル・データ352内のパフォーマンス・ホット・スポットおよび対応するホットな命令を決定して識別するように構成される。パフォーマンス・ホット・スポットを識別するために、ソフトウェア・アプリケーション304は、メトリックもしくはメトリックの組合せまたはその両方に関する既定のしきい値を満たすか、もしくは超えるか、またはその両方である命令を識別するために、1つまたは複数の診断ツール306を含むか、もしくは呼び出すか、またはその両方を実行してよい。パフォーマンス・ホット・スポットは、コンピュータ・システム302(もしくはコンピュータ・システム320またはその両方)がメトリックに関する既定のしきい値を満たすか、もしくは超えるか、またはその両方であることを引き起こす、命令、動作、もしくはコード、またはその組合せである。例えば、パフォーマンス・ホット・スポットとは、1つまたは複数の命令、動作、またはコード、またはそれらの組合せが、CPU使用量(例えば、割合などのプロセッサの使用量)、実行時間(例えば、ティック、クロックなど)、キャッシュ・ミス、メモリ使用量などに関連する既定のしきい値のうちの1つまたは組合せを満たすか、もしくは超えるか、またはその両方であるということを、決定することを指すことができる。場合によっては、命令、動作、もしくはコード、またはそれらの組合せが任意の既定のしきい値を満たさないか、超えないか、またはその両方である場合でも、パフォーマンス・ホット・スポットは、サンプル・データ352内の他の命令と比較して、平均パフォーマンス・メトリックを超えることができる。例えば、パフォーマンス・ホット・スポットは、パフォーマンス・メトリックもしくはパフォーマンス・メトリックの組合せまたはその両方の統計的平均から外れることができる。ソフトウェア・アプリケーション304もしくは診断ツール306またはその両方は、サンプル・データ352を構文解析し、既定のしきい値のうちの1つまたは組合せを満たすか、もしくは超えるか、またはその両方であるパフォーマンス・メトリックを、関連する命令と共に決定してよい。パフォーマンス・ホット・スポットの分析は、手動、自動、もしくは半自動、またはそれらの組合せとすることができる。1つまたは複数の実施形態では、経験のあるパフォーマンス・アナリストおよび開発者は、分析ツールを使用して、異なるレベルでパフォーマンス・ホット・スポットを通過し、最適化に最も役立つ部分を見つける。ソフトウェア・アプリケーション304もしくは診断ツール306またはその両方は、当業者によって理解されているように、ソフトウェアの診断およびパフォーマンスのための既知の方法および技術を採用することができる。
【0042】
ブロック506で、ソフトウェア・アプリケーション304は、リスト・ファイル332を使用してLLVM IRの位置をサンプル・データ352内の命令にマッピングするように構成され、命令は、例えばメモリ308内の命令アドレスにある。命令は、
図4で説明された実行ファイル334のような実行可能なコードである。
図4で述べられ、
図7で例示されたように、実行可能な命令がLLVM IRからコンパイルされる。したがって、LLVM IRと命令アドレスの間にはマッピング関係が存在する。この関係は、リスト・ファイル332と呼ばれるファイルによって表される。LLVM IRを実行ファイル334にコンパイルするときにリスト・ファイル332が生成され、実行ファイル334は、メモリ308に格納され得る実行可能なコード、バイナリ・コード、機械語などである。LLVM IRは、バイナリ・コードではない最も低いレベルのコードである。リスト・ファイルは、以下の表1の例示的な列を含んでよい。
【0043】
【0044】
ブロック508で、ソフトウェア・アプリケーション304は、マッピング・ファイル330を使用して、LLVM IRの位置および情報を、元のニューラル・ネットワーク・モデル200内の相互関係がある位置にマッピングするように構成される。ニューラル・ネットワーク・モデル200(例えば、元のAIモデル)は、ニューラル・ネットワーク・モデル200を最終的な実行可能なコード(例えば、実行ファイル334)に変換するために、複数の変換段階を必要とする。各変換段階はマッピング・ファイルを含み、これらのマッピング・ファイルの組合せは、LLVM IRをニューラル・ネットワーク・モデル200(例えば、元のAIモデル)に逆向きに変換するために利用され得る。
図7に示されているように、各マッピング・ファイル330は、現在の中間表現から前のより高いレベルの中間表現に戻る関係および変換、ならびに最も高いレベルの中間表現からニューラル・ネットワーク・モデル200に戻る関係および変換を含む。したがって、ソフトウェア・アプリケーション304は、例えば、入力コードを出力コードにマッピングすることによって、元のAIモデル内のLLVM IRの位置を特定することができる。例えば、ソフトウェア・アプリケーション304は、マッピング・ファイル330のLLVM IRマッピング・ファイルを使用して、LLVM IRの位置および情報を、affine IR(コード)での相互関係があるaffine IRの位置にマッピングするように構成される。同様に、ソフトウェア・アプリケーション304は、マッピング・ファイル330のaffine IRマッピング・ファイルを使用して、affine IRの位置および情報を、krnl IR(コード)での相互関係があるkrnl IRの位置にマッピングするように構成される。同様に、ソフトウェア・アプリケーション304は、マッピング・ファイル330のkrnl IRマッピング・ファイルを使用して、krnl IRの位置および情報を、onnx IR(コード)での相互関係があるonnx IRの位置にマッピングするように構成される。ソフトウェア・アプリケーション304は、マッピング・ファイル330のonnx IRマッピング・ファイルを使用して、onnx IRの位置および情報を、ニューラル・ネットワーク・モデル200(すなわち、AIモデル)であるONNXモデルに逆向きにマッピングするように構成される。図に示されているように、命令が逆の順序で(例えば、
図4の逆の順序および
図7の変換の逆の順序で)MLIRコンパイル段階を通ってたどられる。個々のマッピング・ファイル(LLVM IRマッピング・ファイル、affine IRマッピング・ファイル、krnl IRマッピング・ファイル、およびonnx IRマッピング・ファイルなど)内のマッピング関係が、各命令アドレスもしくは動作またはその両方を、MLIRコンパイル段階を通って逆向きにたどるために使用される。
【0045】
ブロック510で、ソフトウェア・アプリケーション304は、異なる中間命令にマッピングされたホットな命令に関して、レベルごとにMLIRパフォーマンス・マトリックスを生成して表示するように構成される。
図6は、本発明の1つまたは複数の実施形態に従って、コンパイルの異なるレベルで相互関係があるパフォーマンス・ホット・スポットを表示する例示的なMLIRパフォーマンス・マトリックスのブロック図である。MLIRパフォーマンス・マトリックスは、ディスプレイ119などのディスプレイ上に表示することができ、それによってユーザは、1つまたは複数のホット・スポットを修正するためにどの動作が最適化され得るかを素早く視覚化することができる。ソフトウェア・アプリケーション304は、命令アドレスを含むことができるマッピング・ファイル330と組み合わせられたサンプル・データ352の命令アドレスを使用して、MLIRパフォーマンス・マトリックスを生成する。パフォーマンス・マトリックスは、ユーザもしくはソフトウェア・アプリケーション304またはその両方が最適化のための最良のレベル(および動作)を選択できるように、点状パターンを使用して異なるレベルで表示されたパフォーマンス・ホット・スポットを示す。例えば、ソフトウェア・アプリケーション304は、LLVM IR、affine IR、krnl IR、もしくはONNX IR、またはそれらの組合せで最適化することを選択できる。LLVM IR、affine IR、krnl IR、もしくはONNX IR、またはそれらの組合せでは、選択された最適化は、方言の動作もしくはパスまたはその両方を含むことができる。LLVM IRは、サンプル・データ352の命令に最も近く、パフォーマンス・マトリックスはONNX IRを通って上に進む。ニューラル・ネットワーク・モデル200は、パフォーマンス・マトリックスに示されていないが、ニューラル・ネットワーク・モデル200のノードを含んだより高いレベルが表示され得ることが理解されるべきであり、それらのノードの一部はパフォーマンス・ホット・スポットである。1つまたは複数の実施形態では、ソフトウェア・アプリケーション304は、
図6のパフォーマンス・マトリックスに示された任意の1つまたは複数のレベルでパフォーマンス・ホット・スポットを最適化するか、もしくは最適化ツール(図示せず)を呼び出して最適化するか、またはその両方を実行するように、構成されてよい。ソフトウェア・アプリケーション304は、1つまたは複数のレベルで最適化を実行するようユーザに指示してよい。一部のユーザは、特定のレベルで変更を行うことに慣れているか、またはそうすることが楽であることがある。また、一部のレベルは、予期しない問題を引き起こす可能性がなく、パフォーマンス・ホット・スポットもしくはパフォーマンス・ホット・スポットの特徴またはその両方を修正することにより特化している可能性がある。例えば、中間レベルでより小さい動作またはより複雑でない動作を最適化すること、もしくは修正すること、またはその両方(一方で、例えば、同じレベルで他のパフォーマンス・ホット・スポットを最適化しないこと)は、予期しない問題を引き起こすことを伴ってパフォーマンスを改善する可能性がある。しかし、ニューラル・ネットワーク・モデルでノードを最適化することは、ニューラル・ネットワーク・モデルがコンパイルされるときに問題を引き起こす可能性がある。例えば、MLIRコンパイルの後に、数百万個の命令に分散された数千個のホットな命令およびホットな基本的ブロックが存在する。より高いレベルでこれらの命令を集約する場合、「std.add」および「matrix bias add」のような少数のホットな動作のみが存在することがある。そのため、ユーザは、最小限の最適化の労力で最大のパフォーマンスの改善を得るために、ソフトウェアの調整またはハードウェア・アクセラレーションによって、これらのホットな動作だけを最適化する必要がある。
【0046】
図6で、コンパイルのさまざまなレベルでの動作の値は、CPU使用量、実行時間、キャッシュ・ミスなどとすることができ、値が大きいほど、より悪い。この例では、パフォーマンス・メトリックのしきい値は、20%以上の値を持つ各動作がパフォーマンス・ホット・スポットであるように、例えば、20%とすることができる。各レベル(例えば、LLVM IR、affine IR、krnl IR、もしくはONNX IR、またはそれらの組合せ)で動作の名前と共に値を表示することによって、ユーザは、どこで改善および最適化が行われ得るかを容易に素早く視覚化することができる。例えば、マッピング・ファイル330によって提供された命令アドレスと名前の間のマッピング関係に基づいて、個別の命令アドレスの範囲0x10f~0x120、0x204~x228が、
図6の「llvm.add」ノードに属する。次に、アドレス0x112、0x120、0x204、0x208などでのサンプルが、llvm.addノードに集約される。llvm.addの集約されたサンプル数は、サンプルの総数の40%である。マッピング・ファイル330を使用して、llvmノードとのaffineのパスでノードをマッピングすることに基づいて、llvm.addノードがstd.addfノードに変換される。したがって、すべてのllvm.addのサンプル数が、std.addfノードに集約される。std.addfノードは、
図6に見られるように、affineのパスで最もホットなノードである。
【0047】
図7は、本発明の1つまたは複数の実施形態に従って、最適化のためにニューラル・ネットワーク・モデル内のパフォーマンス・ホット・スポットを特定するためのコンピュータ実装制御フローのブロック図である。1つまたは複数の実施形態では、コンピュータ・システム302によってコンピュータ実装制御フローが実行されてよい。1つまたは複数の実施形態では、ニューラル・ネットワーク・モデル200のコンパイルおよび実行などの、コンピュータ実装制御フローの一部が、コンピュータ・システム320によって実行されてよく、パフォーマンス・ホット・スポットを決定して特定することなどの、コンピュータ実装制御フローの一部が、コンピュータ・システム302によって実行されてよい。コンパイル・プロセスでは、(例えば、マッピング・ファイル330のような)IAマッピング・ファイルおよびリスト・ファイル(例えば、リスト・ファイル332)が生成される。実行プロセスでは、コンピュータ・システム302は、データ・ファイルなど(例えば、データ・ファイル340)を収集するサンプリング・ツールを使用する。コンピュータ・システム302によって実行された後に、コンピュータ・システム302は、IAマッピング・ファイル、リスト・ファイル、およびデータ・ファイルを使用して、パフォーマンス・ホット・スポットを特定する。
【0048】
図8は、本発明の1つまたは複数の実施形態に従う、ニューラル・ネットワーク・モデル内のパフォーマンス・ホット・スポットを特定し、1つまたは複数のパフォーマンス・ホット・スポットを最適化するためのコンピュータ実装プロセス800のフローチャートである。
図8のコンピュータ実装プロセス800は、
図3のシステム300によって実行することができ、
図3を参照して説明される。
【0049】
ブロック802で、コンピュータ・システム302上のソフトウェア・アプリケーション304は、命令アドレス(IA)を有するサンプル・データ(例えば、サンプル・データ352)を収集するように構成され、サンプル・データはニューラル・ネットワーク・モデル200に関するものである。サンプル・データ352は、ニューラル・ネットワーク・モデル200の実行中、具体的には、コンパイルされたニューラル・ネットワーク・モデル200の実行中に生成されたデータ・ファイル340からのものとすることができる。
【0050】
ブロック804で、コンピュータ・システム302上のソフトウェア・アプリケーション304は、パフォーマンス・ホット・スポットである命令アドレス内の命令を決定するように構成される。例えば、ソフトウェア・アプリケーション304は、パフォーマンス・メトリックに基づいてパフォーマンス・ホット・スポットを決定するように構成された、1つもしくは複数の既知の診断ツール306の機能を含むか、または1つもしくは複数の既知の診断ツール306を呼び出す/に指示するか、またはその両方を実行してよい。
【0051】
ブロック806で、コンピュータ・システム302上のソフトウェア・アプリケーション304は、リスト・ファイル332を使用して、パフォーマンス・ホット・スポットであるサンプル・データ352の命令を、より低いレベルの中間表現内の位置にマッピングするように構成される。より低いレベルの中間表現は、LLVM IR(コード)とすることができる。
【0052】
ブロック808で、コンピュータ・システム302上のソフトウェア・アプリケーション304は、マッピング・ファイル(例えば、マッピング・ファイル330)を使用して、パフォーマンス・ホット・スポットであるより低いレベルの中間表現の位置を、1つまたは複数のより高いレベルの(中間)表現(例えば、affine IR、krnl IR、ONNX IRなど)における動作にマッピングするように構成され、これらの動作のうちの1つまたは複数は、パフォーマンス・ホット・スポットに対応し、マッピング・ファイル330は、ニューラル・ネットワーク・モデル200をコンパイルすることから生成される。
【0053】
コンピュータ・システム302上のソフトウェア・アプリケーション304は、マッピング・ファイル330を使用して、1つまたは複数のより高いレベルの表現内の動作をニューラル・ネットワーク・モデル200内のノードにマッピングするように構成される。コンピュータ・システム302上のソフトウェア・アプリケーション304は、サンプル・データ352からマッピングされたより低いレベルの中間表現からマッピングされた1つまたは複数のより高いレベルの(中間)表現からマッピングすることに基づいて、ニューラル・ネットワーク・モデル200内のどのノードがパフォーマンス・ホット・スポットを表すかを決定するように構成される。
【0054】
コンピュータ・システム302上のソフトウェア・アプリケーション304は、マッピング・ファイル330を使用して、ニューラル・ネットワーク・モデル200のコンパイルの異なるレベルでパフォーマンス・ホット・スポットを分類するように構成され、異なるレベルは、より低いレベルの中間表現から1つまたは複数のより高いレベルの表現までを含む。異なるレベルは、LLVM IR、affine IR、krnl IR、もしくはONNX IR、またはそれらの組合せを含むことができる。サンプル・データ(例えば、サンプル・データ352)は、1つまたは複数のカウンタからの情報をさらに含む。ハードウェア・カウンタもしくはソフトウェア・カウンタまたはその両方からのニューラル・ネットワーク・モデル200の実行に関する情報が、サンプル・データが収集されたデータ・ファイル340に格納され得る。パフォーマンス・ホット・スポットは、1つまたは複数のしきい値(例えば、パフォーマンス・メトリックのしきい値)を満たすか、もしくは超えるか、またはその両方である1つまたは複数の(パフォーマンス)メトリックを含む。コンピュータ・システム302上のソフトウェア・アプリケーション304は、最適化するための1つまたは複数のより高いレベルの表現内の1つまたは複数の動作を決定し、パフォーマンス・ホット・スポットに対処するように構成される。
【0055】
本開示にはクラウド・コンピューティングに関する詳細な説明が含まれているが、本明細書において示された内容の実装は、クラウド・コンピューティング環境に限定されないと理解されるべきである。本発明の実施形態は、現在既知であるか、または今後開発される任意の他の種類のコンピューティング環境と組み合わせて実装され得る。
【0056】
クラウド・コンピューティングは、構成可能な計算リソース(例えば、ネットワーク、ネットワーク帯域幅、サーバ、処理、メモリ、ストレージ、アプリケーション、仮想マシン、およびサービス)の共有プールへの便利なオンデマンドのネットワーク・アクセスを可能にするためのサービス提供モデルであり、管理上の手間またはサービス・プロバイダとのやりとりを最小限に抑えて、これらのリソースを迅速にプロビジョニングおよび解放することができる。このクラウド・モデルは、少なくとも5つの特徴、少なくとも3つのサービス・モデル、および少なくとも4つのデプロイメント・モデルを含んでよい。
【0057】
特徴は、次のとおりである。
【0058】
オンデマンドのセルフ・サービス:クラウドの利用者は、サーバの時間およびネットワーク・ストレージなどの計算能力を一方的に、サービス・プロバイダとの人間的なやりとりを必要とせず、必要に応じて自動的にプロビジョニングすることができる。
【0059】
幅広いネットワーク・アクセス:能力は、ネットワークを経由して利用可能であり、標準的なメカニズムを使用してアクセスできるため、異種のシン・クライアントまたはシック・クライアント・プラットフォーム(例えば、携帯電話、ラップトップ、およびPDA)による利用を促進する。
【0060】
リソース・プール:プロバイダの計算リソースは、プールされ、マルチテナント・モデルを使用して複数の利用者に提供される。さまざまな物理的および仮想的リソースが、要求に従って動的に割り当ておよび再割り当てされる。場所に依存しないという感覚があり、利用者は通常、提供されるリソースの正確な場所に関して管理することも知ることもないが、さらに高い抽象化レベルでは、場所(例えば、国、州、またはデータセンター)を指定できることがある。
【0061】
迅速な順応性:能力は、迅速かつ柔軟に、場合によっては自動的にプロビジョニングされ、素早くスケールアウトし、迅速に解放されて素早くスケールインすることができる。プロビジョニングに使用できる能力は、利用者には、多くの場合、任意の量をいつでも無制限に購入できるように見える。
【0062】
測定されるサービス:クラウド・システムは、計測機能を活用することによって、サービスの種類(例えば、ストレージ、処理、帯域幅、およびアクティブなユーザのアカウント)に適したある抽象化レベルで、リソースの使用を自動的に制御および最適化する。リソースの使用状況は、監視、制御、および報告することができ、利用されるサービスのプロバイダと利用者との両方に透明性を提供する。
【0063】
サービス・モデルは、次のとおりである。
【0064】
SaaS(Software as a Service):利用者に提供される能力は、クラウド・インフラストラクチャ上で稼働しているプロバイダのアプリケーションの利用である。それらのアプリケーションは、Webブラウザ(例えば、Webベースの電子メール)などのシン・クライアント・インターフェイスを介して、さまざまなクライアント・デバイスからアクセスできる。利用者は、ネットワーク、サーバ、オペレーティング・システム、ストレージ、または個々のアプリケーション機能さえも含む基盤になるクラウド・インフラストラクチャを、限定的なユーザ固有のアプリケーション構成設定を行う可能性を除き、管理することも制御することもない。
【0065】
PaaS(Platform as a Service):利用者に提供される能力は、プロバイダによってサポートされるプログラミング言語およびツールを使用して作成された、利用者が作成または取得したアプリケーションをクラウド・インフラストラクチャにデプロイすることである。利用者は、ネットワーク、サーバ、オペレーティング・システム、またはストレージを含む基盤になるクラウド・インフラストラクチャを管理することも制御することもないが、デプロイされたアプリケーション、および場合によってはアプリケーション・ホスティング環境の構成を制御することができる。
【0066】
IaaS(Infrastructure as a Service):利用者に提供される能力は、処理、ストレージ、ネットワーク、および他の基本的な計算リソースのプロビジョニングであり、利用者は、オペレーティング・システムおよびアプリケーションを含むことができる任意のソフトウェアをデプロイして実行できる。利用者は、基盤になるクラウド・インフラストラクチャを管理することも制御することもないが、オペレーティング・システム、ストレージ、デプロイされたアプリケーションを制御することができ、場合によっては、選択されたネットワーク・コンポーネント(例えば、ホスト・ファイアウォール)を限定的に制御できる。
【0067】
デプロイメント・モデルは、次のとおりである。
【0068】
プライベート・クラウド:このクラウド・インフラストラクチャは、組織のためにのみ運用される。この組織またはサード・パーティによって管理することができ、オンプレミスまたはオフプレミスに存在することができる。
【0069】
コミュニティ・クラウド:このクラウド・インフラストラクチャは、複数の組織によって共有され、関心事(例えば、任務、セキュリティ要件、ポリシー、およびコンプライアンスに関する考慮事項)を共有している特定のコミュニティをサポートする。これらの組織またはサード・パーティによって管理することができ、オンプレミスまたはオフプレミスに存在することができる。
【0070】
パブリック・クラウド:このクラウド・インフラストラクチャは、一般ユーザまたは大規模な業界団体が使用できるようになっており、クラウド・サービスを販売する組織によって所有される。
【0071】
ハイブリッド・クラウド:このクラウド・インフラストラクチャは、データとアプリケーションの移植を可能にする標準化された技術または独自の技術(例えば、クラウド間の負荷バランスを調整するためのクラウド・バースト)によって固有の実体を残したまま互いに結合された2つ以上のクラウド(プライベート、コミュニティ、またはパブリック)の複合である。
【0072】
クラウド・コンピューティング環境は、ステートレス性、低結合性、モジュール性、および意味的相互運用性に重点を置いたサービス指向の環境である。クラウド・コンピューティングの中心になるのは、相互接続されたノードのネットワークを含むインフラストラクチャである。
【0073】
ここで
図9を参照すると、例示的なクラウド・コンピューティング環境50が示されている。図示されているように、クラウド・コンピューティング環境50は、クラウドの利用者によって使用されるローカル・コンピューティング・デバイス(例えば、パーソナル・デジタル・アシスタント(PDA)もしくは携帯電話54A、デスクトップ・コンピュータ54B、ラップトップ・コンピュータ54C、または自動車コンピュータ・システム54N、またはそれらの組合せなど)が通信できる1つまたは複数のクラウド・コンピューティング・ノード10を含む。ノード10は、互いに通信してよい。ノード10は、1つまたは複数のネットワーク内で、本明細書において前述されたプライベート・クラウド、コミュニティ・クラウド、パブリック・クラウド、もしくはハイブリッド・クラウド、またはこれらの組合せなどに、物理的または仮想的にグループ化されてよい(図示せず)。これによって、クラウド・コンピューティング環境50は、クラウドの利用者がローカル・コンピューティング・デバイス上でリソースを維持する必要のないインフラストラクチャ、プラットフォーム、もしくはSaaS、またはそれらの組合せを提供できる。
図9に示されたコンピューティング・デバイス54A~Nの種類は、例示のみが意図されており、コンピューティング・ノード10およびクラウド・コンピューティング環境50は、任意の種類のネットワークもしくはネットワーク・アドレス可能な接続(例えば、Webブラウザを使用した接続)またはその両方を経由して任意の種類のコンピュータ制御デバイスと通信することができると理解される。
【0074】
ここで
図10を参照すると、クラウド・コンピューティング環境50(
図9)によって提供される機能的抽象化レイヤのセットが示されている。
図10に示されたコンポーネント、レイヤ、および機能は、例示のみが意図されており、本発明の実施形態がこれらに限定されないということが、あらかじめ理解されるべきである。図示されているように、次のレイヤおよび対応する機能が提供される。
【0075】
ハードウェアおよびソフトウェア・レイヤ60は、ハードウェア・コンポーネントおよびソフトウェア・コンポーネントを含む。ハードウェア・コンポーネントの例としては、メインフレーム61、RISC(縮小命令セット・コンピュータ)アーキテクチャベースのサーバ62、サーバ63、ブレード・サーバ64、ストレージ・デバイス65、ならびにネットワークおよびネットワーク・コンポーネント66が挙げられる。一部の実施形態では、ソフトウェア・コンポーネントは、ネットワーク・アプリケーション・サーバ・ソフトウェア67およびデータベース・ソフトウェア68を含む。
【0076】
仮想化レイヤ70は、仮想サーバ71、仮想ストレージ72、仮想プライベート・ネットワークを含む仮想ネットワーク73、仮想アプリケーションおよびオペレーティング・システム74、ならびに仮想クライアント75などの仮想的実体を提供できる抽象化レイヤを備える。
【0077】
一例を挙げると、管理レイヤ80は、以下で説明される機能を提供してよい。リソース・プロビジョニング81は、クラウド・コンピューティング環境内でタスクを実行するために利用される計算リソースおよび他のリソースの動的調達を行う。計測および価格設定82は、クラウド・コンピューティング環境内でリソースが利用される際のコスト追跡、およびそれらのリソースの利用に対する請求書またはインボイスの送付を行う。一例を挙げると、それらのリソースは、アプリケーション・ソフトウェア・ライセンスを含んでよい。セキュリティは、クラウドの利用者およびタスクのID検証を行うとともに、データおよび他のリソースの保護を行う。ユーザ・ポータル83は、クラウド・コンピューティング環境へのアクセスを利用者およびシステム管理者に提供する。サービス・レベル管理84は、必要なサービス・レベルを満たすように、クラウドの計算リソースの割り当てと管理を行う。サービス水準合意(SLA)計画および実行85は、今後の要求が予想されるクラウドの計算リソースの事前準備および調達を、SLAに従って行う。
【0078】
ワークロード・レイヤ90は、クラウド・コンピューティング環境で利用できる機能の例を示している。このレイヤから提供されてよいワークロードおよび機能の例としては、マッピングおよびナビゲーション91、ソフトウェア開発およびライフサイクル管理92、仮想クラスルーム教育の配信93、データ解析処理94、トランザクション処理95、ならびにワークロードおよび機能において実装されるソフトウェア・アプリケーション(例えば、ソフトウェア・アプリケーション304、コンパイラ322、ニューラル・ネットワーク・モデル200など)96が挙げられる。また、ソフトウェア・アプリケーションは、リソース・プロビジョニング81と共に機能するか、もしくはリソース・プロビジョニング81に統合されるか、またはその両方とすることができる。
【0079】
本明細書では、関連する図面を参照して、本発明のさまざまな実施形態が説明される。本発明の範囲から逸脱することなく、本発明の代替の実施形態が考案され得る。以下の説明および図面において、要素間のさまざまな接続および位置関係(例えば、上、下、隣接など)が示される。それらの接続もしくは位置関係またはその両方は、特に規定されない限り、直接的または間接的とすることができ、本発明はこの点において限定するよう意図されていない。したがって、各実体の結合は、直接的結合または間接的結合を指すことができ、各実体間の位置関係は、直接的位置関係または間接的位置関係とすることができる。さらに、本明細書に記載されたさまざまな作業および工程段階は、本明細書に詳細に記載されない追加の段階または機能を有するさらに包括的な手順または工程に組み込まれ得る。
【0080】
本明細書に記載された方法のうちの1つまたは複数は、データ信号上で論理機能を実装するための論理ゲートを有する個別の論理回路、適切な組合せ論理ゲートを有する特定用途向け集積回路(ASIC)、プログラマブル・ゲート・アレイ(PGA)、フィールド・プログラマブル・ゲート・アレイ(FPGA)などの、それぞれ従来技術においてよく知られている、技術のいずれかまたは組合せを使用して実装され得る。
【0081】
簡潔さの目的で、本発明の態様の作成および使用に関連する従来技術は、本明細書に詳細に記載されることもあれば、記載されないこともある。具体的には、本明細書に記載されたさまざまな技術的特徴を実装するためのコンピューティング・システムおよび特定のコンピュータ・プログラムのさまざまな態様は、よく知られている。したがって、簡潔さのために、多くの従来の実装に関する詳細は、本明細書では、既知のシステムもしくは工程またはその両方の詳細を提供することなく、簡潔にのみ述べられるか、または全体的に省略される。
【0082】
一部の実施形態では、さまざまな機能または動作は、特定の位置で、または1つもしくは複数の装置もしくはシステムの動作に関連して、またはその両方で行われ得る。一部の実施形態では、特定の機能または動作の一部は、第1のデバイスまたは位置で実行することができ、機能または動作の残りの部分は、1つまたは複数の追加のデバイスまたは位置で実行され得る。
【0083】
本明細書で使用される用語は、特定の実施形態を説明することのみを目的としており、制限することを意図していない。本明細書において使用されるとき、単数形「a」、「an」、および「the」は、文脈で特に明示的に示されない限り、複数形も含むよう意図されている。「備える」もしくは「備えている」またはその両方の用語は、本明細書で使用される場合、記載された機能、整数、ステップ、動作、要素、もしくはコンポーネント、またはそれらの組合せの存在を示すが、1つまたは複数の他の機能、整数、ステップ、動作、要素、コンポーネント、もしくはこれらのグループ、またはそれらの組合せの存在または追加を除外していないということが、さらに理解されるであろう。
【0084】
下記の特許請求の範囲内のすべての手段またはステップおよび機能要素の対応する構造、材料、動作、および等価なものは、具体的に請求される他の請求された要素と組み合わせて機能を実行するための任意の構造、材料、または動作を含むことが意図されている。本開示は、例示および説明の目的で提示されているが、網羅的であることは意図されておらず、開示された形態に限定されない。本開示の範囲から逸脱することなく、多くの変更および変形が当業者にとって明らかであろう。本開示の原理および実際的な適用を最も適切に説明するため、および他の当業者が、企図されている特定の用途に適しているようなさまざまな変更を伴う多様な実施形態に関して、本開示を理解できるようにするために、実施形態が選択されて説明された。
【0085】
本明細書において示された図は、例示である。本開示から逸脱することなく、本明細書に記載された図またはステップ(または動作)の多くの変形が存在することが可能である。例えば、動作は異なる順序で実行することができるか、または動作は追加、削除、または変更することができる。また、「結合される」という用語は、2つの要素間に信号経路が存在することを表しており、それらの要素間に要素/接続が介在しない要素間の直接的接続を意味していない。これらすべての変形は、本開示の一部であると見なされる。
【0086】
以下の定義および略称が、特許請求の範囲および本明細書の解釈に使用される。本明細書において使用されるとき、「備える」、「備えている」、「含む」、「含んでいる」、「有する」、「有している」、「含有する」、「含有している」という用語、またはこれらの任意の他の変形は、非排他的包含をカバーするよう意図されている。例えば、要素のリストを含む組成、混合、工程、方法、製品、または装置は、それらの要素のみに必ずしも限定されず、明示されていないか、またはそのような組成、混合、工程、方法、製品、または装置に固有の、他の要素を含むことができる。
【0087】
さらに、「例示的」という用語は、本明細書では「例、事例、または実例としての役割を果たす」ことを意味するために使用される。「例示的」として本明細書に記載された実施形態または設計は、必ずしも他の実施形態または設計よりも好ましいか、または有利であると解釈されるべきではない。「少なくとも1つ」および「1つまたは複数」という用語は、1以上の任意の整数、すなわち、1、2、3、4などを含むものと理解される。「複数」という用語は、2以上の任意の整数、すなわち、2、3、4、5などを含むものと理解される。「接続」という用語は、間接的「接続」および直接的「接続」の両方を含むことができる。
【0088】
「約」、「実質的に」、「近似的に」、およびこれらの変形の用語は、本願の出願時に使用可能であった技能に基づいて、特定の量の測定に関連付けられた誤差の程度を含むよう意図されている。例えば、「約」は、特定の値の±8%もしくは5%、または2%の範囲を含むことができる。
【0089】
本発明は、統合の任意の可能な技術的詳細レベルで、システム、方法、もしくはコンピュータ・プログラム製品、またはそれらの組合せであってよい。コンピュータ・プログラム製品は、プロセッサに本発明の態様を実行させるためのコンピュータ可読プログラム命令を有するコンピュータ可読ストレージ媒体を含んでよい。
【0090】
コンピュータ可読ストレージ媒体は、命令実行デバイスによって使用するための命令を保持および格納できる有形のデバイスとすることができる。コンピュータ可読ストレージ媒体は、例えば、電子ストレージ・デバイス、磁気ストレージ・デバイス、光ストレージ・デバイス、電磁ストレージ・デバイス、半導体ストレージ・デバイス、またはこれらの任意の適切な組合せであってよいが、これらに限定されない。コンピュータ可読ストレージ媒体のさらに具体的な例の非網羅的リストは、ポータブル・フロッピー(登録商標)・ディスク、ハード・ディスク、ランダム・アクセス・メモリ(RAM)、リード・オンリ・メモリ(ROM)、消去可能プログラマブル・リード・オンリ・メモリ(EPROMまたはフラッシュ・メモリ)、スタティック・ランダム・アクセス・メモリ(SRAM)、ポータブル・コンパクト・ディスク・リード・オンリ・メモリ(CD-ROM)、デジタル・バーサタイル・ディスク(DVD)、メモリ・スティック、フロッピー(登録商標)・ディスク、命令が記録されているパンチカードまたは溝の中の隆起構造などの機械的にエンコードされるデバイス、およびこれらの任意の適切な組合せを含む。本明細書において使用されるとき、コンピュータ可読ストレージ媒体は、電波もしくは他の自由に伝搬する電磁波、導波管もしくは他の送信媒体を伝搬する電磁波(例えば、光ファイバ・ケーブルを通過する光パルス)、またはワイヤを介して送信される電気信号などの、それ自体が一過性の信号であると解釈されるべきではない。
【0091】
本明細書に記載されたコンピュータ可読プログラム命令は、コンピュータ可読ストレージ媒体から各コンピューティング・デバイス/処理デバイスへ、またはネットワーク(例えば、インターネット、ローカル・エリア・ネットワーク、広域ネットワーク、もしくはワイヤレス・ネットワーク、またはそれらの組合せ)を介して外部コンピュータまたは外部ストレージ・デバイスへダウンロードされ得る。このネットワークは、銅伝送ケーブル、光伝送ファイバ、ワイヤレス送信、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、もしくはエッジ・サーバ、またはそれらの組合せを備えてよい。各コンピューティング・デバイス/処理デバイス内のネットワーク・アダプタ・カードまたはネットワーク・インターフェイスは、コンピュータ可読プログラム命令をネットワークから受信し、それらのコンピュータ可読プログラム命令を各コンピューティング・デバイス/処理デバイス内のコンピュータ可読ストレージ媒体に格納するために転送する。
【0092】
本発明の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セット・アーキテクチャ(ISA)命令、マシン命令、マシン依存命令、マイクロコード、ファームウェア命令、状態設定データ、集積回路のための構成データ、または、Smalltalk(登録商標)、C++などのオブジェクト指向プログラミング言語、および「C」プログラミング言語もしくは同様のプログラミング言語などの手続き型プログラミング言語を含む1つもしくは複数のプログラミング言語の任意の組合せで記述されたソース・コードまたはオブジェクト・コードであってよい。コンピュータ可読プログラム命令は、ユーザのコンピュータ上で全体的に実行すること、ユーザのコンピュータ上でスタンドアロン・ソフトウェア・パッケージとして部分的に実行すること、ユーザのコンピュータ上およびリモート・コンピュータ上でそれぞれ部分的に実行すること、またはリモート・コンピュータ上またはサーバ上で全体的に実行することができる。後者のシナリオでは、リモート・コンピュータは、ローカル・エリア・ネットワーク(LAN)または広域ネットワーク(WAN)を含む任意の種類のネットワークを介してユーザのコンピュータに接続されてよく、または接続は、(例えば、インターネット・サービス・プロバイダを使用してインターネットを介して)外部コンピュータに対して行われてよい。一部の実施形態では、本発明の態様を実行するために、例えばプログラマブル論理回路、フィールド・プログラマブル・ゲート・アレイ(FPGA)、またはプログラマブル・ロジック・アレイ(PLA)を含む電子回路は、コンピュータ可読プログラム命令の状態情報を利用することによって、電子回路をカスタマイズするためのコンピュータ可読プログラム命令を実行してよい。
【0093】
本発明の態様は、本明細書において、本発明の実施形態に従って、方法、装置(システム)、およびコンピュータ・プログラム製品のフローチャート図もしくはブロック図またはその両方を参照して説明される。フローチャート図もしくはブロック図またはその両方の各ブロック、ならびにフローチャート図もしくはブロック図またはその両方に含まれるブロックの組合せが、コンピュータ可読プログラム命令によって実装され得るということが理解されるであろう。
【0094】
これらのコンピュータ可読プログラム命令は、コンピュータまたは他のプログラム可能なデータ処理装置のプロセッサを介して実行される命令が、フローチャートもしくはブロック図またはその両方の1つまたは複数のブロックに指定される機能/動作を実施する手段を作り出すべく、汎用コンピュータ、専用コンピュータ、または他のプログラム可能なデータ処理装置のプロセッサに提供されてマシンを作り出すものであってよい。これらのコンピュータ可読プログラム命令は、命令が格納されたコンピュータ可読ストレージ媒体がフローチャートもしくはブロック図またはその両方の1つまたは複数のブロックに指定される機能/動作の態様を実施する命令を含む製品を備えるように、コンピュータ可読ストレージ媒体に格納され、コンピュータ、プログラム可能なデータ処理装置、もしくは他のデバイス、またはそれらの組合せに特定の方式で機能するように指示できるものであってもよい。
【0095】
コンピュータ可読プログラム命令は、コンピュータ上、他のプログラム可能な装置上、または他のデバイス上で実行される命令が、フローチャートもしくはブロック図またはその両方の1つまたは複数のブロックに指定される機能/動作を実施するように、コンピュータ、他のプログラム可能なデータ処理装置、または他のデバイスに読み込まれてもよく、それによって、一連の動作可能なステップを、コンピュータ上、他のプログラム可能な装置上、またはコンピュータ実装プロセスを生成する他のデバイス上で実行させる。
【0096】
図内のフローチャートおよびブロック図は、本発明のさまざまな実施形態に従って、システム、方法、およびコンピュータ・プログラム製品の可能な実装のアーキテクチャ、機能、および動作を示す。これに関連して、フローチャートまたはブロック図内の各ブロックは、規定された論理機能を実装するための1つまたは複数の実行可能な命令を備える、命令のモジュール、セグメント、または部分を表してよい。一部の代替の実装では、ブロックに示された機能は、図に示された順序とは異なる順序で発生してよい。例えば、連続して示された2つのブロックは、実際には、含まれている機能に応じて、実質的に同時に実行されるか、または場合によっては逆の順序で実行されてよい。ブロック図もしくはフローチャート図またはその両方の各ブロック、ならびにブロック図もしくはフローチャート図またはその両方に含まれるブロックの組合せは、規定された機能もしくは動作を実行するか、または専用ハードウェアとコンピュータ命令の組合せを実行する専用ハードウェアベースのシステムによって実装され得ることにも注意する。
【0097】
本発明のさまざまな実施形態の説明は、例示の目的で提示されているが、網羅的であることは意図されておらず、開示された実施形態に制限されない。説明された実施形態の範囲から逸脱しない多くの変更および変形が、当業者にとって明らかであろう。本明細書で使用された用語は、実施形態の原理、実際の適用、または市場で見られる技術を超える技術的改良を最も適切に説明するため、または他の当業者が本明細書に記載された実施形態を理解できるようにするために選択されている。
【手続補正書】
【提出日】2023-11-06
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
命令アドレスを有するサンプル・データを収集することであって、前記サンプル・データがニューラル・ネットワーク・モデルに関するものである、前記収集することと、
パフォーマンス・ホット・スポットである前記命令アドレス内の命令を決定することと、
リスト・ファイルを使用して、パフォーマンス・ホット・スポットである前記サンプル・データの前記命令を、より低いレベルの中間表現内の位置にマッピングすることと、
マッピング・ファイルを使用して、パフォーマンス・ホット・スポットである前記より低いレベルの中間表現の前記位置を、1つまたは複数のより高いレベルの表現内の動作にマッピングすることであって、前記動作のうちの1つまたは複数が、前記パフォーマンス・ホット・スポットに対応し、前記マッピング・ファイルが、前記ニューラル・ネットワーク・モデルをコンパイルすることから生成される、前記マッピングすることと
を含む、コンピュータ
により実行される方法。
【請求項2】
前記マッピング・ファイルを使用して、前記1つまたは複数のより高いレベルの表現内の前記動作を前記ニューラル・ネットワーク・モデル内のノードにマッピングすることをさらに含む、請求項1に記載の方法。
【請求項3】
前記サンプル・データからマッピングされた前記より低いレベルの中間表現からマッピングされた前記1つまたは複数のより高いレベルの表現からマッピングすることに基づいて、前記ニューラル・ネットワーク・モデル内のどのノードが前記パフォーマンス・ホット・スポットを表すかを決定することをさらに含む、請求項1
または2に記載の方法。
【請求項4】
前記マッピング・ファイルを使用して、前記ニューラル・ネットワーク・モデルのコンパイルの異なるレベルで前記パフォーマンス・ホット・スポットを分類することをさらに含み、前記異なるレベルは、前記より低いレベルの中間表現から前記1つまたは複数のより高いレベルの表現までを含む、請求項1
~3のいずれか1項に記載の方法。
【請求項5】
前記サンプル・データは、1つまたは複数のカウンタからの情報をさらに含む、請求項1
~4のいずれか1項に記載の方法。
【請求項6】
前記パフォーマンス・ホット・スポットは、1つまたは複数のしきい値を満たすかまたは超える、1つまたは複数のメトリックを含む、請求項1
~5のいずれか1項に記載の方法。
【請求項7】
前記パフォーマンス・ホット・スポットを最適化しそれによって前記パフォーマンス・ホット・スポットに対処する、前記1つまたは複数のより高いレベルの表現内の前記動作のうちの1つまたは複数を決定することをさらに含む、請求項1
~6のいずれか1項に記載の方法。
【請求項8】
コンピュータ可読命令を有するメモリと、
前記コンピュータ可読命令を実行するための1つまたは複数のプロセッサと
を備えているシステムであって、前記コンピュータ可読命令が、前記1つまたは複数のプロセッサを制御して、
命令アドレスを有するサンプル・データを収集することであって、前記サンプル・データがニューラル・ネットワーク・モデルに関するものである、前記収集することと、
パフォーマンス・ホット・スポットである前記命令アドレス内の命令を決定することと、
リスト・ファイルを使用して、パフォーマンス・ホット・スポットである前記サンプル・データの前記命令を、より低いレベルの中間表現内の位置にマッピングすることと、
マッピング・ファイルを使用して、前記より低いレベルの中間表現の前記位置を、1つまたは複数のより高いレベルの表現内の動作にマッピングすることであって、前記マッピング・ファイルが、前記ニューラル・ネットワーク・モデルをコンパイルすることから生成される、前記マッピングすることと
を含むプロセスを実行する、システム。
【請求項9】
プロセッサに、
命令アドレスを有するサンプル・データを収集することであって、前記サンプル・データがニューラル・ネットワーク・モデルに関するものである、前記収集することと、
パフォーマンス・ホット・スポットである前記命令アドレス内の命令を決定することと、
リスト・ファイルを使用して、パフォーマンス・ホット・スポットである前記サンプル・データの前記命令を、より低いレベルの中間表現内の位置にマッピングすることと、
マッピング・ファイルを使用して、前記より低いレベルの中間表現の前記位置を、1つまたは複数のより高いレベルの表現内の動作にマッピングすることであって、前記マッピング・ファイルが、前記ニューラル・ネットワーク・モデルをコンパイルすることから生成される、前記マッピングすることと
を含むプロセスを実行させる
ためのコンピュータ・プログラム。
【請求項10】
請求項9に記載のコンピュータ・プログラムを記録した、コンピュータ可読ストレージ媒体。
【国際調査報告】