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

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

▶ アマゾン テクノロジーズ インコーポレイテッドの特許一覧

特許7024157プロダクション推論のための自動スケーリングホスト型機械学習モデル
<>
  • 特許-プロダクション推論のための自動スケーリングホスト型機械学習モデル 図1
  • 特許-プロダクション推論のための自動スケーリングホスト型機械学習モデル 図2
  • 特許-プロダクション推論のための自動スケーリングホスト型機械学習モデル 図3
  • 特許-プロダクション推論のための自動スケーリングホスト型機械学習モデル 図4
  • 特許-プロダクション推論のための自動スケーリングホスト型機械学習モデル 図5
  • 特許-プロダクション推論のための自動スケーリングホスト型機械学習モデル 図6
  • 特許-プロダクション推論のための自動スケーリングホスト型機械学習モデル 図7
  • 特許-プロダクション推論のための自動スケーリングホスト型機械学習モデル 図8
  • 特許-プロダクション推論のための自動スケーリングホスト型機械学習モデル 図9
  • 特許-プロダクション推論のための自動スケーリングホスト型機械学習モデル 図10
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-02-15
(45)【発行日】2022-02-24
(54)【発明の名称】プロダクション推論のための自動スケーリングホスト型機械学習モデル
(51)【国際特許分類】
   G06F 9/50 20060101AFI20220216BHJP
   G06F 9/455 20060101ALI20220216BHJP
【FI】
G06F9/50 120Z
G06F9/455 150
【請求項の数】 13
(21)【出願番号】P 2020528103
(86)(22)【出願日】2018-11-20
(65)【公表番号】
(43)【公表日】2021-02-15
(86)【国際出願番号】 US2018062041
(87)【国際公開番号】W WO2019104052
(87)【国際公開日】2019-05-31
【審査請求日】2020-06-08
(31)【優先権主張番号】15/822,061
(32)【優先日】2017-11-24
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】506329306
【氏名又は名称】アマゾン テクノロジーズ インコーポレイテッド
(74)【代理人】
【識別番号】110000877
【氏名又は名称】龍華国際特許業務法人
(72)【発明者】
【氏名】ステファニ、ステファノ
(72)【発明者】
【氏名】ロエップキー、スティーブン アンドリュー
(72)【発明者】
【氏名】ファウルヘイバー、ジュニア.、トーマス アルバート
(72)【発明者】
【氏名】ウィリー、クレイグ
(72)【発明者】
【氏名】リバティ、エド
【審査官】三坂 敏夫
(56)【参考文献】
【文献】特表2017-524183(JP,A)
【文献】特開2013-257892(JP,A)
【文献】特開2016-058005(JP,A)
【文献】特開2015-194958(JP,A)
【文献】特開2017-117226(JP,A)
【文献】米国特許出願公開第2016/0323377(US,A1)
【文献】国際公開第2017/168484(WO,A1)
【文献】特開2016-105281(JP,A)
【文献】堀内 康弘 他,本格導入前に習得する AWS基礎演習 第7回 オートスケーリング,日経クラウドファースト 2017年11月号,日経BP社,2017年10月20日,第19号,第36頁-第41頁
【文献】荒木 靖宏 他,Amazon Web Services企業導入ガイドブック,第1版,株式会社マイナビ出版,2016年06月15日,第209頁-第212頁
(58)【調査した分野】(Int.Cl.,DB名)
G06F 9/455- 9/54
(57)【特許請求の範囲】
【請求項1】
機械学習モデルを実装プロバイダネットワークで実行している1つ以上のモデルインスタンスのフリートと関連した1つ以上の動作メトリックのセットをモニタすることと、
前記モニタすることに基づいて、前記フリートと関連したメトリック条件が満たされていると判定することと、
前記メトリック条件が満たされていると前記判定することに応答して、前記フリートにモデルインスタンスを追加すること、または前記フリートから前記モデルインスタンスのうちの1つ以上を削除することと
前記フリートと関連した1つ以上の履歴動作メトリックに基づいてモデルを生成することと、
前記モデルに基づいて、前記機械学習モデルの利用率の予測された増加はある時間以後に発生すると判定することと、
前記時間の前に、前記利用率の前記予測された増加が発生すると前記判定することに応答して1つ以上のウォームプールインスタンスを作成することと
を含む、コンピュータによる実施方法。
【請求項2】
前記メトリック条件が動作特性のセットの1つ以上の動作メトリックに基づいており、前記1つ以上の動作メトリックは、
前記機械学習モデルのために受信される要求の量もしくは一定期間にわたって前記機械学習モデルによって送信される応答の量を示す、入力もしくは出力メトリック、
前記一定期間にわたって前記機械学習モデルのために受信される要求当たりの処理時間の量を示す待ち時間メトリック、
前記一定期間にわたるモデルインスタンスの前記フリートと関連した成功率もしくは失敗率を示す信頼性メトリック、または、
モデルインスタンスの前記フリートの1つ以上によって利用される物理的もしくは仮想的計算リソースの利用率を示す利用率メトリック
のうち少なくとも1つを含む、請求項1に記載のコンピュータによる実施方法。
【請求項3】
前記メトリック条件が前記プロバイダネットワークのユーザによって指定された、請求項1または2に記載のコンピュータによる実施方法。
【請求項4】
前記ユーザの電子デバイスに、前記ユーザに示されるユーザインタフェースのためのデータを送信することであって、前記ユーザインタフェースは1つ以上の動作メトリックの前記セットの複数の値を図示するチャートを含む、前記送信すること
をさらに含む、請求項3に記載のコンピュータによる実施方法。
【請求項5】
前記ユーザインタフェースが経時的にモデルインスタンスの前記フリートのモデルインスタンスの数をさらに示す、請求項4に記載のコンピュータによる実施方法。
【請求項6】
前記1つ以上のウォームプールインスタンスが、前記利用率の前記予測された増加が発生すると前記判定することに応答して作成され、前記フリートに前記1つ以上のウォームプールインスタンスを追加することをさらに含む、請求項1~5のいずれか一項に記載のコンピュータによる実施方法。
【請求項7】
前記フリートにモデルインスタンスを追加することまたは前記フリートから前記モデルインスタンスのうちの1つ以上を削除することが、アプリケーションプログラミングインタフェース(API)要求メッセージを前記プロバイダネットワークのエンドポイントに送信することを含む、請求項1~のいずれか一項に記載のコンピュータによる実施方法。
【請求項8】
1つ以上のモデルインスタンスの前記フリートの少なくとも1つのモデルインスタンスがモデルコードを含むコンテナを含み、前記コンテナは仮想マシン上で実行される、請求項1~のいずれか一項に記載のコンピュータによる実施方法。
【請求項9】
第1の1つ以上の電子デバイスによって実行される1つ以上のモデルインスタンスのフリートと、
第2の1つ以上の電子デバイスによって実装される自動スケーリングシステムであって、前記自動スケーリングシステムは、前記第2の1つ以上の電子デバイスによって実行されると、前記自動スケーリングシステムに、
機械学習モデルを実装プロバイダネットワークで実行している1つ以上のモデルインスタンスのフリートと関連した1つ以上の動作メトリックのセットをモニタし、
前記モニタすることに基づいて、前記フリートと関連したメトリック条件が満たされていると判定し、
前記フリートにモデルインスタンスを追加するかまたは、前記メトリック条件が満たされていると前記判定することに応答して前記モデルインスタンスのうちの1つ以上を前記フリートから削除し、
前記フリートと関連した1つ以上の履歴動作メトリックに基づいてモデルを生成し、
前記モデルに基づいて、前記機械学習モデルの利用率の予測された増加はある時間以後に発生すると判定し、
前記時間の前に、前記利用率の前記予測された増加が発生するとの前記判定に応答して1つ以上のウォームプールインスタンスを作成する
ようにさせる命令を含む、前記自動スケーリングシステムと
を含むシステム。
【請求項10】
前記メトリック条件が動作特性のセットの1つ以上の動作メトリックに基づいており、前記1つ以上の動作メトリックは、
前記機械学習モデルのために受信される要求の量もしくは一定期間にわたって前記機械学習モデルによって送信される応答の量を示す、入力もしくは出力メトリック、
前記一定期間にわたって前記機械学習モデルのために受信される要求当たりの処理時間の量を示す待ち時間メトリック、
前記一定期間にわたるモデルインスタンスの前記フリートと関連した成功率もしくは失敗率を示す信頼性メトリック、または、
モデルインスタンスの前記フリートの1つ以上によって利用される物理的もしくは仮想的計算リソースの利用率を示す利用率メトリック
のうち少なくとも1つを含む、請求項に記載のシステム。
【請求項11】
前記メトリック条件が前記プロバイダネットワークのユーザによって指定された、請求項または10に記載のシステム。
【請求項12】
前記ユーザの電子デバイスに、前記ユーザに示されるユーザインタフェースのためのデータを送信し、前記ユーザインタフェースは1つ以上の動作メトリックの前記セットの複数の値を図示するチャートを含む、
第3の1つ以上の電子デバイスによって実装されるコンソールをさらに含む、請求項11に記載のシステム。
【請求項13】
前記ユーザインタフェースが経時的にモデルインスタンスの前記フリートのモデルインスタンスの数をさらに示す、請求項12に記載のシステム。
【発明の詳細な説明】
【技術分野】
【0001】
関連出願の相互参照
本出願は2017年11月24日に出願の米国非仮出願第15/822,061号の利益を主張し、それは本明細書に参照により援用される。
【背景技術】
【0002】
機械学習の分野は、技術の将来の有望な重要ドライバとして広く認知されている。組織は現在至る所で、機械学習技術を使用して、製品、プロセス、カスタマ体験などの態様を最適化するなどの多種多様な問題に対処しようとしている。機械学習は上位レベルで見ると、例えば、訓練データをコンピュータに提供して、コンピュータが訓練データから自動的に学習して他のデータの予測をすることができるモデルを生成可能にするというように、単純に思われるが、実際に機械学習技術を実現することは途方もなく困難であり得る。
【0003】
この難点は、部分的には、通常当分野の最前線でアカデミックな研究者または個人によって開発される機械学習アルゴリズムの根本的なアルゴリズム的、数学的複雑さによるものである。加えて、有用なモデルを生成して、更新して、配備することもまた困難であり、それは極めて時間及びリソースを消耗し、複雑さに満ちたものであり得る。さらに、機械学習モデルは特定の使用事例及び動作環境に極めて焦点が置かれる傾向があり、したがって、根本的な環境または使用事例に対するいかなる変化も新たなモデルの完全な再生成を必要とし得る。さらに、機械学習技術を造って、展開することは、従来のソフトウェアエンジニアリングと全く異なり、従来のソフトウェアエンジニアリング開発チームが精通しているものと異なる実行法及びアーキテクチャを必要とする。
【0004】
本開示に従った様々な実施形態を、図面を参照して説明する。
【図面の簡単な説明】
【0005】
図1】いくつかの実施形態による、プロダクション推論のための自動スケーリングホスト型機械学習モデルの自動スケーリングシステムを示しているブロック図である。
図2】いくつかの実施形態による、プロダクション推論のための自動スケーリングホスト型機械学習モデルのモデルインスタンスのウォームプールの使用を示しているブロック図である。
図3】いくつかの実施形態による、プロダクション推論のための自動スケーリングホスト型機械学習モデルの一部として利用することができる例示的な動作メトリック値を示している図である。
図4】いくつかの実施形態による、自動スケーリングイベントを表しているメトリック値チャート及びホスティングされた機械学習モデルの自動スケーリングを構成するためのユーザインタフェースを示している図である。
図5】いくつかの実施形態による、プロダクション推論のための自動スケーリングホスト型の機械学習モデルのための予測自動スケーリングポリシーを生成するために用いることができる予測自動スケーリングモデルの視覚表現を示している図である。
図6】いくつかの実施形態による、プロダクション推論のためのホスティングされた機械学習モデルの反応性自動スケーリングのための例示的な動作を示しているフローチャートである。
図7】いくつかの実施形態による、プロダクション推論のためのホスティングされた機械学習モデルの予測自動スケーリングのための例示的な動作を示しているフローチャートである。
図8】いくつかの実施形態による、例示的プロバイダネットワーク環境を示す。
図9】いくつかの実施形態による、ストレージ仮想化サービス及びハードウェア仮想化サービスをカスタマに提供する例示のプロバイダネットワークのブロック図である。
図10】いくつかの実施形態で用いることができる例示のコンピュータシステムを示しているブロック図である。
【発明を実施するための形態】
【0006】
プロダクション推論のための自動スケーリングホスト型機械学習モデルのための方法、装置、システム及び非一時的コンピュータ可読記憶媒体の種々の実施形態が記載される。いくつかの実施形態によれば、機械学習モデルは、性能が影響を受けないように、機械学習モデルをサポートしているインフラストラクチャが需要によって動的に比例するように、ホスト環境において配備することができる。
【0007】
機械学習モデルは、テキストまたは画像を分類することから回帰などを実行することまでの範囲にわたるタスクを実行することができて、連続またはバッチ訓練プロセスを用いて共通に訓練されて、結果としてモデルを得る。モデルは、結果として出力を得るための入力データポイントであることができる関数として見ることができる。例えば、画像データに作用するモデルは、クラス(例えば、画像に顔があるか1つも顔が存在しないかどうか)または値(例えば、画像において検出された人物の識別子)を出力することができる。例えば、テキストに作用するモデルは、類似のタイプの出力、例えば対話の主題、対話のムードなどを出力することができる
【0008】
機械学習モデルを利用するいくつかのシナリオにおいて、ユーザは、ユーザが注釈をつけることを望むデータのセット(またはコーパス)を有することができ、モデルはデータのセットを使用してバッチで実行することができる。したがって、モデル(または関数)をデータのセット全体に適用してデータのセットのための注釈を生成するオペレーティングシステムプロセスが開始されることができ、次にそれをユーザは使用することができる。
【0009】
しかしながら、多くの現代のシナリオ、例えばプロバイダネットワークからのクラウドサービスの利用では、ユーザがまず初めに、データの初期のテストセットを有しないことは非常に一般的になっており、これらのユーザはデータを集計するのを待つのを望まない。その代わりに、特定のデータポイント(例えば、画像、テキスト、オーディオクリップなど)を取得すると、ユーザは要求をライブサービスのエンドポイントに送信することを望むことができ、それは直ちにデータポイントにスコア付け/ラベル付けして、結果を戻す。この方法が主な方法となってきており、したがって、個々のタスクのための「オンデマンド」またはリアルタイム機械学習モデル処理は、モノのインターネット(IoT)システム、スマートスピーカ、画像認識アプリケーション、オンライン広告などを含むがこれに限らない様々な分野で重要になっている。
【0010】
しかしながら、このようなリアルタイム機械学習モデルサービスについては、これらのサービスのためのトラフィックが、極めて「バースト的」で大きな変動を有する傾向がある。例えば、特定モデルに対する要求の数は、しばしば急に、一日または一年のうちのある時間の特定の周期的なイベント、人気が出てきたまたは話題になっているアプリケーションなどのため著しく増減することがあり得て、それは結果として活動の巨大なサージになる場合がある。したがって、通常1分または1時間につき2、3回実行することができるモデルは、1分に数千または数十万回(またはより多く)実行することが急に必要となる可能性がある。
【0011】
したがって、サービスは、過剰供給などのためにリソースを浪費することなく、需要のこのようなサージ及び/または小康状態に適応することが可能なことを必要とするが、浪費は結果として電子リソースの無駄、エネルギーの増加、費用の増加などになるであろう。例えば、モデルが大きなトラフィックスパイクに対応するために大量の計算リソースが確保されることができるかまたは設けられることができる一方で、例えば多くのユーザが眠っているためトラフィックが低い可能性のある朝3時のトラフィックの小康状態の間、同一量の資源を確保し続けることは効率的でない。
【0012】
したがって、本明細書において開示される実施形態は、ホスト型機械学習モデルのための自動スケーリング技術を提供して、非常にバースト性または予測不可能な環境においてさえモデルのスケーラビリティ及び安定性を確保しながら、リソースの過剰供給の無駄を回避する。
【0013】
図1は、いくつかの実施形態による、プロダクション推論のための自動スケーリングホスト型機械学習モデルの自動スケーリングシステム100を示しているブロック図である。図示するように、自動スケーリングシステム106(例えば、プロバイダネットワーク102の1つ以上のコンピューティング装置によって実行されるソフトウェア)は、機械学習モデル120をホスティングするモデルインスタンス118A~118Nのフリート116のリソースを「自動スケール」することができ、モデルの性能を低下させることなく、モデルにかけられた要求とモデル120をホスティングするためのリソースの量を動的に適合させることができる。
【0014】
プロバイダネットワーク102は、例えば、計算リソース(例えば、仮想マシン(VM)インスタンス及び/またはコンテナの実行、バッチジョブの実行、プロビジョニングサーバなしでのコードの実行)、データ/ストレージリソース(例えば、オブジェクトストレージ、ブロックレベルストレージ、データアーカイブストレージ)、ネットワーク関連のリソース(例えば、計算リソース、コンテンツ配信ネットワーク(CDN)、ドメイン名サービス(DNS)のグループを含む仮想ネットワークの構成)、アプリケーションリソース(例えば、データベース、アプリケーションビルド/配備サービス)、機械学習訓練及び/またはホスティングなどの、様々なタイプのコンピュータ関連のリソースの1つ以上を利用する能力を、ユーザに提供する。これら及び他の計算リソースは、計算インスタンスを実行することができるハードウェア仮想化サービス128、データオブジェクトを記憶することができるストレージ仮想化サービス、機械学習モデルを訓練及び/またはホスティングする機械学習サービス103、などのサービスとして提供することができる。プロバイダネットワーク102のユーザ132(または「カスタマ」)は、カスタマアカウントと関係している1つ以上のユーザアカウントを利用することができるが、これらの用語は使用の環境に依存して、ある程度互換的に用いることができる。ユーザは電子デバイス130のクライアント126Aアプリケーションを用いてプロバイダネットワーク102と対話して、例えば、ウェブサイトまたはアプリケーションなどとして実装されるコンソール122を介して、アプリケーションプログラミングインタフェース(API)124呼び出しを用いることにより、1つ以上のインタフェースを経て1つ以上の中間ネットワーク125(例えば、インターネット)全体に通信することができる。インタフェース(複数可)は、より直接的にカスタマに提供されることができるサービスをサポートして対応している「バックエンド」サービスを含むプロバイダネットワーク102の制御プレーンの一部でもよいか、またはそのフロントエンドとして役割を果たしてもよい。
【0015】
これら及び他の計算リソースサービスを提供するために、プロバイダネットワーク102は、仮想化技術を利用することができる。例えば、仮想化技術を用いて、ユーザに計算インスタンス(例えば、基礎をなすホストO/Sの上で作動しても作動しなくてもよいハイパーバイザを用いて作動するゲストオペレーティングシステム(O/S)を用いたVM、VMで作動しても作動しなくてもよいコンテナ、基礎をなすハイパーバイザのない「ベアメタル」ハードウェアで実行することができるインスタンス)を制御するかまたは利用する能力を提供することができ、そこで、1つまたは複数の計算インスタンスは単一の電子デバイスを用いて実施することができる。したがって、ユーザ132は様々なコンピューティングタスク(例えば、クライアント126Bを実行する)を実行するサービスプロバイダシステムによってホスティングされる計算インスタンスを直接利用することができるか、またはサービスプロバイダシステムによって実行されるコードを投入することによって計算インスタンスを間接的に利用することができ、これにより計算インスタンスを利用してコードを(通常は、ユーザは関係する基礎となる計算インスタンスのいかなる制御またはそれについての知識も有することなく)実行する。
【0016】
いくつかの実施形態では、プロバイダネットワーク102は、ユーザが機械学習モデル120を訓練及び/またはホスティングすることを可能とする機械学習サービス103を含む。モデルは、種々の実施形態で様々な方法で実施することができる。1つの例として、モデル120は1つ以上のモデルインスタンス118A~118Nによって実施することができて、そこで、モデルインスタンス118Aはモデル120用のコード/ロジックを含むコンテナを実行する仮想マシンを含むことができる。コンテナはユーザによって作成されていてもまたは作成されていなくてもよく、コードはいかなる数のプログラミング言語で書かれていてもよい。コンテナは、いくつかの実施形態では、ユーザがリソース(例えば、サーバ、ネットワーキング環境)の設定及び/または構成に関わる必要なしに、機械学習サービス103が、モデル120を訓練及び/またはホスティングすることができる、機械学習サービス103の仕様に適合するように作成される。例えば、コンテナは、特定ポート上でそれに出される特定の要求に応じること、特定のデータを特定のファイルシステムまたはネットワーク位置へ書き込むこと、特定のファイルシステムまたはネットワーク位置から特定のタイプのデータを読み込むことなどを必要とする場合がある。しかしながら、他の実施形態では、モデルインスタンス118Aは、コンテナなしでモデル120を実行する仮想マシン、モデル120を実行しているかまたは実施しているソフトウェアアプリケーションまたはモデル120を(例えば、仮想マシン及び/またはコンテナなしで)実行する物理ホストデバイスさえ含むことができる。
【0017】
いくつかの実施形態では、(例えば、モデルホスティングシステム104で)ホスティングされたモデル120は、モデルインスタンス118A~118Nのフリート116を用いてより大きいかより少ない量のトラフィックに適合するためにスケーリングすることができる。したがって、例えば、クライアント126A~126Bは、モデル120に(円『B』の)要求134を(円『A1』及び/または円『A2』で)出すことができ、これらの要求は目にみえて、または、透過的にフリート116のモデルインスタンス118Aによって処理されることができて、したがって、それは呼び出しクライアントへ(円『C』の)応答136を出す。したがって、フリート116がより多くのモデルインスタンス118A~118Nを有するときに、それはリソースに関して均一かまたは不均一であり得るが、フリート116は通常、単一のモデルインスタンス118Aまたはフリート116のサブセットより多くの要求134をある時間にわたって処理することができる。
【0018】
フリート116のモデルインスタンス118A~118Nの数及び/またはタイプは、いくつかの実施形態では、自動スケーリングシステム106によって管理される。自動スケーリングシステム106は、モデルのフリート116を管理して最適性能をモデル120に提供するための様々な技術の1つ以上を使用することができる。
【0019】
例えば、いくつかの実施形態では、自動スケーリングシステム106は、フリートの動作条件と関連した動作メトリック値110をモニタする(または取得する)ことに基づいて自動スケーリング、例えば、自動スケーリングエンジン114によるフリート116からのモデルインスタンスの追加及び/または削除を起動させることができる自動スケーリングモニタ108を含む。自動スケーリングモニタ108はフリートの直接観測/問合せ、ロギングサービスとの対話、フリートからのレポートデータ受信などによってこれらのメトリック値を取得することができる。自動スケーリングホスト型機械学習モデルの一部として利用することができる例示的なメトリック値110は、図3に示される。この図において、様々な動作メトリック値110が示されており、これはモニタすることができて、潜在的に、それを用いて、モデル120について動作しているモデルインスタンス118A~118Nの現在のフリート116が過剰、または過小供給されているかどうか、したがって、フリートの能力を追加すべきか削除すべきかどうかを決定することができる。例えば、モニタされた動作メトリック値110は、入出力メトリック302(例えば、モデル304によって処理されるために到達する要求の数、モデル306から発生する応答の数)、待ち時間メトリック308(例えば、要求当たりの平均処理時間310、要求のための最大処理時間312、要求のための最小処理時間314などの要求処理時間)、信頼性メトリック316(例えば、要求が実際に処理されているかどうか指し示す、故障率318など)、仮想マシン及び/または基礎をなすホストデバイスの利用率メトリック320(例えば、中央演算処理装置(CPU)がどれほどビジーであるかすなわち「CPU利用率」322、グラフィック処理装置(GPU)がどれほどビジーであるかすなわち「GPU利用率」324、現在または最近のメモリ使用状況326など)を含むことができるが、これらに限定するものではない。
【0020】
特に、異なるタイプの動作メトリックは異なるタイプの条件を検出することができ、それは異なる方法で扱うことができる。1つの例として、モデルの異なる適用が、毎回、同じ「重み」を必ずしも有することができるというわけではない。例えば、ビデオセグメンテーションまたは注釈モデルは、第1の要求については、10秒のビデオクリップに作用することができる一方で、第2の要求は30分のビデオクリップを含むことができ、各クリップは非常に異なる方法でモデルによって処理されることができて、異なる量の実行時間または他のリソース(例えば、GPU時間、メモリなど)を必要とし得る。したがって、動作メトリック(例えば待ち時間メトリック308または他のメトリック値)を用いて、実施形態は、潜在的に異なるタイプの要求に基づいて、正しくモデルをスケーリングするためにシステムをモニタすることができる。
【0021】
いくつかの実施形態では、自動スケーリングモニタ108は、これらの動作メトリック値110の1つ以上を取得することができて、それらを分析して、フリートが過剰または、過小供給されているかどうか判定するために、モデル120に対する作業負荷を特徴づけることができる。この結果によって、自動スケーリングモニタ108は、フリートへマシンを追加するべきかそこから削除するべきかどうか決定することができ、自動スケーリングエンジン114に要求(例えば、API要求、関数呼び出しなど)を送信してスケーリングを実行することができる。自動スケーリングエンジン114は、当業者によって周知であるか直ちに導き出せる特定の実装に特化して作られることができる様々な異なるタイプの技術を用いて、スケーリングを実行することができる。
【0022】
いくつかの実施形態では、APIコールは自動スケーリングモニタ108及び/または予測自動スケーリング分析エンジン112(本明細書において後述する)により行うことができ、いくつかの実施形態では、類似のAPIコールは、(例えば、モデルインスタンス118のフリートのサイズを直接管理するために)API124を介してクライアント126A~126により行うことができる。一例として、「機械学習モデル能力更新」などの名称を有するAPIコールを使用することができ、それはモデル及び/またはフリートの一意の識別子、追加されるかまたは削除されるマシンの数などの引数を含むことができる。
【0023】
動作メトリック値110のモニタリング及びフリート116の自動スケーリングを実行するべきかどうかに関する判定は、モデルホスティングシステム104にモデル120を配備したユーザ132によって構成されることができる。例えば、図4に進むと、メトリック値チャート404を提供しているユーザインタフェース402A及びホスティングされた機械学習モデルの自動スケーリングを構成するためのユーザインタフェース402Bが例示されている。これらのユーザインタフェース402A~402Bの一方または両方は、プロバイダネットワーク102のコンソール122によって設けられることができ、それはユーザ132により用いられるウェブアプリケーションまたはO/Sに特有のアプリケーションを駆動するウェブサーバを含むことができる。
【0024】
いくつかの実施形態では、コンソール122は、ユーザが「反応性」自動スケーリングを(例えば、チェックボックス、ボタンなどのユーザインタフェース入力要素を介して)使用可能または使用不可にすることができるユーザインタフェース402Bを提供する。ユーザインタフェース402Bは、ユーザが1つ以上のメトリック条件450を指定することを可能にする機能性を提供することもできる。図示するように、2つのタイプのメトリック条件450が利用され、追加フリートリソースの「スケールアップ」が生じるもの及びフリートリソースの「スケールダウン」が生じるものである。しかしながら、他の実施形態はユーザ設定可能な「スケールアップ」タイプのメトリック条件を単に許容するだけでもよく、その代わりに、自動スケーリングモニタ108が独自に「スケールダウン」の判定を実行してもよい。この逆も、いくつかの実施形態では正しいことであり得て、したがって、ユーザは「スケールダウン」条件を指定することができる一方で、自動スケーリングモニタ108が単独で「スケールアップ」の判定を実行してもよい。
【0025】
図4に示すように、追加リソース(例えば、モデルインスタンス118A~118N)をフリートに追加するユーザの希望を示す2つのメトリック条件が満たされている。第1のメトリック条件は、要求当たりの待ち時間が2つの期間(例えば、各期間が異なる環境において異なって定められてもよい場合で、期間サイズはメトリック収集と収集との間の時間によって定義されてもよい場合)に対する200ミリ秒より長いときに、フリートがスケールアップされるべきであることを示す。第2のメトリック条件は、CPU利用率が90%より大きいとしてこれまでに検出されているときに、フリートがスケールアップされるべきであることを示す。
【0026】
この図示の例において、ユーザインタフェース402Bは、CPU利用率が2連続期間に対して3%未満である場合、1つ以上のモデルインスタンス118A~118Nがフリートから削除されるべきである「スケールダウン」条件も示す。
【0027】
いくつかの実施形態では、メトリック条件450は、満たされている対応するメトリックの1つか複数の条件についてフリートがどれだけスケーリングされるべきであるか(例えば、パーセンテージまたは倍数、固定量など)について示している(図示していない)スケーリングファクタとさらに関連していてもよい。しかしながら、いくつかの実施形態では、自動スケーリングモニタ108は単に一度に1つのモデルインスタンスによってフリートをスケールアップまたはスケールダウンすることができるか、または異なる量だけフリートをスケールアップまたはスケールダウンすることができ、それはいくつかの他の情報またはイベントに基づいて静的に構成することができるかまたは動的であり得る。
【0028】
メトリック条件を組み立てる際、さもなければ、フリートを管理及びモニタする際に支援するために、いくつかの実施形態では、コンソール122は、経時的に最近の動作メトリック値及び/またはフリート内のモデルインスタンス118A~118Nの数を記述しているデータ(例えば、チャート404)を、ユーザインタフェース402Aに提供することができる。示すように、「要求当たりの平均処理時間」動作メトリック値408は、チャート404のドットとして示される。いくつかの実施形態では、複数の種類の動作メトリック値408を一回につき1種類かまたは一度に複数種示すことができ、おそらく他の視覚化タイプまたは表現(例えば、表計算ソフトまたは値リスト)を使用して示すことができる。
【0029】
例示的なチャート404は破線を使用して経時的にフリートのモデルインスタンス118A~118Nの数(すなわち、インスタンスカウント410)も表して、そこで、左側の破線の第1の部分は10個のインスタンスがフリートにあることを示し、それから、右側の破線の第2の部分は20個のインスタンスがフリートにあることを示す。この場合、表されたチャート404は、自動スケーリングイベント406を含む。自動スケーリングイベント406は、要求当たりの平均処理時間が2つの期間の間の200ミリ秒(200ms)より長かったという点で、ユーザインタフェース402Bに示される第1のメトリック条件450に対応し、その結果、モデルインスタンス118A~118Nのフリートは10個のインスタンスから20個のインスタンスまでスケールアップされた。
【0030】
図1に戻ると、電子デバイス130を経たユーザ132は円『1』でコンソール122を利用してモデルインスタンスのフリート用の自動スケーリングを(例えば、1つ以上のユーザインタフェース402A~402Bを用いて)構成することができ、それによってユーザの電子デバイス130に円『2A』で1つ以上のAPIコールを発行させ、これは円『2B』で自動スケーリングシステム106用のユーザの優先度に従って自動スケーリングを構成するメッセージに変換されて、それは円『3』で開始することができる。
【0031】
このようなメトリック条件ベースの機構は、有益に現在の条件に反応して、フリートの動作性能を改善する。しかしながら、このような機構は「反応型」のため、システムは、基本的にいくつかの潜在的に問題となる条件が進展するのを待つことを必要とする場合がある。したがって、フリートがおそらく過小供給であるために、短い時間の間にモデルに対するいくらかの処理遅延/問題が発生し得る可能性がある。多くのアプリケーションが、メトリック条件を慎重に組み立ててフリートのリソースを制御することによって重大な問題を回避することができる一方で、他のアプリケーションでは、このような条件は容易に組み立てることができず、及び/または、いかなる処理遅延も許容できない可能性がある。
【0032】
したがって、いくつかの実施形態は、予測自動スケーリングを代わりに、または追加的に実施することができる。履歴上の傾向で(例えば、予測または機械学習技術を用いて)分析することによって、実施形態は、トラフィック量の急上昇または急激な低下をそれらが発生する前に予測することができて、能力を事前に追加するかまたは削除して来るべきスパイク(または小康状態)に非常により滑らかな移行を提供する。
【0033】
1つの例として、ビデオアプリケーションは1日の夕方の早い時間ごろ大きなトラフィックスパイクを有することがあり得て、それは人々が就寝時刻の前に夜にビデオを見るかまたはビデオアプリケーションを使用することを望むため、一週間または勤務日(例えば、月曜~金曜)の間、毎晩起こり得る。したがって、実施形態は、アプリケーションに対するトラフィックの履歴の記録を分析して、(例えば、午後8時に)繰り返されているトラフィックスパイクを検出して、それに応じて、例えば、予測されたトラフィックスパイクの前に(例えば、午後7時55分に)、追加能力/リソースでフリート(及び/または本明細書において後述するように、ウォームプール)を拡大することによって、反応することができる。
【0034】
この目的で、図1では、自動スケーリングシステム106の予測自動スケーリング分析エンジン(「PAAE」)112は、モデルフリート116の動作メトリック/特性に基づいて予測自動スケーリング(「PA」)モデル113を造ることができて、PAモデル113を使用して、トラフィック/ロードの急上昇及び/または急激な低下を予測することができる。その結果、PAAE112は、自動スケーリングエンジン114にそれに応じてフリートをスケールアップまたはスケールダウンさせることができる。
【0035】
例えば、図5を参照すると、これは、いくつかの実施形態による、プロダクション推論のための自動スケーリングホスト型機械学習モデルのための予測自動スケーリングポリシー510を生成するために用いることができるPAモデル113に組み込むことができる動作メトリック値の視覚表現500を示している図である。PAモデル113は、予測モデルまたは機械学習モデルなどの様々な形態をとることができる。
【0036】
動作メトリックの図示表現500は、一定期間にわたる秒当たりの要求の数を示しているグラフである。このグラフの中で、複数の周期的なバースト505、例えば、毎晩午後6時30分と午後11時15分の終了の間のモデル使用の反復スパイクが存在するものとして例示する。このようなバーストは検出されてモデル113に組み込まれることができ、それは自動スケーリングがどのように実行されるべきかについて制御するために用いることができる。
【0037】
1つの例として、PAモデル113を用いて、周期的なトラフィックバースト505を識別することができ、その結果、自動スケーリングは、予測されたトラフィックバースト505が発生する前に実行してモデルが容易にバーストに適応することができるようにすることができる。したがって、1つの場合では、いくつかの代表的な自動スケーリングアクション510、例えば毎日午後6時15分(これは午後6時30分の予測されたバーストの前の時間515である)にモデルフリートインスタンスカウントを2倍にすること、及び/または毎日午後11時30分(これは午後11時15分の予測されたバーストの終了の後の時間520である)に以前のモデルフリートインスタンスカウントに戻すことを、実行することができる。
【0038】
このような予測技術によって、実施形態は、トラフィックのバーストが到達する前に、フリートの動作を平滑化することができる。しかしながら、それでも予想外のバーストまたは小康状態が発生し得る可能性があり、したがって、いくつかの実施形態は(PAAE112の)予測技術及び(自動スケーリングモニタ108の)反応技術の両方を使用していかなる予想外のバーストまたは小康状態にも反応して、結果としてフリートのための極めて効率的な動作になる。
【0039】
図2に戻ると、実施形態は、ウォームプールを使用してフリートへの追加的モデルインスタンスの追加をさらに容易にすることができる。図2は、いくつかの実施形態による、プロダクション推論のための自動スケーリングホスト型機械学習モデルのインスタンス204A~204Mのウォームプール202の使用を示しているブロック図である。いくつかの実施形態では、予測されたバーストの前にフリート116に追加モデルインスタンスを追加することの代わりに(または、それに加えて)、自動スケーリングエンジン114は、インスタンス204A~204Mのウォームプール202を作成することができる。これは仮想マシンをインスタンス化すること、これらの仮想マシンに適切なソフトウェア(及びおそらくモデル102)をロードすること、仮想マシンのためのアーキテクチャ上のサポート構造(例えば、ネットワーキング)を構成することなどを含むことができ、そのため、これらのウォームプールインスタンス204Aは、可能性がある性能の問題が存在する一方で、これらの「ウォーミング」タスクを高速で実行することを必要とすることとは対照的に、極めて短時間で既存のフリート116に追加されるために利用でき、したがって、フリートがバーストシナリオの間に見舞われ得る面倒なことまたは困難を減らす。
【0040】
したがって、いくつかの実施形態では、PAAE112はバーストを予測することができて、インスタンス204A~204Mのウォームプール202を作成することができ、その後で、自動スケーリングモニタ108がその構成されたメトリック条件を使用して問題を検出すると、それは1つ以上のウォームプールインスタンス204A~204Mを短時間でモデルフリート116の中のアクティブなサービスに移動してバーストについて支援することができる。
【0041】
さらなる詳細のために、図6は、いくつかの実施形態による、プロダクション推論のためのホスティングされた機械学習モデルの反応性自動スケーリングのための例示的な動作600を示しているフローチャートである。動作600(または本明細書において記載されている他のプロセス、または変形物、及び/またはそれらの組み合わせ)の一部もしくは全部は、ハードウェアまたはそれらの組み合わせによって、実行可能命令によって設定される1つ以上のコンピュータシステムのコントロールの下で実行されて、1つ以上のプロセッサに集合的に実行しているコード(例えば、実行可能命令、1つ以上のコンピュータプログラムまたは1つ以上のアプリケーション)として実行される。コードは、例えば、1つ以上のプロセッサによって実行できる命令を含むコンピュータプログラムの形でコンピュータ可読記憶媒体に記憶されている。コンピュータ可読記憶媒体は、非一時的である。いくつかの実施形態では、動作600の1つ以上(またはすべて)は、他の図の自動スケーリングシステム106によって実行される。
【0042】
動作600は、ブロック605で、機械学習モデルをホスティングする1つ以上のモデルインスタンスのフリートと関連した1つ以上の動作メトリック値のセットを取得することを含む。機械学習モデルは、線形回帰、ロジスティック回帰、決定木、サポートベクトルマシン(SVM)、ナイーブベイズ、K近傍法、K平均法、ランダムフォレスト、次元縮退アルゴリズム、勾配ブースティングアルゴリズム、リカレントニューラルネットワーク(RNN)または畳込みニューラルネットワーク(CNN)などのニューラルネットワークなどを含むがこれに限らず、様々なタイプの機械学習アルゴリズムのいずれかに基づくことができる。1つ以上のモデルインスタンスは、ユーザによって作成されるロジックを含むコンテナを含むことができ、コンテナを実行する仮想マシンをさらに含むことができる。モデルインスタンスのフリートは1つ以上のエンドポイントの背後で作動することができ、したがって、APIコールはそれらのエンドポイントへのものであって入力データに対してモデルを実行する(または適用する)ことができ、応答はモデルからの結果を含んでそこに送られてもよい。1つ以上の動作メトリック値は、入出力メトリック、待ち時間メトリック、信頼性メトリック及び/または利用率メトリックのいずれかを含むことができる。
【0043】
動作600はまた、ブロック610で、カスタマ指定のメトリック条件が動作メトリック値のセットに基づいて満たされているかどうかについて判定することを含む。カスタマ(またはユーザ)は、コンソールを用いてメトリック条件を指定することができる。条件は、少なくとも1つの動作メトリックを示すことができて、閾値及び比較演算子(例えば、より大きい、より小さい、等しい)をさらに示すことができる。条件は、ブロック605においてモニタされる現在または最近の動作メトリック値を用いることにより評価することができる。ブロック610は、周期的に(例えば、スケジュール通りに)実行することができるか、または、条件の動作メトリック値が(ブロック605を経て)変化したと検出されるときに実行することができる。
【0044】
動作600は、ブロック615で、モデルインスタンスのフリートに対して能力を追加するか削除することを含む。いくつかの実施形態では、能力を追加することは、ウォームプールからフリートにインスタンスを移動することを含む。いくつかの実施形態では、能力を追加することは、別の1つ以上のモデルインスタンスをインスタンス化すること、例えば、1つ以上のVMを起動すること、VMを構成すること、モデルをVMにプロビジョニングすることなど含む。能力を削除することは、いくつかの実施形態では、1つ以上のモデルインスタンスをシャットダウンすること(または終了させること)を含む。追加されるかまたは削除される能力の量は、カスタマ指定されたメトリック条件の指標に基づいて決定されることができるか、または、静的に構成されたインクリメント量に基づくことなどがあり得る。
【0045】
図7は、いくつかの実施形態による、プロダクション推論のためのホスティングされた機械学習モデルの予測自動スケーリングのための例示的な動作を示しているフローチャートである。いくつかの実施形態では、動作700の1つ以上(またはすべて)は、他の図の自動スケーリングシステム106によって実行される。
【0046】
動作700は、ブロック705で、機械学習モデルをホスティングする1つ以上のモデルインスタンスのフリートと関連した1つ以上の動作メトリック値を取得すること(またはモニタすること)を含む。機械学習モデルは、線形回帰、ロジスティック回帰、決定木、サポートベクトルマシン(SVM)、ナイーブベイズ、K近傍法、K平均法、ランダムフォレスト、次元縮退アルゴリズム、勾配ブースティングアルゴリズム、リカレントニューラルネットワーク(RNN)または畳込みニューラルネットワーク(CNN)などのニューラルネットワークなどを含むがこれに限らず、様々なタイプの機械学習アルゴリズムのいずれかに基づくことができる。1つ以上のモデルインスタンスは、ユーザによって作成されるロジックを含むコンテナを含むことができ、コンテナを実行する仮想マシンをさらに含むことができる。モデルインスタンスのフリートは1つ以上のエンドポイントの背後で作動することができ、したがって、APIコールはそれらのエンドポイントへのものであって入力データに対してモデルを実行する(または適用する)ことができ、応答はモデルからの結果を含んでそこに送られてもよい。1つ以上の動作メトリック値は、入出力メトリック、待ち時間メトリック、信頼性メトリック及び/または利用率メトリックのいずれかを含むことができる。
【0047】
ブロック710で、動作700は、モニタされた動作メトリック値に基づいてモデルを生成することを含む。生成は、モデルインスタンスのフリートと関連した履歴動作メトリックデータのセットに予測または機械学習技術を適用してモデルを生成することを含むことができる。いくつかの実施形態では、モデルは、例えば、現在の動作メトリックデータ(または現在の日付及び/または時間)を履歴動作メトリックデータの検出パターンと比較することによって、トラフィックの急上昇または急激な低下を予測することができる。
【0048】
動作700はまた、ブロック715で、モデルを用いて、機械学習モデルに対する使用の量のバーストは第1の時間に発生すると予測されるということを判定することを含む。判定は、最近または現在の動作メトリックデータをモデルに入力して、結果を分析することを含むことができる。結果は数値であってもよく、それは予想されるトラフィック、処理時間、リソース利用率などのレベルを示すことができ、将来の時間のフリートが関係する。
【0049】
動作700はまた、ブロック720で、第1の時間が発生する前に、モデルインスタンスのフリートに、または、ウォームプールに追加能力を追加することを含む。いくつかの実施形態では、フリートに能力を追加することは、ウォームプールからフリートにインスタンスを移動することを含む。いくつかの実施形態では、能力を追加することは、別の1つ以上のモデルインスタンスをウォームプールに、または、フリートにインスタンス化すること、例えば、1つ以上のVMを起動すること、VMを構成すること、そしておそらくモデルをVMにプロビジョニングすることなど含む。
【0050】
図8は、いくつかの実施形態による、例示的プロバイダネットワーク(または「サービスプロバイダシステム」)環境を示す。プロバイダネットワーク800は、カスタマが、プロバイダネットワークまたは1つ以上のデータセンターのネットワークの中のデバイスに実装される計算及び記憶資源を含むがこれに限らず仮想化されたリソースのインスタンス812を、購入するか、賃借するかまたは、取得することを可能にする1つ以上の仮想化サービス810を経てリソース仮想化をカスタマに提供することができる。ローカルインターネットプロトコル(IP)アドレス816は、リソースインスタンス812と関連付けられてもよく、ローカルIPアドレスは、プロバイダネットワーク800上のリソースインスタンス812の内部ネットワークアドレスである。いくつかの実施形態では、プロバイダネットワーク800はまた、カスタマがプロバイダ800から取得することができるパブリックIPアドレス814及び/またはパブリックIPアドレス範囲(例えば、インターネットプロトコルバージョン4(IPv4)またはインターネットプロトコルバージョン6(IPv6)アドレス)を提供することができる。
【0051】
従来は、プロバイダネットワーク800は、仮想化サービス810を介して、サービスプロバイダのカスタマ(例えば、1つ以上のカスタマデバイス852を含む1つ以上のクライアントネットワーク850A~850Cを操作するカスタマ)が動的に、カスタマに割り当てられるかまたは割り付けられる少なくともいくつかのパブリックIPアドレス814をカスタマに割り当てられる特定リソースインスタンス812と関連付けることを可能にしてもよい。プロバイダネットワーク800はまた、カスタマが(以前、カスタマに割り付けられた1つの仮想化された計算リソースインスタンス812にマップされた)パブリックIPアドレス814を、カスタマにも割り付けられる別の仮想化された計算リソースインスタンス812にリマップすることを可能にしてもよい。仮想化された計算リソースインスタンス812及びサービスプロバイダにより提供されるパブリックIPアドレス814を用いて、カスタマネットワーク(複数可)850A~850Cの運営者などのサービスプロバイダのカスタマは、例えば、カスタマに特有のアプリケーションを実装することができて、インターネットなどの中間ネットワーク840上にカスタマのアプリケーションを提示することができる。それから、中間ネットワーク840上の他のネットワークエンティティ820は、カスタマネットワーク(複数可)850A~850Cによって発行される目的パブリックIPアドレス814にトラフィックを生成することができ、トラフィックは、サービスプロバイダデータセンターに経路指定されて、データセンターでネットワーク基板を経て、現在目的パブリックIPアドレス814にマップされている仮想化された計算リソースインスタンス812のローカルIPアドレス816まで、経路指定される。同様に、仮想化された計算リソースインスタンス812からの応答トラフィックは、ネットワーク基板を経由して中間ネットワーク840へ戻って、ソースエンティティ820に経路指定することができる。
【0052】
本明細書で用いられる場合、ローカルIPアドレスは、例えば、プロバイダネットワークのリソースインスタンスの、内部であるか「私設の」ネットワークアドレスを指す。ローカルIPアドレスは、インターネット技術特別調査委員会(IETF)Request for Comments(RFC)1918によって確保されている、及び/またはIETF RFC4193で指定されたアドレス形式の、アドレスブロックの中にあることができて、プロバイダネットワークの中で変更可能でもよい。プロバイダネットワークの外側から生じているネットワークトラフィックは、ローカルIPアドレスまで直接経路指定はされず、その代わりに、トラフィックは、リソースインスタンスのローカルIPアドレスにマップされたパブリックIPアドレスを使用する。プロバイダネットワークは、ネットワークアドレス変換(NAT)または類似の機能性を提供してパブリックIPアドレスからローカルIPアドレスへの、及びその逆のマッピングを実行するネットワークデバイスまたは機器を含むことができる。
【0053】
パブリックIPアドレスは、サービスプロバイダによって、または、カスタマによってリソースインスタンスに割り当てられる、インターネット変更可能ネットワークアドレスである。パブリックIPアドレスに経路指定されたトラフィックは、例えば1:1のNATを介して変換されて、リソースインスタンスのそれぞれのローカルIPアドレスに転送される。
【0054】
いくつかのパブリックIPアドレスは、プロバイダネットワークインフラによって特定リソースインスタンスに割り当てられることができ、これらのパブリックIPアドレスは、標準パブリックIPアドレスまたは単に標準IPアドレスと呼ばれてもよい。いくつかの実施形態では、リソースインスタンスのローカルIPアドレスに対する標準IPアドレスのマッピングは、すべてのリソースインスタンスタイプに対するデフォルト起動構成である。
【0055】
少なくともいくつかのパブリックIPアドレスは、プロバイダネットワーク800のカスタマに割り付けることができるかまたはカスタマによって取得されることができ、それから、カスタマは、カスタマに割り当てられる特定リソースインスタンスに、それらの割付けパブリックIPアドレスを割り当てることができる。これらのパブリックIPアドレスは、カスタマパブリックIPアドレスまたは単にカスタマIPアドレスと呼ばれてもよい。標準IPアドレスの場合の様にプロバイダネットワーク800によってリソースインスタンスに割り当てられる代わりに、カスタマIPアドレスは、例えばサービスプロバイダにより提供されるAPIを介して、カスタマによってリソースインスタンスに割り当てられてもよい。標準IPアドレスとは異なり、カスタマIPアドレスは、カスタマアカウントに割り付けられて、必要または要求に応じてそれぞれのカスタマによって他のリソースインスタンスにリマップされてもよい。カスタマIPアドレスは特定リソースインスタンスでなくカスタマのアカウントと関連付けられており、カスタマはそのIPアドレスを、カスタマがそれを解放することを選択するまで制御する。従来の静的IPアドレスとは異なり、カスタマIPアドレスは、カスタマがカスタマのパブリックIPアドレスをカスタマのアカウントと関連した任意のリソースインスタンスにリマップすることによってリソースインスタンスまたは可用性ゾーン障害をマスキングすることを可能にする。カスタマIPアドレスは、例えば、カスタマが、カスタマIPアドレスを交換リソースインスタンスに再マッピングすることによって、カスタマのリソースインスタンスまたはソフトウェアに関する問題を避けて技術作業をするのを可能にする。
【0056】
図9は、いくつかの実施形態による、ストレージ仮想化サービス及びハードウェア仮想化サービスをカスタマに提供する例示のプロバイダネットワークのブロック図である。ハードウェア仮想化サービス920は、複数の計算リソース924(例えば、VM)をカスタマに提供する。計算リソース924は、例えば、プロバイダネットワーク900のカスタマに(例えば、カスタマネットワーク950を実装するカスタマに)賃貸またはリースされてもよい。各計算リソース924は、1つ以上のローカルIPアドレスを備えていてもよい。プロバイダネットワーク900は、計算リソース924のローカルIPアドレスからパブリックインターネット行き先まで、及び、パブリックインターネットソースから計算リソース924のローカルIPアドレスまでパケットを経路指定するように構成されてもよい。
【0057】
プロバイダネットワーク900は、例えば、ローカルネットワーク956を介して中間ネットワーク940に連結されたカスタマネットワーク950と、中間ネットワーク940にそしてプロバイダネットワーク900に結合された、ハードウェア仮想化サービス920を経て仮想計算システム992を実装する能力を提供することができる。いくつかの実施形態では、ハードウェア仮想化サービス920は1つ以上のAPI902(例えばウェブサービスインタフェース)を提供することができ、それを介して、カスタマネットワーク950はハードウェア仮想化サービス920によって提供される機能性に、例えばコンソール994(例えば、ウェブベースのアプリケーション、独立型アプリケーション、モバイルアプリケーションなど)を介してアクセスすることができる。いくつかの実施形態では、プロバイダネットワーク900で、カスタマネットワーク950の各仮想計算システム992は、リースされるか、賃貸されるか、または、カスタマネットワーク950に提供される計算リソース924に対応することができる。
【0058】
仮想計算システム992及び/または別のカスタマデバイス990のインスタンスから(例えば、コンソール994を介して)、カスタマは、例えば1つ以上のAPI902によって、ストレージ仮想化サービス910の機能性にアクセスすることができ、プロバイダネットワーク900により提供される仮想データストア916のストレージ資源918A~918Nからのデータにアクセスしそしてそれにデータを記憶する。いくつかの実施形態では、仮想化されたデータストアゲートウェイ(図示せず)は、少なくともいくつかのデータ(例えば頻繁にアクセスされたか重要なデータ)をローカルにキャッシュに登録することができ、またデータの一次記憶(仮想化データストア916)が維持されるように、1つ以上の通信チャネルを介して仮想化されたデータストアサービス910と通信してローカルキャッシュから新規か修正されたデータをアップロードすることができる、カスタマネットワーク950に設けられてもよい。いくつかの実施形態では、ユーザは、仮想計算システム992を介して及び/または別のカスタマデバイス990上に、仮想データストア916ボリュームをマウントしてアクセスすることができ、それはユーザにとってはローカルの仮想化記憶装置998として見える。
【0059】
図9に示されていないが、仮想化サービス(複数可)は、API(複数可)902を介してプロバイダネットワーク900の中のリソースインスタンスからアクセスされることもできる。例えば、カスタマ、機器サービスプロバイダまたは他のエンティティは、API902を介してプロバイダネットワーク900上のそれぞれの仮想ネットワーク内から仮想化サービスにアクセスして、仮想ネットワークの中の、または、別の仮想ネットワークの中の1つ以上のリソースインスタンスの割付けを要求することができる。
【0060】
実例となるシステム
【0061】
いくつかの実施形態では、本明細書において記載されているプロダクション推論のための自動スケーリングホスト型機械学習モデルの技術のすべてまたは一部を実装するシステムは、1つ以上のコンピュータアクセス可能な媒体、例えば図10に図示されるコンピュータシステム1000を含むかまたはそれにアクセスするように構成される汎用コンピュータシステムを含むことができる。図示された実施形態において、コンピュータシステム1000は、入出力(I/O)インタフェース1030を介してシステムメモリ1020に結合された1つ以上のプロセッサ1010を含む。コンピュータシステム1000は、I/Oインタフェース1030に結合されたネットワークインタフェース1040をさらに含む。図10が単一のコンピューティング装置としてコンピュータシステム1000を示す一方で、種々の実施形態では、コンピュータシステム1000は1つのコンピューティング装置または単一のコンピュータシステム1000として連携するように構成される任意の数のコンピューティング装置を含むことができる。
【0062】
種々の実施形態において、コンピュータシステム1000は、1つのプロセッサ1010を含んでいるユニプロセッサシステムまたはいくつか(例えば、2、4、8または別の適切な数)のプロセッサ1010を含んでいるマルチプロセッサシステムでもよい。プロセッサ1010は、命令を実行することができるいかなる適切なプロセッサでもあってもよい。例えば、種々の実施形態で、プロセッサ1010は、様々な命令セットアーキテクチャ(ISA)、例えばx86、ARM、PowerPC、SPARCまたはMIPS ISAまたは他のあらゆる適切なISAのいずれかを実装している汎用または埋込み型プロセッサでもよい。マルチプロセッサシステムで、プロセッサ1010のそれぞれは、一般に、しかし、必然的にでなく、同じISAを実装することができる。
【0063】
システムメモリ1020は、プロセッサ(複数可)1010がアクセス可能な命令及びデータを記憶することができる。種々の実施形態において、システムメモリ1020は、あらゆる適切なメモリ技術、例えばランダムアクセスメモリ(RAM)、スタティックRAM(SRAM)、同期型ダイナミックRAM(SDRAM)、不揮発性/フラッシュタイプメモリまたは任意の他のタイプのメモリを用いて実装することができる。図示された実施形態において、1つ以上の望ましい機能(例えばプロバイダネットワーク環境の仮想ネットワークの大きさを変更するための上述の方法、技術及びデータ)を実装しているプログラム命令及びデータは、示すようにコード1025及びデータ1026としてシステムメモリ1020の中に記憶されている。
【0064】
一実施形態において、I/Oインタフェース1030は、プロセッサ1010、システムメモリ1020と、ネットワークインタフェース1040または他の周辺インタフェースを含む、デバイスのあらゆる周辺デバイスの間の、I/Oのトラフィックを調整するように構成することができる。いくつかの実施形態では、I/Oインタフェース1030は、あらゆる必要なプロトコル、タイミングまたは他のデータ変換を実行して、1つのコンポーネント(例えば、システムメモリ1020)から、別のコンポーネント(例えば、プロセッサ1010)による使用に適しているフォーマットに、データ信号を変換することができる。いくつかの実施形態では、I/Oインタフェース1030は、例えば、Peripheral Component Interconnect(PCI)バス標準またはUniversal Serial Bus(USB)標準の異型などの種々のタイプの周辺バスを通して接続されるデバイスのためのサポートを含むことができる。いくつかの実施形態では、I/Oインタフェース1030の機能は、ノースブリッジ及びサウスブリッジなどの2つ以上の別のコンポーネントに分割されてもよい。また、いくつかの実施形態では、I/Oインタフェース1030の機能性の一部またはすべて、例えばシステムメモリ1020に対するインタフェースは、プロセッサ1010に直接組み込まれていてもよい。
【0065】
ネットワークインタフェース1040は、データが、コンピュータシステム1000と、例えば1つまたは複数のネットワーク1050に接続される図1にて図示したような他のコンピュータシステムまたはデバイスなどの他のデバイス1060との間で交換されることができるように構成されてもよい。種々の実施形態において、ネットワークインタフェース1040は、任意の適切な優先であるか無線の一般のデータネットワーク、例えばイーサネット(登録商標)ネットワークのタイプを介して、通信をサポートすることができる。加えて、ネットワークインタフェース1040は、アナログ音声ネットワークまたはデジタルファイバ通信ネットワークなどの電気通信/電話ネットワークを介して、ファイバチャネルSANなどのストレージエリアネットワーク(SAN)を介して、または、任意の他の適切なタイプのネットワーク及び/またはプロトコルのI/Oを介して通信をサポートすることができる。
【0066】
いくつかの実施形態では、システムメモリ1020は、プロバイダネットワーク環境のカスタマホスト型エンドポイントを提供するための、図1について上記の通りのプログラム命令及びデータを記憶するように構成されている、コンピュータアクセス可能媒体の一実施形態でもよい。しかしながら、他の実施形態では、プログラム命令及び/またはデータは、異なる種類のコンピュータアクセス可能な媒体に受信されるか、送信されるかまたは、記憶されてもよい。一般的に言えば、コンピュータアクセス可能媒体は、非一時的記憶媒体または磁気であるか光学的媒体などのメモリ媒体、例えば、I/Oインタフェース1030を介してコンピュータシステム1000に結合されたディスクまたはDVD/CDを含むことができる。非一時的コンピュータアクセス可能記憶媒体はまた、RAM(例えば、SDRAM、二重データレート(DDR)SDRAM、SRAMなど)、読出し専用メモリ(ROM)などのいかなる揮発性または不揮発性媒体を含むことができ、これはシステムメモリ1020または別のタイプのメモリとしてコンピュータシステム1000のいくつかの実施形態に含まれてもよい。さらに、コンピュータアクセス可能媒体は、ネットワークインタフェース1040を介して実装されることができるような、ネットワーク及び/または無線リンクなどの通信媒体を介して搬送される、伝送媒体または信号、例えば電気的か、電磁的か、デジタルの信号を含むことができる。
【0067】
種々の実施形態は、コンピュータアクセス可能媒体に前述の説明に従って実装される命令及び/またはデータを、受信するか、送信するかまたは記憶することをさらに含むことができる。一般的に言えば、コンピュータアクセス可能媒体は、磁気であるか光学的媒体などの記憶媒体またはメモリ媒体、例えば、ディスクまたはDVD/CD-ROM、そしてRAM(例えば、SDRAM、DDR、RDRAM、SRAMなど)、ROMなどのような揮発性または不揮発性媒体、ならびに、ネットワーク及び/または無線リンクなどの通信媒体を介して搬送される、電気的か、電磁的か、デジタルの信号などの伝送媒体または信号を含むことができる。
【0068】
前述の説明において、種々の実施形態が記載されている。説明を目的として、実施形態の完全な理解を提供するために特定の構成及び詳細が示される。しかしながら、本実施形態が特定の詳細を伴うことなく実施され得ることも当業者に明らかであろう。また、周知の機能は、記述されている実施形態を不明瞭にしないために省略または簡略化し得る。
【0069】
括弧でくくられたテキスト及び破線の境界(例えば、太線ダッシュ、細線ダッシュ、ドットダッシュ及びドット)を伴うブロックは、本明細書においていくつかの実施形態に追加的機能を追加する任意選択の動作を例示するために用いられている。しかしながら、このような表記は、これらが唯一のオプションまたは任意選択動作であるということ、及び/または、実線の境界を有するブロックが特定の実施形態で任意選択でないということを意味すると解釈されるべきではない。
【0070】
添字文字付きの参照番号(例えば、118A~118N、204A~204M)は、種々の実施形態において参照される実体の1つまたは複数の例があり得ることを示すために用いることができ、複数の例があるときに、各々は同一である必要はなくて、その代わりにいくつかの全般的特徴を共有することができるかまたは共通的な方法で作用することができる。さらに、使われる特定の添字は、そうでないことが特に示されない限り、特定の量の実体が存在することを意味する意図ではない。したがって、同じであるか異なる添字文字を使用している2つの実体は、種々の実施形態において同じ数のインスタンスを有していても有していなくてもよい。
【0071】
「一実施形態」、「実施形態」、「例示の実施形態」などの引用は、説明されている実施形態が特定の特徴、構造または特性を含むことができることを示すが、すべての実施形態が特定の特徴、構造または特性を必ずしも含むというわけではない。さらに、このようなフレーズが、必ずしも同じ実施形態を指しているというわけではない。さらに、特定の特徴、構造または特性が実施形態に関連して説明されるとき、明示的に記載されているか否かを問わず、他の実施形態に関連してこのような特徴、構造または特性に影響を及ぼすことが当業者の知識の範囲内であると言える。
【0072】
開示された技術の少なくともいくつかの実施形態は、以下の条項を鑑みて説明することができる:
条項1
機械学習モデルをホスティングするプロバイダネットワークにおける1つ以上のモデルインスタンスのフリートの中のモデルインスタンスの量を自動的にスケーリングする要求を受信することであって、前記要求はメトリック条件を示し、前記メトリック条件は、前記フリートと関連した1つ以上の動作メトリックに基づいており、前記自動スケーリングがいつ発生するかについて示す、前記受信することと、
前記フリートと関連した前記1つ以上の動作メトリックをモニタすることと、
前記メトリック条件が満たされていることを判定することと、
前記メトリック条件が満たされていると前記判定することに応答して前記フリートにモデルインスタンスを追加することと
を含む、コンピュータによる実施方法。
【0073】
条項2
1つ以上の動作メトリックのセットが、
前記機械学習モデルのために受信される要求の量もしくは一定期間にわたって前記機械学習モデルによって送信される応答の量を示す、入力もしくは出力メトリック、
前記一定期間にわたって前記機械学習モデルのために受信される要求当たりの処理時間の量を示す待ち時間メトリック、
前記一定期間にわたるモデルインスタンスの前記フリートと関連した成功率もしくは失敗率を示す信頼性メトリック、または、
モデルインスタンスの前記フリートの1つ以上によって利用される物理的もしくは仮想的計算リソースの利用率を示す利用率メトリック
のうち少なくとも1つを含む、条項1に記載のコンピュータによる実施方法。
【0074】
条項3
前記フリートと関連した1つ以上の履歴動作メトリックに基づいてモデルを生成することと、
前記モデルに基づいて、前記機械学習モデルの利用率の予測された増加がある時間以後に発生すると判定することと、
前記時間の前に、前記フリートに少なくとも1つのモデルインスタンスを追加すること、または、前記利用率の前記予測された増加が発生すると前記判定することに応答して1つ以上のウォームプールインスタンスを作成することと
をさらに含む、条項1~2のいずれか一項に記載のコンピュータによる実施方法。
【0075】
条項4
機械学習モデルを実装するプロバイダネットワークで実行している1つ以上のモデルインスタンスのフリートと関連した1つ以上の動作メトリックのセットをモニタすることと、
前記モニタすることに基づいて、前記フリートと関連したメトリック条件が満たされていると判定することと、
前記メトリック条件が満たされていると前記判定することに応答して、前記フリートにモデルインスタンスを追加すること、または前記フリートからモデルインスタンスの前記フリートの1つを削除することと
を含む、コンピュータによる実施方法。
【0076】
条項5
前記メトリック条件が動作特性のセットの1つ以上の動作メトリックに基づいており、前記1つ以上の動作メトリックは、
前記機械学習モデルのために受信される要求の量もしくは一定期間にわたって前記機械学習モデルによって送信される応答の量を示す、入力もしくは出力メトリック、
前記一定期間にわたって前記機械学習モデルのために受信される要求当たりの処理時間の量を示す待ち時間メトリック、
前記一定期間にわたるモデルインスタンスの前記フリートと関連した成功率もしくは失敗率を示す信頼性メトリック、または、
モデルインスタンスの前記フリートの1つ以上によって利用される物理的もしくは仮想的計算リソースの利用率を示す利用率メトリック
のうち少なくとも1つを含む、条項4に記載のコンピュータによる実施方法。
【0077】
条項6
前記メトリック条件が前記プロバイダネットワークのユーザによって指定された、条項4~5のいずれか一項に記載のコンピュータによる実施方法。
【0078】
条項7
前記ユーザの電子デバイスに、前記ユーザに示されるユーザインタフェースのためのデータを送信することであって、前記ユーザインタフェースは1つ以上の動作メトリックの前記セットの複数の値を図示するチャートを含む、前記送信すること
をさらに含む、条項6に記載のコンピュータによる実施方法。
【0079】
条項8
前記ユーザインタフェースが経時的にモデルインスタンスの前記フリートのモデルインスタンスの数をさらに示す、条項7に記載のコンピュータによる実施方法。
【0080】
条項9
前記フリートと関連した1つ以上の履歴動作メトリックに基づいてモデルを生成することと、
前記モデルに基づいて、前記機械学習モデルの利用率の予測された増加はある時間以後に発生すると判定することと、
前記時間の前に、前記フリートに少なくとも1つのモデルインスタンスを追加すること、または、前記利用率の前記予測された増加が発生すると前記判定することに応答して1つ以上のウォームプールインスタンスを作成することと
をさらに含む、条項4~8のいずれか一項に記載のコンピュータによる実施方法。
【0081】
条項10
前記1つ以上のウォームプールインスタンスが、前記利用率の前記予測された増加が発生すると前記判定することに応答して作成され、前記動作が前記フリートに前記1つ以上のウォームプールインスタンスを追加することをさらに含む、条項9に記載のコンピュータによる実施方法。
【0082】
条項11
前記フリートにモデルインスタンスを追加することまたは前記フリートからモデルインスタンスの前記フリートの1つを削除することが、アプリケーションプログラミングインタフェース(API)要求メッセージを前記プロバイダネットワークのエンドポイントに送信することを含む、条項4~10のいずれか一項に記載のコンピュータによる実施方法。
【0083】
条項12
1つ以上のモデルインスタンスの前記フリートの少なくとも1つのモデルインスタンスがモデルコードを含むコンテナを含み、前記コンテナは仮想マシン上で実行される、条項4~11のいずれか一項に記載のコンピュータによる実施方法。
【0084】
条項13
第1の1つ以上の電子デバイスによって実行される1つ以上のモデルインスタンスのフリートと、
第2の1つ以上の電子デバイスによって実装される自動スケーリングシステムであって、前記自動スケーリングシステムは、前記第2の1つ以上の電子デバイスによって実行されると、前記自動スケーリングシステムに、
機械学習モデルを実装するプロバイダネットワークで実行している1つ以上のモデルインスタンスのフリートと関連した1つ以上の動作メトリックのセットをモニタし、
前記モニタすることに基づいて、前記フリートと関連したメトリック条件が満たされていると判定し、
前記フリートにモデルインスタンスを追加するかまたは、前記メトリック条件が満たされていると前記決定することに応答してモデルインスタンスの前記フリートの1つを前記フリートから削除する
ようにさせる命令を含む、前記自動スケーリングシステムと
を含むシステム。
【0085】
条項14
前記メトリック条件が動作特性のセットの1つ以上の動作メトリックに基づいており、前記1つ以上の動作メトリックは、
前記機械学習モデルのために受信される要求の量もしくは一定期間にわたって前記機械学習モデルによって送信される応答の量を示す、入力もしくは出力メトリック、
前記一定期間にわたって前記機械学習モデルのために受信される要求当たりの処理時間の量を示す待ち時間メトリック、
前記一定期間にわたるモデルインスタンスの前記フリートと関連した成功率もしくは失敗率を示す信頼性メトリック、または、
モデルインスタンスの前記フリートの1つ以上によって利用される物理的もしくは仮想的計算リソースの利用率を示す利用率メトリック
のうち少なくとも1つを含む、条項13に記載のシステム。
【0086】
条項15
前記メトリック条件が前記プロバイダネットワークのユーザによって指定された、条項13~14のいずれか一項に記載のシステム。
【0087】
条項16
前記ユーザの電子デバイスに、前記ユーザに示されるユーザインタフェースのためのデータを送信し、前記ユーザインタフェースは1つ以上の動作メトリックの前記セットの複数の値を図示するチャートを含む、
第3の1つ以上の電子デバイスによって実装されるコンソールをさらに含む、条項15に記載のシステム。
【0088】
条項17
前記ユーザインタフェースが経時的にモデルインスタンスの前記フリートのモデルインスタンスの数をさらに示す、条項16に記載のシステム。
【0089】
条項18
前記命令が、前記第2の1つ以上の電子デバイスによって実行されると、前記自動スケーリングシステムにさらに、
前記フリートと関連した1つ以上の履歴動作メトリックに基づいてモデルを生成し、
前記モデルに基づいて、前記機械学習モデルの利用率の予測された増加はある時間以後に発生すると判定し、
前記時間の前に、前記フリートに少なくとも1つのモデルインスタンスを追加し、または、前記利用率の前記予測された増加が発生するとの前記判定に応答して1つ以上のウォームプールインスタンスを作成する
ようにさせる、条項13~17のいずれか一項に記載のシステム。
【0090】
条項19
前記1つ以上のウォームプールインスタンスが、前記利用率の前記予測された増加が発生すると前記判定することに応答して作成され、前記命令が、前記第2の1つ以上の電子デバイスによって実行されると、前記自動スケーリングシステムにさらに、前記フリートに前記1つ以上のウォームプールインスタンスを追加させる、条項18に記載のシステム。
【0091】
条項20
1つ以上のモデルインスタンスの前記フリートの少なくとも1つのモデルインスタンスがモデルコードを含むコンテナを含み、前記コンテナは仮想マシン上で実行される、条項13~19のいずれか一項に記載のシステム。
【0092】
したがって、明細書及び図面は、限定的な意味ではなく例示的な意味で考えられるべきである。しかしながら、特許請求の範囲に示されるように、本開示のより広い精神及び範囲から逸脱することなく、それらに様々な修正及び変更が行われてもよいことが明白である。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10