(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-09-20
(54)【発明の名称】機械学習モデルの分割推論演算の実行
(51)【国際特許分類】
G06F 9/50 20060101AFI20240912BHJP
G06N 5/04 20230101ALI20240912BHJP
【FI】
G06F9/50 150E
G06N5/04
G06F9/50 120B
【審査請求】有
【予備審査請求】未請求
(21)【出願番号】P 2024512139
(86)(22)【出願日】2021-09-17
(85)【翻訳文提出日】2024-04-15
(86)【国際出願番号】 US2021050975
(87)【国際公開番号】W WO2023043459
(87)【国際公開日】2023-03-23
(81)【指定国・地域】
(71)【出願人】
【識別番号】502208397
【氏名又は名称】グーグル エルエルシー
【氏名又は名称原語表記】Google LLC
【住所又は居所原語表記】1600 Amphitheatre Parkway 94043 Mountain View, CA U.S.A.
(74)【代理人】
【識別番号】110001195
【氏名又は名称】弁理士法人深見特許事務所
(72)【発明者】
【氏名】ウー,ドン・ヒョク
(57)【要約】
機械学習モデルの推論演算を実行するための、コンピュータ記憶媒体にエンコードされたコンピュータプログラムを含む方法、システム、および装置が、本文書に記載されている。一態様では、本方法は、推論演算を含む第1の機械学習モデルを表すデータを受信することを含む。システムが推論演算を実行するための推定持続時間が取得される。反復時間窓の各発生中に優先機械学習モデルの優先推論演算を実行するために予約された優先期間が取得される。反復時間窓の各発生の、優先期間を予約した後に残る残り期間が決定される。推定持続時間が残り期間よりも長いかどうかの判定が行われる。これに応答して、第1の機械学習モデルはサブモデルグループに分割される。ハードウェア処理ユニットは、残り期間中にサブモデルの推論演算を実行する。
【特許請求の範囲】
【請求項1】
ホストと、複数の機械学習モデルの推論演算を実行するように構成された1つまたは複数のハードウェア処理ユニットとを含むシステムによって実行される方法であって、
前記ホストにおいて、第1の推論出力を生成するために入力を処理する推論演算を含む第1の機械学習モデルを表すデータを受信することと、
前記システムが前記入力を処理するための前記第1の機械学習モデルの前記推論演算を実行し、前記第1の推論出力を生成するための第1の推定持続時間を取得することと、
前記1つまたは複数のハードウェア処理ユニットが前記複数の機械学習モデルの前記推論演算の少なくとも一部を実行する反復時間窓の各発生中に、優先機械学習モデルの優先推論演算を実行するために予約された優先期間を特定することと、
前記反復時間窓の各発生の、前記優先推論演算を実行する前記優先期間を予約した後に残る第1の残り期間を決定することと、前記第1の推定持続時間が前記第1の残り期間よりも長いかどうかを判定することと、
前記第1の推定持続時間が前記第1の残り期間よりも長いと判定したことに応答して、前記第1の機械学習モデルを、前記第1の残り期間以下であるそれぞれの推定持続時間を有する第1のサブモデルグループに分割することとを含み、前記第1のサブモデルグループの各サブモデルは、前記第1の機械学習モデルの前記推論演算のそれぞれの部分を含み、前記方法はさらに、
前記1つまたは複数のハードウェア処理ユニットが、前記反復時間窓の発生の前記第1の残り期間中に、前記第1のサブモデルグループのサブモデルの推論演算を実行することを含む方法。
【請求項2】
前記第1の推論出力を生成することは、
前記第1のサブモデルグループの各々を前記1つまたは複数のハードウェア処理ユニットのそれぞれのハードウェア処理ユニットに割り当てる命令を前記ホストで生成することと、
前記命令、および前記第1の機械学習モデルにアレンジされた前記第1のサブモデルグループのシーケンスに従って、前記割り当てられたハードウェア処理ユニットで前記入力を処理するための前記第1のサブモデルグループのそれぞれの推論演算を実行することと
をさらに含む、請求項1に記載の方法。
【請求項3】
前記第1のサブモデルグループのそれぞれの前記推論演算を実行することは、
対応するハードウェア処理ユニットに各々が割り当てられた前記第1のサブモデルグループのそれぞれの前記推論演算を実行し、前記第1の推論出力を生成するように、前記ホストが前記1つまたは複数のハードウェア処理ユニットをスケジューリングすることをさらに含む、請求項2に記載の方法。
【請求項4】
前記ホストのコンパイラが、前記第1のサブモデルグループをコンパイルし、前記1つまたは複数のハードウェア処理ユニットにコンパイルされた前記サブモデルの各々をデプロイすることをさらに含む、請求項1に記載の方法。
【請求項5】
前記第1の機械学習モデルを表すデータを受信することは、
複数の機械学習モデルを表すデータを受信することをさらに含み、前記複数の機械学習モデルの各々は、それぞれのタスクを実行するように構成され、前記入力を処理するための前記システムによって実行されるそれぞれの推論演算を含み、前記第1の機械学習モデルを表すデータを受信することは、
それぞれの前記タスクの特性に基づいて、前記複数の機械学習モデルの各々のそれぞれの優先レベルを測定することと、
それぞれの前記優先レベルに基づいて、前記複数の機械学習モデルから1つの機械学習モデルを前記第1の機械学習モデルとして選択することと
をさらに含む、請求項1に記載の方法。
【請求項6】
第2の機械学習モデルを表すデータを受信することと、
前記システムが前記入力を処理するための前記第2の機械学習モデルの前記推論演算を実行し、第2の推論出力を生成するための第2の推定持続時間を取得することと、
(i)前記優先推論演算を実行する前記優先期間、および(ii)前記反復時間窓の各発生の、前記第1の機械学習モデルのサブモデルの推論演算を実行するための少なくともそれぞれの推定持続時間を予約した後に残る第2の残り期間を決定することと、
前記第2の推定持続時間が前記第2の残り期間よりも長いかどうかを判定することと、
前記第2の推定持続時間が前記第2の残り期間よりも長いと判定したことに応答して、前記第2の機械学習モデルを、前記第2の残り期間以下であるそれぞれの推定持続時間を有する第2のサブモデルグループに分割することとをさらに含み、前記第2のサブモデルグループの各サブモデルは、前記第2の機械学習モデルの前記推論演算のそれぞれの部分を含み、前記方法は、
前記1つまたは複数の処理ユニットが、前記反復時間窓の発生の前記第2の残り期間中に、前記第2のサブモデルグループのサブモデルの推論演算を実行することと
をさらに含む、請求項1に記載の方法。
【請求項7】
前記入力は、センサによってキャプチャされた複数の画像フレームの画像フレームを含み、
前記反復時間窓の各発生は、前記複数の画像フレームの前記画像フレームに対応し、
それぞれの前記タスクは、背景検出、焦点検出、オブジェクト検出、または人間の顔認識のうちの少なくとも1つを含み、
それぞれの前記タスクの特性は、それぞれの前記タスクの依存関係、および前記システム内の前記1つまたは複数の処理ユニットによってそれぞれの前記タスクを実行するためのそれぞれの推定持続時間を少なくとも含む、請求項5に記載の方法。
【請求項8】
前記システムは、入力のシーケンスを処理するために1つまたは複数の機械学習モデルの推論演算を実行するように構成され、前記入力のシーケンスの各々は、特定の頻度である順序に従って前記ホストで受信され、前記反復時間窓の期間は、前記特定の頻度に基づいて決定される、請求項1に記載の方法。
【請求項9】
前記第1の機械学習モデルは、あるシーケンスで配置された複数のネットワーク層を含むニューラルネットワークを含み、前記第1の推定持続時間を取得することは、
前記ネットワーク層の各層について、前記入力を処理するために前記層で指定されたそれぞれの層演算を前記システムが実行するための、それぞれの推定層持続時間を決定することと、
全ネットワーク層のそれぞれの前記推定層持続時間を集約し、前記第1の推定持続時間を取得することと
を含む、請求項1に記載の方法。
【請求項10】
前記複数の反復時間窓の第1の反復時間窓の前記第1の残り期間中に、前記シーケンスに従って前記第1のサブモデルグループの第1のサブモデルに関連する推論演算を実行することと、
前記複数の反復時間窓のうちの第2の反復時間窓の前記第1の残り期間中に、前記シーケンスに従って前記第1のサブモデルグループのうちの、前記第1のサブモデルに後続する第2のサブモデルに関連する推論演算を実行することと
をさらに含む、請求項2に記載の方法。
【請求項11】
前記ニューラルネットワークを含む前記第1の機械学習モデルを分割することは、
前記ニューラルネットワークを、各々が前記シーケンスに従って配置されたそれぞれの数のネットワーク層を含む前記第1のサブモデルグループに分割することと、
前記サブモデルに先行する別のサブモデルから生成された中間出力がそれぞれの充填層によって入力として前記サブモデルに提供されるように、前記第1のサブモデルグループのうちの、前記第1のサブモデルを除く各サブモデルのそれぞれの前記充填層を決定することと
をさらに含み、
それぞれの前記充填層は、各々が前記第1のサブモデルグループの対応するサブモデルに含まれるネットワーク層の最初の層である、請求項9に記載の方法。
【請求項12】
前記入力は、ある順序に従って前記ホストで受信される第1の入力および第2の入力を含む入力のシーケンスを構成し、前記推論出力を生成することは、
前記第1の入力を処理するために、前記シーケンスに従って第1のサブモデルに関連する推論演算を実行し、第1の中間出力を生成することと、
前記シーケンスに従って、第2のサブモデルの充填層を介して、前記第1のサブモデルに後続する前記第2のサブモデルに前記第1の中間出力を第1の中間入力として提供することと、
前記第2の入力を処理するために、前記シーケンスに従って前記第1のサブモデルに関連する推論演算を実行し、第2の中間出力を生成する一方で、前記第1の中間入力を処理するために前記第2のサブモデルに関連する推論演算を実行することと
をさらに含む、請求項1に記載の方法。
【請求項13】
前記第1の推論出力を生成することは、
前記入力を処理するための前記第1のサブモデルグループのうちのあるサブモデルによって生成された中間出力を前記システムのメモリユニットに格納することと、
前記シーケンスに従って前記サブモデルに後続する別のサブモデルの中間入力として、前記システムの前記メモリユニットから前記中間出力を取り出すことと
をさらに含む、請求項2に記載の方法。
【請求項14】
1つまたは複数のコンピュータと、1つまたは複数のコンピュータによって実行されると、前記1つまたは複数のコンピュータにそれぞれの演算を実行させる命令を格納している1つまたは複数の記憶装置とを含むシステムであって、前記システムは、ホストと、複数の機械学習モデルの推論演算を実行するように構成された1つまたは複数のハードウェア処理ユニットとをさらに備え、前記演算は、
前記ホストにおいて、第1の推論出力を生成するために入力を処理する推論演算を含む第1の機械学習モデルを表すデータを受信することと、
前記システムが前記入力を処理するための前記第1の機械学習モデルの前記推論演算を実行し、前記第1の推論出力を生成するための第1の推定持続時間を取得することと、
前記1つまたは複数のハードウェア処理ユニットが前記複数の機械学習モデルの前記推論演算の少なくとも一部を実行する反復時間窓の各発生中に、優先機械学習モデルの優先推論演算を実行するために予約された優先期間を特定することと、
前記反復時間窓の各発生の、前記優先推論演算を実行する前記優先期間を予約した後に残る第1の残り期間を決定することと、前記第1の推定持続時間が前記第1の残り期間よりも長いかどうかを判定することと、
前記第1の推定持続時間が前記第1の残り期間よりも長いと判定したことに応答して、前記第1の機械学習モデルを、前記第1の残り期間以下であるそれぞれの推定持続時間を有する第1のサブモデルグループに分割することとを含み、前記第1のサブモデルグループの各サブモデルは、前記第1の機械学習モデルの前記推論演算のそれぞれの部分を含み、前記演算はさらに、
前記1つまたは複数のハードウェア処理ユニットが、前記反復時間窓の発生の前記第1の残り期間中に、前記第1のサブモデルグループのサブモデルの推論演算を実行することを含む、システム。
【請求項15】
前記第1の機械学習モデルを表すデータを受信することは、
複数の機械学習モデルを表すデータを受信することをさらに含み、前記複数の機械学習モデルの各々は、それぞれのタスクを実行するように構成され、前記入力を処理するための前記システムによって実行されるそれぞれの推論演算を含み、前記第1の機械学習モデルを表すデータを受信することは、
それぞれの前記タスクの特性に基づいて、前記複数の機械学習モデルの各々のそれぞれの優先レベルを測定することと、
それぞれの前記優先レベルに基づいて、前記複数の機械学習モデルから1つの機械学習モデルを前記第1の機械学習モデルとして選択することと
をさらに含む、請求項14に記載のシステム。
【請求項16】
第2の機械学習モデルを表すデータを受信することと、
前記システムが前記入力を処理するための前記第2の機械学習モデルの前記推論演算を実行し、第2の推論出力を生成するための第2の推定持続時間を取得することと、
(i)前記優先推論演算を実行する前記優先期間、および(ii)前記反復時間窓の各発生の、前記第1の機械学習モデルのサブモデルの推論演算を実行するための少なくともそれぞれの推定持続時間を予約した後に残る第2の残り期間を決定することと、
前記第2の推定持続時間が前記第2の残り期間よりも長いかどうかを判定することと、
前記第2の推定持続時間が前記第2の残り期間よりも長いと判定したことに応答して、前記第2の機械学習モデルを、前記第2の残り期間以下であるそれぞれの推定持続時間を有する第2のサブモデルグループに分割することとをさらに含み、前記第2のサブモデルグループの各サブモデルは、前記第2の機械学習モデルの前記推論演算のそれぞれの部分を含み、前記演算は、
前記1つまたは複数の処理ユニットが、前記反復時間窓の発生の前記第2の残り期間中に、前記第2のサブモデルグループのサブモデルの推論演算を実行することと
をさらに含む、請求項14に記載のシステム。
【請求項17】
前記入力は、センサによってキャプチャされた複数の画像フレームの画像フレームを含み、
前記反復時間窓の各発生は、前記複数の画像フレームの前記画像フレームに対応し、
それぞれの前記タスクは、背景検出、焦点検出、オブジェクト検出、または人間の顔認識のうちの少なくとも1つを含み、
それぞれの前記タスクの特性は、それぞれの前記タスクの依存関係、および前記システム内の前記1つまたは複数の処理ユニットによってそれぞれの前記タスクを実行するためのそれぞれの推定持続時間を少なくとも含む、請求項15に記載のシステム。
【請求項18】
1つまたは複数のコンピュータによって実行されると、前記1つまたは複数のコンピュータに、ホストと、複数の機械学習モデルの推論演算を実行するように構成された1つまたは複数のハードウェア処理ユニットとを含むシステムによって実行されるそれぞれの演算を実行させる命令を格納している1つまたは複数のコンピュータ可読記憶媒体であって、それぞれの前記演算は、
前記ホストにおいて、第1の推論出力を生成するために入力を処理する推論演算を含む第1の機械学習モデルを表すデータを受信することと、
前記システムが前記入力を処理するための前記第1の機械学習モデルの前記推論演算を実行し、前記第1の推論出力を生成するための第1の推定持続時間を取得することと、
前記1つまたは複数のハードウェア処理ユニットが前記複数の機械学習モデルの前記推論演算の少なくとも一部を実行する反復時間窓の各発生中に、優先機械学習モデルの優先推論演算を実行するために予約された優先期間を特定することと、
前記反復時間窓の各発生の、前記優先推論演算を実行する前記優先期間を予約した後に残る第1の残り期間を決定することと、前記第1の推定持続時間が前記第1の残り期間よりも長いかどうかを判定することと、
前記第1の推定持続時間が前記第1の残り期間よりも長いと判定したことに応答して、前記第1の機械学習モデルを、前記第1の残り期間以下であるそれぞれの推定持続時間を有する第1のサブモデルグループに分割することとを含み、前記第1のサブモデルグループの各サブモデルは、前記第1の機械学習モデルの前記推論演算のそれぞれの部分を含み、前記演算はさらに、
前記1つまたは複数のハードウェア処理ユニットが、前記反復時間窓の発生の前記第1の残り期間中に、前記第1のサブモデルグループのサブモデルの推論演算を実行することを含む、1つまたは複数のコンピュータ可読記憶媒体。
【請求項19】
前記第1の機械学習モデルを表すデータを受信することは、
複数の機械学習モデルを表すデータを受信することをさらに含み、前記複数の機械学習モデルの各々は、それぞれのタスクを実行するように構成され、前記入力を処理するための前記システムによって実行されるそれぞれの推論演算を含み、前記第1の機械学習モデルを表すデータを受信することは、
それぞれの前記タスクの特性に基づいて、前記複数の機械学習モデルの各々のそれぞれの優先レベルを測定することと、
それぞれの前記優先レベルに基づいて、前記複数の機械学習モデルから1つの機械学習モデルを前記第1の機械学習モデルとして選択することと
をさらに含む、請求項18に記載の1つまたは複数のコンピュータ可読記憶媒体。
【請求項20】
第2の機械学習モデルを表すデータを受信することと、
前記システムが前記入力を処理するための前記第2の機械学習モデルの前記推論演算を実行し、第2の推論出力を生成するための第2の推定持続時間を取得することと、
(i)前記優先推論演算を実行する前記優先期間、および(ii)前記反復時間窓の各発生の、前記第1の機械学習モデルのサブモデルの推論演算を実行するための少なくともそれぞれの推定持続時間を予約した後に残る第2の残り期間を決定することと、
前記第2の推定持続時間が前記第2の残り期間よりも長いかどうかを判定することと、
前記第2の推定持続時間が前記第2の残り期間よりも長いと判定したことに応答して、前記第2の機械学習モデルを、前記第2の残り期間以下であるそれぞれの推定持続時間を有する第2のサブモデルグループに分割することとをさらに含み、前記第2のサブモデルグループの各サブモデルは、前記第2の機械学習モデルの前記推論演算のそれぞれの部分を含み、前記演算は、
前記1つまたは複数の処理ユニットが、前記反復時間窓の発生の前記第2の残り期間中に、前記第2のサブモデルグループのサブモデルの推論演算を実行することと
をさらに含む、請求項18に記載の1つまたは複数のコンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【0001】
技術分野
本明細書は、データ処理、機械学習、および機械学習モデルの分割推論演算の実行に関する。
【背景技術】
【0002】
背景
機械学習モデルとは、データセット、イベント、およびシステムのパターンを学習し、予測を行うために経験(例えば過去のデータ)に基づいてトレーニングされたモデルである。ニューラルネットワークは、受信した入力への出力を予測するために、1層または複数層の非線形ユニットを採用した機械学習モデルである。ニューラルネットワークによっては、出力層に加えて1つまたは複数の隠れ層を含む。各隠れ層の出力は、ネットワークの次の層、すなわち次の隠れ層または出力層への入力として使用される。ネットワークの各層は、それぞれのネットワークパラメータのセットの現在値に従って、受信した入力から出力を生成する。
【0003】
一般に、より深い層および大きな層サイズを有するニューラルネットワークは、例えば画像検出または自然言語処理関連のタスクに適用した場合、トレーニング後は通常、より浅く小さなニューラルネットワークよりも優れた性能を発揮する。より大きく深いニューラルネットワークは、本質的により多くのパラメータ数を有し、いくつかは巨大なニューラルネットワークに分類され得る。巨大なニューラルネットワークとは、多くのネットワークパラメータ、例えば100万パラメータ、1000万パラメータ、5億パラメータ、または20億以上のパラメータを有するニューラルネットワークである。
【0004】
ニューラルネットワークのネットワークパラメータは、ニューラルネットワークが実行する演算に影響を与え、トレーニングの一部として調整される値である。例えば、ネットワークパラメータは、ニューラルネットワークのネットワーク層の重み行列、場合によってはバイアスベクトルの値を含むことができる。
【0005】
ニューラルネットワークのハイパーパラメータは、トレーニングプロセスによって変更されない値である。ハイパーパラメータには、トレーニングプロセスによってネットワークパラメータの値がどのように更新されるかに影響を与える値、例えば、バックプロパゲーション中に計算された勾配がネットワークパラメータの値を更新するためにどのように使用されるかを定義する学習率または他の更新ルール、目的関数の値、例えば、エントロピーコスト、目的関数の様々な項に割り当てられた重みなどを含むことができる。
【発明の概要】
【0006】
概要
一態様によれば、ホストと、複数の機械学習モデルの推論演算を実行するように構成された1つまたは複数のハードウェア処理ユニットとを含むシステムによって実行される方法が提供される。本方法は、ホストにおいて、第1の推論出力を生成するために入力を処理する推論演算を含む第1の機械学習モデルを表すデータを受信することと、システムが入力を処理する第1の機械学習モデルの推論演算を実行し、第1の推論出力を生成するための第1の推定持続時間を取得することと、1つまたは複数のハードウェア処理ユニットが複数の機械学習モデルの推論演算の少なくとも一部を実行する反復時間窓の各発生中に、優先機械学習モデルの優先推論演算を実行するために予約された優先期間を特定することと、反復時間窓の各発生の、優先推論演算を実行する優先期間を予約した後に残る第1の残り期間を決定することと、第1の推定持続時間が第1の残り期間よりも長いかどうかを判定することと、第1の推定持続時間が第1の残り期間よりも長いと判定したことに応答して、第1の機械学習モデルを、第1の残り期間以下であるそれぞれの推定持続時間を有する第1のサブモデルグループに分割することとを含み、第1のサブモデルグループの各サブモデルは、第1の機械学習モデルの推論演算のそれぞれの部分を含む。本方法はさらに、1つまたは複数のハードウェア処理ユニットが、反復時間窓の発生の第1の残り期間中に、第1のサブモデルグループのサブモデルの推論演算を実行することを含む。
【発明の効果】
【0007】
本明細書に記載の主題は、以下の利点の1つまたは複数を実現するように、特定の実施形態で実施することができる。本明細書に記載の技術は、データ通信のジッタを低減することができる。本明細書を通じて「ジッタ」という用語は、ネットワーク接続を介してデータパケットを転送する間の時間遅延を広く表すことができる。時間遅延は一様ではなく、例えば、第1のパケットは30ミリ秒(ms)の遅延でデバイスまたはホストに到着でき、第2のパケットは40ms以内の遅延で到着できる。データ通信のジッタは、異なるサイズのデータパケットを転送することによって発生し得る。ジッタは、システムにより定期的に受信される入力データをシステムが処理するときに、異なる計算をまたぐ待機時間によっても発生し得る。
【0008】
より具体的には、記載した技術を実行するシステムは、複数の機械学習モデルの優先レベルを決定し、優先レベルに基づいて複数の機械学習モデルをランク付けすることができる。例えば、優先度の高い機械学習モデルは、エッジデバイスにおけるカメラアプリケーションの顔検出などのタスクに対応することができる。システムは、高優先レベルの機械学習モデルに対する推論要求を優先順位付けし、反復時間窓の各発生中に、これらの優先順位付けされた機械学習モデルに対する受信した入力の各フレームを確実に処理することができる。反復時間窓は、システム(例えば、回路または複数のハードウェア処理ユニット)が各サイクル内で演算を実行する期間を含む。このことを考慮すると、システムは、データ通信のジッタを低減するために、これらの優先順位付けされた機械学習モデルの推論出力を時間内に生成することができる。
【0009】
さらに、本明細書に記載の技術は、1つまたは複数の機械学習モデルの推論演算の実行効率を向上させることができる。記載された技術を実行するシステムは、優先度の高いタスクのために各サイクルの時間を予約することによって、各サイクル内で優先度の高いタスクに関連付けられた推論演算を確実に実行することができる。システムは、優先度の高いタスクのために予約された時間を差し引くことによって、反復時間窓毎のそれぞれの残り期間を決定することができる。システムは、残り期間全体を占めるか、または残り期間を超えることさえあると判定され得る優先順位の低いモデルを複数のサブモデルに分割し、それらのサブモデルをハードウェア処理ユニットのそれぞれのグループに分配するか、複数のサイクルにわたって処理されるように分配するか、またはその両方を行うことができる。
【0010】
特に、システムは、機械学習モデルによって指定された推論演算を低い優先レベルで実行するための推定持続時間(例えば、推定期間)を取得し、各サイクルについて、複数のサブモデルの各々が、サイクル内の反復時間窓の残り期間以下であるそれぞれの推定持続時間を有するように、機械学習モデルを複数のサブモデルに分割するかどうかを決定することができる。システムは、複数のサブモデルを1つまたは複数の時間窓に配置および分配し、それぞれのハードウェア処理ユニットを使用してそれらを処理することができる。各反復時間窓の残り期間は、実質的にサブモデルの推論演算の実行に利用され、各反復時間窓のアイドル時間を短縮し、計算効率を向上させることができる。
【0011】
本明細書を通じて「推論演算」という用語は、入力を処理するためにパラメータがトレーニングされた対応する機械学習モデルで指定される演算を広く表すことができる。推論演算は、線形演算、非線形演算、またはそれらの両方を含むことができる。トレーニング済みニューラルネットワークである機械学習モデルの場合、推論演算は、特定の入力を処理するためにトレーニングされたニューラルネットワークの各ネットワーク層の各ノードで指定されるノード演算を含むことができる。
【0012】
さらに、本明細書で記載の技術は、最適化されたサービス品質(QoS)を提供し、ユーザ体験を向上させることができる。上述したように、本技術を実行するシステムは、各機械学習モデルの優先レベルを決定し、優先順位付けされた機械学習モデルの推論演算が、最初に、または各反復時間窓内で実行されることを保証することができる。本システムは、優先レベルが低い大規模機械学習モデルを複数のサブモデルに分割し、複数のサブモデルの推論演算を、反復時間窓の複数回発生(例えば、サイクル)にわたって実行することができる。システムのランタイムコントローラは、優先度の高い機械学習モデル、および異なる優先度の低い機械学習モデルの複数のサブモデルを、反復時間窓の異なるサイクルに分散させる方法を決定することができる。ランタイムコントローラは、反復時間窓の1つまたは複数のサイクルに分散されたサブモデルを介したマルチパス推論を管理するようにさらに構成される。したがって、データトラフィックが最適化され、入力または中間出力を待機するアイドル時間が短縮され、複数の機械学習モデルの推論演算を実行するための全体的な計算時間が短縮される。したがって、本システムがサポートする1つまたは複数のアプリケーションを使用する場合、本システムの受信者(例えば、人またはデバイス)は、従来技術を使用する他のシステムと比較して、時間遅延が少なく、より速く出力を取得する。
【0013】
さらに、記載された技術を実行するシステムは、異なるタイプの入力、および異なるレートで受信される入力の異なるシーケンスに対してロバストである。システムは、入力データの入力レート(例えば、1秒あたりの入力フレーム数)に基づいて、各サイクルの反復時間窓のサイズを決定することができる。さらに、システムは、受信した入力フレームを処理するための、1つまたは複数の優先機械学習モデルの推論演算を実行する優先期間を割り当てた後、各時間窓の残り期間を決定することができる。
【0014】
本明細書の主題の1つまたは複数の実施形態の詳細は、添付の図面および以下の説明に記載されている。主題の他の特徴、態様、および利点は、説明、図面、および特許請求の範囲から明らかになるであろう。
【図面の簡単な説明】
【0015】
【
図1】機械学習モデルの推論演算を実行するための例示的推論システムを示す図である。
【
図2】異なるシナリオにおいて、異なる時間窓内で複数の機械学習モデルの推論演算を実行するための例示的プロセスを示す図である。
【
図3A】機械学習モデルから分割された複数のサブモデルの推論演算を実行するための例示的プロセスを示す図である。
【
図3B】機械学習モデルから分割された複数のサブモデルを介したマルチパス推論を実行するための例示的プロセスを示す図である。
【
図4】機械学習モデルから複数のサブモデルを生成するための例示的プロセスを示す図である。
【
図5】複数のサブモデルに分割される機械学習モデルを決定する例示的プロセスを示す図である。
【発明を実施するための形態】
【0016】
詳細な説明
より優れたパフォーマンスのために、機械学習モデルは、より高度な構造とともにより大きなサイズを有する傾向があり、例えば、ニューラルネットワークは、特に画像処理タスク、例えばオブジェクト検出/認識または自然言語処理に使用されるニューラルネットワークについては、より深い層およびより大きな層サイズを有することができる。大きなニューラルネットワークのようなより大規模な機械学習モデルは、いくつかの分野に顕著な品質向上をもたらしたが、機械学習モデルの規模を拡大すると、特定の頻度で受信した入力シーケンスを処理するための時間窓の制限、機械学習モデルのトレーニング、格納、および推論演算の実行のためのメモリの制限、ならびにホストとアクセラレータ間のデータおよび命令の転送のためのメモリ帯域幅の制限などの重大な実用上の課題が発生する可能性がある。
【0017】
例えば、ニューラルネットワークのトレーニングまたは推論演算を実行するためのボトルネックは、個々の各コンピューティングデバイス、すなわち、中央演算処理装置(「CPU」)、グラフィック処理装置(「GPU」)、テンソル処理装置(「TPU」)を有するデバイスのメモリの制限であり得る。別の例として、ボトルネックは、コンピューティングデバイス間の限られた通信帯域幅であり得、例えば、GPUまたはTPUとCPUとの間のデータ転送レートは、個々の各コンピューティングデバイスの計算速度に比べて十分に速くない可能性がある。そのため、デバイス間のデータ転送の待機時間は、各コンピューティングデバイスでのランタイムに匹敵し、時にはそれよりもはるかに長くなることもあり、緩慢なトレーニングパフォーマンスにつながる。別の例として、ボトルネックは、コンピューティングデバイスのバブルオーバーヘッドであり得る。バブルオーバーヘッドとは、シーケンスの演算の第2の部分が割り当てられた後続のコンピューティングデバイスが、シーケンスの演算の第1の部分が割り当てられた前のコンピューティングデバイスからの出力を待つために費やす時間を意味する。すなわち、後続のコンピューティングデバイスが演算の第2の部分を実行するための入力は、演算の第1の部分を実行する前のコンピューティングデバイスからの出力である。このことを考慮すると、後続のコンピューティングデバイスは、前のコンピューティングデバイスが必要な計算を完了するまで、アイドル状態のまま待機しなければならない。したがって、バブルオーバーヘッド時間が相当長い時間ステップ、特に時間ステップで動作しているデバイスが1つだけの場合、各計算デバイスの使用率は低くなり得る。
【0018】
時間窓の制限に戻ると、入力のストリーム(例えば、特定の時間間隔または頻度で受信される入力の複数のフレーム)を処理するために複数の機械学習モデルで指定される推論演算を実行することのボトルネックは、複数の機械学習モデルを介して入力の各フレームをタイムリーに、例えば、好ましくは入力のフレームを受信した後、かつ入力の後続フレームを受信する前に処理することである。特に、入力を処理するために使用されるモデルが多く、時間窓が、例えば、ミリ秒単位など短い場合、単一の時間窓内で全機械学習モデルの推論演算すべてを実行することは困難であるか、場合によっては不可能でさえある。例えば、1つまたは複数の機械学習モデルは大きくてもよく、これらのモデルすべてを実行するための推定持続時間は、プロセスのために割り当てられた反復時間窓を超える可能性がある。いくつかの実施態様では、システムは、入力の各フレームを受信するレートまたは頻度(例えば、フレーム毎秒(FPS))に基づいて、反復時間窓のサイズを決定することができる。反復時間窓の各発生は、フレーム(または入力の他の離散的なインスタンス)が機械学習モデルを使用して処理される処理サイクルとみなすことができる。例えば、毎秒20回の処理サイクルがあり、毎秒20の入力フレームが処理されるように、各反復時間窓は50msであり得ることができる。当然ながら、反復時間窓の他のサイズ、例えば、30ms、100ms、1秒なども可能である。簡単にするために、以下の明細書では、「反復時間窓」という用語は、「時間窓」とも呼ばれる。
【0019】
時間窓の制限は対処されていないと仮定する。その場合、複数の入力フレームを処理する推論演算を実行するシステムは、データ転送中のジッタ、ハードウェアアクセラレータの相当のアイドル時間、入力の受信速度よりも遅い推論出力の生成速度、入力データの異なるタイプおよびストリームに対するロバスト性の欠如などの問題を有している可能性がある。これらの問題は、計算効率を損ない、サービス品質およびユーザ体験を不十分なものとする。加えて、優先度の低い大規模機械学習モデルは、より優先度の高い機械学習モデルを使用して他のより優先度の高い機械学習タスクが実行されないように、時間窓を支配する可能性があり、その結果、全体的なパフォーマンスは低下し、重要な動作がタイムリーに実行されないことによってエラーが発生する。例えば、特定の機械学習モデルを使用して各処理サイクル内で入力フレームを処理することが、パフォーマンス/エラー防止に重要であり得る。より大規模で優先度の低い機械学習モデルが完了するまでに複数の処理サイクルを要する場合、特定の機械学習モデルは、各処理サイクルの間に各入力を処理するために使用されない場合があり、その結果、パフォーマンス低下および/またはエラーがもたらされる。
【0020】
大規模機械学習モデルを異なる部分に分割し、異なる部分を異なるプロセッサに分配するいくつかの技術は、メモリ制限、帯域幅制限、またはその両方によって生じる問題の解決を目指している。これらの技術は、さらにパイプライン法を適用して、プロセッサのバブル時間を短縮することができる。しかし、これらの技術は、時間の制約(例えば、時間窓のサイズ制約)下で入力ストリームの各フレームを処理するときに表面化する問題には対処していない。
【0021】
本明細書に記載の技術は、上記の課題を解決することを目指している。特に、推論入力のフレームの処理に時間窓の制約が与えられた場合、本明細書に記載の技術は、複数の機械学習モデルの優先レベルを決定し、優先レベルに従って、入力のフレームを処理する機械学習モデルの推論演算を実行することができる。他の例では、各反復時間窓に、入力を処理するために使用される、1つまたは複数の特定された優先度の高い機械学習モデルがあってもよい。本文書に記載の技術は、1つまたは複数の優先度機械学習モデルが各時間窓の間に確実に処理されるように推論演算を実行することができる。さらに、記載された技術は、各サブモデルの演算を実行するための推定持続時間が、反復時間窓の残り期間を満たすように、より優先度の低い(例えば、各時間窓でモデルを使用する必要がないことを示す優先度)機械学習モデル(例えば、大規模機械学習モデル)を複数のサブモデルに分割することができる。システムは、異なる処理ユニット上で(例えば、並列に)、および/または複数の時間窓にわたって、複数の機械学習モデルおよびサブモデルで指定された推論演算を実行するように配置およびスケジューリングするように構成されたランタイムコントローラをさらに含むことができる。
【0022】
図1は、機械学習モデルの推論演算を実行するための例示的推論システム100を示す。推論システム100は、1つまたは複数の場所にある1つまたは複数のコンピュータに実装されるシステムの例であり、後述するシステム、コンポーネント、および技術を実装することができる。推論システム100のコンポーネントの一部は、1つまたは複数のコンピュータで実行されるように構成されたコンピュータプログラムとして実装することができる。
【0023】
例示的な推論システム100は、様々なタイプのコンピューティングデバイスに実装することができる。例えば、推論システム100は、携帯型デバイス、例えばスマートフォンまたはタブレットコンピュータ、ビデオストリーミングデバイス、ゲーム機、または人工知能アシスタント、例えばスマートスピーカなどのクライアントデバイスの一部であり得る。いくつかの実施態様では、推論システム100は、カメラを備えたクライアントデバイスに実装され、推論システム100は、機械学習モデルを使用して、カメラによってキャプチャされた画像を処理するように構成される。このような例では、推論システム100は、音(例えば、音声)、ビデオ、またはテキスト入力など、クライアントデバイスの他のタイプの入力を処理するように構成することもできる。
【0024】
推論システム100は、ホスト102および複数の処理ユニット110を含むことができる。本明細書全体を通じて「ホスト」という用語は、ネットワーク内でホストに接続されたユーザまたは他のデバイスに情報リソース、サービス、またはアプリケーションのうちの少なくとも1つを提供するように構成されたコンピュータまたはサーバを広く表すことができる。本明細書全体を通じて「処理ユニット」という用語は、特定の演算を実行するのに適したハードウェアコンポーネントを広く表すことができ、例えば、処理ユニットは、ハードウェア機械学習アクセラレータまたは他のタイプのプロセッサ、コンピュートタイル、またはコアを含むことができる。
【0025】
ホスト102は、複数のハードウェア処理ユニット110と通信可能に、すなわち、有線または無線通信で接続されている。ホスト102および複数の処理ユニット110は、1つまたは複数の物理的場所に位置することができる。いくつかの実施態様において、ホスト102および複数の処理ユニット110は、回路に集積されていても、または単一のプロセッサにパッケージ化されていてもよい。例えば、単一の集積回路は、処理ユニット110の各々および任意選択でホスト102を含むことができる。別の例では、処理ユニット110は複数の集積回路にまたがることができる。
【0026】
推論システム100は、ホスト102において、複数の機械学習モデル135を表すデータと、入力データ137aとを受信することができる。入力データ137aは、複数の機械学習モデル135によって処理される入力データの複数の離散的単位(例えば、フレーム)を含むことができる。入力の離散的単位は、様々な形態であり得るが、簡潔にし、後の説明を容易にするために、入力をフレームと呼ぶ。推論システム100は、ホスト102から受信した入力データ137bの各フレームを処理するための推論演算を実行するために、複数の処理ユニット110のうちの1つまたは複数に複数の機械学習モデル135をコンパイルしデプロイすることができる。入力データ137bは、入力データ137aに対応する。すなわち、ホスト102は、入力データの各フレームを処理ユニット110に提供することができる。推論システム100は、機械学習モデル135を介して入力データ137aを処理した後、推論出力167aを生成して出力することができる。推論出力167aは、入力データの各フレームに対する1つまたは複数の推論、例えば、入力データのフレームに基づいて各機械学習モデルによって出力されるそれぞれの推論を含むことができる。
【0027】
場合によっては、機械学習モデルは、複数のフレームに基づいて推論を出力するように構成されてもよい。このような場合、推論出力167aは、複数のフレームに基づいて生成された推論を含むことができる。
【0028】
ホスト102は、複数の機械学習モデル135から1つまたは複数の機械学習モデルを非優先機械学習モデルとして選択するように構成された選択エンジン140を含むことができる。選択エンジン140は、選択された機械学習モデル145をホスト102のパフォーマンス推定エンジン150に提供することができる。いくつかの実施態様では、選択エンジン140は、全機械学習モデル135について、ホスト102で受信された入力データ137aのフレームを処理するための反復時間窓を推定するように構成することができる。加えて、選択エンジン140は、時間窓内で入力データのフレームを処理するために、機械学習モデルの各々に対する優先レベルを決定することもできる。例えば、選択エンジン140は、各機械学習モデルの優先レベルに基づいて、1つまたは複数の選択された機械学習モデル145を決定することができる。
【0029】
選択された機械学習モデル145は、本明細書において非優先機械学習モデルと呼ぶこともあり、各々が優先機械学習モデルよりも低いそれぞれの優先レベルを有する。優先機械学習モデルは、少なくとも閾値優先レベルを有する機械学習モデル、指定された数の最高優先レベルを有する機械学習モデル、および/または入力データ137bの各フレームを処理するために使用されることが要求される機械学習モデルであり得る。いくつかの実施態様では、各フレーム、例えば、反復時間窓の各発生に対して実行される単一の指定された優先機械学習モデルが存在し得るが、他の実施態様では、複数の優先機械学習モデルが存在し得る。
【0030】
パフォーマンス推定エンジン150は、選択された機械学習モデル145の各々の推論演算を実行するための推定持続時間を決定するように構成される。パフォーマンス推定エンジン150は、各機械学習モデル145について、推定持続時間が基準を満たすかどうか、例えば、推定持続時間が反復時間窓の残り期間以下であるかどうかを判定するようにさらに構成される。ホスト102は、時間窓内で1つまたは複数の優先機械学習モデルの推論演算を実行するための推定持続時間に基づいて、特定の反復時間窓の残り期間を決定することができる。残り期間、反復時間窓、および推定持続時間については、以下でさらに詳細に説明する。
【0031】
パフォーマンス推定エンジン150は、機械学習モデルの推論演算を実行するための推定持続時間が、入力のフレームを処理するための時間窓の残り期間を超えるかどうかを判定することができる。推定持続時間が残り期間よりも長いと判定したことに応答して、分割エンジン155は、機械学習モデルを複数のサブモデルに分割またはセグメント化することができる。サブモデルの各々は、機械学習モデルの推論演算の少なくとも非重複部分を含む。分割エンジン155はさらに、入力データ137bの各フレームが処理される反復時間窓に基づいて、機械学習モデルをどのように分割するかを決定することができる。機械学習モデルの分割の詳細は、
図2に関連して説明される。
【0032】
いくつかの実施態様では、ホスト102のコンパイラ180は、パフォーマンス推定エンジン150および分割エンジン155の両方を含むことができる。いくつかの実施態様では、パフォーマンス推定エンジン150および/または分割エンジン155は、コンパイラ180とは別個である。コンパイラ180は、分割エンジン155によって分割された複数のサブモデル、および分割されていない他の機械学習モデルをコンパイルするように構成される。
【0033】
ホスト102は、複数のハードウェア処理ユニット110のそれぞれのホストインタフェース130にデータおよび命令125を送信することができる。各処理ユニット110は、ホストインタフェース130を含むことができる。データおよび命令125は、入力データ137bの各フレーム、コンパイルされたサブモデル160および他のコンパイルされた機械学習モデルを表すデータ、異なるコンパイルされたモデル/サブモデルを異なる処理ユニット110に割り当ててデプロイするデータ、ならびにデプロイされたモデルの推論演算を割り当てられた処理ユニット110上で実行することを配置およびスケジューリングするデータを含む。例えば、ホスト102は、コンパイルされたサブモデル160および分割されていない他の機械学習モデルを、ハードウェア処理ユニット110のうちの1つまたは複数に分配することができる。
【0034】
ホストインタフェース130は、複数の処理ユニット110とホスト102との間の通信を調整および管理するために使用される。一般に、ホストインタフェース130は、適切な組み合わせでソフトウェアおよび/またはハードウェアに符号化され、ホスト102および他のコンポーネントと通信するように動作可能な論理を含む。より具体的には、ホストインタフェース130は、ネットワーク120および/またはインタフェースのハードウェアが処理ユニット110の内外で物理信号を通信するように動作可能であるように、通信に関連する1つまたは複数の通信プロトコルをサポートするソフトウェアを含むことができる。さらには、インタフェース130は、ハードウェア処理ユニット110がホスト102および/またはネットワーク120と通信して異なる演算(例えば、本明細書に記載の推論演算)を実行することを可能にできる。
【0035】
各ハードウェア処理ユニット110は、入力データ137bの各フレームを処理するために、割り当てられたサブモデルまたはモデルの推論演算を含む機械学習計算を実行し、モデル/サブモデルを使用して入力データ137bのフレームを処理した後に出力データ167bを生成するように構成される。ハードウェア処理ユニット110は、出力データ167をホスト102に提供することができ、ホスト102は、受信した出力データ167を、ストリーミングまたはシーケンスのように推論出力167aとして出力することができる。いくつかの実施態様では、ホスト102は、入力データ137aの1つまたは複数のフレームについて出力データ167bを集約し、入力データ137aの複数のフレームについての推論出力167aを生成することができる。
【0036】
いくつかの実施態様では、推論システム100を含むコンピューティングデバイス(または別のデバイス)は、推論システム100に要求を送信するアプリケーションまたはアプリケーションプログラミングインタフェース(API)を含むことができる。例えば、推論システム100が1つまたは複数の対応する機械学習モデルを使用して入力データ137aを処理し、その処理に基づいて1つまたは複数の機械学習出力、例えば推論出力167を提供することを各々が要求する複数のアプリケーションが存在し得る。
【0037】
特定の例では、カメラを備えたクライアントデバイスは、カメラによってキャプチャされた画像を処理するための1つまたは複数のそれぞれの機械学習モデルを各々が有する複数のアプリケーションまたはAPIを含むことができる。各アプリケーションまたはAPIは、カメラによってキャプチャされた各フレーム(例えば、静止画像)に対する推論出力を要求することができる。別の例では、推論システム100は、推論出力167を各アプリケーションまたはAPIに、例えば、要求される出力を要求することなく提供するように構成することができる。
【0038】
ホスト102は、非分割モデルの通常の推論および分割されたモデルのマルチパス推論をランタイム中に管理するように構成されたランタイムコントローラ175を含むことができる。マルチパス推論を管理するために、ランタイムコントローラ175は、ホスト102または複数のハードウェア処理ユニット110上の異なるメモリ(例えば、メモリ106または170)からの中間入力および中間出力の格納およびフェッチを管理することができる。ランタイムコントローラ175は、入力データ137a(例えば、入力データ137bのフレーム)、入力データ137aのそれぞれの反復時間窓、分割されたサブモデル、またはハードウェア処理ユニット110の計算能力のうちの少なくとも1つに基づいて、複数の推論計算をスケジューリングすることができる。
【0039】
さらに、ホスト102は1つまたは複数の中央演算処理装置(CPU)104を含むことができる。CPU104は、とある制御またはロジスティクス演算を実行するための処理をホストに提供することができる。いくつかの実施態様において、CPU104は推論中にいくつかのプロセスを実行することができる。一般に、CPU104は、ホスト102の演算を実行するために命令を実行し、データを操作する。各CPU104は単一のコアまたは複数のコアを有することができ、各コアはホスト102が利用可能であり、個々の処理スレッドを実行する。さらに、本明細書に記載の演算を実行するために使用されるCPU104の数、タイプ、および特定のCPU104は、ホスト102に関連するいくつかの要求、対話、および演算に基づいて動的に決定することができる。
【0040】
さらに、ホスト102はメモリ106を含むことができる。ホスト102のメモリ106は、単一のメモリまたは複数のメモリを表すことができる。メモリ106は、任意のメモリまたはデータベースモジュールを含むことができ、限定されないが、磁気媒体、光媒体、ランダムアクセスメモリ(RAM)、読み取り専用メモリ(ROM)、取り外し可能な媒体、または任意の他の適切なローカルもしくはリモートメモリコンポーネントを含む、揮発性または不揮発性メモリの形態をとることができる。メモリ106は、実行グラフ、機械学習モデル、管理設定、キャッシュ、アプリケーション、バックアップデータ、および任意のパラメータ、変数、アルゴリズム、命令、ルール、制約、またはそれらへの参照を含む、ホスト102に関連する任意の他の適切な情報を含む、種々のオブジェクトまたはデータを格納することができる。ホスト102内に図示されているが、特定の図示されたコンポーネントの一部または全部を含むメモリ106またはその任意の部分は、いくつかの例では、クラウドアプリケーションもしくはリポジトリとして、またはホスト102自体がクラウドベースのシステムである場合に別個のクラウドアプリケーションもしくはリポジトリとして含む、ホスト102から遠隔に位置することができる。いくつかの例では、メモリ106に格納されたデータは、例えばネットワーク120を介してアクセス可能であることができ、ハードウェア処理ユニット110の特定のアプリケーションまたは機能によって取得することができる。
【0041】
各処理ユニット110は、他のデバイスから独立して演算を実行するためのハードウェアリソースを含むことができる。例えば、各処理ユニットは、1つまたは複数のプロセッサ、コンピュートタイル、コアなどを含むことができる。処理ユニット110は、GPUおよびCPU、ならびにニューラルネットワークをトレーニングする際に使用されるとある演算、例えば行列の乗算を効率的に実行するための専用ハードウェアリソースを含むことができる。専用ハードウェアリソースの例としては、テンソル処理装置(「TPU」)、フィールドプログラマブルゲートアレイ(「FGPA」)、および特定用途向け集積回路(「ASIC」)が挙げられる。
【0042】
各ハードウェア処理ユニット110は、異種であることができ、例えば、デバイス毎に異なるタイプの複数の処理ユニットを有することができる。あるいは、ハードウェア処理ユニット110の各々は、同じ数およびタイプの処理ユニットを含むことができる。
【0043】
さらに、ハードウェア処理ユニット110は、それぞれの計算能力を有することができる。すなわち、各ハードウェア処理ユニットは、異なる量のメモリ170、処理速度、または他のアーキテクチャ特性を有することができる。したがって、ハードウェア処理ユニットによっては、他のハードウェア処理ユニットが実行できない演算を実行することができる。例えば、いくつかの演算は、特定のハードウェア処理ユニットのみが有するとある量のメモリを必要とし得るか、またはいくつかの処理ユニットは、特定のタイプの演算、例えば推論演算を実行するようにのみ構成される。
【0044】
さらに、ハードウェア処理ユニット110の各々は、ホスト102のメモリ106にアクセスすることができ、メモリユニット170を有する。メモリユニット170の各々は、任意のメモリまたはデータベースモジュールを含むことができ、限定されないが、磁気媒体、光媒体、ランダムアクセスメモリ(RAM)、読み取り専用メモリ(ROM)、取り外し可能な媒体、または任意の他の適切なローカルもしくはリモートメモリコンポーネントを含む、揮発性または不揮発性メモリの形態をとることができる。メモリユニット170は、種々のオブジェクトまたはデータ、管理設定、キャッシュ、アプリケーション、バックアップデータ、動的情報を格納するリポジトリ、および推論のための任意のパラメータ、変数、アルゴリズム、命令、ルール、制約、または参照を含む、ハードウェア処理ユニット110に関連する任意の他の適切な情報を格納することができる。メモリユニット170は、ハードウェア処理ユニットの各タイルによって、または複数のハードウェア処理ユニットにわたってアクセス可能な共有メモリを含むことができる。共有メモリは、ハードウェア処理ユニット110の複数のタイルの各々によって使用される共有アドレス空間を含むことができる。
【0045】
図2は、異なるシナリオにおいて、異なる時間窓内で複数の機械学習モデルの推論演算を実行するための例示的プロセス200を示す。便宜上、プロセス200は、1つまたは複数の場所に位置する1つまたは複数のコンピュータのシステムによって実行されるものとして記述される。例えば、適切にプログラムされた推論システム、例えば
図1のシステム100は、プロセス200を実行することができる。
【0046】
図1の推論システム100は、上述したように、システムの時間窓を決定することができる。より具体的には、時間窓は、システム100が各計算サイクル内で推論演算を実行する期間を含むことができる。時間窓は、入力データの各フレームの受信レート、例えば、1秒あたりの入力のフレームに基づいて、システム100によって決定することができる。例えば、時間窓としては、1ms、10ms、20ms、50ms、100msの期間、または別の適切な期間を挙げることができる。上述したように、時間窓は反復時間窓であることができる。例えば、別の計算サイクルに対応する別の時間窓は、前の計算サイクルに対応する前の時間窓が終了した直後であることができる。
【0047】
図2に示すように、時間軸210に沿って複数の時間窓205a、205b、および205cがある。205a~cの各時間窓は、システムが入力データのフレームを処理するための推論演算を実行する期間を含むことができる。異なる時間窓は、異なる期間の長さを有することができる。あるいは、1つまたは複数の異なる時間窓は、同じ長さの期間を共有することができる。
【0048】
システム100は、各々が特定の推論タスクを実行するように指定された複数の機械学習モデルを含むことができる。例えば、システム100が、1つまたは複数のオブジェクトを含むシーンの画像またはビデオ(画像の時間シーケンス)を撮影するように構成されたカメラシステムによって使用される場合。システム100は、異なるタスクのために複数の機械学習モデルを含むことができ、タスクを完了するために、特定の頻度(例えば、50ミリ秒ごとに1つの画像)で受信された画像の各フレームを処理するために、機械学習モデルの各々の推論演算を実行することができる。例えば、タスクとしては、画像のフレームの焦点位置を自動的に決定すること、画像のフレーム内のオブジェクトを検出すること、画像のフレームにキャプチャされた人間の顔を検出して認識すること、および画像のフレームの深度画像を決定することを挙げることができる。
【0049】
好ましくは、システム100は、単一の時間窓内、または別の入力フレームを受信する前に、入力のフレームを処理するための全機械学習モデルの推論演算を実行することができる。しかし、システム100が多くのタスクを有する場合、これは単一の時間窓よりも多くの時間を必要とすると推定される。システム100は、各入力フレームがタイムリーに処理されるように、推論演算の実行順序をアレンジし、スケジューリングするように構成される。
【0050】
このようなアレンジを行うために、システム100は、機械学習モデルの各々に対する優先レベルを決定することができる。一般に、システム100は、いくつかの例を挙げると、機械学習モデルの出力が別の機械学習モデルへの入力として提供されるかどうか(すなわち、出力依存性)、機械学習モデルのモデルサイズ、機械学習モデルの推論演算の実行に必要なおおよその時間および計算リソース、およびレイテンシに対する感度レベルなどの異なる側面に基づいて、優先レベルを決定することができる。
【0051】
より具体的な例として、1つまたは複数の他の機械学習モデルが機械学習モデルからの出力を使用して画像を処理する場合、機械学習モデルは、システム100により、高い優先レベルを有すると決定され得る。別の例として、データのレイテンシに敏感な機械学習モデル(例えば、カメラのビューファインダ用のモデル)は、システム100によって、高い優先レベルを有すると決定され得る。別の例として、画像フレームの深度画像を予測するように構成された機械学習モデルは、深度画像を生成するためのモデルが大きく、より長い処理期間を必要とし得、他の機械学習モデルが予測された出力を使用しない場合、低い優先レベルを有することができる。
【0052】
別の例として、システム100は、機械学習モデルを優先機械学習モデルとして選択することができるか、または機械学習モデルによって実行されるタスクに基づいて機械学習モデルの優先レベルを決定することができる。テキストまたは音声の処理の文脈における特定の例では、システムは、テキストと音声との間の変換タスク(例えば、テキスト音声合成(TTS)モデルにおいて指定される演算のような、テキストを音声に変換すること)に関連する機械学習モデルが高い優先レベルを有すると決定することができる。システム100は、TTSモデルが優先機械学習モデルであることに基づいて、TTSモデルで指定された演算に優先順位を付けることができる。このようにして、システム100は、他のモデルの演算を実行するときに、TTSモデルからの出力(例えば、音声フレーム)を待機する「アイドル時間」がない(または最小限である)ことを保証することができる。このアイドル時間を防止することにより、システム100は、聴衆に対する音声を生成するためにテキスト入力の各フレームを処理するときに、音声の「途切れ」(すなわち、音声バッファの不足)を回避する。
【0053】
機械学習モデルの優先レベルを決定した後、システム100は、大規模だが低い優先レベル(例えば、1つまたは複数の他の機械学習モデルの優先レベルよりも低い優先レベル)を有する1つの機械学習モデルを選択することができる。例えば、
図2に示す機械学習モデル245aおよび245b、または
図1の選択されたモデル145は、優先度の低い機械学習モデルとみなすことができる。
【0054】
システム100は、入力を処理するために機械学習モデルの推論演算を実行するための推定持続時間を決定することができる。例えば、システム100は、選択された優先レベルが低い機械学習モデルの推論演算を実行するための推定持続時間を決定することができる。
図2に示すように、システム100は、入力のフレームを処理する機械学習モデル245aの推論演算を実行するための推定持続時間230aと、入力の別のフレームを処理する機械学習モデル245bの推論演算を実行するための別の推定持続時間230bとを決定することができる。
【0055】
一般に、システム100は、優先機械学習モデル(例えば、高い優先レベルを有すると分類された機械学習モデル)の推論演算を実行するために、各時間窓の一部を予約することができる。各時間窓の優先機械学習モデルのために予約された部分は、上述したように、各時間窓の「優先期間」とも呼ばれる。
図2に示すように、優先期間215a、215b、および215cは、各反復時間窓205a、205b、および205cの優先機械学習モデルのために予約された部分を表すことができる。一方、システム100は、優先期間に基づいて、各時間窓の残り期間を決定することができる。例えば、
図2に示すように、システム100は、各反復時間窓205a、205b、および205cについて、それぞれ220a、220b、および220cの残り期間を決定することができる。
【0056】
次いで、システム100は、非優先機械学習モデル(例えば、低い優先レベルを有すると分類された機械学習モデル)の推論演算を実行するための推定持続時間と、時間窓の残り期間とを比較することによって、推定持続時間が残り期間以下であるかどうかを判定することができる。
【0057】
非優先機械学習モデルの推論演算を実行するための推定持続時間が残り期間以下であると判定したことに応答して、システム100は、モデルを複数のサブモデルに分割することなく、非優先機械学習モデルの演算を実行するようにスケジューリングすることができる。例えば、
図2のシナリオAによって示されるように、システム100は、推定持続時間230aが残り期間220aより短いと判定する。これに応答して、
図1の分割エンジン155に相当する分割エンジン255は、機械学習モデル245aを分割しない。その代わり、システム100は、機械学習モデルを直接コンパイル(例えば、コンパイルされたモデル270a)し、反復時間窓205a内の優先期間215aの後に、コンパイルされたモデル270aの推論演算を実行することができる。この例では、各優先期間215a~215cは、各反復時間窓205a~205cの最初に発生するものとして示されているが、他の実施態様では、優先期間205a~215cは、最後に位置していても、または最初から最後までの間のどこかに位置していてもよい。
【0058】
いくつかの実施態様では、システムは、たとえ推定持続時間が残り期間以下であると判定されても、非優先機械学習モデルの分割を決定することができる。
【0059】
あるいは、非優先機械学習モデルの推論演算を実行するための推定持続時間が残り期間より長いと判定したことに応答して、システム100は、機械学習モデルを複数のサブモデルに分割し、シーケンスに従って、複数のサブモデルの部分推論演算を実行するようにスケジューリングすることができる。シーケンスは、元の機械学習モデルと、機械学習モデルの分割方法とに基づいて決定される。機械学習モデルを分割することによって複数のサブモデルを生成する詳細については、
図3Aに関連して説明する。例えば、
図2のシナリオBによって示されるように、システム100は、推定持続時間230bが残り期間220bよりも長いと判定する。これに応答して、
図1の分割エンジン155と同一であるかまたは類似していてもよい分割エンジン255は、機械学習モデル345aを4つのサブモデルに分割する。システム100は、さらに、4つのサブモデルをコンパイルし、コンパイルされた4つのサブモデル280a、280b、280c、および280dを処理ユニット110にデプロイし、例えば、各々がそれぞれの処理ユニット110に割り当てられるか、またはすべてが同じ処理ユニット110に割り当てられる。
【0060】
好ましくは、コンパイルされた4つのサブモデルの推論演算の実行に必要な時間の合計は、推定持続時間230bと実質的に等しくすべきである。しかしながら、データの格納、転送、およびアクセラレータ間レイテンシに費やされる時間故に、4つのサブモデルに必要な時間の合計は、推定持続時間230bよりも長くなり得る。したがって、システムは、優先期間215aの後の反復時間窓205bで、サブモデル280a、280b、および280cの推論演算を実行するようにアレンジしスケジューリングすることができ、優先期間215cの後の反復時間窓205cでサブモデル280dの推論演算を実行するようにスケジューリングすることができる。
【0061】
システム100が複数の時間窓にわたって複数のサブモデルの推論演算を実行するとスケジューリングしている状況では、システム100、または特にランタイムコントローラ175は、ハードウェア処理ユニット110のそれぞれのメモリユニット170から中間出力および中間入力を格納しフェッチするように構成される。
【0062】
図示を容易にするために
図2に示すように、機械学習モデル245bからセグメント化された4つのサブモデル280a~dのみが存在するが、システム100は、機械学習モデルを異なる数のサブモデル、例えば、2、5、10、および20のサブモデルに分割できることを理解すべきである。4つのサブモデル280a~280dは、図示を容易にするために
図2に示すように、2つの時間窓にわたってスケジューリングされるが、システム100は、一般に、複数の、例えば、3、5、および10の時間窓にわたって複数のサブモデルの推論演算を実行するようにアレンジしスケジューリングすることができる。他の適切な量のサブモデルおよび時間窓を使用することもできる。
【0063】
いくつかの実施態様では、システム100は、第1の非優先機械学習モデルを分析した後に、他の機械学習モデルのための追加の残り期間を決定することができる。例えば、システム100は、第2の推定持続時間(図示せず)を取得して、第2の推論出力を生成するために、入力を処理する第2の機械学習モデルの推論演算を実行することができる。システム100は、(i)優先機械学習モデルの優先推論演算を実行するための優先期間と、(ii)第1の機械学習モデルにおけるサブモデル(例えば、システム100によって分割され、スケジューリングされ、またはその両方が行われた機械学習モデル245aおよび245b)の推論演算を実行するための少なくともそれぞれの推定持続時間とを予約した後に、1つまたは複数の非優先機械学習モデルのための第2の残り期間(図示せず)を決定することもできる。システムは、上述した同様のステップに従って、第2の非優先機械学習モデルをサブモデルのグループに分割し、サブモデルの推論演算を、現在の反復時間窓の第2の残り期間内に、または複数の反復時間窓にわたって実行するとスケジューリングするかどうかを決定することができる。
【0064】
図3Aは、機械学習モデルから分割された複数のサブモデルの推論演算を実行するための例示的プロセス300を示す。便宜上、プロセス300は、1つまたは複数の場所に位置する1つまたは複数のコンピュータのシステムによって実行されるものとして記述される。例えば、適切にプログラムされた推論システム、例えば
図1のシステム100は、プロセス300を実行することができる。
【0065】
図3Aに示すように、デプロイされたサブモデル325は、
図1のコンパイルされたサブモデル160、または
図2のコンパイルされたサブモデル280a~280dに相当し得る。デプロイされたサブモデル325は、
図1の分割エンジン155に相当する分割エンジンによって、選択された機械学習モデル(例えば、低い優先レベルを有する大規模機械学習モデル)から分割される。システム100は、入力データ343を処理して出力データ347を生成する推論演算を実行するために、コンパイルされたサブモデルを1つまたは複数のハードウェア処理ユニット、例えば機械学習アクセラレータにデプロイすることができる。
【0066】
いくつかの実施態様では、機械学習モデルはニューラルネットワークを含むことができる。各ニューラルネットワークは、シーケンスで配置された複数のネットワーク層を含むことができ、各ネットワーク層は、特定のトレーニングサンプルでトレーニングされた複数のパラメータを含むことができる。システムは、シーケンスに従って各ネットワーク層で指定された推論演算を実行し、入力に対する出力を生成することができる。ニューラルネットワークの様々なタイプおよび演算を以下でさらに詳しく説明する。
【0067】
低い優先度の大規模機械学習モデルが複数のネットワーク層を含むニューラルネットワークである場合、システム100(または
図1のパフォーマンス推定エンジン150)は、ニューラルネットワークの各ネットワーク層の推論演算を実行するためのそれぞれの推定持続時間を取得することができる。システム100は、複数のネットワーク層から1つまたは複数のネットワーク層を配置してグループ化し、各層の推定持続時間に基づいて、ニューラルネットワークのサブモデル(またはサブネットワーク)を形成することができる。システム100は、サブモデルでグループ化されたすべての層の推定持続時間を合計して、サブモデルの推定持続時間とすることができる。いくつかの実施態様では、システム100はニューラルネットワークを、各々がそれぞれの推定持続時間を有する複数のサブモデルに分割することができる。あるいは、システム100はニューラルネットワークを、実質的に同じ推定持続時間を有する複数のサブモデルに分割することができる。
【0068】
ニューラルネットワークの各層のそれぞれの持続時間を推定するために、システム100は、例えば、解析モデルを適用して、層内の複数のノード演算の各演算のそれぞれの持続時間を決定し、それぞれの持続時間を集約して、それぞれの層持続時間を推定することができる。別の例として、システム100は、層持続時間を推定するために、大規模シミュレーションに基づくデータベース由来のデータベースを含むことができる。別の例として、システム100は、1つまたは複数の機械学習モデルを適用して、ニューラルネットワークモデル全体までの各層のデータレイテンシを予測し、予測されたデータレイテンシに基づいてそれぞれの層持続時間を推定することができる。
【0069】
一般に、システム100は、
図2で説明したように、システムが時間窓の残り期間内に、または複数の時間窓にわたってサブモデルの推論演算を実行できるように、ニューラルネットワークを、各々がそれぞれの数のネットワーク層を有する複数のサブモデルに分割することができる。
【0070】
ニューラルネットワークを複数のサブモデルに分割するために、システム100は、元のニューラルネットワークで指定されたシーケンスに従って最後のサブモデルを除く各サブモデルについて、サブモデルの最後の層をサブモデルの出力層として決定することができる。サブモデルの出力層からの出力は、ニューラルネットワークの中間出力であり、シーケンスに従ってサブモデルに後続するサブモデルへの中間入力として機能することができる。
【0071】
同様に、システム100は、元のニューラルネットワークで指定されたシーケンスに従って第1のサブモデルを除く各サブモデルについて、サブモデルの第1の層を、サブモデルの入力層または充填層として決定することができる。サブモデルの充填層は、中間入力として、シーケンスに従ってそのサブモデルに先行するサブモデルの出力層からの中間出力を受け取ることができる。
【0072】
一例として、
図3Aを参照すると、システム100は、機械学習モデル(例えば、ニューラルネットワーク)を複数のサブモデル、例えば、302、304、306、および308に分割してコンパイルすることができる。システム100は、サブモデル304の第1の層を、先行するサブモデル302から中間出力データ312を受け取るように構成された充填層334として決定することができる。同様に、システム100は、サブモデル306の第1の層を、先行するサブモデル304から中間出力データ314を受け取るように構成された充填層336として決定することができ、サブモデル308の第1の層を、先行するサブモデル306から中間出力データ316を受け取るように構成された充填層338として決定することができる。
【0073】
さらに、システム100は、サブモデル302の最後の層を、中間出力データ312を生成するように構成された出力層として決定することができる。システム100は、ニューラルネットワークで指定されたシーケンスに従って、サブモデル302に後続するサブモデル304の充填層334への中間入力として中間出力データ312を提供することができる。同様に、システム100は、中間出力データ314を生成するように構成された出力層としてサブモデル304の最後の層を決定し、中間出力データ316を生成するように構成された出力層としてサブモデル306の最後の層を決定することができる。システム100は、サブモデル306の充填層336への中間入力として中間出力データ314を提供し、サブモデル308の充填層338への中間入力として中間出力データ316を提供することができる。
【0074】
ランタイム中、
図3Aに示すように、システム100が入力データのフレームを受信し、入力の各受信フレームを処理しているとき、
図1のランタイムコントローラ175に相当するランタイムコントローラ345は、中間出力データ312、314、および316のデータフローを管理することができる。より具体的には、ランタイムコントローラ345は、中間出力データを後続するサブモデルに提供するか、または中間出力データをメモリユニットに格納するかどうかを決定することができる。例えば、システム100が、第1の時間窓の残り期間中にサブモデル302、304、および306の推論演算を実行し、第2の時間窓の残り期間中にサブモデル308の推論演算を実行することをスケジューリングすると仮定する。したがって、第1の時間窓の残り期間中、ランタイムコントローラ345は、中間出力データ312を決定して、サブモデル304の充填層334に直接提供し、中間出力データ314をサブモデル306の充填層336に直接提供することができる。しかしながら、ランタイムコントローラ345は、最初に中間出力データ316をメモリ320に格納することができる。第2の時間窓の残り期間の開始時または開始前に、ランタイムコントローラ345は、メモリ320から中間出力データ316をフェッチまたはプレフェッチし、第2の時間窓の残り期間内で推論演算を実行するために充填層338に提供することができる。一般に、メモリ320は、デプロイされたサブモデル325の推論演算を実行するように割り当てられたハードウェア処理ユニットがアクセス可能な任意の適切なメモリを含むことができる。例えば、メモリ320は、
図1のハードウェア処理ユニット110の複数のメモリユニット170であることができる。別の例として、メモリ320は、ハードウェア処理ユニット110がアクセス可能な、
図1のホスト102のメモリ106であることができる。
【0075】
別の例として、
図2に関連して、ランタイムコントローラ345は、時間窓205bにてサブモデル280cからの中間出力を格納し、時間窓205cの残り期間220c中に、中間出力をサブモデル280dへの入力としてフェッチして提供することを決定することができる。
【0076】
図3Bは、機械学習モデルから分割された複数のサブモデルを介するマルチパス推論を実行するための例示的プロセス350を示す。便宜上、プロセス350は、1つまたは複数の場所に位置する1つまたは複数のコンピュータのシステムによって実行されるものとして記述される。例えば、適切にプログラムされた推論システム、例えば
図1のシステム100は、プロセス350を実行することができる。
【0077】
システムは、
図2で説明したように、時間間隔毎に入力データの複数のフレーム、または入力データの複数のフレームのストリームを受信するように構成されている。例えば、入力データは、画像の複数のフレームを有するビデオのストリーム、または特定の時間間隔でカメラシステムによって撮影された画像の複数のフレームのセットであることができる。システム100は、複数の機械学習モデルまたは分割されたサブモデルを複数のハードウェア処理ユニット110に割り当て、モデルのマルチパス推論演算を実行し、時間窓内の入力の1つまたは複数のフレームを処理することができる。
【0078】
より具体的には、マルチパス推論演算を実行するために、システム100は、入力のフレームを処理するために優先機械学習モデルと非優先機械学習モデルとを切り替えることによって推論演算を実行することができる。例えば、
図2に関連して、特定の頻度である順序に従って受信した入力の第1のフレームについて、システム100は、反復時間窓205bの優先期間215b内で入力の第1のフレームを処理するための1つまたは複数の優先機械学習モデルの推論演算を実行することができる。次いで、システムは、残り期間220bで入力の第1のフレームを処理するために、非優先機械学習モデル245bから分割されたサブモデル280a~280cの推論演算を実行することができる。
【0079】
システム100が時間窓205cの開始時に入力の第2のフレームを受信すると仮定すると、システム100は、時間窓205cの優先期間215c内で入力の第2のフレームを処理するために、1つまたは複数の優先機械学習モデルの推論演算を実行することができる。その後、システム100は、残り期間220cにおいて、入力の第1のフレームを処理するために、非優先機械学習モデル245bからのサブモデル280dの推論演算の実行を再開することができる。その後、システム100は、1つまたは複数の時間窓にわたって、入力の第2のフレームに対するサブモデル280a~280dの推論演算を実行し始めることができる。
【0080】
図3Bを再び参照すると、ランタイムコントローラ175は、システム100が優先機械学習モデルまたはタスクのために入力データの新しいフレームを処理する必要があるため、入力のフレームに対してサブモデルから生成された中間出力をいつ格納するか、および同じまたは1つもしくは複数の異なる時間窓で入力のフレームの処理をいつ再開するかを決定することができる。
【0081】
例えば、
図3Bに示すように、システム100は、単一の時間窓375で入力データ365の3つのフレームを受信することができる。
図3Bに示す例は、説明を容易にするためのものであることに留意されたい。しかしながら、システム100は、異なる時間窓に対しては入力の異なるフレームを受信することもできるが、これは、ランタイムコントローラ175によって実行される方法論を変更するものではない。
【0082】
時間窓375の残り期間中、システム100は、第1の入力データ360(例えば、ストリーミングデータの第1のフレーム)を受信し、第1の入力データ360を処理するためにサブモデル302の推論演算を実行することによって、中間出力370aを生成することができる。
【0083】
次に、システム100は、第2の入力データ363を受信し、第2の入力データ363を処理するためにサブモデル302の推論演算を実行することによって、中間出力373aを生成することができる。一方、システム100は、中間出力370aをサブモデル304に提供し、第1の入力データ360を処理するためにサブモデル304の推論演算を実行することによって、中間出力370bを生成することができる。
【0084】
次に、システム100は、第3の入力データ365を受信し、第3の入力データ365を処理するためにサブモデル302の推論演算を実行することによって、中間出力375aを生成することができる。一方、システム100は、中間出力373aをサブモデル304に提供し、中間出力373bをサブモデル306に提供することができる。システムは、第2の入力データ363を処理するためにサブモデル304の推論演算を実行することによって中間出力373bを生成し、第1の入力データ360を処理するためにサブモデル306の推論演算を実行することによって中間出力370c(またはサブモデル306がシーケンスに従って機械学習モデルの最後のサブモデルである場合は推論出力370c)を生成することができる。
【0085】
ランタイムコントローラ175は、上述したさまざまな理由により、上述の計算のいずれかを、時間窓375の後の1つまたは複数の時間窓で実行する必要があるかどうかを決定することができる。これに応答して、ランタイムコントローラ175は、対応する入力のフレームに対する1つまたは複数の中間出力をメモリユニットに格納し、格納された中間出力をフェッチし、システム100が対応する入力フレームの処理を再開したときに、それらを対応するサブモデルに提供することができる。
【0086】
例えば、システムは、時間窓375内の中間出力373bの処理を一時停止することができる。ランタイムコントローラ175は、中間出力373bを、サブモデル306に割り当てられたハードウェア処理ユニットがアクセス可能なメモリユニットに格納することができる。ランタイムコントローラ175は、第1の入力データ360に対する推論出力370cを生成するために、サブモデル306の推論演算を実行するために中間出力373bをフェッチすることができる。あるいは、ランタイムコントローラ175は、中間出力373bが格納されているメモリアドレスを格納することができる。サブモデル306に割り当てられたハードウェア処理ユニットは、1つまたは複数のデータバスを使用して、格納された出力373bをメモリアドレスからフェッチするように命令され得る。
【0087】
図3Bには示されていないが、上述のマルチパス推論法は、計算要件または制限に従って、優先期間内に優先機械学習モデルの推論演算を実行するために拡張できることを理解すべきである。
【0088】
図4は、機械学習モデルから複数のサブモデルを生成するための例示的プロセス400を示す。便宜上、プロセス400は、1つまたは複数の場所に位置する1つまたは複数のコンピュータのシステムによって実行されるものとして記述される。例えば、適切にプログラムされた推論システム、例えば
図1のシステム100は、プロセス400を実行することができる。
【0089】
システムは、ホストと、複数の機械学習モデルの推論演算を実行するように構成された1つまたは複数のハードウェア処理ユニットとを含むことができる。システムは、入力データの複数のフレームを特定のレート(例えば、フレーム毎秒)である順序で受信するように構成される。
【0090】
システムは、機械学習モデルを表すデータを受信することができる(402)。より具体的には、システムは、ホストにおいて第1の機械学習モデルを表すデータを受信することができる。第1の機械学習モデルは、第1の推論出力を生成するために入力を処理する推論演算を含むことができる。いくつかの実施態様では、機械学習モデルは、層パラメータを有する複数のネットワーク層を有するニューラルネットワークを含むことができる。
【0091】
システムは、入力を処理する第1の機械学習モデルの推論演算を実行し、第1の推論出力を生成するための推定持続時間を取得することができる(404)。システムはさらに、システムにて受信され格納された複数の機械学習モデルの各機械学習モデルの推論演算を実行するためのそれぞれの期間を推定することができる。
【0092】
システムは、優先機械学習モデルの優先推論演算を実行するために予約された優先期間を特定することができる(406)。システムは、反復時間窓の各発生のそれぞれの優先期間を決定することができる。1つまたは複数のハードウェア処理ユニットは、反復時間窓の各発生中に、複数の機械学習モデルの推論演算の少なくとも一部を実行することができる。
【0093】
システムは、反復時間期間の各発生の、優先推論演算を実行する優先期間を予約した後に残る残り期間を決定することができる(408)。各反復時間窓は、それぞれの残り期間を含むそれぞれの期間を含むことができる。各残り期間は、時間窓の、システムが1つまたは複数の非優先機械学習モデルの推論演算を実行するために利用可能な少なくとも一部を含むことができる。
【0094】
システムは、推定持続時間が残り期間よりも長いかどうかを判定することができる(410)。
【0095】
推定持続時間が残り期間よりも長いと判定したことに応答して、システムは、第1の機械学習モデルをグループサブモデルに分割することができる(412)。サブモデルグループの各サブモデルは、第1の機械学習モデルにおいて表される推論演算のそれぞれの部分を含むことができる。システム100は、1つまたは複数の反復時間窓にわたる残り期間内に、サブモデルグループのうちの1つまたは複数に対して推論演算を実行することができる。
【0096】
システムは、システム内の1つまたは複数の処理ユニットによって、反復時間ウインドウの発生の残り期間中に、第1のサブモデルグループのサブモデルの推論演算を実行することができる(414)。
【0097】
いくつかの実施態様では、システムは、サブモデルグループの各々を1つまたは複数のハードウェア処理ユニットのそれぞれのハードウェア処理ユニットに割り当てる命令をホストで生成することができる。システムは、対応するハードウェア処理ユニットに各々が割り当てられたサブモデルグループの推論演算のそれぞれの部分を実行し、第1の推論出力を生成するように、1つまたは複数のハードウェア処理ユニットをスケジューリングすることができる。
【0098】
いくつかの実施態様では、システムは、複数のサブモデルのうちの第1のサブモデルに関連する推論演算を時間窓の残り期間で実行し、複数のサブモデルのうちの第2のサブモデルに関連する推論演算を別の時間窓の別の残り期間で実行することをスケジューリングすることができる。第1のサブモデルおよび第2のサブモデルは、機械学習モデルから分割されたサブモデルのシーケンスに従って順序付けられる。第2のサブモデルは、シーケンスに従って第1のサブモデルに後続する。サブモデルの各々は、機械学習モデルで指定された推論演算のそれぞれの部分を含むことができる。
【0099】
システムは、割り当ての命令、および第1の機械学習モデルにアレンジされたサブモデルグループのシーケンスに従って、割り当てられたハードウェア処理ユニットで入力を処理する第1のサブモデルグループのそれぞれの推論演算を実行することができる。
【0100】
いくつかの実施態様では、システムは、入力データフレームの順序またはシーケンスまたはストリームで受信された入力の複数のフレームを含む入力データを処理するように構成される。システムは、特定の頻度でその順序に従って受信した入力の各フレームを処理することができる。このことを考慮すると、時間窓は、入力の各フレームを受信するレートまたは頻度に基づいて自動的に決定され得る。
【0101】
さらに、システムはコンパイラを含むことができる。コンパイラは、ホストで複数のサブモデルをコンパイルし、コンパイルされたサブモデルの各々を、コンパイルされたサブモデルに割り当てられたハードウェア処理ユニットにデプロイするように構成される。
【0102】
さらに、システムによって複数のサブモデルに分割されるように選択され決定された非優先機械学習モデルは、ニューラルネットワークを含むことができる。ニューラルネットワークは、ニューラルネットワークに従ってあるシーケンスで配置された複数のネットワーク層を含むことができる。システムは、入力のフレームを処理するためにネットワーク層で指定されたそれぞれの層演算をシステムが実行するのに必要な、ネットワーク層の各層に対するそれぞれの推定層持続時間を決定することができる。システムは、すべてのネットワーク層のそれぞれの推定層持続時間を集約して、システムがニューラルネットワークで指定されたすべての推論演算を実行するのに必要な推定持続時間を生成することができる。
【0103】
システムは、ニューラルネットワークを複数のサブモデルに分割することができ、複数のサブモデルの各々は、シーケンスに従って配置されたそれぞれの数のネットワーク層、したがって、推論演算を実行するためのそれぞれの推定持続時間を含む。
【0104】
システムは、シーケンスに従って、第1のサブモデルを除く各サブモデルに対するそれぞれの充填層を決定することができる。それぞれの充填層は、先行するサブモデルから生成された中間出力が充填層を介して入力としてサブモデルに提供されるように、関連するサブモデルの入力層として構成される。それぞれの充填層は、対応するサブモデルに含まれるそれぞれの数のネットワーク層の最初の層である。
【0105】
システムは、1つまたは複数の機械学習モデルのマルチパス推論演算を実行するように構成される。上述したように、入力データは、入力のフレームのシーケンスを含むことができる。入力のシーケンスは、特定の頻度である順序に従ってホストで受信される第1の入力および第2の入力を含むことができる。
【0106】
入力のフレームを処理するために推論出力を生成するために、システムは、第1の入力を処理するために分割された非優先モデルの第1のサブモデルに関連する推論演算を実行し、第1の中間出力を生成することができる。システムは、機械学習モデルで指定されたシーケンスに従って、第2のサブモデルの充填層を介して、第1のサブモデルに後続する第2のサブモデルに第1の中間出力を第1の中間入力として提供することができる。
【0107】
次いで、システムは、第2の入力を処理するために第1のサブモデルに関連する推論演算を実行して、第2の中間出力を生成することができる。同時に、システムは、第1の中間入力を処理するために、第2のサブモデルに関連する推論演算を実行することができる。
【0108】
システムは、ランタイムコントローラをさらに含むことができる。ランタイムコントローラは、システムがマルチパス推論演算を実行するときのデータフローを制御するように構成され得る。より具体的には、ランタイムコントローラは、1つまたは複数の時間窓内で複数のサブモデルの推論演算を実行することをスケジューリングすることができる。ランタイムコントローラは、入力のフレームを処理するための複数のサブモデルのうちのあるサブモデルによって生成された中間出力をシステムのメモリユニットに格納することができる。ランタイムコントローラはさらに、シーケンスに従ってサブモデルに後続する別のサブモデルの中間入力として、システムのメモリユニットから中間出力を取り出すことができる。システムのメモリユニットは、サブモデル用に割り当てられたハードウェア処理ユニットがアクセス可能であることができる。
【0109】
図5は、複数のサブモデルに分割される機械学習モデルを決定するための例示的プロセス500を示す。便宜上、プロセス500は、1つまたは複数の場所に位置する1つまたは複数のコンピュータのシステムによって実行されるものとして記述される。例えば、適切にプログラムされた推論システム、例えば
図1のシステム100は、プロセス500を実行することができる。
【0110】
非優先機械学習モデルとして分類される機械学習モデルを選択するために、システムは、複数の機械学習モデルを表すデータを受信することができる(502)。複数の機械学習モデルの各々は、それぞれのタスクを実行するように構成され、それぞれの入力を処理するためにシステムによって実行されるそれぞれの推論演算を含む。タスクは、例えば、カメラシステムによってキャプチャされた画像に対して、背景検出、焦点検出、オブジェクト検出、または顔認識のうちの少なくとも1つを含むことができる。背景検出のタスクは、キャプチャされた画像に対して深度画像を生成することをさらに含むことができる。
【0111】
システムは、それぞれのタスクの特性に基づいて、複数の機械学習モデルの各々の優先レベルを測定することができる(504)。それぞれのタスクの特性は、タスクを実行する機械学習モデルのサイズ、タスク用の機械学習モデルからの出力が入力として他のモデルによって使用されるかどうか、またはタスク用の機械学習モデルがレイテンシに敏感であるかどうかを含むことができる。
【0112】
システムは、それぞれの優先レベルに基づいて、複数の機械学習モデルから1つの機械学習モデルを非優先機械学習モデルとして選択することができる(506)。例えば、システムは、優先レベルが低い機械学習モデルを、選択された非優先機械学習モデルとして選択することができる。
【0113】
本明細書に記載される主題の実施態様、ならびに動作および演算は、デジタル電子回路、有形に具体化されたコンピュータソフトウェアもしくはファームウェア、本明細書に開示される構造およびそれらの構造的等価物を含むコンピュータハードウェア、またはそれらの1つもしくは複数の組み合わせに実装することができる。本明細書に記載の主題の実施態様は、データ処理装置による実行のため、またはデータ処理装置の演算を制御するために、コンピュータプログラムキャリア上でエンコードされた1つまたは複数のコンピュータプログラム、例えば、コンピュータプログラム命令の1つまたは複数のモジュールとして実装することができる。キャリアは、有形の非一時的なコンピュータ記憶媒体であってもよい。代替的または追加的に、キャリアは、人工的に生成された伝搬信号、例えば、データ処理装置による実行のために適切な受信装置に伝送するための情報をエンコードするために生成される機械的に生成された電気信号、光信号、または電磁信号であってもよい。コンピュータ記憶媒体は、機械可読記憶装置、機械可読ストレージ基板、ランダムアクセスメモリデバイスもしくはシリアルアクセスメモリデバイス、またはそれらのうちの1つもしくは複数の組み合わせであるか、あるいはその一部であることができる。コンピュータ記憶媒体は伝搬信号ではない。
【0114】
「ニューラルネットワーク」という用語は、あらゆる種類のタスクを実行するように構成されたあらゆる種類のニューラルネットワークを包含している。
【0115】
場合によっては、ニューラルネットワークは画像処理タスクを実行する、すなわち入力画像を受信し、入力画像を処理して入力画像に対するネットワーク出力を生成するように構成される。例えば、タスクは画像分類であってもよく、所与の画像に対してニューラルネットワークによって生成される出力は、一連のオブジェクトカテゴリの各々に対するスコアであってもよく、各スコアは、その画像がカテゴリに属するオブジェクトの画像を含む推定可能性を表す。別の例として、タスクは画像埋め込み生成であることができ、ニューラルネットワークによって生成される出力は入力画像の数値埋め込みであることができる。さらなる別の例として、タスクはオブジェクト検出であることができ、ニューラルネットワークによって生成される出力は、特定のタイプのオブジェクトが描かれている入力画像内の位置を特定することができる。さらなる別の例として、タスクは画像分割であることができ、ニューラルネットワークによって生成される出力は、入力画像の各画素を一連のカテゴリのうちの1カテゴリに割り当てることができる。
【0116】
別の例として、ニューラルネットワークへの入力が、インターネットリソース(例えば、ウェブページ)、文書、もしくは文書の一部、またはインターネットリソース、文書、もしくは文書の一部から抽出された特徴である場合、タスクは、リソースまたは文書を分類することであることができ、すなわち、所与のインターネットリソース、文書、または文書の一部についてニューラルネットワークによって生成される出力は、一連のトピックの各々に対するスコアであり得、各スコアは、インターネットリソース、文書、または文書の一部分がそのトピックに関するものである推定可能性を表す。
【0117】
別の例として、ニューラルネットワークへの入力が特定の広告のインプレッションコンテキストの特徴である場合、ニューラルネットワークによって生成される出力は、特定の広告がクリックされる推定可能性を表すスコアであってもよい。
【0118】
別の例として、ニューラルネットワークへの入力が、ユーザに対してパーソナライズされた提案の特徴、例えば、提案のためのコンテキストを特徴付ける特徴、例えば、ユーザが取った以前の行動を特徴付ける特徴である場合、ニューラルネットワークによって生成される出力は、一連のコンテンツアイテムの各々に対するスコアであってもよく、各スコアは、ユーザがコンテンツアイテムを提案されることに好意的に反応する推定可能性を表す。
【0119】
別の例として、ニューラルネットワークへの入力がある言語でのテキストのシーケンスである場合、ニューラルネットワークによって生成される出力は、別の言語の一連のテキストの断片の各々に対するスコアであってもよく、各スコアは、他の言語のテキストの断片が入力テキストの他の言語への適切な翻訳である推定可能性を表す。
【0120】
別の例として、タスクは音声処理タスクであってもよい。例えば、ニューラルネットワークへの入力が話し言葉を表すシーケンスである場合、ニューラルネットワークによって生成される出力は、一連のテキストの断片の各々に対するスコアであってもよく、各スコアは、テキストの断片が発話の正しいトランスクリプトである推定可能性を表す。別の例として、タスクは、ニューラルネットワークへの入力が話し言葉を表すシーケンスである場合、ニューラルネットワークによって生成される出力が、特定の単語または語句(「ホットワード」)が発話において話されたかどうかを示すことができるキーワードスポッティングタスクであってもよい。別の例として、ニューラルネットワークへの入力が話し言葉を表すシーケンスである場合、ニューラルネットワークによって生成された出力は、発話が話された自然言語を特定することができる。
【0121】
別の例として、タスクは、何らかの自然言語のテキストのシーケンスに対して行われる自然言語処理または理解タスク、例えば、含意タスク、言い換えタスク、テキスト類似性タスク、センチメントタスク、文章完成タスク、文法性タスクなどであることができる。
【0122】
別の例として、タスクは、入力は自然言語のテキストまたは自然言語のテキストの特徴であり、ネットワーク出力はスペクトログラムまたは自然言語で話されているテキストの音声を定義する他のデータであるテキスト音声合成タスクであることができる。
【0123】
別の例として、タスクは、入力が患者の電子カルテデータであり、出力が患者の将来の健康に関連する予測、例えば、患者に処方されるべき治療予測、患者に有害な健康事象が発生する可能性、または患者の診断予測である健康予測タスクであることができる。
【0124】
別の例として、タスクは、入力が環境の状態を特徴付ける観察であり、出力が観察に応答してエージェントによって実行される動作を定義する、エージェント制御タスクであることができる。エージェントは、例えば、実世界のまたはシミュレートされたロボット、産業施設の制御システム、または異なる種類のエージェントを制御する制御システムであることができる。
【0125】
ニューラルネットワークは、トレーニーパラメータに従ってネットワーク入力を処理し、特定のタスクの出力を生成するように構成された一連のパラメータ(「ネットワークパラメータ」)を有することができる。ニューラルネットワークは、ニューラルネットワークが特定のタスクが必要とするタイプのネットワーク入力を受信し、特定のタスクで必要とされる形式のネットワーク出力を生成することを可能にする任意の適切なアーキテクチャを有することができる。ニューラルネットワークの例としては、全結合型ニューラルネットワーク、畳み込みニューラルネットワーク、リカレントニューラルネットワーク、アテンションベースのニューラルネットワーク、例えばトランスフォーマなどを挙げることができる。
【0126】
「データ処理装置」という用語は、データを処理するあらゆる種類の装置、デバイス、およびマシンを包含し、例として、プログラマブルプロセッサ、コンピュータ、または複数のプロセッサもしくはコンピュータが含まれる。データ処理装置としては、例えば、FPGA(フィールドプログラマブルゲートアレイ)、ASIC(特定用途向け集積回路)、またはGPU(グラフィック処理ユニット)などの特殊用途論理回路を挙げることができる。装置はまた、ハードウェアに加えて、コンピュータプログラムの実行環境を作成するコード、例えば、プロセッサファームウェアを構成するコード、プロトコルスタック、データベース管理システム、オペレーティングシステム、またはそれらのうちの1つもしくは複数の組み合わせを含むことができる。
【0127】
プログラム、ソフトウェア、ソフトウェアアプリケーション、アプリ、モジュール、ソフトウェアモジュール、エンジン、スクリプト、またはコードと呼ぶか、または記載することもできるコンピュータプログラムは、コンパイル言語もしくはインタプリタ言語、または宣言形言語もしくは手続き型言語を含む、任意の形式のプログラミング言語で記述することができ、スタンドアロンプログラムとして、またはモジュール、コンポーネント、エンジン、サブルーチン、もしくはコンピューティング環境での実行に適した他のユニットとしてを含め、任意の形式デプロイすることができ、この環境は、1つまたは複数の場所でデータ通信ネットワークによって相互接続された1つまたは複数のコンピュータを含んでもよい。
【0128】
コンピュータプログラムは、ファイルシステム内のファイルに対応してもよいが、対応する必要はない。コンピュータプログラムは、他のプログラムもしくはデータを保持するファイルの一部、例えばマークアップ言語文書に格納された1つまたは複数のスクリプト、問題のプログラム専用の単一ファイル、または複数の連携ファイル、例えば1つもしくは複数のモジュール、サブプログラム、もしくはコードの一部を格納するファイルに格納することができる。
【0129】
本明細書に記載のプロセスおよび論理フローは、1つまたは複数のコンピュータプログラムを実行し、入力データを操作して出力を生成することによって機能を実行する、1つまたは複数のコンピュータによって実行できる。プロセスおよび論理フローは、特殊用途論理回路、例えばFPGA、ASIC、もしくはGPUによって、または特殊用途論理回路および1つもしくは複数のプログラムされたコンピュータの組み合わせによって実行することもできる。
【0130】
コンピュータプログラムの実行に適したコンピュータは、汎用もしくは特殊用途のマイクロプロセッサ、またはその両方、あるいは他の種類の中央演算処理装置をベースとすることができる。一般に、中央演算処理装置は、読み取り専用メモリもしくはランダムアクセスメモリ、またはその両方から命令およびデータを受信する。コンピュータの必須の要素は、命令を実行するための中央演算処理装置、ならびに命令およびデータを格納するための1つまたは複数のメモリデバイスである。中央演算処理装置およびメモリは、特殊用途論理回路が追加されるか、または特殊用途論理回路に組み込まれ得る。
【0131】
一般に、コンピュータは、1つまたは複数の大容量記憶装置をさらに備えるか、またはこれらからデータを受信する、もしくはこれらにデータを転送するように動作可能に接続されている。大容量記憶装置は、例えば、磁気ディスク、光磁気ディスク、もしくは光ディスク、またはソリッドステートドライブであることができる。しかしながら、コンピュータがそのようなデバイスを有する必要はない。さらに、コンピュータは、別のデバイス、例えばいくつか例を挙げると、携帯電話、パーソナルデジタルアシスタント(PDA)、携帯型オーディオもしくはビデオプレーヤ、ゲーム機、全地球測位システム(GPS)受信機、または携帯型記憶装置、例えば、ユニバーサルシリアルバス(USB)フラッシュドライブに組み込むことができる。
【0132】
ユーザとの対話を提供するために、本明細書に記載の主題の実施態様は、ユーザに情報を表示するためのディスプレイデバイス、例えば、LCD(液晶ディスプレイ)モニタと、ユーザがコンピュータに入力を提供することができる入力デバイス、例えば、キーボードおよびポインティングデバイス、例えば、マウス、トラックボールまたはタッチパッドとを有するコンピュータに実装することができるか、またはこれらと通信するように構成され得る。他の種類のデバイスを使用して同様にユーザとの対話を提供することができ、例えば、ユーザに提供されるフィードバックは、任意の形式の感覚フィードバック、例えば、視覚フィードバック、聴覚フィードバック、または触覚フィードバックとすることができ、ユーザからの入力は、音響入力、音声入力、または触覚入力を含むいかなる形式でも受信することができる。加えて、コンピュータは、ユーザが使用するデバイスに文書を送信し、デバイスから文書を受信することによって、例えば、ウェブブラウザから受信した要求に応じて、ユーザのデバイス上のウェブブラウザにウェブページを送信することによって、またはユーザデバイス、例えばスマートフォンもしくは電子タブレット上で実行されているアプリと対話することによって、ユーザと対話することができる。また、コンピュータは、テキストメッセージまたは他の形式のメッセージをパーソナルデバイス、例えばメッセージングアプリケーションを実行しているスマートフォンに送信し、応答メッセージをユーザから受信することによって、ユーザと対話することができる。
【0133】
本明細書では、システム、装置、およびコンピュータプログラムコンポーネントに関連して、「~ように構成される」という用語を使用する。特定の演算または動作を実行するように構成された1つまたは複数のコンピュータのシステムとは、動作時にシステムに演算または動作を実行させるソフトウェア、ファームウェア、ハードウェア、またはそれらの組み合わせがシステムにインストールされていることを意味する。特定の演算または動作を実行するように構成された1つまたは複数のコンピュータプログラムとは、1つまたは複数のプログラムが、データ処理装置によって実行されると、装置にその演算または動作を実行させる命令を含むことを意味する。特殊用途論理回路が特定の演算または動作を実行するように構成されているとは、その回路がその演算または動作を実行する電子論理を有していることを意味する。
【0134】
本明細書に記載の主題の実施態様は、バックエンドコンポーネントを例えば、データサーバとして含む、またはミドルウェアコンポーネント、例えば、アプリケーションサーバを含む、またはフロントエンドコンポーネント、例えば、ユーザが本明細書に記載の主題の一実施態様と対話することができるグラフィカルユーザインタフェース、ウェブブラウザ、もしくはアプリを有するクライアントコンピュータ、あるいは1つまたは複数のそのようなバックエンドコンポーネント、ミドルウェアコンポーネント、またはフロントエンドコンポーネントの任意の組み合わせを含むコンピューティングシステムに実装することができる。システムのコンポーネントは、デジタルデータ通信の任意の形式または媒体、例えば、通信ネットワークによって相互接続することができる。通信ネットワークの例としては、ローカルエリアネットワーク(LAN)およびワイドエリアネットワーク(WAN)、例えばインターネットが挙げられる。
【0135】
コンピューティングシステムは、クライアントおよびサーバを含むことができる。クライアントおよびサーバは、一般に互いに離れており、典型的には通信ネットワークを介して対話する。クライアントとサーバとの関係は、それぞれのコンピュータ上で実行され、互いに対してクライアント-サーバ関係を有するコンピュータプログラムによって生じる。いくつかの実施態様では、サーバは、例えば、クライアントとして機能するデバイスと対話するユーザに対してデータを表示し、ユーザからのユーザ入力を受信する目的で、HTMLページなどのデータをユーザデバイスに送信する。ユーザデバイスで生成されたデータ、例えばユーザとの対話の結果は、デバイスからサーバで受信することができる。
【0136】
上記実施形態に加えて、以下の実施形態も革新的である。
実施形態1は、ホストと、複数の機械学習モデルの推論演算を実行するように構成された1つまたは複数のハードウェア処理ユニットとを含むシステムによって実行される方法であって、当該方法は、ホストにおいて、第1の推論出力を生成するために入力を処理する推論演算を含む第1の機械学習モデルを表すデータを受信することと、システムが入力を処理する第1の機械学習モデルの推論演算を実行し、第1の推論出力を生成するための第1の推定持続時間を取得することと、1つまたは複数のハードウェア処理ユニットが複数の機械学習モデルの推論演算の少なくとも一部を実行する反復時間窓の各発生中に、優先機械学習モデルの優先推論演算を実行するために予約された優先期間を特定することと、反復時間窓の各発生の、優先推論演算を実行する優先期間を予約した後に残る第1の残り期間を決定することと、第1の推定持続時間が第1の残り期間よりも長いかどうかを判定することと、第1の推定持続時間が第1の残り期間よりも長いと判定したことに応答して、第1の機械学習モデルを、第1の残り期間以下であるそれぞれの推定持続時間を有する第1のサブモデルグループに分割することとを含み、第1のサブモデルグループの各サブモデルが第1の機械学習モデルの推論演算のそれぞれの部分を含み、当該方法は、1つまたは複数のハードウェア処理ユニットが、反復時間窓の発生の第1の残り期間中に、第1のサブモデルグループのサブモデルの推論演算を実行することとをさらに含む。
【0137】
実施形態2は、第1の推論出力を生成することが、第1のサブモデルグループの各々を1つまたは複数のハードウェア処理ユニットのそれぞれのハードウェア処理ユニットに割り当てる命令をホストで生成することと、命令、および第1の機械学習モデルにアレンジされた第1のサブモデルグループのシーケンスに従って、割り当てられたハードウェア処理ユニットで入力を処理する第1のサブモデルグループのそれぞれの推論演算を実行することとをさらに含む、実施形態1の方法である。
【0138】
実施形態3は、第1のサブモデルグループのそれぞれの推論演算を実行することが、対応するハードウェア処理ユニットに各々が割り当てられた第1のサブモデルグループのそれぞれの推論演算を実行し、第1の推論出力を生成するように、ホストが1つまたは複数のハードウェア処理ユニットをスケジューリングすることをさらに含む、実施形態2の方法である。
【0139】
実施形態4は、ホストのコンパイラが、第1のサブモデルグループをコンパイルし、1つまたは複数のハードウェア処理ユニットにコンパイルされたサブモデルの各々をデプロイすることをさらに含む、実施形態1~3のいずれか1つに記載の方法である。
【0140】
実施形態5は、第1の機械学習モデルを表すデータを受信することが、複数の機械学習モデルを表すデータを受信することをさらに含み、複数の機械学習モデルの各々は、それぞれのタスクを実行するように構成され、入力を処理するシステムによって実行されるそれぞれの推論演算を含み、第1の機械学習モデルを表すデータを受信することは、それぞれのタスクの特性に基づいて、複数の機械学習モデルの各々のそれぞれの優先レベルを測定することと、それぞれの優先レベルに基づいて、複数の機械学習モデルから1つの機械学習モデルを第1の機械学習モデルとして選択することとをさらに含む、実施形態1~4のいずれか1つに記載の方法である。
【0141】
実施形態6は、第2の機械学習モデルを表すデータを受信することと、システムが入力を処理する第2の機械学習モデルの推論演算を実行し、第2の推論出力を生成するための第2の推定持続時間を取得することと、(i)優先推論演算を実行する優先期間、および(ii)反復時間窓の各発生の、第1の機械学習モデルのサブモデルの推論演算を実行するための少なくともそれぞれの推定持続時間を予約した後に残る第2の残り期間を決定することと、第2の推定持続時間が第2の残り期間よりも長いかどうかを判定することと、第2の推定持続時間が第2の残り期間よりも長いと判定したことに応答して、第2の機械学習モデルを、第2の残り期間以下であるそれぞれの推定持続時間を有する第2のサブモデルグループに分割することとをさらに含み、第2のサブモデルグループの各サブモデルは、第2の機械学習モデルの推論演算のそれぞれの部分を含み、当該方法は、1つまたは複数の処理ユニットが、反復時間窓の発生の第2の残り期間中に、第2のサブモデルグループのサブモデルの推論演算を実行することとをさらに含む、実施形態1~5のいずれか1つに記載の方法である。
【0142】
実施形態7は、入力が、センサによってキャプチャされた複数の画像フレームの画像フレームを含み、反復時間窓の各発生は、複数の画像フレームの画像フレームに対応し、それぞれのタスクは、背景検出、焦点検出、オブジェクト検出、または人間の顔認識のうちの少なくとも1つを含み、それぞれのタスクの特性は、それぞれのタスクの依存関係、およびシステム内の1つまたは複数の処理ユニットによってそれぞれのタスクを実行するためのそれぞれの推定持続時間を少なくとも含む、実施形態5または6に記載の方法である。
【0143】
実施形態8は、システムが、入力のシーケンスを処理するために1つまたは複数の機械学習モデルの推論演算を実行するように構成され、入力のシーケンスの各々は、特定の頻度である順序に従ってホストで受信され、反復時間窓の期間は、特定の頻度に基づいて決定される、実施形態1~7のいずれか1つに記載の方法である。
【0144】
実施形態9は、第1の機械学習モデルが、あるシーケンスで配置された複数のネットワーク層を含むニューラルネットワークを含み、第1の推定持続時間を取得することは、ネットワーク層の各層について、入力を処理するために層で指定されたそれぞれの層演算をシステムが実行するための、それぞれの推定層持続時間を決定することと、全ネットワーク層のそれぞれの推定層持続時間を集約し、第1の推定持続時間を取得することとを含む、実施形態1~7のいずれか1つに記載の方法である。
【0145】
実施形態10は、複数の反復時間窓のうちの第1の反復時間窓の第1の残り期間中に、シーケンスに従って第1のサブモデルグループの第1のサブモデルに関連する推論演算を実行することと、複数の反復時間窓のうちの第2の反復時間窓の第1の残り期間中に、シーケンスに従って第1のサブモデルグループのうちの、第1のサブモデルに後続する第2のサブモデルに関連する推論演算を実行することとをさらに含む、実施形態2または3に記載の方法である。
【0146】
実施形態11は、ニューラルネットワークを含む第1の機械学習モデルを分割することが、ニューラルネットワークを、各々がシーケンスに従って配置されたそれぞれの数のネットワーク層を含む第1のサブモデルグループに分割することと、サブモデルに先行する別のサブモデルから生成された中間出力がそれぞれの充填層によって入力としてサブモデルに提供されるように、第1のサブモデルグループのうちの、第1のサブモデルを除く各サブモデルのそれぞれの充填層を決定することとをさらに含み、それぞれの充填層は、各々が第1のサブモデルグループの対応するサブモデルに含まれるネットワーク層の最初の層である、実施形態1~7および9のいずれか1つに記載の方法である。
【0147】
実施形態12は、入力が、ある順序に従ってホストで受信される第1の入力および第2の入力を含む入力のシーケンスを構成し、推論出力を生成することは、第1の入力を処理するために、シーケンスに従って第1のサブモデルに関連する推論演算を実行し、第1の中間出力を生成することと、シーケンスに従って、第2のサブモデルの充填層を介して、第1のサブモデルに後続する第2のサブモデルに第1の中間出力を第1の中間入力として提供することと、第2の入力を処理するために、シーケンスに従って第1のサブモデルに関連する推論演算を実行し、第2の中間出力を生成する一方で、第1の中間入力を処理するために第2のサブモデルに関連する推論演算を実行することとをさらに含む、実施形態1~11のいずれか1つに記載の方法である。
【0148】
実施形態13は、第1の推論出力を生成することが、入力を処理する第1のサブモデルグループのうちのあるサブモデルによって生成された中間出力をシステムのメモリユニットに格納することと、シーケンスに従ってサブモデルに後続する別のサブモデルの中間入力として、システムのメモリユニットから中間出力を取り出すこととをさらに含む、実施形態2、3および10のいずれか1つに記載の方法である。
【0149】
実施形態14は、1つまたは複数のコンピュータと、1つまたは複数のコンピュータによって実行されると、1つまたは複数のコンピュータに実施形態1~13のいずれか1つに記載の方法を実行させるように動作可能な命令を格納している1つまたは複数の記憶装置とを含むシステムである。
【0150】
実施形態15は、データ処理装置によって実行されると、データ処理装置に実施形態1~13のいずれか1つに記載の方法を実行させるように動作可能な命令を含むコンピュータプログラムを用いてエンコードされているコンピュータ記憶媒体である。
【0151】
本明細書は多くの具体的な実施態様の詳細を含むが、これらは、特許請求されている、または特許請求され得るものの範囲に対する制限として解釈されるべきではなく、むしろ、特定の発明の特定の実施態様に特有であり得る特徴の説明として解釈されるべきである。個別の実施態様の文脈で本明細書に記載されている特定の特徴は、単一の実施態様で組み合わせて実装することもできる。逆に、単一の実施態様の文脈で記載される種々の特徴は、複数の実施態様で別々に、または任意の適切な下位組み合わせで実施することもできる。さらに、特徴は特定の組み合わせで機能するものとして上述され、最初はそのように特許請求されることさえあるが、特許請求された組み合わせからの1つまたは複数の特徴は、場合によってはそれらの組み合わせから除外され、クレームは下位組み合わせまたは下位組み合わせのバリエーションに関するものであってよい。
【0152】
同様に、演算は、特定の順序で図面に描かれ、特許請求の範囲に記載されているが、これは、望ましい結果を得るために、そのような演算が、示された特定の順序、もしくは連続した順序で実行されること、または図示されたすべての演算が実行されることを要求するものとして理解されるべきではない。とある状況では、マルチタスクおよび並列処理が有利であり得る。さらに、上記実施態様における様々なシステムモジュールおよびコンポーネントの分離は、すべての実施態様においてそのような分離が必要であると理解されるべきではなく、記載されたプログラムコンポーネントおよびシステムは、一般に、単一のソフトウェア製品において一緒に統合され得るか、または複数のソフトウェア製品にパッケージ化され得ることが理解されるべきである。
【0153】
主題の特定の実施態様が記載されている。他の実施態様も以下の特許請求の範囲内である。例えば、特許請求の範囲に列挙される動作は、異なる順序で実行され、依然として望ましい結果を得ることができる。一例として添付図面に記載のプロセスは、望ましい結果を得るために、必ずしも示された特定の順序、または連続した順序を必要としない。場合によっては、マルチタスクおよび並列処理が有利であり得る。
【手続補正書】
【提出日】2024-04-17
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
ホストと、複数の機械学習モデルの推論演算を実行するように構成された1つまたは複数のハードウェア処理ユニットとを含むシステムによって実行される方法であって、
前記ホストにおいて、第1の推論出力を生成するために入力を処理する推論演算を含む第1の機械学習モデルを表すデータを受信することと、
前記システムが前記入力を処理するための前記第1の機械学習モデルの前記推論演算を実行し、前記第1の推論出力を生成するための第1の推定持続時間を取得することと、
前記1つまたは複数のハードウェア処理ユニットが前記複数の機械学習モデルの前記推論演算の少なくとも一部を実行する反復時間窓の各発生中に、優先機械学習モデルの優先推論演算を実行するために予約された優先期間を特定することと、
前記反復時間窓の各発生の、前記優先推論演算を実行する前記優先期間を予約した後に残る第1の残り期間を決定することと、
前記第1の推定持続時間が前記第1の残り期間よりも長いかどうかを判定することと、
前記第1の推定持続時間が前記第1の残り期間よりも長いと判定したことに応答して、前記第1の機械学習モデルを、前記第1の残り期間以下であるそれぞれの推定持続時間を有する第1のサブモデルグループに分割することとを含み、前記第1のサブモデルグループの各サブモデルは、前記第1の機械学習モデルの前記推論演算のそれぞれの部分を含み、前記方法はさらに、
前記1つまたは複数のハードウェア処理ユニットが、前記反復時間窓の発生の前記第1の残り期間中に、前記第1のサブモデルグループのサブモデルの推論演算を実行することを含む方法。
【請求項2】
前記第1の推論出力を生成することは、
前記第1のサブモデルグループの各々を前記1つまたは複数のハードウェア処理ユニットのそれぞれのハードウェア処理ユニットに割り当てる命令を前記ホストで生成することと、
前記命令、および前記第1の機械学習モデルにアレンジされた前記第1のサブモデルグループのシーケンスに従って、前記割り当てられたハードウェア処理ユニットで前記入力を処理するための前記第1のサブモデルグループのそれぞれの推論演算を実行することと
をさらに含む、請求項1に記載の方法。
【請求項3】
前記第1のサブモデルグループのそれぞれの前記推論演算を実行することは、
対応するハードウェア処理ユニットに各々が割り当てられた前記第1のサブモデルグループのそれぞれの前記推論演算を実行し、前記第1の推論出力を生成するように、前記ホストが前記1つまたは複数のハードウェア処理ユニットをスケジューリングすることをさらに含む、請求項2に記載の方法。
【請求項4】
前記ホストのコンパイラが、前記第1のサブモデルグループをコンパイルし、前記1つまたは複数のハードウェア処理ユニットにコンパイルされた前記サブモデルの各々をデプロイすることをさらに含む、請求項1
~3のいずれか1項に記載の方法。
【請求項5】
前記第1の機械学習モデルを表すデータを受信することは、
複数の機械学習モデルを表すデータを受信することをさらに含み、前記複数の機械学習モデルの各々は、それぞれのタスクを実行するように構成され、前記入力を処理するための前記システムによって実行されるそれぞれの推論演算を含み、前記第1の機械学習モデルを表すデータを受信することは、
それぞれの前記タスクの特性に基づいて、前記複数の機械学習モデルの各々のそれぞれの優先レベルを測定することと、
それぞれの前記優先レベルに基づいて、前記複数の機械学習モデルから1つの機械学習モデルを前記第1の機械学習モデルとして選択することと
をさらに含む、請求項1
~4のいずれか1項に記載の方法。
【請求項6】
第2の機械学習モデルを表すデータを受信することと、
前記システムが前記入力を処理するための前記第2の機械学習モデルの前記推論演算を実行し、第2の推論出力を生成するための第2の推定持続時間を取得することと、
(i)前記優先推論演算を実行する前記優先期間、および(ii)前記反復時間窓の各発生の、前記第1の機械学習モデルのサブモデルの推論演算を実行するための少なくともそれぞれの推定持続時間を予約した後に残る第2の残り期間を決定することと、
前記第2の推定持続時間が前記第2の残り期間よりも長いかどうかを判定することと、
前記第2の推定持続時間が前記第2の残り期間よりも長いと判定したことに応答して、前記第2の機械学習モデルを、前記第2の残り期間以下であるそれぞれの推定持続時間を有する第2のサブモデルグループに分割することとをさらに含み、前記第2のサブモデルグループの各サブモデルは、前記第2の機械学習モデルの前記推論演算のそれぞれの部分を含み、前記方法は、
前記1つまたは複数の
ハードウェア処理ユニットが、前記反復時間窓の発生の前記第2の残り期間中に、前記第2のサブモデルグループのサブモデルの推論演算を実行することと
をさらに含む、請求項1
~5のいずれか1項に記載の方法。
【請求項7】
前記入力は、センサによってキャプチャされた複数の画像フレームの画像フレームを含み、
前記反復時間窓の各発生は、前記複数の画像フレームの前記画像フレームに対応し、
それぞれの前記タスクは、背景検出、焦点検出、オブジェクト検出、または人間の顔認識のうちの少なくとも1つを含み、
それぞれの前記タスクの特性は、それぞれの前記タスクの依存関係、および前記システム内の前記1つまたは複数の
ハードウェア処理ユニットによってそれぞれの前記タスクを実行するためのそれぞれの推定持続時間を少なくとも含む、請求項5に記載の方法。
【請求項8】
前記システムは、入力のシーケンスを処理するために1つまたは複数の機械学習モデルの推論演算を実行するように構成され、前記入力のシーケンスの各々は、特定の頻度である順序に従って前記ホストで受信され、前記反復時間窓の期間は、前記特定の頻度に基づいて決定される、請求項1
~7のいずれか1項に記載の方法。
【請求項9】
前記第1の機械学習モデルは、あるシーケンスで配置された複数のネットワーク層を含むニューラルネットワークを含み、前記第1の推定持続時間を取得することは、
前記ネットワーク層の各層について、前記入力を処理するために前記層で指定されたそれぞれの層演算を前記システムが実行するための、それぞれの推定層持続時間を決定することと、
全ネットワーク層のそれぞれの前記推定層持続時間を集約し、前記第1の推定持続時間を取得することと
を含む、請求項1
~8のいずれか1項に記載の方法。
【請求項10】
複数の反復時間窓の第1の反復時間窓の前記第1の残り期間中に、前記シーケンスに従って前記第1のサブモデルグループの第1のサブモデルに関連する推論演算を実行することと、
前記複数の反復時間窓のうちの第2の反復時間窓の前記第1の残り期間中に、前記シーケンスに従って前記第1のサブモデルグループのうちの、前記第1のサブモデルに後続する第2のサブモデルに関連する推論演算を実行することと
をさらに含む、請求項
9に記載の方法。
【請求項11】
前記ニューラルネットワークを含む前記第1の機械学習モデルを分割することは、
前記ニューラルネットワークを、各々が前記シーケンスに従って配置されたそれぞれの数のネットワーク層を含む前記第1のサブモデルグループに分割することと、
前記サブモデルに先行する別のサブモデルから生成された中間出力がそれぞれの充填層によって入力として前記サブモデルに提供されるように、前記第1のサブモデルグループのうちの、前記第1のサブモデルを除く各サブモデルのそれぞれの前記充填層を決定することと
をさらに含み、
それぞれの前記充填層は、各々が前記第1のサブモデルグループの対応するサブモデルに含まれるネットワーク層の最初の層である、請求項
10に記載の方法。
【請求項12】
前記入力は、ある順序に従って前記ホストで受信される第1の入力および第2の入力を含む入力のシーケンスを構成し、前記
第1の推論出力を生成することは、
前記第1の入力を処理するために、前記シーケンスに従って第1のサブモデルに関連する推論演算を実行し、第1の中間出力を生成することと、
前記シーケンスに従って、第2のサブモデルの充填層を介して、前記第1のサブモデルに後続する前記第2のサブモデルに前記第1の中間出力を第1の中間入力として提供することと、
前記第2の入力を処理するために、前記シーケンスに従って前記第1のサブモデルに関連する推論演算を実行し、第2の中間出力を生成する一方で、前記第1の中間入力を処理するために前記第2のサブモデルに関連する推論演算を実行することと
をさらに含む、請求項1
~9のいずれか1項に記載の方法。
【請求項13】
前記第1の推論出力を生成することは、
前記入力を処理するための前記第1のサブモデルグループのうちのあるサブモデルによって生成された中間出力を前記システムのメモリユニットに格納することと、
前記シーケンスに従って前記サブモデルに後続する別のサブモデルの中間入力として、前記システムの前記メモリユニットから前記中間出力を取り出すことと
をさらに含む、請求項2
または3に記載の方法。
【請求項14】
1つまたは複数のコンピュータと、
前記1つまたは複数のコンピュータによって実行されると、前記1つまたは複数のコンピュータにそれぞれの演算を実行させる命令を格納している1つまたは複数の記憶装置とを含むシステムであって、前記システムは、ホストと、複数の機械学習モデルの推論演算を実行するように構成された1つまたは複数のハードウェア処理ユニットとをさらに備え、前記演算は、
前記ホストにおいて、第1の推論出力を生成するために入力を処理する推論演算を含む第1の機械学習モデルを表すデータを受信することと、
前記システムが前記入力を処理するための前記第1の機械学習モデルの前記推論演算を実行し、前記第1の推論出力を生成するための第1の推定持続時間を取得することと、
前記1つまたは複数のハードウェア処理ユニットが前記複数の機械学習モデルの前記推論演算の少なくとも一部を実行する反復時間窓の各発生中に、優先機械学習モデルの優先推論演算を実行するために予約された優先期間を特定することと、
前記反復時間窓の各発生の、前記優先推論演算を実行する前記優先期間を予約した後に残る第1の残り期間を決定することと、
前記第1の推定持続時間が前記第1の残り期間よりも長いかどうかを判定することと、
前記第1の推定持続時間が前記第1の残り期間よりも長いと判定したことに応答して、前記第1の機械学習モデルを、前記第1の残り期間以下であるそれぞれの推定持続時間を有する第1のサブモデルグループに分割することとを含み、前記第1のサブモデルグループの各サブモデルは、前記第1の機械学習モデルの前記推論演算のそれぞれの部分を含み、前記演算はさらに、
前記1つまたは複数のハードウェア処理ユニットが、前記反復時間窓の発生の前記第1の残り期間中に、前記第1のサブモデルグループのサブモデルの推論演算を実行することを含む、システム。
【請求項15】
前記第1の機械学習モデルを表すデータを受信することは、
複数の機械学習モデルを表すデータを受信することをさらに含み、前記複数の機械学習モデルの各々は、それぞれのタスクを実行するように構成され、前記入力を処理するための前記システムによって実行されるそれぞれの推論演算を含み、前記第1の機械学習モデルを表すデータを受信することは、
それぞれの前記タスクの特性に基づいて、前記複数の機械学習モデルの各々のそれぞれの優先レベルを測定することと、
それぞれの前記優先レベルに基づいて、前記複数の機械学習モデルから1つの機械学習モデルを前記第1の機械学習モデルとして選択することと
をさらに含む、請求項14に記載のシステム。
【請求項16】
第2の機械学習モデルを表すデータを受信することと、
前記システムが前記入力を処理するための前記第2の機械学習モデルの前記推論演算を実行し、第2の推論出力を生成するための第2の推定持続時間を取得することと、
(i)前記優先推論演算を実行する前記優先期間、および(ii)前記反復時間窓の各発生の、前記第1の機械学習モデルのサブモデルの推論演算を実行するための少なくともそれぞれの推定持続時間を予約した後に残る第2の残り期間を決定することと、
前記第2の推定持続時間が前記第2の残り期間よりも長いかどうかを判定することと、
前記第2の推定持続時間が前記第2の残り期間よりも長いと判定したことに応答して、前記第2の機械学習モデルを、前記第2の残り期間以下であるそれぞれの推定持続時間を有する第2のサブモデルグループに分割することとをさらに含み、前記第2のサブモデルグループの各サブモデルは、前記第2の機械学習モデルの前記推論演算のそれぞれの部分を含み、前記演算は、
前記1つまたは複数の
ハードウェア処理ユニットが、前記反復時間窓の発生の前記第2の残り期間中に、前記第2のサブモデルグループのサブモデルの推論演算を実行することと
をさらに含む、請求項14
または15に記載のシステム。
【請求項17】
前記入力は、センサによってキャプチャされた複数の画像フレームの画像フレームを含み、
前記反復時間窓の各発生は、前記複数の画像フレームの前記画像フレームに対応し、
それぞれの前記タスクは、背景検出、焦点検出、オブジェクト検出、または人間の顔認識のうちの少なくとも1つを含み、
それぞれの前記タスクの特性は、それぞれの前記タスクの依存関係、および前記システム内の前記1つまたは複数の
ハードウェア処理ユニットによってそれぞれの前記タスクを実行するためのそれぞれの推定持続時間を少なくとも含む、請求項15に記載のシステム。
【請求項18】
1つまたは複数のコンピュータによって実行されると、前記1つまたは複数のコンピュータに、
請求項1~13のいずれか1項に記載の方法を実行させる1つまたは複数のコンピュータ
プログラム。
【手続補正2】
【補正対象書類名】明細書
【補正対象項目名】0021
【補正方法】変更
【補正の内容】
【0021】
本明細書に記載の技術は、上記の課題を解決することを目指している。特に、推論入力のフレームの処理に時間窓の制約が与えられた場合、本明細書に記載の技術は、複数の機械学習モデルの優先レベルを決定し、優先レベルに従って、入力のフレームを処理する機械学習モデルの推論演算を実行することができる。他の例では、各反復時間窓に、入力を処理するために使用される、1つまたは複数の特定された優先度の高い機械学習モデルがあってもよい。本文書に記載の技術は、1つまたは複数の優先度の高い機械学習モデルが各時間窓の間に確実に処理されるように推論演算を実行することができる。さらに、記載された技術は、各サブモデルの演算を実行するための推定持続時間が、反復時間窓の残り期間を満たすように、より優先度の低い(例えば、各時間窓でモデルを使用する必要がないことを示す優先度)機械学習モデル(例えば、大規模機械学習モデル)を複数のサブモデルに分割することができる。システムは、異なる処理ユニット上で(例えば、並列に)、および/または複数の時間窓にわたって、複数の機械学習モデルおよびサブモデルで指定された推論演算を実行するように配置およびスケジューリングするように構成されたランタイムコントローラをさらに含むことができる。
【手続補正3】
【補正対象書類名】明細書
【補正対象項目名】0041
【補正方法】変更
【補正の内容】
【0041】
各処理ユニット110は、他のデバイスから独立して演算を実行するためのハードウェアリソースを含むことができる。例えば、各処理ユニットは、1つまたは複数のプロセッサ、コンピュートタイル、コアなどを含むことができる。処理ユニット110は、GPUおよびCPU、ならびにニューラルネットワークをトレーニングする際に使用されるとある演算、例えば行列の乗算を効率的に実行するための専用ハードウェアリソースを含むことができる。専用ハードウェアリソースの例としては、テンソル処理装置(「TPU」)、フィールドプログラマブルゲートアレイ(「FPGA」)、および特定用途向け集積回路(「ASIC」)が挙げられる。
【手続補正4】
【補正対象書類名】明細書
【補正対象項目名】0048
【補正方法】変更
【補正の内容】
【0048】
システム100は、各々が特定の推論タスクを実行するように指定された複数の機械学習モデルを含むことができる。例えば、システム100が、1つまたは複数のオブジェクトを含むシーンの画像またはビデオ(画像の時間シーケンス)を撮影するように構成されたカメラシステムによって使用される。システム100は、異なるタスクのために複数の機械学習モデルを含むことができ、タスクを完了するために、特定の頻度(例えば、50ミリ秒ごとに1つの画像)で受信された画像の各フレームを処理するために、機械学習モデルの各々の推論演算を実行することができる。例えば、タスクとしては、画像のフレームの焦点位置を自動的に決定すること、画像のフレーム内のオブジェクトを検出すること、画像のフレームにキャプチャされた人間の顔を検出して認識すること、および画像のフレームの深度画像を決定することを挙げることができる。
【手続補正5】
【補正対象書類名】明細書
【補正対象項目名】0057
【補正方法】変更
【補正の内容】
【0057】
非優先機械学習モデルの推論演算を実行するための推定持続時間が残り期間以下であると判定したことに応答して、システム100は、モデルを複数のサブモデルに分割することなく、非優先機械学習モデルの演算を実行するようにスケジューリングすることができる。例えば、
図2のシナリオAによって示されるように、システム100は、推定持続時間230aが残り期間220aより短いと判定する。これに応答して、
図1の分割エンジン155に相当する分割エンジン255は、機械学習モデル245aを分割しない。その代わり、システム100は、機械学習モデルを直接コンパイル(例えば、コンパイルされたモデル270a)し、反復時間窓205a内の優先期間215aの後に、コンパイルされたモデル270aの推論演算を実行することができる。この例では、各優先期間215a~215cは、各反復時間窓205a~205cの最初に発生するものとして示されているが、他の実施態様では、優先期間2
15a~215cは、最後に位置していても、または最初から最後までの間のどこかに位置していてもよい。
【手続補正6】
【補正対象書類名】明細書
【補正対象項目名】0093
【補正方法】変更
【補正の内容】
【0093】
システムは、反復時間窓の各発生の、優先推論演算を実行する優先期間を予約した後に残る残り期間を決定することができる(408)。各反復時間窓は、それぞれの残り期間を含むそれぞれの期間を含むことができる。各残り期間は、時間窓の、システムが1つまたは複数の非優先機械学習モデルの推論演算を実行するために利用可能な少なくとも一部を含むことができる。
【手続補正7】
【補正対象書類名】明細書
【補正対象項目名】0095
【補正方法】変更
【補正の内容】
【0095】
推定持続時間が残り期間よりも長いと判定したことに応答して、システムは、第1の機械学習モデルをサブモデルグループに分割することができる(412)。サブモデルグループの各サブモデルは、第1の機械学習モデルにおいて表される推論演算のそれぞれの部分を含むことができる。システム100は、1つまたは複数の反復時間窓にわたる残り期間内に、サブモデルグループのうちの1つまたは複数に対して推論演算を実行することができる。
【国際調査報告】