IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ テキサス インスツルメンツ インコーポレイテッドの特許一覧

特表2023-531439改善されたスーパータイリング機械学習処理のための分析技法
<>
  • 特表-改善されたスーパータイリング機械学習処理のための分析技法 図1
  • 特表-改善されたスーパータイリング機械学習処理のための分析技法 図2
  • 特表-改善されたスーパータイリング機械学習処理のための分析技法 図3A
  • 特表-改善されたスーパータイリング機械学習処理のための分析技法 図3B
  • 特表-改善されたスーパータイリング機械学習処理のための分析技法 図4
  • 特表-改善されたスーパータイリング機械学習処理のための分析技法 図5A
  • 特表-改善されたスーパータイリング機械学習処理のための分析技法 図5B
  • 特表-改善されたスーパータイリング機械学習処理のための分析技法 図6A
  • 特表-改善されたスーパータイリング機械学習処理のための分析技法 図6B
  • 特表-改善されたスーパータイリング機械学習処理のための分析技法 図7A
  • 特表-改善されたスーパータイリング機械学習処理のための分析技法 図7B
  • 特表-改善されたスーパータイリング機械学習処理のための分析技法 図8
  • 特表-改善されたスーパータイリング機械学習処理のための分析技法 図9
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2023-07-24
(54)【発明の名称】改善されたスーパータイリング機械学習処理のための分析技法
(51)【国際特許分類】
   G06N 3/10 20060101AFI20230714BHJP
【FI】
G06N3/10
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2022578583
(86)(22)【出願日】2021-06-07
(85)【翻訳文提出日】2023-02-20
(86)【国際出願番号】 US2021036203
(87)【国際公開番号】W WO2021257313
(87)【国際公開日】2021-12-23
(31)【優先権主張番号】202041025785
(32)【優先日】2020-06-18
(33)【優先権主張国・地域又は機関】IN
(31)【優先権主張番号】17/327,869
(32)【優先日】2021-05-24
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】507107291
【氏名又は名称】テキサス インスツルメンツ インコーポレイテッド
(74)【代理人】
【識別番号】230129078
【弁護士】
【氏名又は名称】佐藤 仁
(72)【発明者】
【氏名】リシャブ ガルグ
(72)【発明者】
【氏名】プラモド クマール スワミ
(72)【発明者】
【氏名】クマール デサッパン
(72)【発明者】
【氏名】アンシュ ジェイン
(57)【要約】
機械学習(ML)モデル実行を拡張するための技法。この技法は、複数の層を有する機械学習ネットワークの層(602)を処理するために用いられるメモリ量(604)を判定することと、層の数に基づいて機械学習ネットワークの層を処理するために用いられるメモリの量(652)を平滑化することと、用いられるメモリ量の平滑化された変化層がメモリ変化閾値量より多く変化する変化層(654)を識別することと、識別された変化層に基づいて、機械学習ネットワークの層を第1の層グループ分けにグループ化することと、第1の層グループ分けを出力することとを含む。

【特許請求の範囲】
【請求項1】
方法であって、
複数の層を有する機械学習ネットワークの層を処理するために用いられるメモリの量を判定することと、
層の数に基づいて前記機械学習ネットワークの前記層を処理するために用いられるメモリの量を平滑化することと、
用いられるメモリの前記平滑化された量が、メモリ変化閾値量より多く変化する、変化層を識別することと、
前記機械学習ネットワークの前記層を、前記識別された変化層に基づいて第1の層グループ分けにグループ化することと、
前記第1の層グループ分けを出力することと、
を含む、方法。
【請求項2】
請求項1に記載の方法であって、
前記第1の層グループ分けに基づいて前記機械学習ネットワークをモデル化することと、
第1のコストを前記第1の層グループ分けに関連付けることと、
前記第1の層グループ分けのグループ境界を調整することによって第2の層グループ分けを生成することと、
前記第2の層グループ分けに基づいて前記機械学習ネットワークをモデル化することと、
第2のコストを前記第2の層グループ分けに関連付けることと、
前記第1のコストと前記第2のコストとの比較に基づいて、より低いコスト層グループ分けを出力することと、
を更に含む、方法。
【請求項3】
請求項2に記載の方法であって、前記第1及び第2のコストが、メモリアクセス又は処理サイクルの予期される数のうちの少なくとも1つに基づく、方法。
【請求項4】
請求項2に記載の方法であって、前記グループ境界が、前記グループ境界の周りの所定の値の範囲内で調整される、方法。
【請求項5】
請求項1に記載の方法であって、前記第1の層グループ分けが、層の第1のセット及び第2の層のセットを含む、方法。
【請求項6】
請求項5に記載の方法であって、層の前記第1のセットのうちの第1の数の層が、層の前記第2のセットのうちの第2の数の層と異なる、方法。
【請求項7】
請求項1に記載の方法であって、
前記第1の層グループ分けの前記層のためのタイルの最小数を、層によって用いられるメモリの量に基づいて判定することと、
前記タイルの最小数に基づいて、前記第1の層グループ分けの最後の層のためのタイル数を判定することと、
前記最後の層の前記タイル数に基づいて、前記第1の層グループ分けの他の層のタイル数を判定することと、
を更に含む、方法。
【請求項8】
非一時的プログラムストレージデバイスであって、1つ又は複数のプロセッサに、
複数の層を有する機械学習ネットワークの層を処理するために用いられるメモリの量を判定することと、
層の数に基づいて前記機械学習ネットワークの前記層を処理するために用いられるメモリの量を平滑化することと、
用いられるメモリの前記平滑化された量がメモリ変化閾値量より多く変化する変化層を識別することと、
前記機械学習ネットワークの前記層を、前記識別された変化層に基づいて第1の層グループ分けにグループ化することと、
前記第1の層グループ分けを出力することと、
をさせるための格納された命令を含む非一時的プログラムストレージデバイス。
【請求項9】
請求項8に記載の非一時的プログラムストレージデバイスであって、前記命令が更に、前記1つ又は複数のプロセッサに、
前記第1の層グループ分けに基づいて前記機械学習ネットワークをモデル化することと、
第1のコストを前記第1の層グループ分けに関連付けることと、
前記第1の層グループ分けのグループ境界を調整することによって第2の層グループ分けを生成することと、
前記第2の層グループ分けに基づいて前記機械学習ネットワークをモデル化することと、
第2のコストを前記第2の層グループ分けに関連付けることと、
前記第1のコストと前記第2のコストとの比較に基づいてより低いコスト層グループ分けを出力することと、
をさせる、非一時的プログラムストレージデバイス。
【請求項10】
請求項9に記載の非一時的プログラムストレージデバイスであって、前記第1及び第2のコストが、予期される数のメモリアクセス又は処理サイクルのうちの少なくとも1つに基づく、非一時的プログラムストレージデバイス。
【請求項11】
請求項9に記載の非一時的プログラムストレージデバイスであって、前記グループ境界が、前記グループ境界の周りの所定の値の範囲内で調整される、非一時的プログラムストレージデバイス。
【請求項12】
請求項8に記載の非一時的プログラムストレージデバイスであって、前記第1の層グループ分けが、層の第1のセットと層の第2のセットとを含む、非一時的プログラムストレージデバイス。
【請求項13】
請求項12に記載の非一時的プログラムストレージデバイスであって、前記層の第1のセットの第1の数の層が、前記層の第2のセットの第2の数の層とは異なる、非一時的プログラムストレージデバイス。
【請求項14】
請求項8に記載の非一時的プログラムストレージデバイスであって、前記命令が更に、前記1つ又は複数のプロセッサに、
前記層によって用いられるメモリの前記量に基づいて、前記第1の層グループ分けの前記層のためのタイルの最小数を判定することと、
前記タイルの最小数に基づいて、前記第1の層グループ分けの最後の層に対するタイルの数を判定することと、
前記最後の層に対するタイルの前記数に基づいて、前記第1の層グループ分けの他の層のためのタイルの数を判定することと、
をさせる、非一時的プログラムストレージデバイス。
【請求項15】
デバイスであって、
メモリと、
前記メモリに動作可能に結合された1つ又は複数のプロセッサと、
を含み、
前記1つ又は複数のプロセッサが、前記1つ又は複数のプロセッサに、
複数の層を有する機械学習ネットワークの層を処理するために用いられるメモリの量を判定することと、
層の数に基づいて前記機械学習ネットワークの前記層を処理するために用いられる前記メモリの量を平滑化することと、
用いられたメモリの前記平滑化された量がメモリ変化閾値量より多く変化する変化層を識別することと、
前記機械学習ネットワークの前記層を、前記識別された変化層に基づいて第1の層グループ分けにグループ化することと、
前記第1の層グループ分けを出力することと、
をさせる非一時的命令を実行するように構成される、
デバイス。
【請求項16】
請求項15に記載のデバイスであって、前記命令が更に、前記1つ又は複数のプロセッサに、
前記第1の層グループ分けに基づいて前記機械学習ネットワークをモデル化することと、
第1コストを前記第1の層グループ分けに関連付けることと、
前記第1の層グループ分けのグループ境界を調整することによって第2の層グループ分けを生成することと、
前記第2の層グループ分けに基づいて前記機械学習ネットワークをモデル化することと、
第2のコストを前記第2の層グループ分けに関連付けることと、
前記第1のコストと前記第2のコストとの比較に基づいてより低いコスト層グループを出力することと、
をさせる、デバイス。
【請求項17】
請求項16に記載のデバイスであって、前記第1及び第2のコストが、メモリアクセス又は処理サイクルの予期される数のうちの少なくとも1つに基づく、デバイス。
【請求項18】
請求項16に記載のデバイスであって、前記グループ境界が、前記グループ境界の周りの所定の値の範囲内で調整される、デバイス。
【請求項19】
請求項15に記載のデバイスであって、前記第1の層グループ分けが、層の第1のセット及び層の第2のセットを含む、デバイス。
【請求項20】
請求項15に記載のデバイスであって、前記命令が更に、前記1つ又は複数のプロセッサに、
前記層によって用いられるメモリの量に基づいて、前記第1の層グループ分けの前記層のためのタイルの最小数を判定することと、
前記タイルの最小数に基づいて、前記第1の層グループ分けの最後の層のためのタイルの数を判定することと、
前記最後の層のための前記タイルの数に基づいて、前記第1の層グループ分けの他の層のタイルの数を判定することと、
をさせる、
デバイス。
【発明の詳細な説明】
【技術分野】
【0001】
機械学習(ML)は、計算環境のますます重要な部分となっている。機械学習は人工知能(AI)の一つのタイプであり、MLは、ソフトウェアシステムが直接プログラムされることなく、データからパターンを認識することを学習することを可能にするのを助ける。ニューラルネットワーク(NN)は、入力データを評価するために重み付けされる、リンクされ階層化された関数(例えば、ノード、ニューロンなど)のセットを利用するMLの一つのタイプである。畳み込みニューラルネットワーク(CNN)と呼ばれることがある幾つかのNNでは、受信された入力及び重みに基づいてNN個の層において畳み込み演算が実施され得る。畳み込み演算は、1つの関数の形状が第2の関数によってどのように改変されるかを表す第3の関数を生成するために2つの関数に適用される数学的変換である。CNNの例には、逆畳み込みニューラルネットワーク、プーリングニューラルネットワーク、アップサンプルニューラルネットワーク、ディープニューラルネットワークなどが含まれ、CNNは、典型的には、画像認識及び分類、予測及び推奨システム、音声及び言語認識及び翻訳などの認識及び分類のために、幅広い用途でよく用いられる。
【0002】
MLがますます有用になるにつれて、NN及びCNNなどの複雑なML技法を、埋め込み又は他の低電力デバイスなどの比較的限られた計算及びメモリリソースを有するデバイスにおいて効率的に実行することが望まれている。ターゲットハードウェア資源上で所与のMLモデルを効率的に実行するのを助けるために、MLモデルは、用いられるべきターゲットハードウェア資源のためにMLモデルを調整するために、スーパータイリングを用いて実行されるように分析及び最適化され得る。
【発明の概要】
【0003】
本開示は、MLモデル実行を向上させる技法に関する。本技法は、複数の層を有する機械学習ネットワークの層を処理するために用いられるメモリの量を判定することと、層の数に基づいて機械学習ネットワークの層を処理するために用いられるメモリの量を平滑化することと、用いられるメモリの平滑化された量がメモリ変化閾値量より多く変化する変化層を識別することと、識別された変化層に基づいて機械学習ネットワークの層を第1の層グループ分けにグループ化することと、第1の層グループ分けを出力することとを含む。
【0004】
本開示の別の態様が、1つ又は複数のプロセッサに、下記行為を行わせるための命令が格納された非一時的プログラムストレージデバイスに関する。これらの行為は、複数の層を有する機械学習ネットワークの層を処理するために用いられるメモリの量を判定することと、層の数に基づいて機械学習ネットワークの層を処理するために用いられるメモリの量を平滑化することと、用いられるメモリの平滑化された量がメモリ変化閾値量より多く変化する変化層を識別することと、識別された変化層に基づいて機械学習ネットワークの層を第1の層グループ分けにグループ化することと、第1の層グループ分けを出力することである。
【0005】
本開示の別の態様がデバイスに関し、デバイスは、メモリと、メモリに動作可能に結合される1つ又は複数のプロセッサとを含み、1つ又は複数のプロセッサは、1つ又は複数のプロセッサに、下記行為を行わせる非一時的命令を実行するように構成され、これらの行為は、複数の層を有する機械学習ネットワークの層を処理するために用いられるメモリの量を判定することと、層の数に基づいて機械学習ネットワークの層を処理するために用いられるメモリの量を平滑化することと、用いられるメモリの平滑化された量がメモリ変化閾値量より多く変化する変化層を識別することと、識別された変化層に基づいて機械学習ネットワークの層を第1の層グループ分けにグループ化することと、第1の層グループ分けを出力することである。
【図面の簡単な説明】
【0006】
種々の例の詳細な説明のため、ここで、添付の図面を参照する。
【0007】
図1】本開示の態様に従った、例示のCNNを介するデータフローを図示する。
【0008】
図2】本開示の態様に従った、テンソルのタイリングを図示する。
【0009】
図3A】本開示の態様に従った、スーパータイル処理を示すブロック図である。
【0010】
図3B】本開示の態様に従った、スーパータイル処理リソース使用を図示するブロック図である。
【0011】
図4】本開示の態様に従った、複数のスーパータイルパスのためのスーパータイル処理を図示する。
【0012】
図5A】本開示の態様に従った、複数のスーパータイルグループにわたる複数のスーパータイルパスのためのスーパータイル処理を図示する。
図5B】本開示の態様に従った、複数のスーパータイルグループにわたる複数のスーパータイルパスのためのスーパータイル処理を図示する。
【0013】
図6A】本開示の態様に従った、CNNの各層に用いられるメモリの総量をプロットする折れ線グラフである。
【0014】
図6B】本開示の態様に従った、CNNの層のためのメモリのウィンドウ化された総量をプロットする折れ線グラフである。
【0015】
図7A】本開示の態様に従った、グループ境界判定を図示するフローチャートである。
図7B】本開示の態様に従った、グループ境界判定を図示するフローチャートである。
【0016】
図8】本開示の態様に従った、層グループ分けを判定するための技法を図示するフローチャートである。
【0017】
図9】本開示の態様に従った、コンピュータデバイスのブロック図である。
【発明を実施するための形態】
【0018】
図1は、本開示の態様に従った、例示のCNN100を介するデータフローを図示する。ここに示されるCNN100は、2つの層、すなわち第1の層102及び第2の層104を含む。この例のCNNは2つの層を含むが、他のCNNが任意の数の層を含むことができることを理解されたい。層は、入力テンソルに対して実施される数学的関数を表し、出力テンソルをもたらす。数学的関数の例には、畳み込み/逆畳み込み関数、プーリング、要素ごとの加算、連結などが含まれる。テンソルは、N次元の一般化された行列であり、値を含む1つ又は複数のノードを含む。一例として、画像の場合、ノードは、画素を記述することができ、画素のx及びy座標の値、並びに画素の色を記述するR、G、及びBチャネルの値を含み得る。テンソルは、画像の次元に対応する、ここでは、HI、H2、H3によって表される高さ軸と、幅軸W1、W2、及びW3と、色チャネル情報(RGB情報)に対応する、C1、C2、及びC3によって表されるチャネル軸とを有し得る。この例では、第1のテンソル106が、動作パラメータのセット108と共に第1の層102に入力されて第2のテンソル110を生成する。同様に、第2のテンソル110は、第2の層104に入力され、動作パラメータ112に基づいて処理され、第3のテンソル114を出力し得る。動作パラメータ108及び112は、例えば、所与の層の処理に適用するための重みを含み得る。概して、第1のテンソル106などの初期テンソルはCNN100への入力であり、最後のテンソル、ここでは、第3のテンソル114は、CNN100からの出力である。入力テンソルと出力テンソルとの間のテンソル、ここでは、第2のテンソル110は、中間テンソルと呼ばれることがある。
【0019】
或る場合において、図2のテンソル200に示されるように、或るテンソルが処理のためにタイルに分割され得、タイルは、例えば、プロセッサのパイプライン設計に基づいてサイズ判定され得る。例えば、或るタイルが、プロセッサ上で利用可能な幾つかの並列パイプラインに基づいて1つ又は複数のノードを含み得る。今後、テンソルは、明確にするために2次元構造として示されることに留意されたい。一般的な実装において、処理が次のテンソル及び層上で開始する前に、所与のテンソルのすべてのタイルが、特定の層によって処理される。例えば、図1に戻って参照すると、第1の層102内の第1のテンソル106の処理は第1のテンソル106全体について完了し得、第2の層104内の第2のテンソル110の処理の前に、第2のテンソル110に出力され得る。
【0020】
概して、CNNを実行するために必要とされるできるだけ多くの情報をプロセッサにできる限り近いメモリに格納して、性能を向上させることができることが有利である。概して、プロセッサに近いメモリはオンチップメモリと呼ばれることがあり、一方、プロセッサから比較的遠いメモリは、システムメモリ、メインメモリ、又はランダムアクセスメモリ(RAM)と呼ばれることがあり、更に遠くのメモリは、ストレージ、ディスク、又はハードディスクドライブと呼ばれることがある。オンチップメモリの例には、スタティックランダムアクセスメモリ(SRAM)及びキャッシュメモリが含まれる。キャッシュメモリは、レベル1(L1)、レベル2(L2)、及びレベル3(L3)などのレベルに更に分割され得、より大きい数は、概して、キャッシュがプロセッサからより遠くに離れている(例えば、アクセスがより遅い)ことを示す。中間入力テンソルを対応する層において処理する例として、入力テンソルは、レベル3(L3)メモリキャッシュに格納され、一方、重み、CNNモデル、並びに、入力タイル及び出力情報は、レベル2(L2)キャッシュに格納される。テンソルの一部が処理されると、出力は、L2キャッシュに一時的に格納され得、次いで、入力テンソルが処理されると、別の中間テンソル、例えば、L3キャッシュに出力され得る。次のテンソルをL3キャッシュに出力すると、システムは次の層を処理する準備ができる。或る場合において、初期入力テンソル及び最終出力はシステムメモリに格納され得る。中間テンソルを完全にキャッシュに格納しアクセスすることは、データを待つ間にプロセッサがストールする必要があり得るときに、幾つかのクロックサイクル(例えば、処理サイクル)を要し、処理効率を低減し得る、ダブルデータレート(DDR)メモリなどのシステムメモリなどの外部メモリにアクセスする必要性を低減するのに役立つ。
【0021】
メモリのサイズは固定され得るが、中間テンソルによって必要とされるサイズは変化し得る。例えば、CNNは、ハーフメガバイト(MB)サイズの入力テンソルを有し得、それぞれ5MB及び12MBの2つの中間テンソルに関連付けられ得る。例えば、L3キャッシュなどのニアプロセッサメモリがわずか8MBである場合、12MBの中間テンソルは、L3キャッシュ内に完全に収まることができず、12MBの中間テンソルの一部はシステムメモリに格納される可能性が高い。システムメモリへのメモリアクセスはキャッシュメモリへのアクセスよりも実質的に長いので、この場合、12MBの中間テンソルの処理時間は、メモリ入力/出力時間によってボトルネックになる。
【0022】
図3Aは、本開示の態様に従った、スーパータイル処理300を図示するブロック図である。次のテンソル及び層を処理する前に層を通してタンソル全体を処理するのではなく、テンソルの一部が、次のスーパータイルが処理される前に、スーパータイルとして複数層にわたって処理され得る。例えば、図3に示すように、第1のテンソル302は、3つの部分又はスーパータイル、スーパータイル304、306、及び308、に分割され得る。スーパータイル304は、第1の層310において処理されて、第2のテンソル312の一部であるスーパータイル304を出力することができる。同様に、第2のテンソル312のスーパータイル304は、次いで、第2の層314において処理されて、第3のテンソル316のスーパータイル304を出力し得る。そのため、スーパータイル304は、スーパータイル306が処理される前に、複数の層にわたって処理される。この例では、スーパータイルは、高さ軸又は次元にわたって実施される。他の場合において、スーパータイリングが、テンソルの1つの次元から値を除去することによって、水平軸又は垂直軸などの他の軸において実施され得る。スーパータイル304が層のセットによって処理された後、スーパータイル306が層のセットによって処理される。スーパータイル306の処理が完了した後、スーパータイル308は、次いで層のセットによって処理される。
【0023】
或る場合において、入力信号テンソルの一部が、入力信号テンソルのその部分を処理する対応する出力によって上書きされる。図3Bは、本開示の態様に従った、スーパータイル処理リソース用途320を図示するブロック図である。この例は、オンチップメモリ322と、プロセッサ324と、別のメモリ326とを図示する。この例では、メモリ322は、第1のテンソルの第1の部分328を含む。第1の部分328は、この例では、前の層(図示せず)からの中間テンソル出力であり得る。第1の部分328は、第1の層出力334を生成するために、モデル及び/又は重み情報を有する第1のMLネットワーク情報332と共に第1の層330において処理され得る。第1の出力334は、オンチップメモリ322に書き戻され、第1の部分328を格納していたオンチップメモリ322の部分を上書きして、第2のテンソルの第2の部分336を取得する。或る場合において、第2の部分336が第1の部分328とは異なるサイズであってもよい。第2の部分336が第1の部分328と比較して小さいサイズであるとき、第1の部分328の残りの部分338は廃棄され得る。場合によっては、第1の層332からの出力は、出力が生成されるにつれて、オンチップ322内の第1の部分328の対応する部分の上に動的に書き込まれ得る。生成されると、第2の部分336は、第2のMLネットワーク情報342と共に第2の層340において処理されて、オンチップメモリ322に書き戻される第2の層出力344を生成し、第2の部分336を格納していたオンチップメモリ322の部分を上書きして、第3のテンソルの第3の部分346を取得する。
【0024】
図4は、本開示の態様に従った、複数のスーパータイルパス400のためのスーパータイル処理を図示する。この例には、少なくとも4つの中間テンソルを有する層群、第1のテンソル402A-402D、第2のテンソル404A-404D、第3のテンソル406A-406D、及び第4のテンソル408A-408Dが含まれ、これらは、ここでは、20のタイルを有する単一の次元で示され、明瞭にするため他の次元は省略される。この例では層も省略されている。この例におけるテンソル402~408は中間テンソルであるので、第1のテンソル402は、別個の入力テンソル(図示せず)及び対応する層からの出力テンソルであることに留意されたい。前述のように、第1のテンソル402は、第1の層に入力されて第2のテンソル404を生成し、これは第2の層に入力されて第3のテンソル406を生成し、これは第3の層に入力されて第4のテンソル408を生成する。4つのスーパータイルパスが完全な第4のテンソル408を生成するために使用され、これは、別の層、例えば、この層グループの外側の別の層に入力され得る。
【0025】
この例で論じた各層は、3×3畳み込み層である。3×3畳み込み層では、各タイルが層の各次元において1つの隣接するタイルと共に処理される。各テンソルは、-1及び20エントリによって表される2つのゼロパッドを含む。これらのゼロパッドは、所与のテンソルのエッジ上のタイルを処理するとき、隣接するタイルとして使用され得る。ここで、各スーパータイルパスの端部において、第4のテンソル408は5つの完了タイル410を有する。各層が3×3畳み込み層であるので、第3のテンソル406Aのタイル5は、第4のテンソル408Aのタイル4を生成するために用いられる。同様に、第2のテンソル404Aのタイル6は、第3のテンソル406Aのタイル5を生成するために用いられる、などである。第1のスーパータイルパスが完了した後、第2のスーパータイルパスが実施される。第1のスーパータイルパスと同様に、第2のスーパータイルパスが完了した後に、5つの完了したタイル412が生成される。図4に関連して説明したように、スーパータイルパス間に重複領域が存在し得る。例えば、第3のテンソル406Bに対するタイル4及び5は、第4のテンソル408Bの5つの完了したタイル412を生成するために使用され得る。第3のテンソル406Bのタイル4及び5は、第1のスーパータイルパスにおいて前もって計算され、格納された。第3のテンソル406Bを生成するとき、第3のテンソル406Bのタイル4及び5は、再計算されるのではなく、再ロードされる。同様に、第2のテンソル404Bのタイル5及び6、並びに、第1のテンソル402Bのタイル6及び7も再ロードされ得る。或る場合において、スーパータイル内に含まれる幾つかのタイルが、スーパータイルパスにわたって変化し得る。例えば、第4のスーパータイルパスの場合、第1のテンソル402Dは、他のスーパータイルパスの場合のように8つのタイルではなく2つのタイルを有し得る。テンソルのサイズが層グループにわたって変化する場合、最大テンソルのサイズは、スーパータイルのサイズを判定することの一部として使用され得る。この例では、各先行層が次のものよりも多くのタイルを計算する必要があるので、第1のパスのために第1のテンソル402Aのタイルを計算するのに必要なサイズ及び従ってメモリ空間は、スーパータイル全体のサイズに対する制限要因となる。すなわち、スーパータイルのサイズ(例えば、タイル高さ)は、第1のパスにおいて第1のテンソル402AがL3キャッシュなどのメモリに適合するために必要とされる計算を可能とするように選択され得る。
【0026】
図5A及び図5Bは、本開示の態様に従った、複数のスーパータイルグループにわたる複数のスーパータイルパスのためのスーパータイル処理500を図示する。概して、CNNは、任意の数の層を有することができ、場合によっては、特定のCNNが単一のスーパータイルとして実際に実行することができるよりも多くの層を有し得る。例えば、比較的大きな入力テンソル及び比較的小さい出力テンソルを有するCNNは、単一のスーパータイルではなく、複数のスーパータイル内のCNNの層を実行することが有益であり得る。幾つかのケースでは、CNNの層が各スーパータイルグループ502にグループ化された1つ以上の層を有する、スーパータイルグループ502A及び502B(全体として502)にグループ化され得る。
【0027】
各スーパータイルグループは、或るスーパータイルグループ特性に関連付けられ得る。これらのスーパータイルグループ特性は、スーパータイルグループ内の層の数、層に関連するタイル高さ、及びコンテキストメモリなどの特性を含み得る。この例では、第1のスーパータイルグループ502A内の層の数は、ここでは層1、2、3、及び4である4つの層504を含む。この例では、第2のスーパータイルグループ502Bも、ここでは、層5、6、7、及び8である、4つの層518を含む。各スーパータイルグループは、異なる数の層を有し得ることが理解され得る。各層は複数のタイル高さに関連付けられ得る。場合によっては、各層は、第1のタイル高さ、通常のタイル高さ、及び最後のタイル高さに関連付けられ得る。第1のタイル高さは、第1の実行中の各層のタイルの数を示し得る。場合によっては、第1の実行がここでは、パス0 506と標示された、仮想又は予熱スーパータイルパスであってもよい。仮想スーパータイルパスは、層グループの最後のテンソルにおいて完了したタイルを生成しなくてもよい。そうではなく、仮想スーパータイルパスは、次の通常のスーパータイルパスのタイルと重複するタイルのセットを計算し、次のパスのためにこれらの(例えば、バックアップされた)計算されたタイルを格納する。この例では、第1の層について、第1のタイル高さは3であり、第2の層は2であり、第3の層は1であり、第4の層は0である。
【0028】
通常のタイル高さは、スーパータイルパスの定常状態実行中の各層のタイルの数を示すことができ、ここでは、パス1 508、パス2 510、及びパス3 512と標示される。この例では、すべての層の通常のタイル高さは5である。各層の通常のタイル高さは異なっていてもよいことが理解されよう。最後のタイル高さは、スーパータイル実行の最後のパス、ここではパス4 514、に対する各層のタイルの数を示す。この例では、第1の層の最後のタイル高さは2であり、第2の層は3であり、第3の層は4であり、第4の層は5である。
【0029】
コンテキストメモリスーパータイルグループ特性は、パスのための格納又はバックアップされたタイル516を指す。この例では、コンテキストメモリサイズは6タイルである。
【0030】
スーパータイルグループ及び関連するスーパータイルグループ特性は、或るハードウェアリソースのためのCNNの実行を調整するのを助けるために、CNNに対して定義され得る。各CNNは、層の数、各層のテンソル次元、及び各層が何を行っているかの一意の組合せを有し得る。例えば、プーリング関数、畳み込み関数などを実施する層などの或る層が、ダウンサンプリング特性に関連付けられ得、層は、或る次元の入力テンソルを取得し、低減された次元を有するテンソルを出力する。リサイズ関数、逆畳み込み関数などを実施する層などの他の層が、アップサンプリング特性に関連付けられ得、層は、或る次元の入力テンソルを取得し、増加した次元を有するテンソルを出力する。
【0031】
所与のハードウェアリソースに対するCNNの実行を調整するのを助けるために、CNNは、CNNの各層に必要とされるメモリの総量(例えば、メモリの量)を判定するようにモデル化され得る。メモリのこの総量は、入力テンソル、出力テンソル、バックアップされたタイル、層に必要な動作パラメータなどを含む、CNNの層を実行するために必要とされるすべてのメモリを含み得る。スーパータイルグループは、メモリのこの総量に基づいて定義され得る。
【0032】
図6Aは、本開示の態様に従った、CNNの各層に用いられるメモリの総量をプロットする折れ線グラフ600である。図6Aでは、CNNの64個の層602がX軸上に示され、Y軸上に、1層当たり用いられるメモリの総量604が単位メガバイトで示されている。この例では、CNNの層によって用いられるメモリの総量は、層間でかなり変動し得る。本開示の態様に従って、このローカルノイズは、ウィンドウ内の層にわたって用いられるメモリの合計値を平滑化することによって対処され得る。
【0033】
図6Bは、本開示の態様に従った、CNNの層のためのメモリのウィンドウ化された総量をプロットする線グラフ650である。ウィンドウ化は、プロット652によって示されるウィンドウ化された総量データを生成するために、CNNの層にわたって実施される。場合によっては、層iについてのウィンドウ化された合計値が層iから層i+Wまでの最大総量であり得、ここで、Wはウィンドウサイズである。例えば、図の650では、ウィンドウサイズが8に設定され得、従って、層1のウィンドウ化された総量は、層1~9の最大総値である。再び折れ線グラフ600を参照すると、層5は、25MBにおいて、層1~9の最大合計値を有し、従って、層1のウィンドウ化された総量は25MBである。別の例として、層6では、層6のウィンドウ化された総量は、層6~14の最大合計値、又は層8、9、及び12に基づく約9MBである。場合によっては、Wは所定の値であってもよい。例えば、Wは、コード化されたデフォルト値、ユーザーから受信されたものなどであり得る。場合によっては、Wが、1つ又は複数の要因に基づいて、例えば、CNN内の層の総数、層のタイプ(例えば、畳み込み、逆畳み込み、プーリングなど)の関数として、幾つかの特定のタイプの層の関数として、層の順序付け、コスト関数及びモデル化に基づいて、判定され得る。
【0034】
ウィンドウ化された総量データに基づいて、ボリューム変化係数と呼ばれ得る、総量が或る量だけ変化された点が識別され得る。これらの識別された点は、スーパータイリンググループの初期境界を判定するために用いられ得る。例示の折れ線グラフ650では、点は、層5及び6、層12及び13、層24及び35、並びに層49及び50の間で識別され得る。この例では、層33及び34と、層54及び55との間に総量変化があるが、これらの点における総量変化はボリューム変化率未満であり得、従って、これらの点は識別されない。従って、5つのスーパータイリンググループは、層[1:5]、[6:12]、[13:24]、[25:49]、及び[50:64]を含むものとして定義され得る。比較的小さいボリューム変化率が用いられた場合、[1:5]、[6:12]、[13:24]、[25:49]、[50:54]、[55:64]、又は、[1:5]、[6:12]、[13:24]、[25:33]、[34:49]、[50:54]、[55:64]などの付加的なスーパータイリンググループが定義され得る。場合によっては、ボリューム変化率は、例えば、ユーザーから受信されたデフォルト値などとして事前判定され得る。他の場合において、ボリューム変化係数は、1つ又は複数の要因に基づいて、例えば、キャッシュ又はメモリサイズ、すべての層にわたる最大総量、最大合計値対最小合計値の比などに基づいて判定され得る。ボリューム変化率は、ノイズ低減と識別された点の数とのバランスをとるように選択され得る。場合によっては、複数のボリューム変化率を用いて、例えば性能シミュレーション(例えば、モデル化)を介して、比較のためにスーパータイリンググループの複数のセットを判定することができる。
【0035】
スーパータイリンググループが識別された後、スーパータイリンググループは改良され得る。場合によっては、スーパータイリンググループは、スーパータイリンググループ変形物にわたって実施されるコスト最小化に基づいて改良され得る。例えば、初期のスーパータイリンググループ変形物は、総量変化に基づいて識別されるスーパータイリンググループであってもよい。コストファクタが判定され、この初期のスーパータイリンググループ変形物に関連付けられ得る。このコストファクタは、初期スーパータイリンググループ変形物を用いて実行されているCNNの性能シミュレーション(例えば、モデル化)に基づいて判定され得る。性能シミュレーションは、ターゲットハードウェア資源(例えば、それに対してハードウェア資源CNN実行が最適化されている)のメモリアクセスレイテンシ、処理速度、及び電力消費を考慮し得る。次いで、コストファクタは、初期スーパータイリンググループ変形物に関連付けられる。スーパータイリンググループの変形物は、初期グループ境界の改良範囲N内でスーパータイリンググループの1つ又は複数のグループ境界を移動させることによって判定される。場合によっては、改良範囲は、正及び負の両方であってもよく、この範囲は比較的小さいてもよい。一例として、初期グループ境界654は、初期スーパータイリンググループ[13:24]と[25:33]との間の層24と層25との間で識別され得、N=1の範囲である。次いで、初期グループ境界の2つの判定された変形物は、[13、23]、[24、33]、及び[13、25]、[26、33]であり得、次いで、これらの判定された変形物は、性能シミュレーションを介して評価され、コストファクタに関連付けられ得る。比較的最小のコストファクタを有する変形物は、最終的なスーパータイリンググループ構成として選択され得る。場合によっては、初期グループ境界の各グループ境界が改良され得る。幾つかの場合には、或る閾値一定サイズの上又は下の総量変化を伴う1つのグループ境界が改良され得る。2つのスーパータイリンググループが互いの改良範囲内にある場合など、幾つかのケースでは、2つのスーパータイリンググループはマージされ得る。場合によっては、例えば、1つの層ではなく2つの層によってグループ境界を調整するなど、改良範囲のための異なるステップサイズが用いられ得る。
【0036】
本開示の態様に従って、タイル高さ及びタイルの数は、スーパータイリンググループのために構成され得る。場合によっては、この判定は、図5に示される例の層4など、スーパータイリンググループの最後の層のタイル高さからの逆伝播に基づき得る。逆伝搬を介してタイルの高さを判定するために、各層に必要なメモリのボリュームが判定され得る。各層に必要とされるメモリのボリューム及びターゲットハードウェア資源上で利用可能なメモリの量に基づいて、ターゲットハードウェア資源上で利用可能なメモリの量内でタイルのメモリ使用量を維持しながら層を処理するために必要とされる最小数のタイル(例えば、パス)が判定され得る。各層についてタイルの最小数が判定されると、その層についてのタイルの最小数の最大数が識別される。場合によっては、グループの層のためのタイルの数は、最初及び最後のパスを除いて、一定であり得る。タイルの最小数のこの最大数に基づいて、最後の層のタイル高さは、最初のパス、パス、及び通常のパスについて判定され得る。最後の層のタイル高さに基づいて、最後の層の前の層のタイル高さを判定することができる。次いで、このプロセスは、第1の層のタイル高さが判定されるまで繰り返される。
【0037】
図7A及び図7Bは、本開示の態様に従った、グループ境界判定を図示するフローチャートである。ブロック702において、ウィンドウサイズが判定される。場合によっては、ウィンドウサイズは、事前に判定さ
れ、例えば、メモリから取り出され得る。場合によっては、ウィンドウサイズは、CNNの層の総数、コスト関数などの1つ又は複数の要因に基づいて判定され得る。ブロック704において、CNNの層のウィンドウ化された総量が、ウィンドウのサイズに基づいて判定され得る。例えば、層は、その層のウィンドウ数内の他の層の最大合計値に基づいて、ウィンドウ化された総量を有し得る。ブロック706において、層と次の層との間のウィンドウ化された総量の変化が、ボリューム変化率と比較される。ブロック708において、ウィンドウ処理された総量変化がボリューム変化率未満である場合、ブロック706において、次の層、及び次の層の後の層が評価される。ウィンドウ化された総量変化がボリューム変化率よりも大きい場合、ブロック710において、層間の境界が初期スーパータイル境界としてマーキングされる。ブロック712において、付加的な層がある場合、付加的な層はループスルーされる。ブロック714において、考慮すべき付加的なボリューム変化率がある場合、CNNの層は、付加的なボリューム変化率を用いて再度ループスルーされる。ブロック716において、マーキングされた初期スーパータイルグループ境界の1つ又は複数のセットが出力され得る。
【0038】
ブロック718において、改良されていないスーパータイルグループのセットがある場合、ブロック720において、CNNをモデル化して、改良範囲内のスーパータイルグループ境界のコスト係数を判定することができる。例えば、CNNは、シミュレートされた入力でCNNを実行することと、モデル化されるスーパータイルグループ分けを用いることとによってモデル化され得る。モデル化は、仮想マシンを使用することによるなど、シミュレートされたターゲットハードウェアを使用し、メモリ使用量、使用されているメモリのレイテンシー、プロセッサ使用量、電力消費量などの動作情報を記録することができる。場合によっては、改良範囲内のスーパータイルグループ境界の各変形物がシミュレートされ得、コストファクタがその変形物に関連付けられ得る。ブロック722において、改良範囲内のスーパータイルグループ境界の変形物の最も低いコストファクタを有する変形物が、スーパータイルグループ境界として選択され得る。ブロック724において、評価すべき付加的なスーパータイルグループ境界がある場合、実行は720に戻り、それらの付加的なスーパータイルグループ境界を評価する。評価すべきスーパータイルグループ境界もう存在しない場合、実行は718に戻る。ブロック718で評価すべきスーパータイルグループの付加的なセットが存在しない場合、ブロック726で、改良されたスーパータイルグループの複数のセットがある場合、改良されたスーパータイルグループの複数のセットにわたるコストファクタが比較されて、ブロック728で、最も低いコストファクタを有する改良されたスーパータイルグループのセットが選択される。そうでない場合、ブロック730において、改良されたスーパータイルグループが出力される。
【0039】
図8は、本開示の態様に従った、層グループ分けを判定するための技法800を示すフローチャートである。ブロック802において、複数の層を有する機械学習ネットワークの層を処理するために用いられるメモリの量が判定される。例えば、CNNは、CNNの層によるメモリ使用量を判定するために、シミュレートされた入力を用いて実行され得る。ブロック804において、機械学習ネットワークの層を処理するために用いられるメモリの量は、層の数に基づいて平滑化され得る。例えば、CNNの層を処理するために用いられるメモリの量は、ウィンドウを用いて平滑化され得る。ウィンドウは、ウィンドウに含まれる層の数を示すウィンドウサイズを有し得る。場合によっては、メモリの平滑化された量は、ローリングウィンドウ内の任意の層によって用いられるメモリの最大量に基づき得る。ブロック806において、用いられるメモリの平滑化された量がメモリ変化閾値量よりも多く変化する層が識別される。例えば、用いられるメモリの平滑化された量がボリューム変化係数より多く変化する点は、境界として識別され得る。ブロック808において、機械学習ネットワークの層は、識別された層に基づいて第1の層グループ分けにグループ化され得る。例えば、スーパータイリンググループは、識別された境界に基づいて定義され得る。ブロック810において、第1の層グループ分けが出力される。
【0040】
図9に示すように、デバイス900は、1つ又は複数のハードウェアプロセッサを含むプロセッサ905などの処理要素を含み、各ハードウェアプロセッサは、単一又は複数のプロセッサコアを有し得る。プロセッサの例は、中央処理装置(CPU)又はマイクロプロセッサを含むが、これらに限定されない。図9には示されていないが、プロセッサ905を構成する処理要素はまた、グラフィックス処理ユニット(GPU)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、及び/又はデジタルシグナルプロセッサ(DSP)などの、1つ又は複数の他のタイプのハードウェア処理構成要素を含み得る。場合によっては、プロセッサ905は、図7図8に関連して説明したタスクを実施するように構成され得る。
【0041】
プロセッサ905は、キャッシュメモリ、SRAM、レジスタなどのオンチップメモリ925に動作可能かつ通信可能に結合される。キャッシュメモリに関して、キャッシュメモリは、1つ又は複数のL1キャッシュ、1つ又は複数のL2キャッシュ、及び、1つ又は複数のL3キャッシュを含み得る。L1キャッシュは、プロセッサ905と共にパッケージに統合され得る。L2及び/又はL3キャッシュは、プロセッサパッケージ内に統合され得、又はプロセッサパッケージとは別個のパッケージ内にあってもよい。或る場合において、L2及び/又はL3キャッシュ、又はその一部分は、プロセッサ905へのメモリトラフィックを管理するのに役立つメモリコントローラと統合され得る。
【0042】
図9は、メモリ910がプロセッサ905に動作可能かつ通信可能に結合され得ることを図示する。メモリ910は、様々なタイプのデータを格納するように構成された非一時的コンピュータ可読記憶媒体(例えば、非一時的プログラムストレージデバイス)であり得る。例えば、メモリ910は、ランダムアクセスメモリ(RAM)などの1つ又は複数の揮発性デバイスを含み得る。場合によっては、図4~8に記載されるようなSRAM及び回路は、メモリ910の一部であってもよい。不揮発性ストレージデバイス920(例えば、非一時的プログラムストレージデバイス)は、1つ又は複数のディスクドライブ、光学ドライブ、ソリッドステートドライブ(SSD)、タップドライブ、フラッシュメモリ、電気的プログラマブル読み出し専用メモリ(EEPROM)、及び/又は、電力損失又はシャットダウン動作後の時間期間にわたってデータを維持するように設計された任意の他のタイプのメモリを含み得る。不揮発性ストレージデバイス920はまた、そのようなプログラムが実行されるときにRAMにロードされるプログラムを格納するために用いられ得る。
【0043】
当業者は、ソフトウェアプログラムが様々なソフトウェアプラットフォーム及び/又はオペレーティングシステムのための様々なコンピューティング言語で開発、符号化、及びコンパイルされ、その後、プロセッサ905によってロードされ、実行され得ることを認識している。一例において、ソフトウェアプログラムのコンパイルプロセスは、プロセッサ905がプログラミングコードを実行できるように、或るプログラミング言語で書かれたプログラムコードを別のコンピュータ言語に変換することができる。例えば、ソフトウェアプログラムのコンパイル処理は、MLネットワークを動作させる実行可能プログラムを生成してもよい。
【0044】
コンパイル処理の後、符号化された命令は、コンピュータ実行可能命令又は処理工程として、ストレージ920から、メモリ910から、プロセッサ905にロードされ得、及び/又は(例えば、キャッシュ又はオンボードROMを介して)プロセッサ905内に埋め込まれ得る。プロセッサ905は、コンピューティングデバイスを非汎用の、特に、特別にプログラムされた機械又はデバイスに変換するための命令又は処理工程を実施するために、格納された命令又は処理工程を実行するように構成され得る。格納されたデータ、例えば、ストレージデバイス920によって格納されたデータは、コンピュータ実行可能命令又は処理工程の実行中にプロセッサ905によってアクセスされて、コンピューティングデバイス900内の1つ又は複数の構成要素に命令することができる。ストレージ920は、異なるソフトウェアプログラムによってアクセスされ得る複数のセクションに区分又は分割され得る。例えば、ストレージ920は、コンピューティングデバイス900のソフトウェアを更新するためのプログラム命令又はデータを格納するなど、特定の目的のために指定されたセクションを含み得る。一例では、更新されるソフトウェアは、コンピューティングデバイスのROM又はファームウェアを含む。或る場合において、コンピューティングデバイス900は、複数のオペレーティングシステムを含む。例えば、コンピューティングデバイス900は、通常動作に利用される汎用オペレーティングシステムを含み得る。コンピューティングデバイス900はまた、汎用オペレーティングシステムのアップグレード及び回復などの特定のタスクを実施し、汎用オペレーティングシステムを介して一般に利用可能ではないレベルでコンピューティングデバイス900へのアクセスを可能にするための、ブートローダなどの別のオペレーティングシステムを含み得る。汎用オペレーティングシステム及び別のオペレーティングシステムの両方が、特定の目的のために指定されたストレージ920のセクションにアクセスすることができる。
【0045】
1つ又は複数の通信インターフェースは、1つ又は複数の無線通信デバイスとインターフェースするための無線通信インターフェースを含み得る。場合によっては、プロセッサに結合された要素が、プロセッサと共有されるハードウェア上に含まれ得る。例えば、通信インターフェース925、ストレージ920、及びメモリ910は、デジタル無線などの他の要素と共に、システムオンチップ(SOC)などの単一のチップ又はパッケージに含まれてもよい。コンピューティングデバイスはまた、図示されていない入力及び/又は出力デバイスを含み得、その例には、センサや、カメラや、マウス、キーボード、タッチスクリーン、モニタ、表示スクリーン、触覚又は動き生成器、スピーカー、ライトなどの人間が入力するデバイスが含まれる。
【0046】
本明細書では、「結合する」という用語が、本明細書と一貫する機能的関係を可能にする接続、通信、又は信号経路を包含し得る。例えば、デバイスAがデバイスBを制御して或るアクションを行なうための信号を生成する場合、(A)第1の例において、デバイスAが直接接続によってデバイスBに結合されるか、又は、(b)第2の例において、介在構成要素CがデバイスAとデバイスBとの間の機能的関係を変化しない場合に、デバイスAが介在構成要素Cを介してデバイスBに結合され、デバイスBがデバイスAによって生成された制御信号を介してデバイスAによって制御される。
【0047】
本発明の特許請求の範囲内で、説明した例示の実施例に改変が成され得、他の実施例が可能である。

図1
図2
図3A
図3B
図4
図5A
図5B
図6A
図6B
図7A
図7B
図8
図9
【国際調査報告】