(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-02-16
(45)【発行日】2024-02-27
(54)【発明の名称】ニューラルネットワーク処理のスケジューリング
(51)【国際特許分類】
G06N 3/063 20230101AFI20240219BHJP
【FI】
G06N3/063
【外国語出願】
(21)【出願番号】P 2022019764
(22)【出願日】2022-02-10
(62)【分割の表示】P 2019552217の分割
【原出願日】2018-01-17
【審査請求日】2022-03-11
(32)【優先日】2017-05-19
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】502208397
【氏名又は名称】グーグル エルエルシー
【氏名又は名称原語表記】Google LLC
【住所又は居所原語表記】1600 Amphitheatre Parkway 94043 Mountain View, CA U.S.A.
(74)【代理人】
【識別番号】110001195
【氏名又は名称】弁理士法人深見特許事務所
(72)【発明者】
【氏名】ウ,ドン・ヒョク
【審査官】金田 孝之
(56)【参考文献】
【文献】米国特許出願公開第2014/0142929(US,A1)
【文献】欧州特許出願公開第03104309(EP,A1)
【文献】Xushen Han et al.,CNN-MERP: An FPGA-Based Memory-Efficient Reconfigurable Processor for Forward and Backward Propagation of Convolutional Neural Networks,2016 IEEE 34th International Conference on Computer Design (ICCD),IEEE,2016年10月,Pages 320-327,<DOI: 10.1109/ICCD.2016.7753296>
(58)【調査した分野】(Int.Cl.,DB名)
G06N 3/00-99/00
(57)【特許請求の範囲】
【請求項1】
ハードウェア集積回路上で実現されるニューラルネットワークを使用してニューラルネットワーク入力のバッチを処理するための方法であって、前記ニューラルネットワークは、有向グラフの状態で配置された複数のニューラルネットワークレイヤを備え、前記方法は、
前記ニューラルネットワーク入力のバッチを受信するステップと、
複数のスーパーレイヤを備えるシーケンスにパーティショニングされる前記ニューラルネットワークのレイヤを識別するステップとを備え、各スーパーレイヤは、2つ以上のニューラルネットワークレイヤを備え、前記有向グラフのパーティションであり、前記方法はさらに、
前記ハードウェア集積回路を使用して前記ニューラルネットワーク入力のバッチを処理するステップを備え、前記ハードウェア集積回路を使用して前記ニューラルネットワーク入力のバッチを処理するステップは、前記複数のスーパーレイヤの各スーパーレイヤについて、
前記バッチ内の前記ニューラルネットワーク入力の各々に対応するそれぞれのスーパーレイヤ入力を取得するステップと、
前記
2つ以上のニューラルネットワークレイヤのいずれかを使用してスーパーレイヤ入力を処理する前に、前記
2つ以上のニューラルネットワークレイヤ
にそれぞれ
対応する2つ以上のパラメータセット
の各々を前記ハードウェア集積回路のパラメータメモリにロードするステップと、
前記パラメータメモリから取得された前記
2つ以上のパラメータセット
の各々を使用して、前記スーパーレイヤにおけるニューラルネットワークレイヤを介して前記スーパーレイヤ入力を処理するステップとを備える、方法。
【請求項2】
前記スーパーレイヤにおけるニューラルネットワークレイヤを介した前記スーパーレイヤ入力の前記処理に基づいてスーパーレイヤ出力を生成するステップをさらに備える、請求項1に記載の方法。
【請求項3】
前記スーパーレイヤ出力は、前記シーケンス内の第1のスーパーレイヤの出力であり、前記方法はさらに、
前記シーケンス内の第2のスーパーレイヤにおけるニューラルネットワークレイヤへのスーパーレイヤ入力として前記スーパーレイヤ出力を受信するステップと、
前記第1のスーパーレイヤの前記スーパーレイヤ出力に対応する前記スーパーレイヤ入力について、前記シーケンス内の前記第2のスーパーレイヤにおけるニューラルネットワークレイヤを介して前記スーパーレイヤ入力を処理するステップとを備える、請求項2に記載の方法。
【請求項4】
前記
2つ以上のパラメータセット
の各々をロードするステップは、
前記ハードウェア集積回路および前記パラメータメモリの、外部にあるホストから受信されたデータ値に基づいて、前記
2つ以上のパラメータセット
の各々を前記パラメータメモリに予めロードするステップを備える、請求項1~3のいずれか1項に記載の方法。
【請求項5】
ハードウェア集積回路上で実現されるニューラルネットワークを使用してニューラルネットワーク入力のバッチを処理するための方法であって、前記ニューラルネットワークは、有向グラフの状態で配置された複数のニューラルネットワークレイヤを備え、前記方法は、
前記ニューラルネットワーク入力のバッチを受信するステップと、
複数のスーパーレイヤを備えるシーケンスにパーティショニングされる前記ニューラルネットワークのレイヤを識別するステップとを備え、各スーパーレイヤは、2つ以上のニューラルネットワークレイヤを備え、前記有向グラフのパーティションであり、前記方法はさらに、
前記ハードウェア集積回路を使用して前記ニューラルネットワーク入力のバッチを処理するステップを備え、前記ハードウェア集積回路を使用して前記ニューラルネットワーク入力のバッチを処理するステップは、前記複数のスーパーレイヤの各スーパーレイヤについて、
前記バッチ内の前記ニューラルネットワーク入力の各々に対応するそれぞれのスーパーレイヤ入力を取得するステップと、
前記スーパーレイヤにおける前記ニューラルネットワークレイヤのいずれかを使用してスーパーレイヤ入力を処理する前に、前記スーパーレイヤにおける前記レイヤの各々のためのそれぞれのパラメータセットを前記ハードウェア集積回路のパラメータメモリにロードするステップと、
前記パラメータメモリから取得された前記ニューラルネットワークレイヤのための前記それぞれのパラメータセットを使用して、前記スーパーレイヤにおけるニューラルネットワークレイヤを介して前記スーパーレイヤ入力を処理するステップとを備え、
前記スーパーレイヤにおける前記ニューラルネットワークレイヤの各々について前記それぞれのパラメータセットをロードするステップは、
前記ハードウェア集積回路および前記パラメータメモリの、外部にあるホストから受信されたデータ値に基づいて、前記それぞれのパラメータセットを前記パラメータメモリに予めロードするステップを備え、
前記ハードウェア集積回路を使用して前記ニューラルネットワーク入力のバッチを処理するステップは、
スケジューリングプロセスに基づいて前記ニューラルネットワーク入力のバッチを処理するステップを備え、前記スケジューリングプロセスは、前記ハードウェア集積回路において実現されるニューラルネットワークモデルのバッチ次元およびレイヤ次元に対してニューラルネットワーク計算のグローバルスケジューリングを実行する
、方法。
【請求項6】
前記ニューラルネットワーク計算の前記グローバルスケジューリングは、前記ホストを使用して実行される、請求項5に記載の方法。
【請求項7】
ハードウェア集積回路上で実現されるニューラルネットワークを使用してニューラルネットワーク入力のバッチを処理するための方法であって、前記ニューラルネットワークは、有向グラフの状態で配置された複数のニューラルネットワークレイヤを備え、前記方法は、
前記ニューラルネットワーク入力のバッチを受信するステップと、
複数のスーパーレイヤを備えるシーケンスにパーティショニングされる前記ニューラルネットワークのレイヤを識別するステップとを備え、各スーパーレイヤは、2つ以上のニューラルネットワークレイヤを備え、前記有向グラフのパーティションであり、前記方法はさらに、
前記ハードウェア集積回路を使用して前記ニューラルネットワーク入力のバッチを処理するステップを備え、前記ハードウェア集積回路を使用して前記ニューラルネットワーク入力のバッチを処理するステップは、前記複数のスーパーレイヤの各スーパーレイヤについて、
前記バッチ内の前記ニューラルネットワーク入力の各々に対応するそれぞれのスーパーレイヤ入力を取得するステップと、
前記スーパーレイヤにおける前記ニューラルネットワークレイヤのいずれかを使用してスーパーレイヤ入力を処理する前に、前記スーパーレイヤにおける前記レイヤの各々のためのそれぞれのパラメータセットを前記ハードウェア集積回路のパラメータメモリにロードするステップと、
前記パラメータメモリから取得された前記ニューラルネットワークレイヤのための前記それぞれのパラメータセットを使用して、前記スーパーレイヤにおけるニューラルネットワークレイヤを介して前記スーパーレイヤ入力を処理するステップとを備え、
前記シーケンス内のスーパーレイヤの各ニューラルネットワークレイヤは、それぞれのワーキングセットに関連付けられ、
前記それぞれのワーキングセットは、部分的に、前記ワーキングセットにおけるスーパーレイヤ入力を処理するために使用される前記ニューラルネットワークレイヤのためのパラメータを格納するのに必要なメモリの量によって定義される
、方法。
【請求項8】
前記シーケンス内の第1のスーパーレイヤは、前記有向グラフの第1のパーティションを表し、
前記シーケンス内の第2のスーパーレイヤは、前記有向グラフの第2の異なるパーティションを表す、請求項1~7のいずれか1項に記載の方法。
【請求項9】
ハードウェア集積回路上で実現されるニューラルネットワークを使用してニューラルネットワーク入力のバッチを処理するためのシステムであって、前記ニューラルネットワークは、有向グラフの状態で配置された複数のニューラルネットワークレイヤを備え、前記システムは、
前記ハードウェア集積回路と、プロセッサと、命令を格納するための非一時的なコンピュータ読取可能記憶装置とを備え、前記命令は、動作の実行をさせるように前記プロセッサによって実行可能であり、前記動作は、
前記ニューラルネットワーク入力のバッチを受信するステップと、
複数のスーパーレイヤを備えるシーケンスにパーティショニングされる前記ニューラルネットワークのレイヤを識別するステップとを備え、各スーパーレイヤは、2つ以上のニューラルネットワークレイヤを備え、前記有向グラフのパーティションであり、前記動作はさらに、
前記ハードウェア集積回路を使用して前記ニューラルネットワーク入力のバッチを処理するステップを備え、前記ハードウェア集積回路を使用して前記ニューラルネットワーク入力のバッチを処理するステップは、前記複数のスーパーレイヤの各スーパーレイヤについて、
前記バッチ内の前記ニューラルネットワーク入力の各々に対応するそれぞれのスーパーレイヤ入力を取得するステップと、
前記
2つ以上のニューラルネットワークレイヤのいずれかを使用してスーパーレイヤ入力を処理する前に、前記
2つ以上のニューラルネットワークレイヤ
にそれぞれ
対応する2つ以上のパラメータセット
の各々を前記ハードウェア集積回路のパラメータメモリにロードするステップと、
前記パラメータメモリから取得された前記
2つ以上のパラメータセット
の各々を使用して、前記スーパーレイヤにおけるニューラルネットワークレイヤを介して前記スーパーレイヤ入力を処理するステップとを備える、システム。
【請求項10】
前記動作は、前記スーパーレイヤにおけるニューラルネットワークレイヤを介した前記スーパーレイヤ入力の前記処理に基づいてスーパーレイヤ出力を生成するステップを備える、請求項9に記載のシステム。
【請求項11】
前記スーパーレイヤ出力は、前記シーケンス内の第1のスーパーレイヤの出力であり、前記動作はさらに、
前記シーケンス内の第2のスーパーレイヤにおけるニューラルネットワークレイヤへのスーパーレイヤ入力として前記スーパーレイヤ出力を受信するステップと、
前記第1のスーパーレイヤの前記スーパーレイヤ出力に対応する前記スーパーレイヤ入力について、前記シーケンス内の前記第2のスーパーレイヤにおけるニューラルネットワークレイヤを介して前記スーパーレイヤ入力を処理するステップとを備える、請求項10に記載のシステム。
【請求項12】
前記
2つ以上のパラメータセット
の各々をロードするステップは、
前記ハードウェア集積回路および前記パラメータメモリの、外部にあるホストから受信されたデータ値に基づいて、前記
2つ以上のパラメータセット
の各々を前記パラメータメモリに予めロードするステップを備える、請求項9~11のいずれか1項に記載のシステム。
【請求項13】
ハードウェア集積回路上で実現されるニューラルネットワークを使用してニューラルネットワーク入力のバッチを処理するためのシステムであって、前記ニューラルネットワークは、有向グラフの状態で配置された複数のニューラルネットワークレイヤを備え、前記システムは、
前記ハードウェア集積回路と、プロセッサと、命令を格納するための非一時的なコンピュータ読取可能記憶装置とを備え、前記命令は、動作の実行をさせるように前記プロセッサによって実行可能であり、前記動作は、
前記ニューラルネットワーク入力のバッチを受信するステップと、
複数のスーパーレイヤを備えるシーケンスにパーティショニングされる前記ニューラルネットワークのレイヤを識別するステップとを備え、各スーパーレイヤは、2つ以上のニューラルネットワークレイヤを備え、前記有向グラフのパーティションであり、前記動作はさらに、
前記ハードウェア集積回路を使用して前記ニューラルネットワーク入力のバッチを処理するステップを備え、前記ハードウェア集積回路を使用して前記ニューラルネットワーク入力のバッチを処理するステップは、前記複数のスーパーレイヤの各スーパーレイヤについて、
前記バッチ内の前記ニューラルネットワーク入力の各々に対応するそれぞれのスーパーレイヤ入力を取得するステップと、
前記スーパーレイヤにおける前記ニューラルネットワークレイヤのいずれかを使用してスーパーレイヤ入力を処理する前に、前記スーパーレイヤにおける前記レイヤの各々のためのそれぞれのパラメータセットを前記ハードウェア集積回路のパラメータメモリにロードするステップと、
前記パラメータメモリから取得された前記ニューラルネットワークレイヤのための前記それぞれのパラメータセットを使用して、前記スーパーレイヤにおけるニューラルネットワークレイヤを介して前記スーパーレイヤ入力を処理するステップとを備え、
前記スーパーレイヤにおける前記ニューラルネットワークレイヤの各々について前記それぞれのパラメータセットをロードするステップは、
前記ハードウェア集積回路および前記パラメータメモリの、外部にあるホストから受信されたデータ値に基づいて、前記それぞれのパラメータセットを前記パラメータメモリに予めロードするステップを備え、
前記ハードウェア集積回路を使用して前記ニューラルネットワーク入力のバッチを処理するステップは、
スケジューリングプロセスに基づいて前記ニューラルネットワーク入力のバッチを処理するステップを備え、前記スケジューリングプロセスは、前記ハードウェア集積回路において実現されるニューラルネットワークモデルのバッチ次元およびレイヤ次元に対してニューラルネットワーク計算のグローバルスケジューリングを実行する
、システム。
【請求項14】
前記ニューラルネットワーク計算の前記グローバルスケジューリングは、前記ホストを使用して実現される、請求項13に記載のシステム。
【請求項15】
ハードウェア集積回路上で実現されるニューラルネットワークを使用してニューラルネットワーク入力のバッチを処理するためのシステムであって、前記ニューラルネットワークは、有向グラフの状態で配置された複数のニューラルネットワークレイヤを備え、前記システムは、
前記ハードウェア集積回路と、プロセッサと、命令を格納するための非一時的なコンピュータ読取可能記憶装置とを備え、前記命令は、動作の実行をさせるように前記プロセッサによって実行可能であり、前記動作は、
前記ニューラルネットワーク入力のバッチを受信するステップと、
複数のスーパーレイヤを備えるシーケンスにパーティショニングされる前記ニューラルネットワークのレイヤを識別するステップとを備え、各スーパーレイヤは、2つ以上のニューラルネットワークレイヤを備え、前記有向グラフのパーティションであり、前記動作はさらに、
前記ハードウェア集積回路を使用して前記ニューラルネットワーク入力のバッチを処理するステップを備え、前記ハードウェア集積回路を使用して前記ニューラルネットワーク入力のバッチを処理するステップは、前記複数のスーパーレイヤの各スーパーレイヤについて、
前記バッチ内の前記ニューラルネットワーク入力の各々に対応するそれぞれのスーパーレイヤ入力を取得するステップと、
前記スーパーレイヤにおける前記ニューラルネットワークレイヤのいずれかを使用してスーパーレイヤ入力を処理する前に、前記スーパーレイヤにおける前記レイヤの各々のためのそれぞれのパラメータセットを前記ハードウェア集積回路のパラメータメモリにロードするステップと、
前記パラメータメモリから取得された前記ニューラルネットワークレイヤのための前記それぞれのパラメータセットを使用して、前記スーパーレイヤにおけるニューラルネットワークレイヤを介して前記スーパーレイヤ入力を処理するステップとを備え、
前記シーケンス内のスーパーレイヤの各ニューラルネットワークレイヤは、それぞれのワーキングセットに関連付けられ、
前記それぞれのワーキングセットは、部分的に、前記ワーキングセットにおけるスーパーレイヤ入力を処理するために使用される前記ニューラルネットワークレイヤのためのパラメータを格納するのに必要なメモリの量によって定義される
、システム。
【請求項16】
前記シーケンス内の第1のスーパーレイヤは、前記有向グラフの第1のパーティションを表し、
前記シーケンス内の第2のスーパーレイヤは、前記有向グラフの第2の異なるパーティションを表す、請求項9~15のいずれか1項に記載のシステム。
【請求項17】
ハードウェア集積回路上で実現されるニューラルネットワークを使用してニューラルネットワーク入力のバッチを処理するための命令を格納するように構成された非一時的なコンピュータ読取可能記憶装置であって、
前記ニューラルネットワークは、有向グラフの状態で配置された複数のニューラルネットワークレイヤを備え、前記命令は、動作の実行をさせるようにプロセッサによって実行可能であり、前記動作は、
前記ニューラルネットワーク入力のバッチを受信するステップと、
複数のスーパーレイヤを備えるシーケンスにパーティショニングされる前記ニューラルネットワークのレイヤを識別するステップとを備え、各スーパーレイヤは、2つ以上のニューラルネットワークレイヤを備え、前記有向グラフのパーティションであり、前記動作はさらに、
前記ハードウェア集積回路を使用して前記ニューラルネットワーク入力のバッチを処理するステップを備え、前記ハードウェア集積回路を使用して前記ニューラルネットワーク入力のバッチを処理するステップは、前記複数のスーパーレイヤの各スーパーレイヤについて、
前記バッチ内の前記ニューラルネットワーク入力の各々に対応するそれぞれのスーパーレイヤ入力を取得するステップと、
前記
2つ以上のニューラルネットワークレイヤのいずれかを使用してスーパーレイヤ入力を処理する前に、前記
2つ以上のニューラルネットワークレイヤ
にそれぞれ
対応する2つ以上のパラメータセット
の各々を前記ハードウェア集積回路のパラメータメモリにロードするステップと、
前記パラメータメモリから取得された前記
2つ以上のパラメータセット
の各々を使用して、前記スーパーレイヤにおけるニューラルネットワークレイヤを介して前記スーパーレイヤ入力を処理するステップとを備える、非一時的なコンピュータ読取可能記憶装置。
【請求項18】
前記動作は、前記スーパーレイヤにおけるニューラルネットワークレイヤを介した前記スーパーレイヤ入力の前記処理に基づいてスーパーレイヤ出力を生成するステップをさらに備える、請求項17に記載の非一時的なコンピュータ読取可能記憶装置。
【請求項19】
前記スーパーレイヤ出力は、前記シーケンス内の第1のスーパーレイヤの出力であり、前記動作はさらに、
前記シーケンス内の第2のスーパーレイヤにおけるニューラルネットワークレイヤへのスーパーレイヤ入力として前記スーパーレイヤ出力を受信するステップと、
前記第1のスーパーレイヤの前記スーパーレイヤ出力に対応する前記スーパーレイヤ入力について、前記シーケンス内の前記第2のスーパーレイヤにおけるニューラルネットワークレイヤを介して前記スーパーレイヤ入力を処理するステップとを備える、請求項18に記載の非一時的なコンピュータ読取可能記憶装置。
【請求項20】
前記
2つ以上のパラメータセット
の各々をロードするステップは、
前記ハードウェア集積回路および前記パラメータメモリの外部にあるホストから受信されたデータ値に基づいて、前記
2つ以上のパラメータセット
の各々を前記パラメータメモリに予めロードするステップを備える、請求項17~19のいずれか1項に記載の非一時的なコンピュータ読取可能記憶装置。
【発明の詳細な説明】
【背景技術】
【0001】
背景
本明細書は、ニューラルネットワーク計算を実行するためのメモリ管理プロセスに関する。
【0002】
ニューラルネットワークは、オペレーションの1つ以上のレイヤを利用して、受信した入力に対する出力、たとえば分類、を生成する機械学習モデルである。いくつかのニューラルネットワークは、出力レイヤに加えて、1つ以上の隠れレイヤを含む。各隠れレイヤの出力は、ネットワーク内の次のレイヤ、すなわちネットワークの次の隠れレイヤまたは出力レイヤ、への入力として使用される。ネットワークのレイヤのうちの一部または全ては、それぞれのパラメータセットの現在の値に従って、受信した入力から出力を生成する。
【0003】
いくつかのニューラルネットワークは、1つ以上の畳み込みニューラルネットワークレイヤを含む。各畳み込みニューラルネットワークレイヤは、関連付けられたカーネルセットを有する。各カーネルは、ユーザが作成するニューラルネットワークモデルによって確立された値を含む。いくつかの実現例では、カーネルは、特定の画像輪郭、形状または色を識別する。カーネルは、重み入力のマトリックス構造として表すことができる。また、各畳み込みレイヤは、活性化入力セットも処理することができる。活性化入力セットも、マトリックス構造として表すことができる。
【0004】
概要
本明細書に記載されている主題は、ハードウェア回路上のニューラルネットワークを使用して処理されるニューラルネットワーク入力のバッチを受信するためのシステムおよび方法を含む。上記ニューラルネットワークは、有向グラフの状態で配置された複数のレイヤを含んでもよく、各レイヤは、それぞれのパラメータセットを有してもよい。記載されている技術に係る方法は、上記ニューラルネットワークのレイヤの、スーパーレイヤのシーケンスへのパーティショニングを決定するステップを含む。各スーパーレイヤは、1つ以上のレイヤを含む上記有向グラフのパーティションであってもよい。
【0005】
記載されている方法は、上記ハードウェア回路を使用して上記入力のバッチを処理するステップを含んでもよい。たとえば、上記入力のバッチを処理するステップは、上記シーケンスの各スーパーレイヤにおける上記レイヤのための上記それぞれのパラメータセットを上記ハードウェア回路のメモリにロードするステップを含んでもよい。さらに、記載されている方法は、上記バッチ内の各入力について、上記ハードウェア回路の上記メモリ内の上記パラメータを使用して、上記スーパーレイヤの各レイヤを介して上記入力を処理して、上記入力に基づいてスーパーレイヤ出力を生成するステップを含んでもよい。
【0006】
本明細書に記載されている主題の一局面は、コンピュータによって実行される方法で具体化されてもよい。上記方法は、ハードウェア回路上のニューラルネットワークを使用して処理されるニューラルネットワーク入力のバッチを受信するステップを含み、上記ニューラルネットワークは、有向グラフの状態で配置された複数のレイヤを有し、各レイヤは、それぞれのパラメータセットを有し、上記方法はさらに、上記ニューラルネットワークのレイヤの、スーパーレイヤのシーケンスへのパーティショニングを決定するステップを含み、各スーパーレイヤは、1つ以上のレイヤを含む上記有向グラフのパーティションである。
【0007】
上記方法はさらに、上記ハードウェア回路を使用して上記ニューラルネットワーク入力のバッチを処理するステップを含み、上記ハードウェア回路を使用して上記ニューラルネットワーク入力のバッチを処理するステップは、上記シーケンスにおける各スーパーレイヤについて、上記スーパーレイヤにおける上記レイヤのための上記それぞれのパラメータセットを上記ハードウェア回路のメモリにロードするステップと、上記バッチ内の各ニューラルネットワーク入力について、上記ハードウェア回路の上記メモリ内の上記パラメータを使用して、上記スーパーレイヤの各レイヤを介して上記ニューラルネットワーク入力に対応するスーパーレイヤ入力を処理して、上記ニューラルネットワーク入力のためのスーパーレイヤ出力を生成するステップとを含む。
【0008】
これらのおよび他の実現例の各々は、任意に以下の特徴のうちの1つ以上を含んでもよい。たとえば、いくつかの実現例では、上記シーケンスにおける第1のスーパーレイヤでは、上記ニューラルネットワーク入力に対応する上記スーパーレイヤ入力が上記ニューラルネットワーク入力である。いくつかの実現例では、上記第1のスーパーレイヤ出力の後の各スーパーレイヤへの上記スーパーレイヤ入力は、上記シーケンスにおける先行するスーパーレイヤによって生成されたスーパーレイヤ出力である。
【0009】
いくつかの実現例では、上記ハードウェア回路を使用して上記ニューラルネットワーク入力のバッチを処理するステップは、各スーパーレイヤについて、上記バッチ内の第2のニューラルネットワーク入力に対応するスーパーレイヤ入力が上記スーパーレイヤの各レイヤを介して後に処理される前に上記バッチ内の第1のニューラルネットワーク入力のための上記スーパーレイヤ入力が上記スーパーレイヤの各レイヤを介して処理されるように、上記スーパーレイヤの各レイヤを介して上記ニューラルネットワーク入力のバッチに対応する上記スーパーレイヤ入力をシーケンシャルに処理するステップを備える。
【0010】
いくつかの実現例では、スーパーレイヤのそれぞれのレイヤは、ワーキングセットに関連付けられ、各ワーキングセットは、少なくともi)上記ハードウェア回路上の上記ニューラルネットワークを使用して処理される上記ニューラルネットワーク入力のバッチの1つ以上の入力または上記スーパーレイヤの先行するレイヤの1つ以上の出力、およびii)上記スーパーレイヤの各レイヤを介して上記1つ以上の入力を処理するのに必要なメモリの量を示すサイズパラメータによって定義される。
【0011】
いくつかの実現例では、上記ニューラルネットワークのレイヤの、スーパーレイヤのシーケンスへの上記パーティショニングを決定するステップは、i)少なくとも1つのワーキングセットのための特定のサイズパラメータを決定するステップと、ii)上記ハードウェア回路の上記メモリの特定の集約パラメータ容量を決定するステップと、iii)上記少なくとも1つのワーキングセットのための上記特定のサイズパラメータまたは上記ハードウェア回路の上記メモリの特定の集約パラメータ容量のうちの少なくとも1つに基づいて、上記ニューラルネットワークのレイヤの、スーパーレイヤのシーケンスへの上記パーティショニングを決定するステップとを含む。
【0012】
いくつかの実現例では、上記ハードウェア回路の上記メモリは、閾値記憶容量を有し、上記ニューラルネットワークのレイヤの、スーパーレイヤのシーケンスへの上記パーティショニングを決定するステップは、上記ハードウェア回路の上記メモリの上記閾値記憶容量に基づいて、上記ニューラルネットワークのレイヤをスーパーレイヤのシーケンスにパーティショニングするステップを含む。
【0013】
いくつかの実現例では、上記ニューラルネットワークのレイヤは、上記ハードウェア回路が上記ニューラルネットワーク入力のバッチを処理する際に上記メモリの上記閾値記憶容量を超えないようにスーパーレイヤのシーケンスにパーティショニングされる。
【0014】
いくつかの実現例では、上記ニューラルネットワーク入力のバッチおよび上記それぞれのパラメータセットは、上記ハードウェア回路の外部のソースから受信され、上記スーパーレイヤの各レイヤを介して上記ニューラルネットワーク入力に対応する上記スーパーレイヤ入力を処理するステップは、上記外部のソースから追加のパラメータを受信することなく上記スーパーレイヤ入力を処理するステップを備える。
【0015】
これの他の実現例および他の局面は、対応するシステム、装置、およびコンピュータ記憶装置にエンコードされた、上記の方法の動作を実行するように構成されたコンピュータプログラムを含む。1つ以上のコンピュータまたはハードウェア回路のコンピューティングシステムは、システムにインストールされて動作時にシステムに動作を実行させるソフトウェア、ファームウェア、ハードウェア、またはそれらの組み合わせによってそのように構成することができる。1つ以上のコンピュータプログラムは、データ処理装置によって実行されると装置に動作を実行させる命令を有することによってそのように構成することができる。
【0016】
本明細書に記載されている主題は、以下の利点のうちの1つ以上を達成するように特定の実施形態において実現可能である。ニューラルネットワークレイヤをスーパーレイヤのシーケンスにパーティショニングすることによって、ニューラルネットワークがパラメータセットを使用して入力を処理する際に、ニューラルネットワークハードウェア回路による外部通信を最小化することができる。計算プロセス中のハードウェア回路による外部通信が最小化されることにより、ハードウェア回路による帯域幅消費およびエネルギ最適化を向上させることができる。
【0017】
さらに、スーパーレイヤのシーケンスは、ニューラルネットワークモデルの「バッチ」次元と「レイヤ」次元とを混合してニューラルネットワークレイヤを介した入力の処理のための1つ以上のメモリワーキングセットを最適化するグローバルスケジューリングプロセスを提供することができる。たとえば、バッチ次元およびレイヤ次元に対してグローバルスケジューリングを実行することによって、ニューラルネットワークアプリケーションのライブメモリワーキングセットを最小化することができ、それによって、所与のハードウェア回路での入力のバッチレス実行を向上させる。ライブメモリワーキングセットは、ニューラルネットワークのレイヤを介した処理のためのデータに対応し得て、このデータは、現在のところ、データ処理装置またはプロセッサハードウェア回路の物理的メモリ空間にある。
【0018】
さらに、ハードウェア回路の一例は、最小化されたワーキングセットの入力およびパラメータを、SRAM容量を使用してオンチップで格納できるようにオンチップメモリ(たとえば、SRAM)を含んでもよい。したがって、スーパーレイヤのシーケンスを提供するグローバルスケジューリングプロセスに基づいてSRAM容量が効率的に利用されるときに入力およびパラメータを格納するのに追加のメモリリソースが必要とされなければ、コストの節約を実現することができる。いくつかの実現例では、オンチップSRAM容量は、特定の設計要件を満たすように、かつ、スーパーレイヤシーケンスを形成することを含む場合もあれば含まない場合もあるスケジューリングプロセスを提供するように、必要に応じて拡大または縮小されてもよい。
【0019】
本明細書に記載されている主題の1つ以上の実現例の詳細については、添付の図面および以下の説明に記載されている。主題の他の考えられる特徴、局面および利点は、明細書、図面および特許請求の範囲から明らかになるであろう。
【図面の簡単な説明】
【0020】
【
図1】各々がそれぞれのパラメータセットを有するニューラルネットワークのレイヤを介してニューラルネットワーク入力を処理するためのハードウェア回路の一例を示す。
【
図2A】ニューラルネットワークのそれぞれのレイヤを使用した単一のバッチ要素の処理に関連するグラフの一例を示す。
【
図2B】ニューラルネットワークの所与のレイヤのための複数のバッチ要素の処理に関連するグラフの一例を示す。
【
図3】スーパーレイヤを形成するニューラルネットワークの複数のレイヤの中での単一のバッチ要素の処理に関連するグラフの一例を示す。
【
図4】ニューラルネットワークのスーパーレイヤを介してニューラルネットワーク入力を処理する方法のフロー図の一例である。
【
図5】スーパーレイヤの複数のレイヤを使用して単一のバッチ要素を処理するためにスーパーレイヤのシーケンスにパーティショニングされるニューラルネットワークレイヤを示すグラフの一例を示す。
【
図6A】ニューラルネットワークレイヤのワーキングセットサイズを示すグラフの一例を示す。
【
図6B】ニューラルネットワークのスーパーレイヤのワーキングセットサイズを示すグラフの一例を示す。
【発明を実施するための形態】
【0021】
さまざまな図における同様の参照番号および符号は、同様の要素を示す。
詳細な説明
複数のレイヤを有するニューラルネットワークを使用して、推論を計算することができる。たとえば、入力が与えられると、ニューラルネットワークはその入力に対する推論を計算することができる。ニューラルネットワークは、ニューラルネットワークの各レイヤを介して入力を処理することによってこの推論を計算する。特に、ニューラルネットワークのレイヤは、有向グラフの状態で配置され得て、レイヤの一部または全ては、それぞれのパラメータセットを有する。各レイヤは、入力を受信し、そのレイヤのためのパラメータセットに従って入力を処理して、出力を生成する。出力は、次のニューラルネットワークレイヤにおいて入力として使用することができる。
【0022】
したがって、受信した入力から推論を計算するために、ニューラルネットワークは、入力を受信し、有向グラフにおける各ニューラルネットワークレイヤを介してそれを処理して、推論を生成し、1つのニューラルネットワークレイヤからの出力は、次のニューラルネットワークレイヤへの入力として提供される。ニューラルネットワークレイヤへのデータ入力、たとえばニューラルネットワークへの入力または有向グラフにおけるレイヤに接続された1つ以上のレイヤの、ニューラルネットワークレイヤへの出力は、レイヤへの活性化入力と称される。
【0023】
有向グラフにおける特定のレイヤは、複数の入力を受信したり、複数の出力を生成したり、複数の入力を受信して複数の出力を生成したりすることができる。また、ニューラルネットワークのレイヤは、レイヤの出力を前のレイヤへの入力として送り返すことができるように配置することもできる。記載されている技術に係る方法は、各スーパーレイヤが1つ以上のレイヤを含む有向グラフのパーティションであるように、ニューラルネットワークレイヤの、スーパーレイヤのシーケンスへのパーティショニングを決定するステップを含み得る。
【0024】
記載されている方法は、ハードウェア回路上のニューラルネットワークについてシーケンスにおけるそれぞれのスーパーレイヤのレイヤを介して入力のバッチを処理するステップを含み得る。入力のバッチを処理するステップは、レイヤのためのパラメータをハード
ウェア回路のメモリにロードするステップと、これらのパラメータを使用してニューラルネットワーク入力を処理して、この入力に対するそれぞれのスーパーレイヤ出力を生成するステップとを含み得る。
【0025】
いくつかの実現例では、本明細書に記載されている1つ以上の機能は、システムのハードウェア回路または電子部品を使用して実行することができる。ハードウェア回路は、ハードウェア回路に電気的に結合された制御装置から制御信号を受信することができる。ハードウェア回路は、ニューラルネットワークレイヤへの入力およびこれらの入力を処理するために使用されるパラメータを格納するための1つ以上の非一時的な機械読取可能記憶媒体(たとえば、メモリ)を含むパッケージングされた電子デバイスであってもよい。
【0026】
ハードウェア回路は、プロセッサマイクロチップ(たとえば、CPUまたはGPU)などのパッケージングされた集積回路またはプロセッサデバイスを形成する複数のコンポーネントを含み得る。したがって、この例では、ハードウェア回路のメモリは、マイクロチップを形成する複数の他のコンポーネントに対する「オンチップ」メモリであってもよい。本明細書では、パッケージングされたハードウェア回路または電子デバイスは、支持ケース内に密閉または封入されたシリコンウェハなどの半導体材料を含んでもよい。支持ケースは、デバイスを印刷回路基板に接続するために、ケースの外縁から延びる1本の導線を含み得る。
【0027】
制御装置は、ハードウェア回路から間隔をあけて配置され、かつ、少なくともハードウェア回路のコンポーネントパッケージ(たとえば、支持ケース)によって封入されたオンチップメモリの外部にある外部コントローラであってもよい。外部コントローラは、ハードウェア回路に制御信号を提供してハードウェア回路に上記の入力およびパラメータを使用してニューラルネットワーク推論計算を実行させるシステムレベルコントローラであってもよい。外部コントローラは、メモリが、少なくともパッケージングされたハードウェア回路のオンチップメモリと同一場所に位置していないのでオフチップである「オフチップ」メモリを含んでもよい。
【0028】
いくつかの実現例では、推論計算を実行する際、外部コントローラは、オフチップメモリを使用するのではなく、ハードウェア回路のオンチップメモリを使用して、入力およびパラメータを格納することができる。システムの少なくとも1つのコントローラから制御信号を受信したことに応答して、ハードウェア回路は、オンチップメモリにアクセスして、格納された入力およびパラメータを使用してニューラルネットワーク計算を実行する。
【0029】
図1は、ニューラルネットワーク計算を実行するために使用することができるハードウェア回路100の一例を示す。ニューラルネットワーク計算を実行することは、各々がそれぞれのパラメータセットを有するニューラルネットワークのレイヤを介して回路100がニューラルネットワーク入力を処理することを含み得る。いくつかの実現例では、回路100は、ニューラルネットワークを具体化する1つ以上のプロセッサ、プロセッサマイクロチップまたは他の回路コンポーネントを含むハードウェア回路に対応する。他の実現例では、回路100は、1つ以上のニューラルネットワークを形成する1つ以上のハードウェア回路、プロセッサおよび他の関連の回路コンポーネントを含み得る。一般に、記載されている技術に係る方法は、CPU、GPU、デジタル信号プロセッサ(DSP)もしくは他の関連のプロセッサアーキテクチャなどのさまざまなプロセッサアーキテクチャに適用することができ、またはさまざまなプロセッサアーキテクチャを使用して実現することができる。
【0030】
一般に、回路100は、コントローラ108を含み、コントローラ108は、1つ以上の制御信号110を提供して、メモリ104に関連付けられた入力をメモリ102のメモ
リアドレスに格納するか、またはメモリ102のメモリアドレスから取得する。同様に、コントローラ108は、1つ以上の制御信号110を提供して、パラメータメモリ106のパラメータをメモリ102のメモリアドレスに格納するか、またはメモリ102のメモリアドレスから取得する。
【0031】
回路100は、1つ以上の積和演算(MAC)セル/ユニット107と、入力活性化バス112と、出力活性化バス114とをさらに含む。制御信号110は、たとえば、1つ以上の入力を入力活性化バス112上に提供することをメモリ102にさせたり、1つ以上のパラメータをパラメータメモリ106から提供することをメモリ102にさせたり、これらの入力およびパラメータを使用して計算を実行して出力活性化を生成して出力活性化バス114に提供することをMACセル/ユニット107にさせたりすることができる。
【0032】
コントローラ108は、1つ以上の処理ユニットとメモリとを含み得る。コントローラ108の処理ユニットは、1つ以上のプロセッサ(たとえば、マイクロプロセッサまたは中央処理装置(CPU))、グラフィックス処理ユニット(GPU)、特定用途向け集積回路(ASIC)、またはさまざまなプロセッサの組み合わせを含み得る。コントローラ108は、本明細書に記載されている判断および計算のうちの1つ以上を実行するための追加の処理オプションを提供する他の記憶または計算リソース/装置(たとえば、バッファ、レジスタ、制御回路など)も含み得る。
【0033】
いくつかの実現例では、コントローラ108の処理ユニットは、メモリに格納された命令を実行して、コントローラ108および回路100に本明細書に記載されている1つ以上の機能を実行させる。コントローラ108のメモリは、1つ以上の非一時的な機械読取可能記憶媒体を含み得る。本明細書に記載されている非一時的な機械読取可能記憶媒体は、ソリッドステートメモリ、磁気ディスク、光ディスク、携帯型コンピュータディスケット、ランダムアクセスメモリ(RAM)、リードオンリメモリ(ROM)、消去可能プログラマブルリードオンリメモリ(たとえば、EPROM、EEPROMまたはフラッシュメモリ)、または情報を格納することができるその他の有形の媒体を含み得る。
【0034】
回路100は、計算ユニットまたは計算タイルの一例であってもよく、テンソル、行列および/またはデータアレイなどの多次元データ構造に関連付けられた計算を実行するために追加のハードウェア構造を含み得る。いくつかの実現例では、入力値は、活性化メモリ104に予めロードすることができ、パラメータ/重み値は、ニューラルネットワークコンピューティングシステムに関連付けられた外部または上位制御装置から回路100によって受信されるデータ値を使用してパラメータメモリ106に予めロードすることができる。
【0035】
回路100は、システムのニューラルネットワークを使用して実行される特定の計算オペレーションを定義する命令を受信することができる。一般に、メモリ102に格納されたデータ値の各々は、通常、それぞれのメモリアドレス位置に書き込まれる。そして、特定の計算オペレーションを実行するのに入力などのデータ値が必要であるときに、メモリ102におけるアドレス位置は、制御装置の一例(たとえば、コントローラ108)によってアクセスすることができる。
【0036】
コントローラ108は、1つ以上の制御信号110をメモリ102に提供して、入力をメモリ102から入力活性化バス112上にロードし、MAC107を含む計算ユニットのアレイに値を提供することができる。活性化メモリ104のインデックスは、入力を有する全てのメモリアドレス位置を含み得る。データバス112は、計算アレイの1つ以上のユニットによってアクセス可能である。計算アレイのユニットは、1つ以上の活性化値
をデータバス112から受信して、受信した活性化値に基づいて行列乗算に関連する計算を実行することができる。
【0037】
所与の計算サイクルにおいて、回路100は、ニューラルネットワークレイヤの推論計算に関連付けられた乗算演算を実行するために、活性化メモリ104およびパラメータメモリ106の要素へのアクセスを必要とし得る。計算が実行されるサイクルにおいて、コントローラ108は、1つの入力値を一度に提供することができ、MACセル107を含む計算ユニットのアレイは、活性化に重み/パラメータを乗算して、所与の入力についてさまざまな出力活性化を生成する。
【0038】
いくつかの実現例では、計算ユニットのアレイの各MACセル107は、ニューラルネットワークレイヤのさまざまな出力深さを担うことができる。計算ユニットのアレイは、コントローラ108によって完全に制御することができ、コントローラ108は、活性化値の検出に基づいて、いつ特定の計算を実行する必要があるかを判断することができる。
【0039】
さらに、入力値は、メモリ102に格納するために回路100に到達すると、分析され得る。入力を分析したことに応答して、コントローラ108は、プログラムされた命令を実行して、メモリ102に特定の入力値のみ(たとえば、ゼロでない活性化値のみ)を格納することによって活性化データを効率的に圧縮し、それによってメモリストレージスペースおよび対応する帯域幅を節約することができる。
【0040】
回路100が入力およびパラメータを受信すると、コントローラ108は、たとえば、1つ以上のダイレクトメモリアクセスオペレーションを実行することができる。これらのメモリアクセスオペレーションの実行は、活性化メモリ104の次元要素に対応する入力をメモリ102のアドレス位置に格納することを含む。同様に、コントローラ108は、パラメータメモリ106の次元要素に対応するパラメータもメモリ102のアドレス位置に格納することができる。コントローラ108は、特定の入力がフェッチされるメモリアドレスを維持する1つ以上のアドレスレジスタをさらに含み得る。さらに、1つ以上のレジスタは、対応するパラメータがフェッチされて特定の入力を乗算されるメモリアドレスも格納する。
【0041】
コントローラ108は、上記のレジスタを参照して、第1および第2の入力がシーケンシャルに処理される際に、第1の入力のための対応するパラメータ(およびメモリアドレス)を決定し、第2の入力のための対応するパラメータ(およびメモリアドレス)を決定することができる。いくつかの実現例では、第1のニューラルネットワークレイヤにおいて計算される出力活性化は、ネットワーク内の次の/後続の第2のレイヤ、たとえばネットワークの次の隠れレイヤまたは出力レイヤ、への入力として使用される。一般に、ニューラルネットワークの各レイヤは、それぞれのパラメータセットの現在の値に従って、受信した入力から出力を生成する。
【0042】
代替的な実現例では、(たとえば、「X」または「Y」次元を繰り返すように)パラメータメモリ106の所与の次元要素についてさまざまな重みをカバーするいくつかの乗算演算のオペランドとして単一の入力が使用されるいくつかの計算オペレーションがあってもよい。記載されている技術によれば、回路100は、計算システムまたは機械学習システムの外部コントローラから制御信号を受信するように構成され得る。外部コントローラは、回路100のオンチップメモリに格納されたニューラルネットワーク入力およびパラメータのバッチを提供することができる。以下でより詳細に説明するように、外部コントローラは、回路100上のニューラルネットワークによるバッチ要素処理のためのスケジューリングポリシーを実行するように構成され得る。
【0043】
たとえば、システムの外部コントローラは、制御信号を回路100に提供して、回路100に、回路100のオンチップメモリに格納された入力およびパラメータを使用してニューラルネットワークのレイヤを介してニューラルネットワーク入力を処理させることができる。記載されている技術によれば、特定のスケジューリングポリシーを使用して、ニューラルネットワークのレイヤを、スーパーレイヤ(以下で説明)の1つ以上のシーケンスを形成するレイヤのグループにパーティショニングすることができる。次いで、システムコントローラは、回路100を使用して、オンチップメモリに格納された入力およびパラメータにアクセスし、次いで、スーパーレイヤのシーケンスにおける各レイヤを介してニューラルネットワーク入力のバッチを処理することができる。
【0044】
図2Aは、ニューラルネットワークのそれぞれのレイヤを使用した単一のバッチ要素の処理に関連するグラフ200Aの一例を示す。いくつかの実現例では、グラフ200A/Bおよび下記のグラフ300、500および600A/Bは、ニューラルネットワークのトポロジを表すことができる有向グラフの一例とは異なっている。
【0045】
グラフ200Aは、ニューラルネットワークのレイヤを介したバッチ要素の処理中にワーキングセットのサイズがどのように変化するかを示している。ワーキングセットのサイズは、ストレージユニット204で表されている。一般に、所与のニューラルネットワークレイヤのワーキングセットは、ニューラルネットワークレイヤへの入力と、ニューラルネットワークレイヤからの出力と、ニューラルネットワークレイヤによって入力を処理するために使用されるパラメータとを含む。ワーキングセットは、一般に、所与のニューラルネットワーク計算に必要な1つ以上のデータ構造のグループを含み、これらのデータ構造については以下でより詳細に説明する。
【0046】
1つ以上のストレージユニット204は、ワーキングセットの入力およびニューラルネットワークレイヤのための関連付けられたパラメータを格納するために使用される。ストレージユニット204は、上記のメモリ102のメモリリソースに関連付けることができる。バッチ要素は、ハードウェア回路上のニューラルネットワークの一例を使用して処理される単一のニューラルネットワーク入力である。
【0047】
上記のように、ニューラルネットワークは、推論を計算するために使用される複数のレイヤを含み得て、推論は、ニューラルネットワークのレイヤを介してニューラルネットワーク入力を処理することによって計算される。したがって、グラフ200Aは、レイヤA、レイヤB、レイヤC、レイヤDおよびレイヤEを含むニューラルネットワークレイヤ206をさらに示している。グラフ200Aは、バッチ要素がまずレイヤAを介して処理され、次いでレイヤBを介して処理され、次いでレイヤCを介して処理され、次いでレイヤDを介して処理され、次いでレイヤEを介して処理されることを示している。いくつかの実現例では、レイヤ206のそれぞれのレイヤは、畳み込みレイヤ、削減レイヤ、全結合(FC)レイヤ、分類子レイヤ、要素ごと乗算レイヤ、またはプーリングレイヤ、たとえば平均プーリングレイヤもしくは最大プーリングレイヤといったタイプのニューラルネットワークレイヤのうちの1つであってもよい。
【0048】
ニューラルネットワークレイヤのワーキングセットは、1つ以上のバッチ要素と、ニューラルネットワークのそれぞれのレイヤを介してこれらのバッチ要素を処理するために使用されるパラメータとを含み得る。ワーキングセットは、i)ハードウェア回路上のニューラルネットワークを使用して処理される入力のバッチの1つ以上の入力/バッチ要素、およびii)入力およびパラメータを格納するのに必要なメモリ量を示すサイズパラメータまたはストレージユニット204の数によって定義することができる。入力に加えて、ワーキングセットは、出力活性化も含んでもよい。いくつかの実現例では、ニューラルネットワークは、上記のバッチ要素に関連付けられた「バッチ」次元およびレイヤ206に
対応する「レイヤ」次元を有するものとすることができる。
【0049】
概して、
図2Aの以下の説明は、たとえば
図3~
図6を参照して以下で説明する改良されたニューラルネットワークスケジューリングプロセスのための文脈を提供する。たとえば、レイヤ206は、少なくとも5つのレイヤ(たとえば、レイヤA、B、C、DおよびE)を含む機械学習モデルの一例のニューラルネットワークレイヤであってもよい。機械学習モデルによって実行される推論計算は、特徴深さまたは出力ストライディングが急にまたは予想外に増加する場合がある。これが発生すると、アクティブワーキングセットは、ニューラルネットワーク計算プロセスの所与の時点において、入力および出力活性化量を時間とともに増加させたり、入力および出力活性化量を時間とともに減少させたりし得る。
【0050】
たとえば、
図2Aに示されるように、機械学習モデルによって処理される単一のバッチ要素のワーキングセットは、レイヤAで行われるバッチ処理に単一のストレージユニット204を必要としてもよい。レイヤBでのバッチ処理中に、所与のワーキングセットについて処理される入力活性化の増加が起こり得る。そのため、機械学習モデルは、レイヤAにおける単一のストレージユニット204ではなく、8個のストレージユニット204をレイヤBでのバッチ処理中に使用する必要があるであろう。さらに、
図2Aの実現例では、レイヤC、DおよびEで処理されるワーキングセットは、それぞれ2個、4個および1個のストレージユニットを必要としてもよい。
【0051】
いくつかの実現例では、入力/出力活性化量および対応する必要なストレージユニットの増加または減少は、ニューラルネットワークのレイヤに基づいて起こり得て、これらのレイヤの各々は、異なる数のパラメータまたは重みを有する。そのため、レイヤAのワーキングセットは、レイヤBと比較してより少ない活性化およびパラメータを含み得るため、レイヤAのワーキングセットは、より多くのストレージリソースを必要とし得るレイヤBのより大きなワーキングセットと比較して、必要とするストレージリソースが少なくて済む。
【0052】
いくつかの実現例では、ストレージユニット204は、入力メモリ104およびパラメータメモリ106のメモリリソースに対応し得る。たとえば、ストレージユニット204は、回路100のハードウェア回路の上記の電子部品のオンチップメモリに関連付けられたスタティックランダムアクセスメモリ(SRAM)のメモリリソースに対応し得る。メモリ104,106を含むオンチップメモリリソースは、固定または閾値記憶容量を有し得る。この閾値記憶容量は、回路100のオフチップメモリに関連付けられたダイナミックランダムアクセスメモリ(DRAM)リソースの記憶容量よりも小さくてもよく、または実質的に小さくてもよい。上記のように、オフチップメモリは、上位外部制御装置のメモリであってもよい。
【0053】
図2Bは、ニューラルネットワークの所与のレイヤのための複数のバッチ要素の処理に関連するグラフ200Bの一例を示す。グラフ200Bは、バッチ212のそれぞれのバッチ要素に関連付けられたワーキングセットの入力を格納するためのストレージユニットの第1の集合体208を含む。グラフ200Bは、バッチ214のそれぞれのバッチ要素に関連付けられたワーキングセットの入力を格納するためのストレージユニットの第2の集合体210をさらに含む。
【0054】
図2Bの実現例では、2つ以上のバッチの各々は、複数のバッチ要素を含み得て、すなわち、バッチ212は、少なくとも1つの個々のバッチ要素「0」を有し得て、バッチ214は、少なくとも1つの個々のバッチ要素「1」を有し得る。少なくとも2つのバッチ212,214を処理することにより、所与のワーキングセットの相対的サイズをバッチ
サイズだけ増幅させることができる。たとえば、
図2Bに示されるように、レイヤ206(レイヤA~レイヤE)の各々におけるワーキングセットサイズは、対応するバッチサイズを有する少なくとも2つのバッチ、すなわちバッチ212およびバッチ214、の入力を処理することに基づいて、増幅させることができ、たとえば二倍にすることができる。
【0055】
上記のように、システムコントローラは、入力のバッチがニューラルネットワークの1つ以上のレイヤを介して処理される態様を定義するニューラルネットワークスケジューリングプロセスまたはポリシーを実行するためにコンパイルタイムスケジューリングまたは他の計算論理を含むように構成され得る。たとえば、回路100は、ニューラルネットワーク入力のバッチを受信し、システムコントローラは、バッチ内の各入力について推論を実行するために入力をどのように処理すべきであるかに関してスケジューリングプロセスを決定する。入力を処理することにより、ニューラルネットワークは、入力活性化などの中間入力を生成し、これらの中間入力は、ニューラルネットワークの後続のレイヤに提供され得る。中間入力は、入力活性化として後続のニューラルネットワークレイヤに提供される第1のニューラルネットワークレイヤの出力活性化に対応し得る。
【0056】
従来のスケジューリングポリシーでは、ニューラルネットワークは、第1のニューラルネットワークレイヤを介してバッチ内の各入力またはバッチ要素を処理して、各バッチ要素についてレイヤ出力(出力活性化)を生成する。次いで、バッチ内のバッチ要素の処理が完了するまで、各レイヤ出力は、第2のニューラルネットワークレイヤなどを介して処理される。すなわち、ニューラルネットワークにおける次のレイヤの処理が行われる前に、所与のレイヤの処理がバッチ内の全てのバッチ要素に対して実行される。この従来のニューラルネットワークスケジューリングポリシーは、メモリ容量などの制約によって制限される場合があるため、機械学習システムの利用可能なメモリおよび計算リソースを最大限使用するという観点からは非効率であるかもしれない。
【0057】
オンチップメモリ、たとえばハードウェア回路の一例のメモリ104,106のストレージユニット204、の使用に関して、いくつかの実現例では、オンチップメモリリソースによってサポート可能な最大バッチサイズは、ワーキングセットのサイズに基づいて決定することができる。特に、ストレージユニット204によってサポートされる最大バッチサイズは、一部には、所与のニューラルネットワークレイヤによって処理される入力およびパラメータの最大のワーキングセットに基づいて決定することができる。
【0058】
たとえば、
図2Bを参照して、メモリ102および104に関連付けられた合計オンチップ記憶容量は、20個のストレージユニット204に制限されてもよい。
図2Bでは、レイヤBによって処理される2つのバッチ要素のワーキングセットが16個のストレージユニット204を必要とするので、第3のバッチ要素の処理には24個のストレージユニット204が必要になり、そのため、20個のストレージユニット容量を超えることになる。そのため、この例では、各バッチ要素の処理に少なくとも8個のストレージユニットが必要である場合、ニューラルネットワークは、2つのバッチ要素を含む特定の最大ワーキングセットサイズをサポートするだけでよい。
【0059】
具体的には、
図2Bの実現例では、ワーキングセットにおけるバッチ要素「0」の処理には、参照特徴208によって示されるように8個のストレージユニットが必要であり、ワーキングセットにおけるバッチ要素「1」の処理も、参照特徴210によって示されるように8個のストレージユニットが必要である。したがって、バッチ要素0および1の処理には、まとめて、16個のストレージユニット204が必要であるので、5個以上のストレージユニット204を必要とする少なくとも1つの追加のバッチ要素の処理は、ニューラルネットワークのハードウェア回路の利用可能なメモリリソースのオンチップ記憶容量(ここでは、20個のユニットに制限される)を超えるであろう。
【0060】
図3は、1つ以上のスーパーレイヤ308および310を形成するニューラルネットワークの複数のレイヤ206間でのバッチ要素の処理に関連するグラフ300の一例を示し、スーパーレイヤ308は、たとえばレイヤA、BおよびCを含む。グラフ300は、それぞれのバッチ要素302のバッチ要素0に関連付けられたワーキングセットの入力およびパラメータを格納するためのストレージユニットの第1の集合体304を含む。同様に、グラフ300は、それぞれのバッチ要素302のバッチ要素1に関連付けられたワーキングセットの入力およびパラメータを格納するための、
図3では灰色で示されているストレージユニットの第2の集合体306をさらに含む。
【0061】
上記のように、回路100は、回路100の他のコンポーネントまたは回路と比較してより少ないオンチップまたはSRAMストレージリソースを有し得る電子部品またはハードウェア回路の一例を含み得る。しかし、本明細書に記載されているように、回路100は、利用可能なオンチップメモリを使用して計算集約型の機械学習アルゴリズムを実行するように構成され得る。これらの例では、機械学習システムのニューラルネットワークは、ハードウェア回路のオンチップメモリのストレージユニット204によってサポート可能な最小または最大バッチサイズに対して不必要な制約を課すことのないアクセラレータアーキテクチャを含み得る。
【0062】
記載されている技術によれば、改良されたニューラルネットワークスケジューリングプロセスを使用して、回路100のハードウェア回路のローカルオンチップストレージリソースを使用することにより提供されるバッチローカリティを効率的に利用することができる。さらに、このオンチップストレージおよび他のローカル計算リソースを使用することにより、利用可能な帯域幅を最適化することができ、帯域幅およびエネルギの影響を受けやすい計算環境においてコンポーネントエネルギ消費を節約することができる。さらに、このオンチップストレージおよび他のローカルリソースの使用は、ニューラルネットワークのレイヤを介した入力の処理中のハードウェア回路による外部通信を最小化するのに役立つことができる。
【0063】
たとえば、簡単に上記したように、ニューラルネットワークを実現するハードウェア回路は、ホストデバイス/外部コントローラと外部通信して、ニューラルネットワークが推論の計算に使用するニューラルネットワーク入力およびパラメータを受信してもよい。これらの外部通信は、ハードウェア回路のオンチップ計算リソースの使用を必要とする可能性がある。したがって、外部通信は、ハードウェア回路の利用可能な計算帯域幅を減少させてシステムレイテンシを増加させる可能性があり、ハードウェア回路の電子部品によるエネルギ消費の増加も生じさせるおそれがある。
【0064】
帯域幅およびエネルギ消費に関連するこれらの制約に鑑みて、本明細書には、ニューラルネットワークモデルの一例の「バッチ」次元と「レイヤ」次元とを混合して特定のメモリワーキングセットの使用を最適化するグローバルスケジューリングポリシーまたはプロセスが記載されている。特に、記載されている技術の実現例は、機械学習モデルのバッチ次元およびレイヤ次元を活用して、ニューラルネットワークによって処理されるバッチ要素のアクティブワーキングセットのサイズを最小化する柔軟なニューラルネットワークスケジューリングポリシーを含み得る。
【0065】
たとえば、記載されている教示に係る改良されたニューラルネットワークスケジューリングプロセスは、オンチップメモリ104,106へのパラメータを含むワーキングセットの格納がオンチップメモリリソースの閾値記憶容量を超えないようにアクティブワーキングセットをサイズ決めすることを可能にする。したがって、本明細書に記載されている方法は、ニューラルネットワークによるバッチ要素処理の効率的なスケジューリングを可
能にする。たとえば、効率は、入力およびこれらの入力を処理するために使用されるパラメータのバッチサイズに対して不必要な制約を課すことのない態様でハードウェア回路のオンチップストレージにワーキングセットを格納することを可能にするスケジューリングポリシーに基づいて達成することができる。
【0066】
さらに、記載されている教示に係る改良されたスケジューリングポリシーは、入力およびパラメータを格納するための利用可能なオンチップリソースの効率的使用を最大化することにより、オフチップリソースにアクセスするための外部通信を最小化することができる。オンチップリソースの効率的使用および外部通信の低減は、利用可能なシステム帯域幅の増加およびシステムコンポーネントによるエネルギ消費の全体的な減少につながるであろう。
【0067】
いくつかの実現例では、改良されたスケジューリングプロセスまたはポリシーの局面は、ソフトウェア命令またはプログラムコードを使用してエンコードすることができる。これらの命令は、回路100の少なくとも1つのプロセッサ、コントローラ108の少なくとも1つのプロセッサ、または回路100もしくはコントローラ108もしくはそれら両方のハードウェア回路の一例の少なくとも1つのプロセッサによって実行可能であってもよい。
【0068】
図4は、回路100を使用してニューラルネットワークのスーパーレイヤを介してニューラルネットワーク入力を処理する方法400のフロー図の一例である。方法またはプロセス400は、ニューラルネットワークによるバッチ要素処理のための改良されたスケジューリングポリシーに対応する。ブロック402において、回路100は、システムのハードウェア回路上のニューラルネットワークを使用して処理されるニューラルネットワーク入力のバッチを受信する。ニューラルネットワークは、有向グラフの状態で配置された複数のレイヤを有し得て、各レイヤは、それぞれのパラメータセットを有し得る。上記のように、いくつかの実現例では、回路100のハードウェア回路は、ニューラルネットワークハードウェアシステムの一例のホストインターフェイスデバイスまたは上位コントローラから入力を受信することができる。
【0069】
ブロック404において、回路100は、ニューラルネットワークレイヤの、スーパーレイヤのシーケンスへのパーティショニングを決定する。たとえば、回路100は、スーパーレイヤのシーケンスへのニューラルネットワークレイヤの1つ以上のパーティションを決定するように構成されたコンパイラロジックを含んでもよく、またはこのコンパイラロジックへのアクセスを有してもよい。代替的に、またはコンパイラロジックに加えて、回路100は、スーパーレイヤのシーケンスへのニューラルネットワークレイヤの1つ以上のパーティションを決定するように構成された少なくとも1つのハードウェアブロックを含んでもよく、またはこの少なくとも1つのハードウェアブロックへのアクセスを有してもよい。いくつかの実現例では、スーパーレイヤのシーケンスにおける各スーパーレイヤは、1つ以上のレイヤを含む有向グラフのパーティションである。
【0070】
ブロック406において、回路100は、システムのハードウェア回路を使用してニューラルネットワーク入力のバッチを処理する。いくつかの実現例では、ハードウェア回路を使用してニューラルネットワーク入力のバッチを処理することは、スーパーレイヤにおけるレイヤのためのそれぞれのパラメータセットをメモリ106にロードすることを含み得る。いくつかの例では、スーパーレイヤにおけるレイヤのためのパラメータは、スーパーレイヤのシーケンスにおける各スーパーレイヤについてロードされる。さらに、ハードウェア回路を使用してニューラルネットワーク入力のバッチを処理することは、バッチ内の各ニューラルネットワーク入力について、ハードウェア回路のメモリ内のパラメータを使用してスーパーレイヤの各レイヤを介してニューラルネットワーク入力を処理して、ニ
ューラルネットワーク入力のためのスーパーレイヤ出力を生成することも含み得る。
【0071】
シーケンスにおける第1のスーパーレイヤでは、スーパーレイヤへのニューラルネットワーク入力(たとえば、スーパーレイヤ入力)の出力は、第1のスーパーレイヤ出力である。さらに、第1のスーパーレイヤの後の各スーパーレイヤへのスーパーレイヤ入力は、シーケンスにおける先行するスーパーレイヤによって生成されたスーパーレイヤ出力である。いくつかの実現例では、ニューラルネットワーク入力のバッチを処理することは、シーケンスにおける第1のスーパーレイヤの全てのレイヤを介して入力を処理し、次いで、バッチ内の全ての入力がニューラルネットワーク内の全てのスーパーレイヤを介して処理されるまでシーケンスにおける各々の後続のスーパーレイヤの全てのレイヤを介して入力を処理することを含む。
【0072】
再び
図3を参照して、改良されたニューラルネットワークスケジューリングプロセスを使用する際、複数のレイヤ308および310についてバッチレスの態様で1つのバッチ要素を実行することができる。記載されている技術によれば、複数のレイヤ308は第1のスーパーレイヤを形成することができ、複数のレイヤ310は第1のスーパーレイヤとは異なる第2のスーパーレイヤを形成することができる。スーパーレイヤを形成するようにパーティショニングされる複数のレイヤのグループ分けについては、
図4を参照して以下でより詳細に説明する。
【0073】
図3に示されるように、いくつかの実現例では、機械学習モデルの一例のレイヤBは、より小さなワーキングセットが処理されるレイヤCにおける必要なストレージユニットの量と比較して、大きなワーキングセットを処理するために大量のストレージユニット204を必要とし得る。バッチ要素のワーキングセットが十分に小さい場合、改良されたスケジューリングプロセスは、スーパーレイヤ/レイヤ308などの複数のレイヤ(たとえば、スーパーレイヤ)の特定のグループによって処理される次のバッチ要素への機械学習モデル切り替えを含み得る。
【0074】
たとえば、回路100のハードウェア回路上で実現されるニューラルネットワークは、ニューラルネットワークの「バッチ」次元および「レイヤ」次元にわたってグローバルなスケジューリングを実行するように構成され得る。特に、ニューラルネットワークレイヤへの入力のバッチ処理は、第1のプロセス反復の際に要素0の第1のバッチに対してレイヤ308(A,B,C)のグループを実行し、次いで、第2のプロセス反復の際に要素1の第2のバッチに対して同じレイヤ(A,B,C)308のグループを実行することによって実行することができる。
【0075】
図3に示されるように、改良されたスケジューリングポリシーに従って異なるバッチ要素間で交互に行うことにより、上記の従来のスケジューリングポリシーの最大ワーキングセットサイズに対してワーキングセットの最大サイズが減少する。たとえば、少なくともバッチ要素1に対するレイヤBでのバッチ処理に関して、異なるバッチ要素間で交互に行うことにより、上記の従来のスケジューリングポリシーを使用したときに必要とされる16個のユニットという最大ワーキングセットサイズの代わりに、レイヤBの最大ワーキングセットサイズを10個のユニットに減少させることができる。たとえば、バッチ要素1に対するレイヤBでのバッチ処理に8個のユニットを使用してもよく、バッチ要素0に対するレイヤA、B、Cでの前のバッチ処理の出力、ならびに/または、レイヤDおよびEでの処理のためのバッチ要素0に関連付けられたワーキングセットの入力およびパラメータを格納するために2個のユニットを使用してもよい。
【0076】
図5は、スーパーレイヤを形成するようにパーティショニングされる複数のレイヤを使用して少なくとも単一のバッチ要素を処理するためにスーパーレイヤのシーケンスにパー
ティショニングされるニューラルネットワークレイヤを示すグラフ500の一例を示す。グラフ500は、それぞれのバッチ要素502のバッチ要素0のためのワーキングセットの入力を格納するためのストレージユニットの第1の集合体504を含む。
【0077】
同様に、グラフ500は、a)それぞれのバッチ要素502のバッチ要素1のためのワーキングセットの入力を格納するためのストレージユニットの第2の集合体506と、b)それぞれのバッチ要素502のバッチ要素2のためのワーキングセットの入力を格納するためのストレージユニットの第3の集合体508と、c)それぞれのバッチ要素502のバッチ要素3のためのワーキングセットの入力を格納するためのストレージユニットの第4の集合体510とをさらに含む。
【0078】
グラフ500は、グラフのX軸に沿ってスーパーレイヤのシーケンスをさらに含む。たとえば、グラフ500は、i)レイヤA、B、Cの各々を介してバッチ要素0、1、2および3を処理するための第1のスーパーレイヤ512と、ii)レイヤD、Eの各々を介してバッチ要素0、1、2および3を処理するための第2のスーパーレイヤ514とを含む。記載されている教示によれば、改良されたニューラルネットワークスケジューリングポリシーに基づいて定義されるスーパーレイヤのシーケンスは、ニューラルネットワークを実行するハードウェア回路のオンチップメモリ容量または閾値容量を超えることなく、比較的大きなワーキングセットバッチサイズをサポートすることができる。
【0079】
たとえば、
図5に示されるように、例示的な「B3」レイヤおよびバッチ局面中に入力が処理される場合、ワーキングセットの最大サイズは、4個のバッチ要素、たとえばそれぞれのストレージユニット204の特徴的な網掛けパターンによって示されるバッチ要素0、1、2および3、のために14個のストレージユニットしか必要としない。このように(たとえば、16個のストレージユニットを必要とする)従来のスケジューリングプロセスと比較して必要なストレージユニットが減少することにより、ハードウェア回路のオンチップメモリを介して受信して格納される入力およびパラメータのローカリティの利用を向上させることができる。このようにオンチップリソースの活用を向上させることにより、帯域幅およびエネルギの節約を増加させることができ、これは、一部には、オフチップまたはDRAMメモリリソースの使用量の減少に基づいて実現される。
【0080】
さらに、簡単に上記したように、改良されたスケジューリングポリシーを使用して、回路100のハードウェア回路のオンチップメモリ容量を超えることなく入力の1つ以上のバッチまたは入力を処理することができる。いくつかの実現例では、シーケンスにおけるスーパーレイヤのレイヤを介してニューラルネットワーク入力の1つ以上のバッチを処理することは、シーケンスにおける第1のスーパーレイヤ(512)が、少なくともニューラルネットワークの後続のレイヤによって受信されるように第1のスーパーレイヤ出力をこの後続のレイヤへの入力として生成することを含み得る。
【0081】
いくつかの例では、スーパーレイヤのシーケンスにおける第2のスーパーレイヤへのニューラルネットワーク入力は、シーケンスにおける第1のスーパーレイヤによって生成される第1のスーパーレイヤ出力に対応し得る。さらに、シーケンスにおけるスーパーレイヤのレイヤを介して入力のバッチを処理することは、ハードウェア回路のメモリ内のパラメータを使用して第2のスーパーレイヤにおける各レイヤを介してニューラルネットワーク入力を処理して、第1のスーパーレイヤ出力に対応するニューラルネットワーク入力のための第2のスーパーレイヤ出力を生成することを含み得る。
【0082】
いくつかの実現例では、スーパーレイヤのシーケンスにおけるスーパーレイヤのレイヤを介してニューラルネットワーク入力のバッチを処理することは、スーパーレイヤの各レイヤを介してバッチ要素についての入力を1つずつ処理することを含み得る。たとえば、
入力のバッチを処理することは、スーパーレイヤにおける各レイヤを介して2つ以上のニューラルネットワーク入力をシーケンシャルに処理することを含み得る。このようなシーケンシャルな処理は、スーパーレイヤの各レイヤを介して第1のニューラルネットワーク入力を処理し、次いでスーパーレイヤの各レイヤを介して第2のニューラルネットワーク入力を処理することを含み得る。
【0083】
いくつかの実現例では、シーケンスにおける各スーパーレイヤについて、スーパーレイヤのレイヤを介して入力を処理することは、バッチ内の第2のニューラルネットワーク入力に対応するスーパーレイヤ入力がスーパーレイヤにおける各レイヤを介して後に処理される前にバッチ内の第1のニューラルネットワーク入力のためのスーパーレイヤ入力がスーパーレイヤにおける各レイヤを介して処理されるように、スーパーレイヤにおける各レイヤを介してニューラルネットワーク入力のバッチに対応するスーパーレイヤ入力をシーケンシャルに処理することを含み得る。
【0084】
いくつかの実現例では、スーパーレイヤのシーケンスにおける第1のスーパーレイヤは、単一のニューラルネットワークレイヤを含み得る。この実現例では、スーパーレイヤのシーケンスを介して入力を処理することは、この単一のニューラルネットワークレイヤを含む第1のスーパーレイヤを介して第1の入力を処理することを含み得る。この第1の入力が第1のスーパーレイヤの単一のレイヤを介して処理された後、第1の入力がシーケンスにおける第1のスーパーレイヤに続く後続のスーパーレイヤの全てのレイヤを介して処理される前に、第2の入力を第1のスーパーレイヤによってすぐに処理することができる。シーケンスにおける後続のスーパーレイヤによって処理される第1の入力は、単一のニューラルネットワークレイヤを含む第1のスーパーレイヤのスーパーレイヤ出力であってもよい。
【0085】
スーパーレイヤおよびスーパーレイヤの1つ以上のシーケンスは、改良されたニューラルネットワークスケジューリングポリシーに従ってレイヤのグループをパーティショニングすることに基づいて形成することができる。いくつかの実現例では、回路100は、改良されたスケジューリングポリシーのためのプログラムされた命令を含み、これらの命令は、ニューラルネットワークレイヤの、スーパーレイヤのシーケンスへのパーティショニングを決定することを含み得る。各スーパーレイヤは、1つ以上のレイヤを含む有向グラフのパーティションであり得る。
【0086】
改良されたスケジューリングプロセスの局面により、所与のスーパーレイヤのための全ての入力およびパラメータが回路100のハードウェア回路のオンチップストレージからアクセスできるようにニューラルネットワークレイヤを複数のスーパーレイヤに形成することができる。上記のように、入力およびパラメータへのオンチップアクセスは、ハードウェア回路による外部通信を最小化することができる。たとえば、ハードウェア回路は、追加量の入力およびパラメータをオフチップインターフェイスから取得するための反復性フェッチ動作に関連付けられた計算プロセスを回避することができるので、外部通信を最小化することができる。
【0087】
いくつかの実現例では、オフチップインターフェイスは、入力およびパラメータを回路100に提供する外部制御装置にハードウェア回路を結合することができる。特に、スーパーレイヤのシーケンスにおける各スーパーレイヤは、このスーパーレイヤに対する1つ以上のニューラルネットワーク入力を処理するために特定量のパラメータを受信することができる。いくつかの例では、スーパーレイヤのレイヤを介して1つ以上のニューラルネットワーク入力を処理することは、スーパーレイヤに対する特定量の入力を処理するために後続のある量のパラメータを受信することなく入力を処理することを含み得る。
【0088】
いくつかの実現例では、回路100は、スーパーレイヤのシーケンスの1つ以上のスーパーレイヤパーティションまたは境界を決定するようにプログラムコードを実行する。たとえば、回路100は、所与のレイヤについて活性化ワーキングセットと集約パラメータ容量との合計を求めるまたは計算することができる。次いで、回路100は、求められた合計を使用して、一部にはハードウェア回路のメモリリソースの予め規定されたまたは閾値オンチップ記憶容量(たとえば、メモリ104および106)に基づいて、ニューラルネットワークレイヤの、スーパーレイヤのシーケンスへのパーティショニングを決定することができる。したがって、ニューラルネットワークレイヤは、回路100のハードウェア回路がニューラルネットワーク入力の1つ以上のバッチを処理する際にオンチップメモリの閾値記憶容量を超えないようにスーパーレイヤのシーケンスにパーティショニングされることができる。
【0089】
いくつかの実現例では、ニューラルネットワークレイヤの、スーパーレイヤのシーケンスへのパーティショニングを決定することは、i)回路100が、ニューラルネットワークによって処理するための入力を含む少なくとも1つのワーキングセットのための特定のサイズパラメータを決定することと、ii)回路100が、ハードウェア回路のメモリの特定の集約入力活性化およびパラメータ容量を決定することと、iii)回路100が、少なくとも1つのワーキングセットのための特定のサイズパラメータまたはハードウェア回路のメモリの特定の集約入力活性化およびパラメータ容量に少なくとも基づいて、スーパーレイヤのシーケンスへのレイヤのパーティショニングを決定することとを含む。
【0090】
たとえば、オンチップメモリの記憶容量または閾値容量は、500メガバイト(MB)であってもよい。回路100は、式1[合計使用量=(ワーキングセット×N)+パラメータ]に基づいて合計オンチップメモリ使用量を求めることができ、式1の変数Nはバッチサイズである。次いで、回路100は、ニューラルネットワークの各レイヤのためのそれぞれのパラメータセットを格納するのに必要なメモリの量を決定することができる。いくつかの実現例では、
図5を参照して、回路100は、i)レイヤAのためのパラメータセットが25MBのメモリを必要とし、ii)レイヤBのためのパラメータセットが125MBのメモリを必要とし、iii)レイヤCのためのパラメータセットが50MBのメモリを必要とすると判断することができる。
【0091】
したがって、この例では、回路100は、レイヤA、BおよびCのためのそれぞれのパラメータセットの総メモリ使用量が200MBであり、利用可能なオンチップメモリのうち300MBが残っており入力を格納するのに使用される(たとえば、500MBのオンチップメモリ容量-200MBの総メモリ使用量)と判断する。それぞれのレイヤA、B、Cについて、回路100は、それぞれのレイヤによって処理されるワーキングセットの入力のための特定のサイズパラメータおよびワーキングセットの対応するバッチサイズを決定することができる。ワーキングセットに対する入力のサイズパラメータおよび対応するバッチサイズを使用して、回路100は、メモリの集約活性化およびパラメータ容量を決定することができる。回路100は、メモリの集約活性化およびパラメータ容量を使用して、スーパーレイヤのシーケンスへのレイヤのパーティショニングを決定することができる。
【0092】
いくつかの実現例では、回路100は、式1、(たとえば、メモリ単位の)入力のサイズパラメータ、バッチサイズ、およびパラメータに使用される集約メモリを使用して、レイヤの1つ以上のグループの合計オンチップメモリ使用量を決定する。回路100は、レイヤの各グループの合計メモリ使用量を500MBのオンチップ記憶容量と比較することができる。次いで、回路100は、比較結果に基づいて、スーパーレイヤのシーケンスを形成するレイヤのパーティショニングまたはグループを決定することができる。回路100は、ハードウェア回路がワーキングセットのためのニューラルネットワーク入力のバッ
チを処理する際にオンチップメモリの閾値記憶容量(500MB)を超えないようにスーパーレイヤのシーケンスへのレイヤのパーティショニングを決定する。
【0093】
図6Aは、ニューラルネットワークレイヤのための活性化ワーキングセットサイズを示すグラフ600Aの一例を示し、
図6Bは、ニューラルネットワークのスーパーレイヤのための活性化ワーキングセットサイズを示すグラフ600Bの一例を示す。上記のように、ならびにグラフ600Aおよび600Bによって示されるように、スーパーレイヤとして配置されていないニューラルネットワークレイヤのワーキングセットは、スーパーレイヤとして配置されたニューラルネットワークレイヤのワーキングセットのサイズと比較して、実質的により大きなワーキングセットサイズを含み得る。
【0094】
たとえば、上記の従来のスケジューリングポリシーを使用したバッチ処理のためのワーキングセットでは、ワーキングセットサイズが何百万もの入力を含むことになる。このような大量の入力は、入力およびこれらの入力を処理するために使用されるパラメータを格納するのにオンチップストレージユニット204が使用される場合にハードウェア回路のオンチップメモリリソースの記憶または閾値容量を超える可能性がある。これに対して、本明細書に記載されている改良されたスケジューリングポリシーに基づくスーパーレイヤパーティションを使用したバッチ処理のためのワーキングセットでは、ワーキングセットサイズが含む入力を実質的に少なくすることができる。このような実質的に少ない量の入力を、オンチップメモリ容量を超えないようにオンチップストレージユニット204を使用して効率的に格納することができる。
【0095】
主題の実施形態および本明細書に記載されている機能動作は、本明細書に開示されている構造およびそれらの構造的等価物を含むデジタル電子回路、有形に具体化されたコンピュータソフトウェアもしくはファームウェア、コンピュータハードウェア、またはそれらのうちの1つ以上の組み合わせで実現することができる。本明細書に記載されている主題の実施形態は、1つ以上のコンピュータプログラムとして、すなわちデータ処理装置によって実行されるようにまたはデータ処理装置の動作を制御するように有形の非一時的なプログラムキャリアにエンコードされるコンピュータプログラム命令の1つ以上のモジュールとして実現することができる。
【0096】
代替的にまたは加えて、プログラム命令は、人工的に発生させた伝搬信号、たとえば機械によって生成される電気信号、光信号または電磁信号にエンコードすることができ、これらの信号は、情報をエンコードするように生成され、好適な受信機装置に送信され、データ処理装置によって実行される。コンピュータ記憶媒体は、機械読取可能記憶装置、機械読取可能記憶基板、ランダムもしくはシリアルアクセスメモリデバイス、またはそれらのうちの1つ以上の組み合わせであってもよい。
【0097】
本明細書に記載されているプロセスおよび論理フローは、入力データ上で動作して出力を生成することによって機能を実行するように1つ以上のコンピュータプログラムを実行する1つ以上のプログラム可能なコンピュータによって実行することができる。これらのプロセスおよび論理フローは、特殊目的論理回路、たとえばFPGA(フィールドプログラマブルゲートアレイ)、ASIC(特定用途向け集積回路)、GPGPU(汎用グラフィックス処理ユニット)またはその他の処理ユニットによっても実行することができ、装置は、特殊目的論理回路としても実現することができる。
【0098】
コンピュータプログラムの実行に好適なコンピュータは、一例として、汎用マイクロプロセッサ、または特殊目的マイクロプロセッサ、またはそれら両方、またはその他の種類の中央処理装置を含み、これらに基づいていてもよい。一般に、中央処理装置は、リードオンリメモリまたはランダムアクセスメモリまたはそれら両方から命令およびデータを受
信する。コンピュータの必須の要素は、命令を実施または実行するための中央処理装置、ならびに、命令およびデータを格納するための1つ以上のメモリデバイスである。一般に、コンピュータは、データを格納するための1つ以上の大容量記憶装置、たとえば磁気ディスク、光磁気ディスクまたは光ディスク、も含み、または1つ以上の大容量記憶装置からデータを受信したりデータを送信したりデータを送受信したりするように動作可能に結合される。しかし、コンピュータは、このような装置を有していなくてもよい。
【0099】
コンピュータプログラム命令およびデータの格納に好適なコンピュータ読取可能媒体は、全ての形態の不揮発性メモリ、媒体およびメモリデバイスを含み、これらのデバイスは、一例として、半導体メモリデバイス(たとえば、EPROM、EEPROMおよびフラッシュメモリデバイス)、磁気ディスク(たとえば、内部ハードディスクまたはリムーバブルディスク)を含む。プロセッサおよびメモリは、特殊目的論理回路によって補完されてもよく、または特殊目的論理回路に組み込まれてもよい。
【0100】
本明細書は、多くの具体的な実現例の詳細を含んでいるが、これらは、いずれの発明または請求の範囲を限定するものとして解釈されるべきではなく、特定の発明の特定の実施形態に特有の特徴を説明するものとして解釈されるべきである。別々の実施形態の文脈で本明細書に記載されている特定の特徴は、単一の実施形態において組み合わせて実現することも可能である。逆に、単一の実施形態の文脈で記載されているさまざまな特徴は、複数の実施形態において別々にまたは任意の好適な部分的な組み合わせで実現することも可能である。さらに、特徴は、特定の組み合わせで動作するものとして上記され、最初にそのように記載されているかもしれないが、記載されている組み合わせの中の1つ以上の特徴は、場合によってはこの組み合わせから除外されてもよく、記載されている組み合わせは、部分的な組み合わせまたは部分的な組み合わせの変形例を対象としてもよい。
【0101】
同様に、動作は、特定の順序で図面に示されているが、これは、望ましい結果を達成するために、示されている特定の順序またはシーケンシャルな順序でこのような動作を実行しなければならないものとして理解されるべきではなく、示されている動作を全て実行しなければならないものとして理解されるべきでもない。特定の状況では、マルチタスクおよび並列処理が有利である場合もある。さらに、上記の実施形態におけるさまざまなシステムモジュールおよびコンポーネントの分離は、このような分離が全ての実施形態で必要であるものとして理解されるべきではなく、記載されているプログラムコンポーネントおよびシステムは、一般に、単一のソフトウェア製品に一体化されるかまたは複数のソフトウェア製品にパッケージングされてもよいということが理解されるべきである。
【0102】
主題の特定の実施形態について説明してきた。他の実施形態は、以下の特許請求の範囲の範囲内である。たとえば、特許請求の範囲に記載されている動作は、異なる順序で実行されても、依然として望ましい結果を達成することができる。一例として、添付の図面に示されているプロセスは、望ましい結果を達成するために、示されている特定の順序またはシーケンシャルな順序を必ずしも必要としない。特定の実現例では、マルチタスクおよび並列処理が有利である場合もある。