(57)【要約】  機械学習モデルを更新して局所性を改善させるための方法、システム、および装置について説明する。一態様では、方法は、機械学習モデルのデータを受け付けるステップを含む。データは、機械学習モデルの作業、および当該作業間のデータ依存関係を表す。機械学習モデルが展開される機械学習プロセッサのメモリ階層の特性を指定するデータが受け付けられる。メモリ階層は、機械学習モデルを利用して機械学習の計算を行うときに機械学習プロセッサによって使われる機械学習データを格納するための複数のメモリを、複数のメモリレベルに含む。機械学習モデルの作業および制御依存関係を改良してメモリ階層の特性を考慮することによって、更新済み機械学習モデルが作成される。更新済みの機械学習モデルを利用して、機械学習の計算が行われる。
2021532437.tif 000002
【特許請求の範囲】
【請求項１】
データ処理装置によって実行される方法であって、
機械学習モデルのデータを受け付けるステップを含み、前記データは、前記機械学習モデルの作業および前記作業間のデータ依存関係を表し、前記方法は、さらに、
前記機械学習モデルが展開される機械学習プロセッサのメモリ階層の特性を指定するデータを受け付けるステップを含み、前記メモリ階層は、前記機械学習モデルを利用して機械学習の計算を行うときに前記機械学習プロセッサによって使われる機械学習データを格納するための複数のメモリを複数のメモリレベルに含み、前記特性は、各メモリのデータ記憶容量と、各メモリのメモリバンド幅とを含み、前記複数のメモリのうち少なくとも１つは、少なくとも１つのその他のメモリとは異なるメモリバンド幅を有し、前記方法は、さらに、
前記機械学習モデルの作業および制御依存関係を改良して前記メモリ階層の特性を考慮することによって、前記機械学習モデルのデータおよび前記メモリ階層の特性に基づいて更新済み機械学習モデルを作成するステップと、
前記更新済みの機械学習モデルを利用して機械学習の計算を行うステップとを含む、方法。
【請求項２】
前記機械学習モデルのデータは、前記機械学習モデルの作業と、前記作業間の制御依存関係と、前記作業間のデータ依存関係とを表すグラフを含む、請求項１に記載の方法。
【請求項３】
前記更新済みの機械学習モデルを作成するステップは、前記作業のうち少なくとも一部の作業について、前記作業の出力を格納するためのメモリを、前記出力が別の作業への入力としていつ使われるかに基づいて前記複数のメモリの中から選択するステップを含む、請求項１に記載の方法。
【請求項４】
前記更新済みの機械学習モデルを作成するステップは、
第１作業の出力データが第２作業によって入力としていつ使われるかに基づいて、前記第１作業の出力データが前記複数のメモリのうち第１メモリに格納されると判断するステップを含み、前記第１メモリは、前記複数のメモリのうち第２メモリよりも低いメモリバンド幅を有し、前記判断に応答して、
前記機械学習プロセッサに、前記第１作業によって前記出力データが生成された後に前記第１作業の出力データを前記第１メモリに格納させる第１制御データと、
前記機械学習プロセッサに、前記出力データが前記第２作業への入力として使われる前に前記出力データを前記第１メモリから前記第２メモリに転送させる第２制御データとを、
前記更新済みの機械学習モデルに含める、請求項１に記載の方法。
【請求項５】
前記第２制御データは、前記機械学習プロセッサに、前記第１作業および前記第２作業とは異なる第３作業が実行されることに応答して前記出力データを前記第１メモリから前記第２メモリに転送させる、請求項４に記載の方法。
【請求項６】
第１作業の出力データが第２作業によって入力としていつ使われるかに基づいて、前記第１作業の出力データが前記複数のメモリのうち第１メモリに格納されると判断するステップは、
（ｉ）前記第１作業と前記第２作業との間に実行される作業の数または（ｉｉ）前記第１作業が実行される時点から前記第２作業が実行される時点までの予想期間のうち、少なくとも１つに基づいて、前記第１作業の出力データが前記第１メモリに格納されると判断するステップを含む、請求項４に記載の方法。
【請求項７】
前記更新済みの機械学習モデルを作成するステップは、
前記機械学習モデルの特定の作業シーケンスのための入力データが前記複数のメモリのうち特定のメモリよりも多くのデータ記憶容量を必要とすると判断するステップを含み、前記判断に応答して、
前記特定の作業シーケンスと同じ作業シーケンスを含む複数の作業シーケンスと、
前記機械学習プロセッサに前記入力データを複数のデータ部分に分割させる第１制御データと、
前記機械学習プロセッサに各データ部分を前記複数の作業シーケンスの各作業シーケンスに割り当てさせる第２制御データと、
前記機械学習プロセッサに前記複数の作業シーケンスを連続して実行させる第３制御データとを、
前記更新済みの機械学習モデルに含める、請求項１に記載の方法。
【請求項８】
前記更新済みの機械学習モデルを作成するステップは、第２の機械学習モデルを利用して前記更新済みの機械学習モデルを前記機械学習モデルおよび前記メモリ階層の特性に基づいて作成するステップを含む、請求項１に記載の方法。
【請求項９】
システムであって、
データ処理装置と、
前記データ処理装置とデータ通信するメモリ記憶装置とを備え、前記メモリ記憶装置は、前記データ処理装置によって実行可能な命令を格納し、前記命令は、実行されると、前記データ処理装置に動作を実行させ、前記動作は、
機械学習モデルのデータを受け付けることを含み、前記データは、前記機械学習モデルの作業および前記作業間のデータ依存関係を表し、前記動作は、さらに、
前記機械学習モデルが展開される機械学習プロセッサのメモリ階層の特性を指定するデータを受け付けることを含み、前記メモリ階層は、前記機械学習モデルを利用して機械学習の計算を行うときに前記機械学習プロセッサによって使われる機械学習データを格納するための複数のメモリを複数のメモリレベルに含み、前記特性は、各メモリのデータ記憶容量と、各メモリのメモリバンド幅とを含み、前記複数のメモリのうち少なくとも１つは、少なくとも１つのその他のメモリとは異なるメモリバンド幅を有し、前記動作は、さらに、
前記機械学習モデルの作業および制御依存関係を改良して前記メモリ階層の特性を考慮することによって、前記機械学習モデルのデータおよび前記メモリ階層の特性に基づいて更新済み機械学習モデルを作成することと、
前記更新済みの機械学習モデルを利用して機械学習の計算を行うこととを含む、システム。
【請求項１０】
前記機械学習モデルのデータは、前記機械学習モデルの作業と、前記作業間の制御依存関係と、前記作業間のデータ依存関係とを表すグラフを含む、請求項９に記載のシステム。
【請求項１１】
前記更新済みの機械学習モデルを作成することは、前記作業のうち少なくとも一部の作業について、前記作業の出力を格納するためのメモリを、前記出力が別の作業への入力としていつ使われるかに基づいて前記複数のメモリの中から選択することを含む、請求項９に記載のシステム。
【請求項１２】
前記更新済みの機械学習モデルを作成することは、
第１作業の出力データが第２作業によって入力としていつ使われるかに基づいて、前記第１作業の出力データが前記複数のメモリのうち第１メモリに格納されると判断することを含み、前記第１メモリは、前記複数のメモリのうち第２メモリよりも低いメモリバンド幅を有し、前記判断に応答して、
前記機械学習プロセッサに、前記第１作業によって前記出力データが生成された後に前記第１作業の出力データを前記第１メモリに格納させる第１制御データと、
前記機械学習プロセッサに、前記出力データが前記第２作業への入力として使われる前に前記出力データを前記第１メモリから前記第２メモリに転送させる第２制御データとを、
前記更新済みの機械学習モデルに含める、請求項９に記載のシステム。
【請求項１３】
前記第２制御データは、前記機械学習プロセッサに、前記第１作業および前記第２作業とは異なる第３作業が実行されることに応答して前記出力データを前記第１メモリから前記第２メモリに転送させる、請求項１２に記載のシステム。
【請求項１４】
第１作業の出力データが第２作業によって入力としていつ使われるかに基づいて、前記第１作業の出力データが前記複数のメモリのうち第１メモリに格納されると判断することは、
（ｉ）前記第１作業と前記第２作業との間に実行される作業の数または（ｉｉ）前記第１作業が実行される時点から前記第２作業が実行される時点までの予想期間のうち、少なくとも１つに基づいて、前記第１作業の出力データが前記第１メモリに格納されると判断することを含む、請求項１２に記載のシステム。
【請求項１５】
前記更新済みの機械学習モデルを作成することは、
前記機械学習モデルの特定の作業シーケンスのための入力データが前記複数のメモリのうち特定のメモリよりも多くのデータ記憶容量を必要とすると判断することを含み、前記判断に応答して、
前記特定の作業シーケンスと同じ作業シーケンスを含む複数の作業シーケンスと、
前記機械学習プロセッサに前記入力データを複数のデータ部分に分割させる第１制御データと、
前記機械学習プロセッサに各データ部分を前記複数の作業シーケンスの各作業シーケンスに割り当てさせる第２制御データと、
前記機械学習プロセッサに前記複数の作業シーケンスを連続して実行させる第３制御データとを、
前記更新済みの機械学習モデルに含める、請求項９に記載のシステム。
【請求項１６】
前記更新済みの機械学習モデルを作成することは、第２の機械学習モデルを利用して前記更新済みの機械学習モデルを前記機械学習モデルおよび前記メモリ階層の特性に基づいて作成することを含む、請求項９に記載のシステム。
【請求項１７】
コンピュータプログラムが符号化されている非一時的なコンピュータ記憶媒体であって、前記プログラムは命令を含み、前記命令は、１つ以上のデータ処理装置によって実行されると、前記データ処理装置に動作を実行させ、前記動作は、
機械学習モデルのデータを受け付けることを含み、前記データは、前記機械学習モデルの作業および前記作業間のデータ依存関係を表し、前記動作は、さらに、
前記機械学習モデルが展開される機械学習プロセッサのメモリ階層の特性を指定するデータを受け付けることを含み、前記メモリ階層は、前記機械学習モデルを利用して機械学習の計算を行うときに前記機械学習プロセッサによって使われる機械学習データを格納するための複数のメモリを複数のメモリレベルに含み、前記特性は、各メモリのデータ記憶容量と、各メモリのメモリバンド幅とを含み、前記複数のメモリのうち少なくとも１つは、少なくとも１つのその他のメモリとは異なるメモリバンド幅を有し、前記動作は、さらに、
前記機械学習モデルの作業および制御依存関係を改良して前記メモリ階層の特性を考慮することによって、前記機械学習モデルのデータおよび前記メモリ階層の特性に基づいて更新済み機械学習モデルを作成することと、
前記更新済みの機械学習モデルを利用して機械学習の計算を行うこととを含む、非一時的なコンピュータ記憶媒体。
【請求項１８】
前記機械学習モデルのデータは、前記機械学習モデルの作業と、前記作業間の制御依存関係と、前記作業間のデータ依存関係とを表すグラフを含む、請求項１７に記載の非一時的なコンピュータ記憶媒体。
【請求項１９】
前記更新済みの機械学習モデルを作成することは、前記作業のうち少なくとも一部の作業について、前記作業の出力を格納するためのメモリを、前記出力が別の作業への入力としていつ使われるかに基づいて前記複数のメモリの中から選択することを含む、請求項１７に記載の非一時的なコンピュータ記憶媒体。
【請求項２０】
前記更新済みの機械学習モデルを作成することは、
第１作業の出力データが第２作業によって入力としていつ使われるかに基づいて、前記第１作業の出力データが前記複数のメモリのうち第１メモリに格納されると判断することを含み、前記第１メモリは、前記複数のメモリのうち第２メモリよりも低いメモリバンド幅を有し、前記判断に応答して、
前記機械学習プロセッサに、前記第１作業によって前記出力データが生成された後に前記第１作業の出力データを前記第１メモリに格納させる第１制御データと、
前記機械学習プロセッサに、前記出力データが前記第２作業への入力として使われる前に前記出力データを前記第１メモリから前記第２メモリに転送させる第２制御データとを、
前記更新済みの機械学習モデルに含める、請求項１７に記載の非一時的なコンピュータ記憶媒体。
【発明の詳細な説明】
【背景技術】
【０００１】
背景
本明細書は、一般に、メモリの特性に基づいて機械学習モデルを改良して局所性を改善させることに関する。
【０００２】
ニューラルネットワークは、モデルの１つ以上の層を用いて、受け付けた入力に対して出力（たとえば、分類）を生成する機械学習モデルである。外層に加えて、１つ以上の隠れ層を含むニューラルネットワークもある。各隠れ層の出力は、ネットワークの次の層、つまり、ネットワークの次の隠れ層または出力層への入力として使われる。ネットワークの各層は、各パラメータのセットの現在値に従って、受け付けた入力から出力を生成する。
【０００３】
ニューラルネットワークは、ノードおよびエッジを有するグラフとして表すことができる。ノードは、ゼロ個以上の入力およびゼロ個以上の出力を有し得る作業を表すことができる。エッジは、作業間のデータ依存関係および／または制御依存関係を表すことができる。機械学習プロセッサは、異なるデータ（通常、１度に１つの入力サンプルのバッチ）を用いてこのグラフを繰り返し実行することができる。各作業に対して、機械学習プロセッサは、メモリから入力データを取得し、出力データをメモリに格納する。
【発明の概要】
【０００４】
概要
本明細書は、機械学習モデルの局所性を改善させること、および改善したモデルを利用して機械学習の計算を行うことに関する技術について説明する。
【０００５】
一般に、本明細書で説明する主題の１つの革新的な態様は、機械学習モデルのデータを受け付けるステップを含む方法に含めることができる。このデータは、機械学習モデルの作業および当該作業間のデータ依存関係を表し得る。機械学習モデルが展開される機械学習プロセッサのメモリ階層の特性を指定するデータが受け付けられる。メモリ階層は、機械学習モデルを利用して機械学習の計算を行うときに機械学習プロセッサによって使われる機械学習データを格納するための複数のメモリを複数のメモリレベルに含み得る。特性は、各メモリのデータ記憶容量と、各メモリのメモリバンド幅とを含み得る。複数のメモリのうち少なくとも１つは、少なくとも１つのその他のメモリとは異なるメモリバンド幅を有し得る。機械学習モデルのデータおよびメモリ階層の特性に基づいて更新済み機械学習モデルが作成され得る。更新済みの機械学習モデルは、機械学習モデルの作業および制御依存関係を改良してメモリ階層の特性を考慮することによって作成され得る。更新済みの機械学習モデルを利用して機械学習の計算が実行され得る。
【０００６】
これらのおよびその他の実施態様は、各々、任意で下記の特徴のうち１つ以上を含み得る。いくつかの態様では、機械学習モデルのデータは、機械学習モデルの作業と、当該作業間の制御依存関係と、作業間のデータ依存関係とを表すグラフを含み得る。
【０００７】
いくつかの態様では、更新済みの機械学習モデルを作成するステップは、作業のうち少なくとも一部の作業について、作業の出力を格納するためのメモリを、出力が別の作業への入力としていつ使われるかに基づいて複数のメモリの中から選択するステップを含み得る。
【０００８】
いくつかの態様では、更新済みの機械学習モデルを作成するステップは、第１作業の出力データが第２作業によって入力としていつ使われるかに基づいて、第１作業の出力データが複数のメモリのうち第１メモリに格納されると判断するステップを含み得る。第１メモリは、複数のメモリのうち第２メモリよりも低いメモリバンド幅を有し得る。この判断に応答して、更新済みの機械学習モデルは、機械学習プロセッサに、第１作業によって出力データが生成された後に第１作業の出力データを第１メモリに格納させる第１制御データと、機械学習プロセッサに、出力データが第２作業への入力として使われる前に出力データを第１メモリから第２メモリに転送させる第２制御データとを含み得る。
【０００９】
いくつかの態様では、第２制御データは、機械学習プロセッサに、第３作業が実行されることに応答して出力データを第１メモリから第２メモリに転送させる。第３作業は、第１作業および第２作業とは異なり得る。第１作業の出力データが第２作業によって入力としていつ使われるかに基づいて、第１作業の出力データが複数のメモリのうち第１メモリに格納されると判断するステップは、（ｉ）第１作業と第２作業との間に実行される作業の数または（ｉｉ）第１作業が実行される時点から第２作業が実行される時点までの予想期間のうち、少なくとも１つに基づいて、第１作業の出力データが第１メモリに格納されると判断するステップを含み得る。
【００１０】
いくつかの態様では、更新済みの機械学習モデルを作成するステップは、機械学習モデルの特定の作業シーケンスのための入力データが複数のメモリのうち特定のメモリよりも多くのデータ記憶容量を必要とすると判断するステップを含み得る。これに応答して、更新済みの機械学習モデルは、特定の作業シーケンスと同じ作業シーケンスを含む複数の作業シーケンスと、機械学習プロセッサに入力データを複数のデータ部分に分割させる第１制御データと、機械学習プロセッサに各データ部分を複数の作業シーケンスの各作業シーケンスに割り当てさせる第２制御データと、機械学習プロセッサに複数の作業シーケンスを連続して実行させる第３制御データとを含み得る。
【００１１】
本明細書で説明する主題は、次の利点のうち１つ以上を実現するよう、特定の実施の形態で実現され得る。機械学習モデルは、データアクセスの局所性（たとえば、データ配置および／またはデータ移動における局所性）を改善させるために当該モデルが実装される機械学習プロセッサのメモリ階層の特性に基づいて改良され得、その結果、メモリバンド幅の改善（たとえば、データアクセスの高速化）およびメモリ利用の改善が得られる。このメモリバンド幅およびメモリ利用における改善により、機械学習プロセッサは、元の機械学習モデルを利用するよりも高速かつ効率的に機械学習の計算を行うことが可能になる。
【００１２】
機械学習モデルの作業、データ依存関係、および／または制御依存関係を、その他のデータよりも早く利用される作業からの出力データが当該その他のデータよりも高速なメモリ（たとえば、バンド幅が高いメモリ）に格納されるよう、更新することができる。また、別の作業への入力として使われるためにアクセスされる前により高速なメモリに当該その他のデータがプリフェッチされるよう、作業、データ依存関係、および制御依存関係を更新することができる。これにより、データがアクセスされる速度が改善され、たとえば、再利用されているデータの代わりに使用されていないデータを格納してより高速なメモリ空間を無駄にしないようにすることによって、当該より高速なメモリの利用が改善される。
【００１３】
メモリ階層の特性を指定するデータに基づいて機械学習モデルを更新することによって、様々な機械学習プロセッサまたは実行フレームワークのための機械学習モデルの実行が改善されるよう、機械学習モデルの局所性を様々なメモリ階層に適応させることができる。頻繁に使われるデータ（たとえば、重み）をオンチップまたはその他の高速アクセスメモリに格納することにより、機械学習の計算のためにこのようなデータをより高速にロードすることが可能になる。
【００１４】
この態様およびその他の態様のその他の実施態様は、コンピュータ記憶装置上に符号化された対応するシステム、方法、およびコンピュータプログラムを含む。システム、方法、およびコンピュータプログラムは、方法を実行するように構成される。１つ以上のコンピュータから構成されるシステムにインストールされたソフトウェア、ファームウェア、ハードウェア、またはそれらの組合せによって、当該システムをそのように構成することができる。ソフトウェア、ファームウェア、ハードウェア、またはそれらの組合せは、動作中、システムに動作を実行させるように構成される。データ処理装置によって実行されると当該装置に動作を実行させる命令を１つ以上のコンピュータプログラムが有することによって、当該１つ以上のコンピュータプログラムをそのように構成することができる。
【００１５】
本明細書において説明する主題の１つ以上の実施態様の詳細を、添付の図面および下記の説明において説明する。主題のその他の潜在的な特徴、態様、および利点は、説明、図面、および添付の特許請求の範囲から明らかになるであろう。
【図面の簡単な説明】
【００１６】
【図１】機械学習システムが機械学習モデルの局所性を改善し、改善した機械学習モデルを利用して機械学習の計算を行う例示的な環境のブロック図である。
【図２】機械学習プロセッサの例示的な実行フレームワークのブロック図である。
【図３】機械学習プロセッサの別の例示的な実行フレームワークのブロック図である。
【図４】機械学習プロセッサの別の例示的な実行フレームワークのブロック図である。
【図５】機械学習プロセッサの別の例示的な実行フレームワークのブロック図である。
【図６】機械学習プロセッサの別の例示的な実行フレームワークのブロック図である。
【図７】機械学習モデルの入力グラフ、および局所性が改善した更新済みのグラフを示す図である。
【図８】機械学習モデルの別の入力グラフ、および局所性が改善した別の更新済みのグラフを示す図である。
【図９】局所性が改善した更新済みの機械学習モデルを作成し、更新済みの機械学習モデルを利用して機械学習の計算を行うための例示的な処理を説明するフロー図である。
【発明を実施するための形態】
【００１７】
様々な図面における同じ参照番号および名称は、同じ要素を示す。
詳細な説明
一般に、本明細書において説明する主題は、更新済み機械学習モデルを作成して機械学習モデルが展開される機械学習プロセッサのメモリ階層の特性を考慮することに関する。機械学習モデルは、機械学習モデルの作業、データ依存関係、および／または制御依存関係を改良し、メモリ階層の特性に基づいて機械学習モデルのデータアクセスの局所性を改善させることによって更新され得る。たとえば、機械学習モデルを改良して、データ配置（たとえば、共通して利用されるデータをより高速なメモリに格納すること）および／またはデータ移動（たとえば、しばらくの間利用されることのないデータをより低速のメモリに格納し、利用される前により高速なメモリにプリフェッチすること）における局所性を改善させることができる。
【００１８】
ニューラルネットワークなど、機械学習モデルは、行列の演算および畳み込みなど、主要なカーネル動作を使った高い計算能力が求められ得る。これに加えて、ニューラルネットワークは、より深層かつより複雑に進化している。この増え続ける要求に応えるために、全結合層計算ユニット（たとえば、プロセッサコア）を有する新しいアクセラレータ（たとえば、機械学習プロセッサ）が導入されている。低いメモリバンド幅は、たとえば、アイドル状態の計算ユニットにメモリからのデータを待たせることによって計算ユニットの性能を限定し得る。本明細書において説明するニューラルネットワーク実行における局所性を改善させるためのハードウェアおよびソフトウェア技術は、メモリアクセス速度を向上させることができるので、計算ユニットが機械学習の計算を行う速度を上げることができる。
【００１９】
図１は、機械学習システム１２０が機械学習モデルの局所性を改善し、機械学習モデルを用いて機械学習の計算する例示的な環境１００のブロック図である。機械学習システム１２０は、ユーザデバイス１１０から機械学習モデル１１２（たとえば、ニューラルネットワークまたはその他の適切な機械学習モデル）のデータを受け付け、機械学習出力１１４（たとえば、機械学習モデルによって出力されるデータ）をユーザデバイス１１０に提供する１つ以上のフロントエンドサーバ１３０を備える。フロントエンドサーバ１３０は、ローカルエリアネットワーク（ＬＡＮ）、ワイドエリアネットワーク（ＷＡＮ）、インターネット、モバイルネットワーク、または、それらの組合せなど、ネットワーク１５０上でユーザデバイス１１０と通信を行うことができる。
【００２０】
機械学習モデル１１２のデータは、機械学習モデルの作業と、これらの作業間のデータ依存関係とを表すデータを含み得る。たとえば、機械学習モデルのデータは、作業を表すノードと、これらの作業間の制御依存関係（および／またはデータ依存関係）を表すエッジとを含むグラフを含み得る。データ依存関係を表すエッジは、作業が別の作業からのデータに依存していることを示す（たとえば、作業は、別の作業からの出力データを用いて機械学習の計算を実行する）。制御依存関係を表すエッジは、作業が別の作業の実行に依存していることを示す（たとえば、作業は、別の作業が実行されるまで実行されない）。これらの作業は、たとえば機械学習モデルによって推論を計算するために機械学習モデルによってフォワードパスを実行するために必要な作業であり得る。これらの作業は、たとえば、ニューラルネットワークの層によって実行される行列の演算作業および／または畳み込み演算を含み得る。別の例として、これらの作業は、機械学習モデルを訓練するための訓練プロセスのイテレーション（繰り返し）を実行するために必要な作業であり得る。これらの作業は、機械学習モデルによってフォワードパスを実行するために必要な作業と、機械学習モデルによってバックワードパスを実行するために必要な作業、つまり、機械学習モデルの重みまたはパラメータの勾配を判断するために必要な逆伝播作業とを含み得る。
【００２１】
機械学習システム１２０は、機械学習モデルの局所性を改善させ、モデルを訓練し、当該モデルを実行して（たとえば、入力データを分類するために）機械学習出力を判断することができる。機械学習システム１２０は、機械学習モデル改善モジュール１３１（説明が煩雑になるのを防ぐため、改善モジュール１３２とも称す）を備える。機械学習モデル改善モジュール１３１は、機械学習モデル１１２のデータを受け付け、改善した局所性（たとえば、改善したデータ再利用、データ配置における局所性、および／またはデータ移動における局所性）を用いて更新済み機械学習モデル１３２を作成する。改善モジュール１３１は、機械学習モデルが展開される機械学習プロセッサのメモリ階層の特性に基づいて当該機械学習モデルを更新し得る。すなわち、モデル改善モジュール１３１は、更新済みの機械学習モデル１３２が実行されることになる機械学習プロセッサのメモリ階層の局所性が改善された更新済み機械学習モデル１３２を作成する。本明細書において説明する技術を用いて、改善モジュール１３１は、ニューラルネットワーク、ならびに作業の集合および当該作業間の依存関係として表され得るその他の適切な機械学習モデルを更新することができる。
【００２２】
たとえば、機械学習システム１２０は、Ｎ個の機械学習プロセッサ１４０−１〜１４０−Ｎを備える。各機械学習プロセッサ１４０は、関連するメモリのメモリ階層を有し得る。これらのメモリは、機械学習プロセッサ１４０の機械学習データを格納するためのメモリである。各メモリ階層は、複数のメモリを複数のメモリレベルに含み得る。これらのメモリは、機械学習プロセッサ１４０が機械学習モデルを利用して機械学習の計算を行うときに利用する機械学習データを格納するように構成され得る。たとえば、機械学習データは、作業への入力（たとえば、入力テンソル）、作業からの出力（たとえば、出力テンソル）、これらの作業によって使われる重み、および／または、機械学習プロセッサ１４０が機械学習モデルを利用して機械学習の計算を行うときに利用するその他の適切なデータを含み得る。
【００２３】
メモリ階層の各レベルは、共通（または同様の）特性を有する１つ以上のメモリを含み得る。このメモリの特性は、メモリのデータ記憶容量と、メモリのメモリバンド幅とを含み得る。メモリバンド幅とは、プロセッサによってデータをメモリから読み出したり格納したりすることができる速度である。メモリバンド幅は、バイト／秒の単位（または、単位時間当たりのその他の適切なデータサイズ）で表され得る。各メモリの特性は、プロセッサ（たとえば、プロセッサコア）とメモリとの間のメモリチャネルの特性（直接であるか間接的であるか、共通であるか専用であるか、速度など）を含み得る。
【００２４】
メモリの特性は、レベルごとに異なり得る。たとえば、あるレベルのメモリは、その他のレベルよりも高速であり得る（たとえば、メモリバンド幅が高い）。しかしながら、その他のレベルは、最速メモリを有するあるレベルよりも多くのデータ記憶容量を有し得る。
【００２５】
機械学習プロセッサ１４０ごとのメモリ階層の特性を指定するデータがメモリ階層データ記憶部１３５に格納される。メモリ階層の特性は、メモリ階層の各メモリの特性を含み得る。局所性が改善した更新済みの機械学習モデルを作成するとき、改善モジュール１３１は、機械学習モデルが展開される機械学習プロセッサ１４０のメモリ階層の特性を指定するメモリ階層データ１３６を取得し得る。たとえば、機械学習モデルが機械学習プロセッサ１４０−１によって実行される場合、改善モジュール１３１は、機械学習プロセッサ１４０−１のメモリ階層の特性をメモリ階層データ記憶部１３５から取得し得る。
【００２６】
次に、改善モジュール１３１は、入力機械学習モデル１１２とメモリ階層データ１３６によって指定されたメモリ階層の特性とに基づいて、更新済みの機械学習モデル１３２を作成し得る。更新済みの機械学習モデル１３２は、入力機械学習モデル１１２と同じ機能（または同様の機能）を有し得る。すなわち、更新済みの機械学習モデル１３２は、入力機械学習モデルと同じまたは同様の（たとえば、しきい値許容誤差内の）精度および／または品質で同じタスクを実行する。たとえば、更新済みの機械学習モデル１３２は、入力機械学習モデル１１２と同じ種類の出力を生成し、両モデルが同じ入力データを提供された場合に入力機械学習モデル１１２が出力するであろうデータと同じ（または、しきい値許容誤差内で同様の）データを出力できる。しかしながら、更新済みの機械学習モデル１３２は、入力機械学習モデル１１２とは作業の順序が異なったり、作業間のデータ依存関係が異なったり、および／または作業間の制御依存関係が異なったりする場合がある。
【００２７】
機械学習モデルを実行するために必要な情報は、機械学習モデルから判断され得る。たとえば、上述したように、機械学習モデルを表すグラフは、作業を表すノードと、当該作業間のデータ依存関係および／または制御依存関係を表すエッジとを含み得る。グラフから、改善モジュール１３１は、各作業にどのようなデータが必要になるか、いつ作業が実行されるかを判断できる。この情報、各作業の入力ごとおよび出力ごとのデータのサイズ（たとえば、作業に対する入力テンソルのサイズに基づく）、ならびにメモリ階層の特性を用いて、改善モジュール１３１は、作業ごとに入力データおよび出力データをいつどこに格納するかを判断することができる。
【００２８】
たとえば、Ｌ１メモリと主メモリとを含むメモリ階層を考える。Ｌ１メモリは、主メモリよりも高速であるが、Ｌ１メモリのデータ記憶容量は２０メガバイト（ＭＢ）であり、主メモリのデータ記憶容量は１０ギガバイト（ＧＢ）である。作業Ａおよび作業Ｂの両方が２０ＭＢのデータを同時またはほぼ同時に出力するが、作業Ａによって出力されるデータが別の作業による入力としてすぐに使われる一方で、作業Ｂによって出力されるデータはいくつかのその他の作業が実行されるまで使われない場合、作業Ａによって出力されたデータは、Ｌ１メモリに格納され得、作業Ｂによって出力されたデータは、主メモリに格納され得る。次に、作業Ｂによって出力されたデータは、別の作業への入力として使われる前に主メモリからＬ１メモリにプリフェッチされ得る。この例では、更新済み機械学習モデルは、別の作業（たとえば、作業Ｃ）が完了したときに作業Ｂによって出力されたデータをプリフェッチさせる新しい作業（もしくはアノテーションまたはその他の命令もしくはコード）を含み得る。よって、更新済みの機械学習モデルは、作業Ｃが実行された後にプリフェッチ作業をトリガする作業Ｃとプリフェッチ作業との間の制御依存関係を含み得る。
【００２９】
改善モジュール１３１は、メモリ階層の様々なメモリのデータ容量が任意の時点で過度に利用されないように各更新済み機械学習モデル１３２を作成することができる。たとえば、入力機械学習モデル１１２のデータ（たとえば、モデルを表すグラフ）に基づいて、改善モジュール１３１は、各作業が入力データ（およびそのデータサイズ）を必要とするのがいつになるかを判断し、各メモリが容量以下になるようにメモリ間のデータを（たとえば、制御依存関係およびデータ依存関係、新しい作業、作業の順序、ならびに／またはアノテーションを用いて）スケジュール設定することができる。より高速なメモリが任意の時点で容量を超えると思われる場合、改善モジュール１３１は、より低速のメモリにそのときのデータのうちのいくつかを格納するようにスケジュール設定することができる。
【００３０】
改善モジュール１３１は、モデルの作業、モデルの制御依存関係、および／またはモデルのデータ依存関係を改良してメモリ階層の局所性を改善させることによって、入力機械学習モデル１１２についての更新済みの機械学習モデル１３２を作成することができる。作業を改良することは、メモリへのデータの格納をスケジュール設定する作業を追加することを含み得る。たとえば、改善モジュール１３１は、作業によって出力されたデータが、少なくともしきい値数の介在する作業には使われない、または少なくとも出力データが生成された後のしきい値時間使われない、と判断し得る。これに応答して、改善モジュール１３１は、より低速のメモリに出力データを転送させる第１作業と、別の作業によって入力として使われる前にこのデータをより高速なメモリに戻させる第２作業とを更新済みの機械学習モデル１３２に含め得る。また、改善モジュール１３１は、特定の作業が実行された後に機械学習プロセッサ１４０に第２作業を実行させる制御依存関係を、更新済みの機械学習モデル１３２に含め得る。改善モジュール１３１は、データのプリフェッチを生じさせる特定の作業を、当該特定の作業とこれからデータを使う作業との間にある作業数、および、当該作業が必要とする前に転送完了するようにより低速のメモリからより高速なメモリにデータを転送するために必要な予想時間に基づいて、選択し得る。
【００３１】
出力データがその他の作業によっていつ必要とされるかに加えて、記憶容量および当該その他の作業によって必要とされるデータ記憶量に基づいて、改善モジュール１３１は、出力データをより低速のメモリに格納すると判断し得る。たとえば、より高速なメモリがこのデータのすべてを格納できる十分なデータ容量を有する場合、改善モジュール１３１は、出力データをより高速なメモリに保持し得る。このように、特定の作業のためのデータをどこに格納するかについての判断は、そのときの総合データ記憶要件に基づき得る。
【００３２】
また、作業を改良することは、テンソルを複数のサブテンソルに分割するための作業を追加することと、１つ以上の作業の複数のイテレーションを含めることとを含み得る。たとえば、作業（または、作業シーケンス）に入力されるテンソルのサイズが大きすぎて、より高速なメモリに収まらない場合、改善モジュール１３１は、テンソルを複数のサブテンソルに分割して、各サブテンソルをより高速なメモリに収める作業を追加し得る。また、改善モジュール１３１は、分割作業の後、１つ以上の作業の複数のイテレーション（各サブテンソルにつき、１つのイテレーション）を含めることもできる。また、改善モジュール１３１は、各イテレーションの最後の作業から次のイテレーションの最初の作業に、最後のイテレーションまで制御を移す制御依存関係を含み得る。また、改善モジュール１３１は、各イテレーションによって出力されたサブテンソルを、元の入力テンソル上の元の１つ以上の作業の出力を表す出力テンソルにマージする結合（ｃｏｎｃａｔ）作業を含めることもできる。作業シーケンスの複数のイテレーションを用いたこの分割およびマージの例については、図８に示されており、以下に説明する。
【００３３】
いくつかの実施態様では、改善モジュール１３１は、アノテーション、命令、および／または、作業によって出力されたデータを機械学習モデルに適切なメモリに格納させるその他の制御データを追加することによって、更新済み機械学習モデル１３２を作成する。たとえば、更新済み機械学習モデル１３１は、１つの作業（たとえば、作業Ａ）から別の作業（たとえば、作業Ｂ）へのエッジごとに、作業Ｂによって使われることになる作業Ａの出力をどのメモリに格納するかを指定するアノテーションを含み得る。また、アノテーションは、より低速のメモリからより高速なメモリにデータをプリフェッチするために利用され得る。たとえば、アノテーションは、別の作業のためのデータのプリフェッチをトリガするための特定の作業において含まれ得る。
【００３４】
各アノテーションは、作業またはエッジに対応付けられ（たとえば、割り当てられ）得る。機械学習プロセッサ１４０は、作業またはエッジごとのアノテーションを、作業の実行時または制御もしくはデータをエッジに基づいて転送するときに読み出すように構成され得る。次に、機械学習プロセッサ１４０は、アノテーションに基づいて適切な作業を行い得る（たとえば、適切なメモリにデータを格納する、データ転送を開始する、制御を別の作業に移すなど）。
【００３５】
改善モジュール１３１は、ルールセット、１つ以上の機械学習モデル、機械学習モデルのシミュレーション（複数可）、および／またはその他の適切な技術を用いた入力機械学習モデル１３１に基づいて、更新済み機械学習モデル１３２を作成し得る。ルールセットは、入力機械学習モデル１１２におけるデータ再利用パターンに基づいて改善モジュール１３１がどのようにモデル１１２を改良するかを指定するルールを含み得る。たとえば、あるルールは、より高速なメモリの容量が２つの作業の出力を格納できない場合に、別の作業によって最初に使われるデータをより高速なメモリに格納し、のちに使われるデータをより低速のメモリに格納するように改善モジュール１３１が入力機械学習モデル１３１を改良すると指定し得る。また、このルールは、のちに使われるデータが別の作業によって入力として使われる前により高速なメモリに格納されるよう、適切なタイミングで当該データをプリフェッチさせる制御データ（たとえば、作業またはアノテーション）を改善モジュール１３１が含むと指定し得る。
【００３６】
また、ルールセットは、より高速なメモリに格納するための優先度をデータ間で指定し得る。たとえば、その他のデータよりも先に使われると思われるデータは、のちに使われるデータよりも高い優先度を有し得る。同様に、コア間で共有されるメモリに対して、当該コア間で共有されると思われるデータは、その他のデータよりも高い優先度を有し得る。
【００３７】
また、より高速なメモリの容量がいつ超過するか、および／またはある作業によって出力データが出力される時刻と別の作業によって当該データが使われる時刻との間の期間もしくは作業数を判断するためにモデルが実行される機械学習プロセッサ１４０のメモリ階層を用いて、改善モジュール１３１は機械学習モデルの実行のシミュレーションを行うことができる。改善モジュール１３１は、このデータを用いて、より低速のメモリにデータをいつ格納するか、より低速のメモリにどのデータを格納するべきか（たとえば、先に使われるデータではなく、のちに使われるデータ）、および／または、データをいつプリフェッチするかを判断することができる。次に、改善モジュール１３１は、このデータを（たとえば、ルールセットと組合せて）用いて入力機械学習モデル１１２を改良し、更新済みの機械学習モデル１３２を作成し得る。
【００３８】
改善モジュール１３１は、メモリ管理技術（たとえば、ソフトウェアまたはグラフ変換管理技術）を用いて、どのデータをどのメモリに格納するかを判断し、これに応じて機械学習モデルを更新し、機械学習データの格納をスケジュール設定し得る。たとえば、改善モジュール１３１は、Ｂｅｌａｄｙのアルゴリズムなど、ページ置き換え技術を利用して、より高速なメモリに任意の時点でどのデータを格納するべきか、および、より高速なメモリからより低速のメモリにどのデータを移動してその他のデータのために空きを作るべきかを判断し得る。このような技術、およびモデルのデータ再利用パターンを表す機械学習モデルのデータ（たとえば、機械学習モデルのグラフ）を利用して、改善モジュール１３１は、モデルの実行中にどのメモリに任意の時点でどのデータを格納するべきかを判断し得る。たとえば、Ｂｅｌａｄｙのアルゴリズムでは、最も長い間使われることになるデータは、それよりも早く使われるその他のデータがより高速なメモリに格納されるよう、より高速なメモリからより低速のメモリに移動され得る。各作業によって出力されたデータが次にいつ使われるかを改善モジュール１３１が判断できると、改善モジュール１３１は、メモリ管理技術を利用して、各作業によって出力されたデータをどこに格納するかを判断し、機械学習モデルによって出力されるデータが適切なメモリに格納されるように機械学習モデルを更新することができる。
【００３９】
通常のハードウェア管理されるキャッシュでは、Ｂｅｌａｄｙのアルゴリズムの利用は可能ではない。しかしながら、ニューラルネットワークと、グラフで表すことのできるその他の機械学習モデルとの今後のデータアクセスパターンは知られているので、どのデータをより高速なメモリから移動するかをＢｅｌａｄｙのアルゴリズムを用いて選択することができる。
【００４０】
また、改善モジュール１３１は、入力機械学習モデル１１２およびメモリ階層の特性に基づいて、更新済み機械学習モデル１３２を作成するように機械学習モデルを訓練することができる。たとえば、改善モジュール１３１は、強化学習技術を利用して、機械学習モデルを高速化する方法を学習することができる。ある特定の例では、改善モジュール１３１は、機械学習モデルを利用して入力機械学習モデル１１２を実行し、入力機械学習モデル１１２の性能を測定することができる。次に、機械学習モデルは、グラフ変換を入力機械学習モデル１１２のグラフに適用して更新済み機械学習モデルを作成することができる。次に、機械学習モデルは、更新モデルの性能を測定して、性能が最も良い更新モデルを特定することができる。
【００４１】
また、改善モジュール１３１は、更新済み機械学習モデル１３２または機械学習モデル１３２を実行するために機械学習プロセッサ１４０によって用いられるその他のコードに、頻繁に使われる（たとえば、少なくともしきい値数の作業によって使われる）データをより高速なメモリ（たとえば、オンチップメモリ）に機械学習プロセッサ１４０に保持させるデータを含み得る。たとえば、改善モジュール１３１は、機械学習プロセッサ１４０に機械学習の計算において使われる重みをオンチップメモリに保持させるデータを、更新済みの機械学習モデル１３２に含め得る。これにより、このようなデータを計算ユニット（たとえば、コア）により速くロードすることが可能になる。
【００４２】
同じチップ上の複数のコアが同じデータを使う場合、改善モジュール１３１は、機械学習プロセッサ１４０にデータをオンチップメモリに保持させるデータを、更新済みの機械学習モデル（またはその他のコード）に含め得る。これにより、コアの各々によるこのようなデータのロードを高速化させることが可能になる。また、これにより、チップ内の複数のコア間で機械学習モデルを分割できるようになる。たとえば、コアは、オンチップメモリを通して互いに通信を行うことができる。
【００４３】
メモリ階層の各メモリは、アドレス指定可能な名前空間または名前付けされた記憶装置としてソフトウェア（たとえば、機械学習モデルを実行するためのソフトウェア）に公開され得る。作業によって出力されたデータを格納するメモリがどれであるかを機械学習プロセッサ１４０に教えるために、更新済みの機械学習モデル１３２は、少なくとも作業のうちのいくつかについて、適切な名前空間または記憶装置を指定することができる。このデータを使って、ソフトウェアはデータを適切なメモリに格納することができる。
【００４４】
図２〜図６は、機械学習モデルを利用して機械学習の計算を行うために機械学習プロセッサによって利用され得るメモリのメモリ階層例を含むいくつかの例示的な実行フレームワークを示す図である。上述したように、機械学習モデルを利用して機械学習の計算を行うときに機械学習プロセッサによって使われる機械学習データを格納するために利用されるメモリ階層の特性を指定するデータに基づいて、（たとえば、データ配置および／またはデータ移動における局所性を改善させるために）機械学習モデルを更新することができる。図２〜図６に示すメモリ階層は、例であって、本明細書に記載の機械学習モデルを改良するための技術は、その他のメモリ階層にも適用可能である。
【００４５】
例示的な実行フレームワークにおいて使われ得る例示的な機械学習プロセッサは、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）、ＧＰＵ（Ｇｒａｐｈｉｃｓ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）および／またはＴＰＵ（Ｔｅｎｓｏｒ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）を含む。たとえば、実行フレームワークは、１つ以上のＮＶＩＤＩＡ  ＫＥＰＬＥＲ  Ｋ４０  ＧＰＵアクセラレータ、１つ以上のＮＶＩＤＩＡ  ＰＡＳＣＡＬ  Ｐ１００  ＧＰＵ、および／もしくは１つ以上のＮＩＶＤＩＡ  ＶＯＬＴＡ  Ｖ１００  Ｔｅｎｓｏｒ  Ｃｏｒｅ  ＧＰＵ、ならびに／または、機械学習の計算を行うことが可能なその他の適切なプロセッサを含み得る。機械学習プロセッサは、ソフトウェア、たとえば、機械学習モデルを実行するソフトウェアに公開される、アドレス指定可能な名前空間である高速オンチップメモリを有するＴＰＵであり得る。
【００４６】
図２は、機械学習プロセッサ２０１のための例示的な実行フレームワーク２００のブロック図である。実行フレームワーク２００は、２つのレベルのメモリ、Ｌ１メモリ２０３および主メモリ２０４を含む例示的なメモリ階層２３０を含む。Ｌ１メモリ２０３は、機械学習プロセッサ２０１のプロセッサコア２０２とともに機械学習プロセッサのチップ（たとえば、集積回路）上に集積されるオンチップメモリである。コア２０２は、１つ以上の機械学習モデルを利用して機械学習の計算を行うように構成されたチップの個々のプロセッサである。いくつかのチップは、後述する複数のコアを含む。
【００４７】
主メモリ２０４は、コア２０２およびＬ１メモリ２０３とともにチップ上に集積されないオフチップメモリであり得る。よって、主メモリ２０４は、Ｌ１メモリ２０３よりも容量が大きくてもよい（たとえば、記憶容量が大きい）。Ｌ１メモリ２０３がオンチップであるため、Ｌ１メモリ２０３は、主メモリ２０４よりもかなり高いバンド幅を有し得る。しかしながら、Ｌ１メモリ２０３のサイズが限定されているため、機械学習データによっては、コア２０２によって使われるまで主メモリ２０４に格納されるデータもある。いくつかの実施態様では、Ｌ１メモリ２０３は、ＳＲＡＭ（Ｓｔａｔｉｃ  Ｒａｎｄｏｍ−Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）であり、主メモリ２０４は、ＤＲＡＭ（Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ−Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）である。
【００４８】
この例では、コア２０２は、メモリチャネル２１１および２１２のそれぞれによって主メモリ２０４およびＬ１メモリ２０３の両方に直接アクセスすることができる。また、コア２０２は、メモリチャネル２１２および２１３を用いるＬ１メモリ２０３を通して主メモリ２０４に間接的にアクセスすることができる。たとえば、この間接的なアクセスは、コア２０２がアクセスするためにデータを主メモリ２０４からＬ１メモリ２０３に移動させることによって達成されてもよい。メモリ間でのデータ移動は、たとえば、ＤＭＡ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）を利用してバックグラウンドで行われ得る。その他の例では、コア２０２が主メモリに間接的にのみアクセスする必要があるメモリチャネル２１１は、含まれなくてもよい。
【００４９】
図３は、機械学習プロセッサ３０１のための別の例示的な実行フレームワーク３００のブロック図である。この例では、実行フレームワーク３００は、３つのレベルのメモリ、Ｌ１メモリ３０３、Ｌ２メモリ３０４、および主メモリ３０５を含むメモリ階層３３０を含む。Ｌ１メモリ３０３およびＬ２メモリ３０４は、コア３０２とともにチップ上に集積されたオンチップメモリであり得る。別の例では、Ｌ１メモリ３０３はオンチップメモリであり得、Ｌ２メモリ３０４はオフチップメモリであるが緊密に当該チップに統合されている（たとえば、３Ｄ積層またはその他の適切な高速チップ接続技術）。主メモリ３０５は、コア３０２とともにチップ上に集積されていないオフチップメモリであるが、緊密に当該チップに統合されている。
【００５０】
Ｌ１メモリ３０３は、メモリ３０３〜３０５の中でバンド幅が最も高いが、メモリ３０３〜３０５の中で記憶容量が最小であり得る。Ｌ２メモリ３０４のバンド幅は、Ｌ１メモリ３０３のバンド幅よりも低いが、主メモリ３０５のバンド幅よりも高くてもよい。主メモリ３０５は、３つのメモリ３０３〜３０５の中で記憶容量が最大であり得る。いくつかの実施態様では、Ｌ１メモリ３０３およびＬ２メモリ３０４は、ＳＲＡＭであり、主メモリ３０５は、ＤＲＡＭである。別の例では、Ｌ１メモリ３０３がＳＲＡＭであり、Ｌ２メモリ３０４および主メモリ３０５がＤＲＡＭである。
【００５１】
この例では、Ｌ１メモリ３０３またはＬ２メモリ３０４に収めることができない大容量データは、主メモリ３０５に格納され得る。これに加えて、しばらくの間（たとえば、少なくともしきい値時間またはしきい値数の作業の間）利用されないとおもわれるデータは、主メモリ３０５に格納され、利用される前にＬ２メモリ３０４のＬ１メモリ３０３にプリフェッチされ得る。上述したように、メモリ３０３〜３０５間のデータ移動は、たとえば、ＤＭＡを利用してバックグラウンドで行われ得る。
【００５２】
コア３０２は、メモリチャネル３１１、３１２、および３１３のそれぞれによって主メモリ３０５、Ｌ２メモリ３０４、およびＬ１メモリ３０３に直接アクセスすることができる。また、コア３０２は、メモリチャネル３１２および３１５を用いるＬ２メモリ３０４を通して、またはメモリチャネル３１３、３１４、および３１５を用いるＬ１メモリおよびＬ２メモリを通して主メモリ３０５に間接的にアクセスすることができる。上述したように、間接的なアクセスには、メモリ間のデータ移動が伴い得る。同様に、コア３０２は、メモリチャネル３１３および３１４を用いるＬ１メモリ３０３を通してＬ２メモリ３０４に間接的にアクセスすることができる。Ｌ１メモリ３０３およびＬ２メモリ３０４を迂回するメモリチャネル３１１は、より小さくかつ頻繁にアクセスされるデータが上書きされずに主メモリ３０５から依然として高速アクセス可能になるよう、有用であり得る。
【００５３】
その他の例では、メモリ階層３３０は、Ｌ１メモリ３０３と主メモリ３０５との間に直接メモリチャネルを含み得、コア３０２が、Ｌ２メモリ３０４を通さずにＬ１メモリ３０３を介して主メモリ３０５にアクセスできるようにする。別の例では、Ｌ１メモリ３０３およびＬ２メモリ３０４は、主メモリ３０５とのメモリチャネルを共有し得る。
【００５４】
図２および図３の機械学習プロセッサ２０１および３０１は、同じ（または、異なるメモリ階層）を有する複数のコアを備え得る。たとえば、機械学習プロセッサ２０１は、２つのコアを有し得る。当該２つのコアは、各々がそれぞれのＬ１メモリを有し、かつ共有主メモリへのアクセスを有する。別の例では、機械学習プロセッサ３０１は、同じＬ１、Ｌ２、および主メモリを共有する３つのコアを含み得る。
【００５５】
図４は、機械学習プロセッサ４０１のための別の例示的な実行フレームワーク４００のブロック図である。例示的な機械学習プロセッサ４０１は、２つのコア４０２および４１２を含む。この例では、実行フレームワーク４００は、専用Ｌ１メモリ、専用Ｌ２メモリ、および専用主メモリを含む別個のメモリ階層を含んだメモリ階層４３０を各コア４０２および４１２に対して含む。たとえば、コア４０２は、そのＬ１メモリ４０４にメモリチャネル４２１を通して直接アクセスすることができる。また、コア４０２は、そのＬ２メモリ４０６にＬ１メモリ４０４およびメモリチャネル４２２を通して間接的にアクセスすることができ、その主メモリ４０８にメモリチャネル４２３を通してさらにアクセスすることができる。また、メモリ階層４３０は、コア４０２とＬ２メモリ４０６との間、および／またはコア４０２と主メモリ４０８との間に直接メモリチャネルを含むことができる。
【００５６】
Ｌ１メモリ４０４は、メモリ４０４、４０６、および４０８の中でバンド幅が最も高いが、メモリ４０４、４０６、および４０８の中で記憶容量が最小であり得る。Ｌ２メモリ４０６は、Ｌ１メモリ４０４のバンド幅よりも低いが、主メモリ４０８のバンド幅よりも高くてもよい。主メモリ４０８は、３つのメモリ４０４、４０６、および４０８の中で記憶容量が最大であり得る。たとえば、Ｌ１メモリ４０４はオンチップメモリであり得、Ｌ２メモリ４０６は、オンチップメモリであり得るまたはオフチップメモリであるが緊密に当該チップに統合され得、主メモリ４０８は、オフチップメモリであり得る。
【００５７】
同様に、コア４１２は、そのＬ１メモリ４１４にメモリチャネル４２４を通して直接アクセスすることができる。また、コア４１２は、そのＬ２メモリ４１６にＬ１メモリ４１４およびメモリチャネル４２５を通して間接的にアクセスすることができ、共有主メモリ４１８にメモリチャネル４２６を通してさらにアクセスすることができる。また、メモリ階層４３０は、コア４１２とＬ２メモリ４１６との間、および／またはコア４１２と主メモリ４１８との間に直接メモリチャネルを含むことができる。
【００５８】
Ｌ１メモリ４１４は、メモリ４１４、４１６、および４１８の中でバンド幅が最も高いが、メモリ４１４、４１６、および４１８の中で記憶容量が最小であり得る。Ｌ２メモリ４１６は、Ｌ１メモリ４１４のバンド幅よりも低いが、主メモリ４１８のバンド幅よりも高くてもよい。主メモリ４１８は、３つのメモリ４１４、４１６、および４１８の中で記憶容量が最大であり得る。たとえば、Ｌ１メモリ４１４は、オンチップメモリであり得、Ｌ２メモリ４１６は、オンチップメモリであり得るまたはオフチップメモリであるが緊密に当該チップに統合され得、主メモリ４１８は、オフチップメモリであり得る。
【００５９】
いくつかの実施態様では、Ｌ１メモリ４０４および４１４ならびにＬ２メモリ４０６および４１６は、ＳＲＡＭであり、主メモリ４０８および４１８は、ＤＲＡＭである。別の例では、Ｌ１メモリ４０４および４１４は、ＳＲＡＭであり、Ｌ２メモリ４０６および４１６ならびに主メモリ４０８および４１８は、ＤＲＡＭである。
【００６０】
例示的な機械学習プロセッサ４０１は、別個のメモリ階層を有する２つのコア４０２および４１２を備えているが、機械学習プロセッサ４０１は、各自のメモリ階層を各々が有するその他の適切な量のコア（たとえば、４つ、８つなど）を備え得る。メモリのうちのいくつかは、コア間で共有され得る。たとえば、専用Ｌ２メモリと主メモリとを有するのではなく、図５に示したようにこれらのメモリを共有することができる。
【００６１】
図５は、機械学習プロセッサ５０１の別の例示的な実行フレームワーク５００のブロック図である。例示的な機械学習プロセッサ５０１は、２つのコア５０２および５１２を備える。この例では、実行フレームワーク５００は、専用Ｌ１メモリおよび共有Ｌ２ならびに主メモリを含む別個のメモリ階層を含むメモリ階層５３０を各コア５０２および５１２に対して含む。たとえば、コア５０２は、そのＬ１メモリ５０４にメモリチャネル５２１を通して直接アクセスすることができる。また、コア５０２は、共有Ｌ２メモリ５１６にＬ１メモリ５０４およびメモリチャネル５２２を通して間接的にアクセスすることができ、共有主メモリ５２０に共有メモリチャネル５２３を通してさらにアクセスすることができる。また、メモリ階層５３０は、コア５０２とＬ２メモリ５１６との間、および／またはコア５０２と主メモリ５２０との間に直接メモリチャネルを含むことができる。
【００６２】
同様に、コア５１２は、そのＬ１メモリ５１４にメモリチャネル５２４を通して直接アクセスすることができる。また、コア５１２は、共有Ｌ２メモリ５１６にＬ１メモリ５１４およびメモリチャネル５２６を通して間接的にアクセスすることができ、共有主メモリ５２０に共有メモリチャネル５２３を通してさらにアクセスすることができる。また、メモリ階層５３０は、コア５１２とＬ２メモリ５１６との間、および／またはコア５１２と主メモリ５２０との間に直接メモリチャネルを含むことができる。
【００６３】
Ｌ１メモリ５０４および５１４は、Ｌ２メモリ５１６および主メモリ５２０よりも高いバンド幅を有し得る。しかしながら、Ｌ１メモリ５０４および５１４は、Ｌ２メモリ５１６および主メモリ５２０よりも小さい記憶容量を有し得る。Ｌ２メモリ５１６は、Ｌ１メモリ５０４および５１４のバンド幅よりも低いが主メモリ５２０のバンド幅よりも高いバンド幅を有し得る。主メモリ５２０は、メモリ５０４、５１４、５１６、および５２０の中で最も高い記憶容量を有し得る。たとえば、Ｌ１メモリ５０４および５１４はオンチップメモリであり得、Ｌ２メモリ５１６は、オンチップメモリであり得るまたはオフチップメモリであるが緊密に当該チップに統合され得、主メモリ５２０は、オフチップメモリであり得る。
【００６４】
いくつかの実施態様では、Ｌ１メモリ５０４および５１４、ならびにＬ２メモリ５１６は、ＳＲＡＭであり、主メモリ５２０は、ＤＲＡＭである。別の例では、Ｌ１メモリ５０４および５１４は、ＳＲＡＭであり、Ｌ２メモリ５１６および主メモリ５２０は、ＤＲＡＭである。
【００６５】
この例では、Ｌ２メモリ５１６および主メモリ５２０は、コア５０２および５１２によって共有される。両方のコア５０２および５１２によって使われる機械学習データは、Ｌ２メモリ５１６および／または主メモリ５２０に格納され得る。たとえば、両方のコア５０２および５１２によって使われる重みまたはバイアス値は、Ｌ２メモリ５１６および／または主メモリ５２０に格納され得る。また、コア５０２および５１２は、その他の機械学習データ（たとえば、作業の出力）をＬ２メモリ５１６および／または主メモリ５２０に格納することによって、当該データを互いに共有することができる。
【００６６】
例示的な機械学習プロセッサ５０１は、別個のメモリまたは共有メモリを有する２つのコア５０２および５１２を備えているが、機械学習プロセッサ５０１は、各自のメモリ階層を各々が有するその他の適切な量のコア（たとえば、４つ、８つなど）を備え得る。たとえば、機械学習プロセッサは、４つのコアを備え得る。当該４つのコアは、各々がそれぞれのＬ１メモリを有するが、共通のＬ２メモリおよび主メモリを共有する。
【００６７】
図６は、機械学習プロセッサ６０１のための別の例示的な実行フレームワーク６００のブロック図である。例示的な機械学習プロセッサ６０１は、Ｌ１メモリ６１０と主メモリ６２０とを含む共通のメモリ階層６３０を共有する４つのコア６０２〜６０５を備える。また、図示しないが、４つのコア６０２〜６０５は、Ｌ２メモリおよび／またはその他のメモリを共有してもよい。
【００６８】
この例では、各コア６０２〜６０５は、Ｌ１メモリ６１０にアクセスするための個々のメモリチャネル６２１〜６２４を有する。コア６０２〜６０５は、主メモリ６２０へのメモリチャネル６２５を共有する。その他の例では、各コア６０２〜６０５は、主メモリ６２０への専用のメモリチャネルおよび／またはＬ１メモリ６１０への共有チャネルを有し得る。
【００６９】
Ｌ１メモリ６１０は、主メモリ６２０よりも高いバンド幅を有し得るが、主メモリ６２０よりも小さい記憶容量を有し得る。たとえば、Ｌ１メモリ６１０は、オンチップメモリであり得るが、主メモリ６２０は、オフチップメモリであり得る。いくつかの実施態様では、Ｌ１メモリ６０１は、ＳＲＡＭであり、主メモリ６２０は、ＤＲＡＭである。
【００７０】
図７は、機械学習モデルの入力グラフ７１０と、入力グラフ７１０と比較して局所性が改善された更新済みグラフ７２０とを示す図７００である。入力グラフ７１０は、（ノードによって表される）作業、および（ノード間のエッジによって表される）制御依存関係ならびにデータ依存関係を含んだより大きなグラフの一部である。入力グラフ７１０は、エッジ（矢印）が間にある作業Ｃ〜Ｉを含む。エッジは、作業間の制御依存関係および／またはデータ依存関係を表す。たとえば、作業Ｃは、入力データＡと入力データＢとを使う。入力データＡおよび／または入力データＢは、機械学習モデルに入力される機械学習データ、または図７に示していない別の作業によって出力される機械学習データデあり得る。この例では、作業Ｃは、機械学習の計算を行う際に入力データＡおよび入力データＢを用いてもよい。
【００７１】
入力グラフ７１０は、入力データＡと作業Ｃとの間にエッジ７１１を含み、入力データＢと作業Ｃとの間にエッジ７１２を含む。これらのエッジ７１１および７１２は、作業Ｃのデータ依存関係を表す。すなわち、作業Ｃは、入力データＡおよび入力データＢに依存している。同様に、作業Ｄ、作業Ｅ、および作業Ｉは、エッジ７１３、７１４、および７１５によってそれぞれ表されるように、最初に実行される作業Ｃに依存している。この例では、作業Ｄ、作業Ｅ、および作業Ｉは、作業Ｃによって出力されるデータを用いて機械学習の計算を実行する。よって、エッジ７１３は、作業Ｃと作業Ｄとの制御依存関係およびデータ依存関係を表している。同様に、エッジ７１４および７１５は、作業Ｃと作業Ｅとの間、および作業Ｃと作業Ｉとの間の制御依存関係およびデータ依存関係をそれぞれ表す。
【００７２】
グラフ７１０によって表される機械学習モデルを機械学習プロセッサが実行するとき、エッジは、機械学習プロセッサに、エッジの方向に基づいて作業から作業へ順番に遷移させる。たとえば、エッジ７１１は、入力データＡが利用可能になった後に機械学習プロセッサに作業Ｃを実行させる。しかしながら、エッジ７１２は、入力データＢも利用可能になるまで作業Ｃを実行しない必要がある。これは、これらのエッジのデータ依存関係を表している。同様に、エッジ７１３は、作業Ｃが実行された後に機械学習プロセッサに作業Ｄを実行させる。エッジ７１５および７１６は、作業Ｃおよび作業Ｈの両方が実行された後に機械学習プロセッサに作業Ｉを実行させる。
【００７３】
更新済みグラフ７２０は、入力グラフ７１０と比較して、更新されている。改善モジュール、たとえば、図１の改善モジュール１３１は、機械学習モデルが展開される機械学習プロセッサのメモリ階層の特性に基づいて更新済みグラフ７２０を作成し得る。この例では、メモリ階層は、Ｌ１メモリ７２２と、Ｌ２メモリ７２４とを含む。Ｌ１メモリは、Ｌ２メモリよりも高速であり得るが、Ｌ２メモリよりもデータ記憶容量が小さい。
【００７４】
改善モジュールは、入力グラフ７１０に基づいて、作業によって出力される機械学習データの再利用パターンを判断し、入力グラフ７１０を改良して再利用パターンおよびメモリ階層の特性に基づいた更新済みグラフ７２０を生成し得る。たとえば、改善モジュールは、各作業によって出力される出力データのセットごとに、データが再び使われる前に実行される作業の数（および／または予想される経過時間）を判断し得る。改善モジュールは、各作業がいつ実行されるか、データが使われる前の作業の数（および／または時間）、およびメモリの記憶容量に基づいて、データをどのメモリに格納するか、およびデータをより高速なメモリにいつプリフェッチするかを判断し得る。
【００７５】
更新済みグラフ７２０は、異なる制御依存関係およびデータ依存関係と、作業の出力をどのメモリに格納するかを指定するデータとを含む。たとえば、更新済みグラフ７２０は、入力データＡおよびＢがＬ２メモリ７２４に格納されていることを示している。更新済みグラフは、エッジ７３１および７３２を含む。エッジ７３１および７３２は、機械学習プロセッサに、作業Ｃへの入力のために入力データＡおよびＢをＬ１メモリ７２２にプリフェッチさせる。
【００７６】
また、更新済みグラフ７２０は、作業Ｃからの出力データが作業Ｄおよび作業Ｅへの入力として使われることを指定しており、これは入力グラフ７１０と一致する。更新済みグラフ７２０は、新しいエッジ７３３を含む。新しいエッジ７３３は、作業Ｃからの出力データが作業Ｉまで使われることがないため、機械学習プロセッサに、当該出力データもＬ２メモリ７２４に（データＣ’として）格納させる。
【００７７】
更新済みグラフ７２０は、作業Ｆと出力データＣ”（出力データＣ’と同じであり得る）との間に別の新しいエッジを含む。エッジ７３４は、機械学習プロセッサに、出力データＣ”をＬ２メモリ７２４からＬ１メモリ７２２にプリフェッチさせる制御依存関係を表している。たとえば、作業Ｃからの出力データは、作業Ｉによって使用されるためにＬ１メモリ７２２にプリフェッチされ得る。作業Ｈが実行された後にデータをＬ２メモリ７２４から作業Ｉに転送する際に生じ得る待ち時間を減らすために、出力データは、作業Ｉが実行される前にプリフェッチされ得る。その代わりに、更新済みグラフ７２０は、作業Ｆと出力データＣ”のプリフェッチとの間の制御依存関係を表すエッジ７３４を含む。この例では、作業Ｆが実行された後、Ｌ２メモリ７２４に格納された出力データＣ”がＬ１メモリ７２２にプリフェッチされる。このデータは、作業Ｇおよび作業Ｈが機械学習プロセッサによって実行されている間にバックグラウンド（たとえば、ＤＭＡを用いて）で転送され得る。
【００７８】
（たとえば、予測される転送時間に基づいた）転送する必要があるデータの量、および機械学習プロセッサが作業Ｉよりも前の作業を実行するのにかかる予測時間に基づいて、改善モジュールは、プリフェッチをいつ開始するか（たとえば、どの作業をトリガとして利用するか）を判断し得る。このようにすれば、改善モジュールは、その他のデータ（たとえば、作業Ｆと作業Ｇとの間のデータ）を格納するために使うことが出来るより高速のＬ１メモリ７２２を不必要に用いることなく、作業Ｉが実行される前にデータが必ず転送されるようにすることができる。
【００７９】
いくつかの実施態様では、更新済みグラフ７２０は、機械学習モデルの作業自体、たとえば、データ依存関係および／または制御依存関係を表すエッジではなく、データをどのメモリに格納するのか、およびデータをいつ転送するのかを機械学習プロセッサに指示するアノテーションを含み得る。アノテーションは、更新済みグラフ７２０に含めることができる、または、機械学習プロセッサによって実行されるその他のコードの一部であり得る。
【００８０】
図８は、機械学習モデルの別の入力グラフ８１０および局所性が改善された別の更新済みグラフ８２０を示す図８００である。この例では、入力グラフ８１０は、テンソルＸを用いて機械学習の計算を行う作業１Ａ〜６Ａのシーケンスを含む。作業１Ａ〜６Ａのシーケンスは、より大きなグラフの一部であり得る。たとえば、作業１Ａ〜６Ａのシーケンスは、第１の作業シーケンスであり得、テンソルＸは、機械学習モデルへの入力テンソルであり得る。別の例では、作業１Ａ〜６Ａのシーケンスは、その他の作業の後に実行され得、テンソルＸは、中間テンソル（たとえば、前の作業により、入力テンソルとは異なる）または部分テンソル（たとえば、入力テンソルの一部）であり得る。
【００８１】
この例では、テンソルＸは、大きすぎて、機械学習モデルが実行される機械学習プロセッサのメモリ階層の最速メモリ（たとえば、Ｌ１メモリ）に格納できない場合がある。改善モジュールは、更新済みグラフ８２０にバッチ分割作業８２１を含め得る。バッチ分割作業８２１は、テンソルＸを複数のサブテンソルに分割する。また、改善モジュールは、作業１Ａ〜５Ａのシーケンスの複数のイテレーションを更新済みのグラフに含め得る。作業１Ａ〜５Ａのシーケンスの各イテレーションは、サブテンソルのうちの１つサブテンソル上で実行され得る。
【００８２】
たとえば、テンソルＸのデータサイズがＬ１メモリの５倍である場合を考える。改善モジュールは、Ｌ１メモリに各々が収まる５つのサブテンソルにテンソルを分割するバッチ分割作業を更新済みグラフ８２０に含め得る。これに加えて、改善モジュールは、作業１Ａ〜５Ａのシーケンスの５回のイテレーション（各サブテンソルに１つのイテレーション）を、更新済みグラフ８２０に含め得る。このようにすれば、各作業の出力を、次の作業のために、作業１Ａ〜５Ａのシーケンスにおける各作業がサブテンソルに対して実行されるまでＬ１メモリに格納することができる。
【００８３】
データをＬ１メモリに保持することによって、各作業１Ａ〜５Ａによって実行される機械学習の計算を、入力グラフ８１０を用いて全てのテンソルＸで作業１Ａ〜５Ａが行われた場合よりもはるかに高速に行うことができるようになる。たとえば、入力グラフにおいて、作業ごとの入力データのうち少なくとも一部を、より低速のメモリから取り出さなければならなくなり、各作業において機械学習プロセッサにそのデータが取り出されるのを待たせてしまうことになる。
【００８４】
また、改善モジュールは、テンソルＸからいくつのサブテンソルを生成するかを判断する際、および作業のシーケンスのイテレーションをいくつ更新済みグラフ８２０に含めるかを判断する際に、作業のシーケンスにおける各作業によって出力されるデータのサイズを考慮する。たとえば、作業１Ａに入力されるサブテンソルはＬ１メモリに収まるにもかかわらず、作業のうちの１つの作業の出力がＬ１メモリの容量を超える場合、改善モジュールは、各作業によって出力されるデータがＬ１メモリに収まるよう、テンソルＸをより多くのサブテンソルに分割し得る。
【００８５】
改善モジュールは、制御依存関係８２３を生成し、更新済みグラフ８２０に、作業５Ａの最後のイテレーションの前、作業５Ａの各イテレーションの後に含めることができる。制御依存関係８２３は、機械学習プロセッサに、作業１Ａ〜５Ａのシーケンスの次のイテレーションに制御を移させて、作業１Ａの次のイテレーションから開始する。このようにすれば、作業１Ａ〜５Ａのシーケンスを、テンソルＸの各サブテンソル上で実行できるようになる。
【００８６】
改善モジュールは、作業１Ａ〜５Ａのシーケンスの各イテレーションの出力データを１つの出力テンソルに結合できる結合作業８２４を生成し、更新済みグラフ８２０に含めることができる。結合作業８２４は、バッチ分割作業８２１によって生成されたサブテンソルごとに５Ａによって出力されたデータ（たとえば、テンソル）をマージし得る。次に、出力テンソルを入力として作業６Ａに提供する。
【００８７】
図９は、局所性が改善した更新済みのグラフを作成し、更新済みグラフを用いて機械学習の計算を行うための例示的な処理９００を説明するフロー図である。工程９００は、図１の機械学習システム１２０によって実行され得る。
【００８８】
機械学習モデルのデータを受け付ける（９１０）。このデータは、機械学習モデルの作業と、作業間のデータ依存関係とを表し得る。たとえば、データは、作業ごとのノードと、作業間のエッジを含むグラフを含み得る。各エッジは、エッジによって繋がれた２つの作業間のデータ依存関係を表し得る。たとえば、第１作業から第２作業へのエッジは、第１作業が第２作業の前に実行されることと、第２作業が第１作業によるデータ出力を利用することとを示し得る。
【００８９】
機械学習プロセッサのメモリ階層の特性を指定するデータを受け付ける（９２０）。機械学習プロセッサは、機械学習モデルが展開されるプロセッサであり得る。メモリ階層は、機械学習モデルを利用した機械学習の計算を行うときに機械学習プロセッサによって使われる機械学習データを格納するためのメモリを複数レベルに含み得る。
【００９０】
メモリの各レベルは、各その他のレベルとは異なる特性を有し得る。上述したように、各メモリレベルの特性は、メモリのデータ記憶容量と、メモリのメモリバンド幅とを含み得る。各メモリの特性は、プロセッサ（たとえば、プロセッサコア）とメモリとの間のメモリチャネルの特性（直接であるか間接的であるか、共通であるか専用であるか、速度など）を含み得る。
【００９１】
機械学習モデルのグラフおよびメモリ階層の特性に基づいて、更新済み機械学習モデルを作成する（９３０）。たとえば、上述したように、改善モジュールは、ルールセット、１つ以上の機械学習モデル、および／または局所性が改善した更新済みの機械学習モデルを作成するための入力機械学習モデルのシミュレーションを利用し得る。
【００９２】
上述したように、更新済みの機械学習モデルを作成するステップは作業のうち少なくとも一部の作業について、作業の出力を格納するためのメモリを、当該出力が別の作業への入力としていつ使われるかに基づいてメモリ階層の複数のメモリの中から選択するステップを含み得る。たとえば、当該作業の出力、および作業が実行される時点と作業の出力が別の作業によって使われる時との間に実行されるその他の作業の出力をより高速なメモリが格納できない場合、作業の出力は、より低速のメモリに格納されて、のちにより高速なメモリにプリフェッチされ得る。
【００９３】
更新済みの機械学習モデルを作成するステップは、第１作業の出力データがメモリ階層の複数のメモリのうち第１メモリ（たとえば、より低速のメモリ）に、作業の出力データが第２作業によって入力としていつ使われるかに基づいて格納されると判断するステップを含み得る。これに応答して、改善モジュールは、機械学習プロセッサに、出力データが第１作業によって生成された後に第１作業の出力データを第１メモリに格納させる第１制御データ（たとえば、作業、アノテーションなど）を、更新済みの機械学習モデルに含め得る。また、改善モジュールは、出力データが第２作業への入力として使われる前に機械学習プロセッサに出力データを第１メモリから第２メモリ（たとえば、より高速なメモリ）に転送（たとえば、プリフェッチ）させる第２制御データを、更新済みの機械学習モデルを含め得る。
【００９４】
第２制御データは、機械学習プロセッサに、第３作業が実行されることに応答して出力データを第１メモリから第２メモリに転送させ得る。たとえば、第２制御データは、第３作業と出力データを転送させる作業との制御依存関係を含み得る。
【００９５】
改善モジュールは、機械学習の計算を実行するために出力データを用いる第１作業と第２作業との間に実行される作業の数に基づいて、複数のメモリのうちどのメモリが第１作業の出力データを格納するかを判断し得る。たとえば、作業の数が作業のしきい値数を超える場合、出力データは、より低速のメモリに格納され得る。作業の数がしきい値を超えない場合、より高速なメモリに出力データを格納することができる。
【００９６】
改善モジュールは、第１作業が実行される時点と第２作業が実行される時点との間の予想期間に基づいて、複数のメモリのうちどのメモリが第１作業の出力データを格納するかを判断し得る。たとえば、期間がしきい値期間を超える場合、出力データは、より低速のメモリに格納され得る。期間がしきい値を超えない場合、出力データは、より高速なメモリに格納され得る。
【００９７】
更新済みの機械学習モデルを作成するステップは、特定のシーケンスの機械学習モデルの作業の入力データ（たとえば、テンソル）が、複数のメモリのうち特定のメモリ（たとえば、最速メモリ）よりも多くのデータ記憶容量を必要とすると判断するステップを含み得る。これに応答して、改善モジュールは、特定の作業シーケンスと同じ作業シーケンスを含む複数の作業シーケンスを、更新済みの機械学習モデルに含め得る。また、改善モジュールは、機械学習プロセッサに入力データを複数のデータ部分（たとえば、サブテンソル）に分割させる第１制御データと、機械学習プロセッサに各データ部分を複数の作業シーケンスの各作業シーケンスに割り当てさせる第２制御データと、機械学習プロセッサに複数の作業シーケンスを連続して実行させる第３制御データ（たとえば、制御依存関係）とを、更新済みの機械学習モデルに含め得る。入力データを複数部分に分割して複数の作業シーケンスを更新済み機械学習モデルに含めることの例を、図８に示し、以下に説明する。
【００９８】
更新済みの機械学習モデルを利用して機械学習の計算を行う（９４０）。たとえば、更新済みの機械学習モデルは、機械学習プロセッサ上に展開され得る。機械学習プロセッサは、訓練データを用いて更新済みの機械学習モデルを訓練することができる。たとえば、機械学習プロセッサは、入力データを分類するように機械学習モデルを訓練することができる。次に、機械学習プロセッサは、訓練済み機械学習モデルを利用して機械学習の計算を行う、たとえば、その他の入力データを分類することができる。
【００９９】
上述したように、機械学習モデルの作業は、たとえば機械学習モデルによって推論を計算するために機械学習モデルによってフォワードパスを実行するために必要な作業を含み得る。これらの作業は、たとえば、ニューラルネットワークの層によって実行される行列の演算作業および／または畳み込み演算を含み得る。また、これらの作業は、機械学習モデルを訓練するための訓練プロセスのイテレーションを実行するために必要な作業を含み得る。また、これらの作業は、機械学習モデルによってフォワードパスを実行するために必要な作業と、機械学習モデルによってバックワードパスを実行するために必要な作業、つまり、機械学習モデルの重みまたはパラメータに関して勾配を判断するために必要な逆伝播作業とを含み得る。
【０１００】
本明細書において説明した主題および機能的動作の実施の形態は、デジタル電子回路系、有形で実施されるコンピュータソフトウェアもしくはファームウェア、本明細書に開示される構造およびそれらの構造的等価物を含むコンピュータハードウェア、またはそれらの１つまたは複数の組合せで実現され得る。本明細書において説明した主題の実施の形態は、１つまたは複数のコンピュータプログラムとして実現され得る。すなわち、データ処理装置による実行のために、または、データ処理装置の動作を制御するために有形の非一時的なプログラム担体上で符号化されたコンピュータプログラム命令の１つまたは複数のモジュールとして実現され得る。これに代えて、またはこれに加えて、プログラム命令は、データ処理装置による実行のために好適な受信側装置に送信するための情報を符号化するよう生成される人為的に生成された伝播信号、たとえばマシンにより生成される電気信号、光信号、または電磁気信号上で符号化することができる。コンピュータ記憶媒体は、機械読み取り可能な記憶装置、機械読み取り可能な記憶基板、ランダムもしくはシリアルアクセスメモリデバイス、または、それらの１つまたは複数の組合せであり得る。
【０１０１】
本明細書において説明した処理フローおよび論理フローは、入力データ上で動作して出力を生成することによって機能を実行するように１つまたは複数のプログラマブルコンピュータが１つまたは複数のコンピュータプログラムを実行することによって実行され得る。また、処理フローおよび論理フローは、たとえばＦＰＧＡ（フィールドプログラマブルゲートアレイ）、ＡＳＩＣ（特定用途向け集積回路）、またはＧＰＧＰＵ（汎用グラフィック処理装置）などの特殊目的論理回路によっても実行され得、装置も当該特殊目的論理回路によって実現され得る。
【０１０２】
コンピュータプログラムの実行に適したコンピュータは、一例として、汎用もしくは特定用途向けマイクロプロセッサもしくはその両方、またはその他の種類のＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）を含むことができる。一般に、ＣＰＵは、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、またはその両方から命令およびデータを受け取る。コンピュータの必須構成要素は、命令を実施または実行するためのＣＰＵと、命令およびデータを格納するための１つ以上のメモリ素子である。一般に、コンピュータは、データを格納するための１つ以上の大容量記憶装置、たとえば、磁気ディスク、光磁気ディスク、または光ディスクを備える、または、このような１つ以上の大容量記憶装置との間でデータの受信、送信、もしくはその両方を行うように操作可能に接続される。しかしながら、コンピュータは、このような機器を有する必要はない。また、コンピュータは、別の機器、たとえば、一例を挙げると、携帯電話、携帯情報端末（ＰＤＡ）、携帯オーディオもしくはビデオプレーヤ、ゲームコントローラ、ＧＰＳ（Ｇｌｏｂａｌ  Ｐｏｓｉｔｉｏｎｉｎｇ  Ｓｙｓｔｅｍ）受信機、またはポータブル記憶装置（たとえば、ＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）フラッシュドライブ）に組み込むことができる。
【０１０３】
コンピュータプログラム命令およびデータを格納するのに適した読み取り可能な媒体は、一例として、ＥＰＲＯＭ、ＥＥＰＲＯＭ、およびフラッシュメモリ素子などの半導体メモリ素子を含む不揮発性メモリ、複数の媒体およびメモリ素子、内蔵ハードディスクまたはリムーバブルディスクなどの磁気ディスク、光磁気ディスク、ならびにＣＤ−ＲＯＭおよびＤＶＤ−ＲＯＭディスクの全ての形態を含む。プロセッサおよびメモリは、専用の論理回路によって補ったり、専用の論理回路に内蔵したりすることができる。
【０１０４】
本明細書は、多くの具体的な実施態様の詳細を含むが、これらは発明または特許請求の範囲の限定として解釈されるべきではなく、むしろ、特定の発明の特定の実施の形態に特有であると思われる特徴の説明であると解釈されるべきである。本明細書おいて別々の実施の形態として説明された特定の特徴も、組み合わせて１つの実施の形態で実現することができる。その逆に、１つの実施の形態として説明された様々な特徴を、別々の複数の実施の形態または任意の適した部分的な組み合わせで実現することもできる。また、特徴は、いくつかの特定の組み合わせで動作するものとして上述され、そのように当初クレームされてもよいが、クレームされた組合せからの１つ以上の特徴は、場合によっては、組み合わせから削除することができ、クレームされた組合せは、部分的な組み合わせまたは部分的な組み合わせの変形例を対象としてもよい。
【０１０５】
同様に、図面に動作を特定の順番で示しているが、所望の結果を実現するためにこのような動作を図示された特定の順番または順序で実行する必要がある、または、図示した動作のすべてを実行する必要がある、と理解されるべきではない。特定の状況では、多重タスク処理および並列処理が有利である場合がある。また、上述の実施の形態における様々なシステムモジュールおよび構成要素を分離することは、このような分離がすべての実施の形態において必要であると理解されるべきではなく、説明したプログラムコンポーネントおよびシステムは、一般に、１つのソフトウェアプロダクトに一体化したり、複数のソフトウェアプロダクトにパッケージ化したりすることができると理解されるべきである。
【０１０６】
本発明の主題の特定の実施の形態を説明した。その他の実施の形態も、添付の特許請求の範囲に含まれる。たとえば、請求項に記載された動作は、異なる順序で実行することができ、それでもなお所望の結果を実現することができる。一例として、添付の図面に示した処理は、所望の結果を実現するために必ずしも図示した特定の順番または一連の順序である必要はない。いくつかの実施態様において、多重タスク処理および並列処理が有利である場合がある。
【図１】
2021532437.tif 000003
【図２】
2021532437.tif 000004
【図３】
2021532437.tif 000005
【図４】
2021532437.tif 000006
【図５】
2021532437.tif 000007
【図６】
2021532437.tif 000008
【図７】
2021532437.tif 000009
【図８】
2021532437.tif 000010
【図９】
2021532437.tif 000011
【手続補正書】
【提出日】令和3年2月9日(2021.2.9)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
データ処理装置によって実行される方法であって、
機械学習モデルのデータを受け付けるステップを含み、前記データは、前記機械学習モデルの作業および前記作業間のデータ依存関係を表し、前記方法は、さらに、
前記機械学習モデルが展開される機械学習プロセッサのメモリ階層の特性を指定するデータを受け付けるステップを含み、前記メモリ階層は、前記機械学習モデルを利用して機械学習の計算を行うときに前記機械学習プロセッサによって使われる機械学習データを格納するための複数のメモリを複数のメモリレベルに含み、前記特性は、各メモリのデータ記憶容量と、各メモリのメモリバンド幅とを含み、前記複数のメモリのうち少なくとも１つは、少なくとも１つのその他のメモリとは異なるメモリバンド幅を有し、前記方法は、さらに、
前記機械学習モデルの作業および制御依存関係を改良して前記メモリ階層の特性を考慮することによって、前記機械学習モデルのデータおよび前記メモリ階層の特性に基づいて更新済み機械学習モデルを作成するステップと、
前記更新済みの機械学習モデルを利用して機械学習の計算を行うステップとを含む、方法。
【請求項２】
前記機械学習モデルのデータは、前記機械学習モデルの作業と、前記作業間の制御依存関係と、前記作業間のデータ依存関係とを表すグラフを含む、請求項１に記載の方法。
【請求項３】
前記更新済みの機械学習モデルを作成するステップは、前記作業のうち少なくとも一部の作業について、前記作業の出力を格納するためのメモリを、前記出力が別の作業への入力としていつ使われるかに基づいて前記複数のメモリの中から選択するステップを含む、請求項１または２に記載の方法。
【請求項４】
前記更新済みの機械学習モデルを作成するステップは、
第１作業の出力データが第２作業によって入力としていつ使われるかに基づいて、前記第１作業の出力データが前記複数のメモリのうち第１メモリに格納されると判断するステップを含み、前記第１メモリは、前記複数のメモリのうち第２メモリよりも低いメモリバンド幅を有し、前記判断に応答して、
前記機械学習プロセッサに、前記第１作業によって前記出力データが生成された後に前記第１作業の出力データを前記第１メモリに格納させる第１制御データと、
前記機械学習プロセッサに、前記出力データが前記第２作業への入力として使われる前に前記出力データを前記第１メモリから前記第２メモリに転送させる第２制御データとを、
前記更新済みの機械学習モデルに含める、請求項１または２に記載の方法。
【請求項５】
前記第２制御データは、前記機械学習プロセッサに、前記第１作業および前記第２作業とは異なる第３作業が実行されることに応答して前記出力データを前記第１メモリから前記第２メモリに転送させる、請求項４に記載の方法。
【請求項６】
第１作業の出力データが第２作業によって入力としていつ使われるかに基づいて、前記第１作業の出力データが前記複数のメモリのうち第１メモリに格納されると判断するステップは、
（ｉ）前記第１作業と前記第２作業との間に実行される作業の数または（ｉｉ）前記第１作業が実行される時点から前記第２作業が実行される時点までの予想期間のうち、少なくとも１つに基づいて、前記第１作業の出力データが前記第１メモリに格納されると判断するステップを含む、請求項４または５に記載の方法。
【請求項７】
前記更新済みの機械学習モデルを作成するステップは、
前記機械学習モデルの特定の作業シーケンスのための入力データが前記複数のメモリのうち特定のメモリよりも多くのデータ記憶容量を必要とすると判断するステップを含み、前記判断に応答して、
前記特定の作業シーケンスと同じ作業シーケンスを含む複数の作業シーケンスと、
前記機械学習プロセッサに前記入力データを複数のデータ部分に分割させる第１制御データと、
前記機械学習プロセッサに各データ部分を前記複数の作業シーケンスの各作業シーケンスに割り当てさせる第２制御データと、
前記機械学習プロセッサに前記複数の作業シーケンスを連続して実行させる第３制御データとを、
前記更新済みの機械学習モデルに含める、請求項１または２に記載の方法。
【請求項８】
前記更新済みの機械学習モデルを作成するステップは、第２の機械学習モデルを利用して前記更新済みの機械学習モデルを前記機械学習モデルおよび前記メモリ階層の特性に基づいて作成するステップを含む、請求項１または２に記載の方法。
【請求項９】
システムであって、
データ処理装置と、
前記データ処理装置とデータ通信するメモリ記憶装置とを備え、前記メモリ記憶装置は、前記データ処理装置によって実行可能な命令を格納し、前記命令は、実行されると、前記データ処理装置に動作を実行させ、前記動作は、
機械学習モデルのデータを受け付けることを含み、前記データは、前記機械学習モデルの作業および前記作業間のデータ依存関係を表し、前記動作は、さらに、
前記機械学習モデルが展開される機械学習プロセッサのメモリ階層の特性を指定するデータを受け付けることを含み、前記メモリ階層は、前記機械学習モデルを利用して機械学習の計算を行うときに前記機械学習プロセッサによって使われる機械学習データを格納するための複数のメモリを複数のメモリレベルに含み、前記特性は、各メモリのデータ記憶容量と、各メモリのメモリバンド幅とを含み、前記複数のメモリのうち少なくとも１つは、少なくとも１つのその他のメモリとは異なるメモリバンド幅を有し、前記動作は、さらに、
前記機械学習モデルの作業および制御依存関係を改良して前記メモリ階層の特性を考慮することによって、前記機械学習モデルのデータおよび前記メモリ階層の特性に基づいて更新済み機械学習モデルを作成することと、
前記更新済みの機械学習モデルを利用して機械学習の計算を行うこととを含む、システム。
【請求項１０】
前記機械学習モデルのデータは、前記機械学習モデルの作業と、前記作業間の制御依存関係と、前記作業間のデータ依存関係とを表すグラフを含む、請求項９に記載のシステム。
【請求項１１】
前記更新済みの機械学習モデルを作成することは、前記作業のうち少なくとも一部の作業について、前記作業の出力を格納するためのメモリを、前記出力が別の作業への入力としていつ使われるかに基づいて前記複数のメモリの中から選択することを含む、請求項９または１０に記載のシステム。
【請求項１２】
前記更新済みの機械学習モデルを作成することは、
第１作業の出力データが第２作業によって入力としていつ使われるかに基づいて、前記第１作業の出力データが前記複数のメモリのうち第１メモリに格納されると判断することを含み、前記第１メモリは、前記複数のメモリのうち第２メモリよりも低いメモリバンド幅を有し、前記判断に応答して、
前記機械学習プロセッサに、前記第１作業によって前記出力データが生成された後に前記第１作業の出力データを前記第１メモリに格納させる第１制御データと、
前記機械学習プロセッサに、前記出力データが前記第２作業への入力として使われる前に前記出力データを前記第１メモリから前記第２メモリに転送させる第２制御データとを、
前記更新済みの機械学習モデルに含める、請求項９または１０に記載のシステム。
【請求項１３】
前記第２制御データは、前記機械学習プロセッサに、前記第１作業および前記第２作業とは異なる第３作業が実行されることに応答して前記出力データを前記第１メモリから前記第２メモリに転送させる、請求項１２に記載のシステム。
【請求項１４】
第１作業の出力データが第２作業によって入力としていつ使われるかに基づいて、前記第１作業の出力データが前記複数のメモリのうち第１メモリに格納されると判断することは、
（ｉ）前記第１作業と前記第２作業との間に実行される作業の数または（ｉｉ）前記第１作業が実行される時点から前記第２作業が実行される時点までの予想期間のうち、少なくとも１つに基づいて、前記第１作業の出力データが前記第１メモリに格納されると判断することを含む、請求項１２または１３に記載のシステム。
【請求項１５】
前記更新済みの機械学習モデルを作成することは、
前記機械学習モデルの特定の作業シーケンスのための入力データが前記複数のメモリのうち特定のメモリよりも多くのデータ記憶容量を必要とすると判断することを含み、前記判断に応答して、
前記特定の作業シーケンスと同じ作業シーケンスを含む複数の作業シーケンスと、
前記機械学習プロセッサに前記入力データを複数のデータ部分に分割させる第１制御データと、
前記機械学習プロセッサに各データ部分を前記複数の作業シーケンスの各作業シーケンスに割り当てさせる第２制御データと、
前記機械学習プロセッサに前記複数の作業シーケンスを連続して実行させる第３制御データとを、
前記更新済みの機械学習モデルに含める、請求項９または１０に記載のシステム。
【請求項１６】
前記更新済みの機械学習モデルを作成することは、第２の機械学習モデルを利用して前記更新済みの機械学習モデルを前記機械学習モデルおよび前記メモリ階層の特性に基づいて作成することを含む、請求項９または１０に記載のシステム。
【請求項１７】
請求項１〜８のいずれかに記載の方法を１つ以上のデータ処理装置に実行させるためのコンピュータプログラム。
【国際調査報告】
2021532437.tif 000012
2021532437.tif 000013
2021532437.tif 000014