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

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

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

特許7364146データベースクエリ処理のための機械学習推論コール
<>
  • 特許-データベースクエリ処理のための機械学習推論コール 図1
  • 特許-データベースクエリ処理のための機械学習推論コール 図2
  • 特許-データベースクエリ処理のための機械学習推論コール 図3
  • 特許-データベースクエリ処理のための機械学習推論コール 図4
  • 特許-データベースクエリ処理のための機械学習推論コール 図5
  • 特許-データベースクエリ処理のための機械学習推論コール 図6
  • 特許-データベースクエリ処理のための機械学習推論コール 図7
  • 特許-データベースクエリ処理のための機械学習推論コール 図8
  • 特許-データベースクエリ処理のための機械学習推論コール 図9
  • 特許-データベースクエリ処理のための機械学習推論コール 図10
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-10-10
(45)【発行日】2023-10-18
(54)【発明の名称】データベースクエリ処理のための機械学習推論コール
(51)【国際特許分類】
   G06F 16/245 20190101AFI20231011BHJP
   G06N 20/00 20190101ALI20231011BHJP
【FI】
G06F16/245
G06N20/00
【請求項の数】 19
(21)【出願番号】P 2022517733
(86)(22)【出願日】2020-09-16
(65)【公表番号】
(43)【公表日】2022-11-24
(86)【国際出願番号】 US2020051072
(87)【国際公開番号】W WO2021055478
(87)【国際公開日】2021-03-25
【審査請求日】2022-04-12
(31)【優先権主張番号】16/578,060
(32)【優先日】2019-09-20
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】506329306
【氏名又は名称】アマゾン テクノロジーズ インコーポレイテッド
(74)【代理人】
【識別番号】110000877
【氏名又は名称】弁理士法人RYUKA国際特許事務所
(72)【発明者】
【氏名】ソン、サンギル
(72)【発明者】
【氏名】ユーン、ヨンシク
(72)【発明者】
【氏名】グプタ、カマル カント
(72)【発明者】
【氏名】クリシュナムルシー、サイレシュワー
(72)【発明者】
【氏名】ステファニ、ステファノ
(72)【発明者】
【氏名】セングプタ、スディプタ
(72)【発明者】
【氏名】ノ、ジェユン
【審査官】原 秀人
(56)【参考文献】
【文献】特表2017-524183(JP,A)
【文献】米国特許出願公開第2004/0015783(US,A1)
【文献】特表2017-505964(JP,A)
【文献】特開2005-258682(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 16/00-16/958
G06N 20/00
(57)【特許請求の範囲】
【請求項1】
1つ以上の電子デバイスによって実装されたデータベースサービスが、機械学習リクエストの第1のバッチを生成するために、一時データ構造を使用してデータベースサービスに格納されたデータにクエリの少なくとも一部分を実行することであって、前記クエリが機械学習サービスを識別する、前記実行することと
前記データベースサービスが、機械学習リクエストの前記第1のバッチに基づいて、かつ、前記機械学習サービスに基づいて、機械学習リクエストの第2のバッチを生成することと
前記データベースサービスが、複数の機械学習応答を取得することであって、前記複数の機械学習応答が、機械学習リクエストの前記第2のバッチを受信することに応答して、機械学習モデルを用いて、前記機械学習サービスによって生成される、前記取得することと、
を含む、方法。
【請求項2】
前記クエリが、構造化照会言語クエリ(SQLクエリ)である、請求項1に記載の方法。
【請求項3】
前記SQLクエリが、前記機械学習サービスへのアプリケーションプログラミングインターフェース(API)コールを用いて前記機械学習サービスを識別する、請求項2に記載の方法。
【請求項4】
前記機械学習サービスが、前記APIを公開し、複数のユーザから受信したリクエストに応答して、前記機械学習モデルを用いて推論を実行する、請求項3に記載の方法。
【請求項5】
前記クエリが、前記機械学習サービスによってホストされた前記機械学習モデルに関連付けられたエンドポイントを用いて前記機械学習サービスを識別する、請求項1~4のいずれか一項に記載の方法。
【請求項6】
機械学習リクエストの前記第2のバッチが、少なくとも1つのネットワークを介して前記機械学習サービスに送信されている、請求項1~5のいずれか一項に記載の方法。
【請求項7】
前記データベースサービスが、前記機械学習モデルのための前記機械学習サービスにリクエストを送信することと、
前記データベースサービスが、前記機械学習サービスから前記機械学習モデルを受信することであって、前記機械学習モデルが、前記機械学習サービスによって、前記データベースサービスのためにコンパイルされている、前記受信することと、をさらに含み、
機械学習リクエストの前記第2のバッチが、前記データベースサービスによってホストされた前記機械学習モデルに送信されている、請求項1~6のいずれか一項に記載の方法。
【請求項8】
前記データベースサービスが、前記データベースサービスの複数のノード内に前記機械学習モデルのコピーを格納することをさらに含み、前記クエリの処理の間に前記データベースサービスの特定のノードによって生成された機械学習リクエストが、前記特定のノードに格納された前記機械学習モデルの前記コピーに送信されている、請求項7に記載の方法。
【請求項9】
前記第2のバッチのサイズが、前記第1のバッチのサイズとは異なっており、前記第2のバッチのサイズが、前記機械学習サービスに関連付けられている、請求項1~8のいずれか一項に記載の方法。
【請求項10】
機械学習リクエストの前記第1のバッチが、複数の異なるユーザから受信した複数のクエリに応答して生成された機械学習リクエストを含む、請求項1~9のいずれか一項に記載の方法。
【請求項11】
前記データベースサービスが、前記第1のバッチを、前記機械学習サービスに送信される複数の第2のバッチに分割することをさらに備える、請求項1~10のいずれか一項に記載の方法。
【請求項12】
前記第2のバッチが前記機械学習サービスにより処理された場合、前記データベースサービスが、前記第2のバッチの処理が完了したことを示すフラグ又はインジケータをシステムの出力バッファに追加することをさらに備える、請求項1~11のいずれか一項に記載の方法。
【請求項13】
第1の1つ以上の電子デバイスによって実装された機械学習サービスと、
第2の1つ以上の電子デバイスによって実装されたデータベースサービスと、を含むシステムであって、前記データベースサービスが、命令を含み、前記命令は、実行されるとデータベースに、
機械学習リクエストの第1のバッチを生成するために、一時データ構造を使用してデータベースサービスに格納されたデータにクエリの少なくとも一部分を実行することであって、前記クエリが前記機械学習サービスを識別する、前記実行することと、
機械学習リクエストの前記第1のバッチに基づいて、かつ、前記機械学習サービスに基づいて、機械学習リクエストの第2のバッチを生成することと、
複数の機械学習応答を取得することであって、前記複数の機械学習応答が、機械学習リクエストの前記第2のバッチを受信することに応答して、機械学習モデルを用いて、前記機械学習サービスによって生成される、前記取得することと、
を行わせる、システム。
【請求項14】
前記クエリが、構造化照会言語クエリ(SQLクエリ)である、請求項13に記載のシステム。
【請求項15】
前記SQLクエリが、前記機械学習サービスへのアプリケーションプログラミングインターフェース(API)コールを用いて前記機械学習サービスを識別する、請求項14に記載のシステム。
【請求項16】
前記機械学習サービスが、前記APIを公開し、複数のユーザから受信したリクエストに応答して前記機械学習モデルを用いた推論を実行する、請求項15に記載のシステム。
【請求項17】
前記クエリが、前記機械学習サービスによってホストされた前記機械学習モデルに関連付けられたエンドポイントを用いて前記機械学習サービスを識別する、請求項13~16のいずれか一項に記載のシステム。
【請求項18】
前記データベースサービスは、前記第1のバッチを、前記機械学習サービスに送信される複数の第2のバッチに分割するように構成されている、請求項13~17のいずれか一項に記載のシステム。
【請求項19】
前記データベースサービスは、前記第2のバッチが前記機械学習サービスにより処理された場合、前記第2のバッチの処理が完了したことを示すフラグ又はインジケータを前記システムの出力バッファに追加するように構成されている、請求項13~18のいずれか一項に記載のシステム。
【発明の詳細な説明】
【背景技術】
【0001】
機械学習の分野は、テクノロジの将来の重要な牽引力になり得るとして広く認識されるようになっている。現在、世界中の組織は、機械学習技術を使用して、製品、プロセス、顧客体験などの側面の最適化などの多種多様な問題に対処することを模索している。機械学習の高レベルのビューはシンプルであると考えられているが、(例えば、トレーニングデータをコンピュータに供給して、コンピュータが、トレーニングデータから自動的に学習して他のデータに対して予測を行うことができるモデルを生成できるようにする)実際に機械学習手法を実装することは、非常に困難になり得る。
【0002】
この困難さは、機械学習アルゴリズムの基礎となるアルゴリズムと数学の複雑性に部分的によるものであり、これらは通常、当分野の最前線にいる学術研究者や個人によって開発されている。さらに時間とリソースを大きく消費し、複雑性で満たされたものであり得る有用なモデルを生成、更新、及び展開することもまた困難である。さらに機械学習モデルは、特定のユースケースと運用環境に極端に焦点を当てる傾向があり、それにより、基盤となる環境やユースケースへのいずれかの変化は、新規モデルの完全な再生成が必要となり得る。さらに機械学習テクノロジの構築と展開は、従来のソフトウェアエンジニアリングとはまったく異なり、従来のソフトウェアエンジニアリング開発チームが精通しているものとは異なるプラクティスとアーキテクチャを必要とする。機械学習技術は組織に多くの恩恵をもたらす一方で、そのような機械学習技術を使用するには、リレーショナルデータベースやその他のデータストアを使用する従来のデータ処理では簡単に使用できない重要な専門知識が必要とされる。
【0003】
本開示による様々な実施形態が、図面を参照して説明される。
【図面の簡単な説明】
【0004】
図1】いくつかの実施形態による、データベースクエリ処理のための機械学習推論コールのための環境を示す図である。
図2】いくつかの実施形態による非同期リクエストハンドラを示す図である。
図3】いくつかの実施形態による、ローカル機械学習モデルを用いるデータベースクエリ処理のための機械学習推論コールのための環境を示す図である。
図4】いくつかの実施形態による、ローカル機械学習モデルを用いるデータベースクエリ処理のための機械学習推論コールのための代替的環境を示す図である。
図5】いくつかの実施形態による、機械学習推論コールのための例示的なユーザインターフェースを示す図である。
図6】いくつかの実施形態による、データベースクエリ処理のための機械学習推論コールを行うための方法の動作を示すフロー図である。
図7】いくつかの実施形態における、機械学習モデルがトレーニングされ、ホスティングされる例示的な動作環境のブロック図である。
図8】いくつかの実施形態による、一例示的なプロバイダネットワーク環境を示す。
図9】いくつかの実施形態による、顧客にストレージサービス及びハードウェア仮想化サービスを提供する一例示的なプロバイダネットワークのブロック図である。
図10】いくつかの実施形態で使用され得る一例示的なコンピュータシステムを示すブロック図である。
【発明を実施するための形態】
【0005】
本開示は、データベースクエリ処理のための機械学習推論コールのための方法、装置、システム、及び非一時的なコンピュータ可読記憶媒体に関する。いくつかの実施形態によれば、機械学習推論コールは、データベースクエリに統合されることができ、ユーザに専門的な機械学習の知識を要求することなく、機械学習技術の使用を可能にする。いくつかの実施形態では、機械学習コールは、アプリケーション、データベースサービス、等に大幅な変更を加えることなく、構造化照会言語(SQL)クエリなどのデータベースクエリ、または、構造化データの処理に使用される他の一般的なクエリ言語に統合され得る。
【0006】
図1は、いくつかの実施形態による、データベースクエリ処理のための機械学習推論コールの環境を示す図である。図1に示されるように、プロバイダネットワーク100は、データベースサービス112を含むことができる。ユーザは、データベースサービス112の1つ以上のデータベースインスタンス110に格納されている構造化データを有し得る。データは、ユーザによって、ユーザデバイス102からデータベースサービスに追加され得るか、またはプロバイダネットワーク100のサービス、もしくはプロバイダネットワーク100の外部の他のサービスから追加され得る。このデータは、ユーザにとって有用な情報を取得するために分析され得る。この分析の一部は、機械学習技術を使用してデータの推論を実行することを含み得る。例えば、テキストデータは、データベースサービス112に格納された画像から抽出され得、テキストデータは、テキストデータのスニペットに関連するセンチメントを識別するために分析され得、及び/または他の特殊なモデルは、データに関する情報を取得するためにユーザのデータに対して推論を実行するために使用され得る。しかしながら、説明したように、機械学習技術の使用には多くの場合、専門知識を要し、データベースサービス112などのデータ管理サービスに十分に統合されていない。実施形態は、データベースクエリ処理のための機械学習推論コールを行うための技術を提供することによって、これらの問題に対処している。
【0007】
プロバイダネットワーク100(または「クラウド」プロバイダネットワーク)は、コンピューティングリソース(例えば、仮想マシン(VM)インスタンス及び/またはコンテナを実行すること、バッチジョブを実行すること、サーバをプロビジョニングすることなくコードを実行すること)、データ/ストレージリソース(例えば、オブジェクトストレージ、ブロックレベルストレージ、データアーカイブストレージ、データベース及びデータベーステーブルなど)、ネットワーク関連リソース(例えば、コンピューティングリソース、コンテンツ配信ネットワーク(CDN)、ドメインネームサービス(DNS)の群を含む仮想ネットワークを構成すること)、アプリケーションリソース(例えば、データベース、アプリケーション構築/配備サービス)、アクセスポリシーまたはロール、アイデンティティポリシーまたはロール、マシンイメージ、ルータ、及び他のデータ処理リソースなど、様々な種類のコンピューティング関連リソースのうちの1つ以上を利用する能力をユーザに提供する。これら及び他のコンピューティングリソースは、コンピューティングインスタンスを実行できるハードウェア仮想化サービス、データオブジェクトを格納できるストレージサービスなどのサービスとして提供され得る。プロバイダネットワーク100のユーザ(または「顧客」)は、顧客アカウントに対応付けられた1つ以上のユーザアカウントを利用することができるが、これらの用語は、使用される文脈に応じて、多少同じ意味で用いられることができる。ユーザは、例えば、アプリケーションプログラミングインターフェース(API)コールの使用を通じて、ウェブサイトまたはアプリケーションとして実装されたコンソールを介して、など、1つ以上のインターフェース(複数可)104を介して、1つ以上の中間ネットワーク106(例えば、インターネット)をわたってプロバイダネットワーク100と相互対話し得る。インターフェース(複数可)104は、プロバイダネットワーク100のコントロールプレーン102の一部であり得るか、またはプロバイダネットワーク100のコントロールプレーン102のフロントエンドとして機能することができ、プロバイダネットワーク100のコントロールプレーン102は、顧客へとより直接的に提供され得るサービスをサポートし可能にする「バックエンド」サービスを含む。
【0008】
例えば、クラウドプロバイダネットワーク(または単に「クラウド」)とは、通常、アクセス可能な仮想化コンピューティングリソース(コンピューティング、ストレージ、ネットワークリソース、アプリケーション、サービスなど)の大規模なプールを指す。クラウドは、顧客のコマンドに応じてプログラムでプロビジョニング及びリリースできる構成可能なコンピューティングリソースの共有プールへの便利なオンデマンドネットワークアクセスを提供することができる。これらのリソースは、変動する負荷を調整するために動的にプロビジョニング及び再構成されることができる。したがって、クラウドコンピューティングは、公的にアクセス可能なネットワーク(例えば、インターネット、セルラー通信ネットワーク)を介してサービスとして提供されるアプリケーションと、これらのサービスを提供するクラウドプロバイダデータセンタのハードウェアとソフトウェアと、の両方と見なされ得る。
【0009】
概して、プロバイダネットワークのトラフィックと操作は、大きく2つのカテゴリに分類でき、それらは、論理コントロールプレーン上で実行されるコントロールプレーン操作と、論理データプレーン上で実行されるデータプレーン操作と、である。データプレーンは、分散型コンピューティングシステムを通じたユーザデータの動きを表す一方で、コントロールプレーンは、分散型コンピューティングシステムを通じた制御信号の動きを表す。コントロールプレーンは、通常、1つ以上のコントロールサーバにわたって分散され、1つ以上のコントロールサーバによって実装される1つ以上のコントロールプレーン構成要素を含む。コントロールプレーントラフィックは、通常、システム構成や管理(例えば、リソースの配置、ハードウェア容量管理、診断監視、システム状態情報など)などの運営管理操作を含む。データプレーンは、プロバイダネットワークに実装されている顧客リソース(例えば、コンピューティングインスタンス、コンテナ、ブロックストレージボリューム、データベース、ファイルストレージ)を含む。データプレーントラフィックには、通常、顧客データを顧客リソースとの間で転送するなどの非運営管理操作が含まれる。コントロールプレーン構成要素は通常、データプレーンサーバとは別のサーバセットに実装され、コントロールプレーントラフィックとデータプレーントラフィックは、別々の/異なるネットワークを介して送信され得る。
【0010】
プロバイダネットワーク100は、これら及び他のコンピューティングリソースサービスを提供するために、仮想化技術に依存することが多い。例えば、仮想化テクノロジを使用して、計算インスタンス(例えば、基礎を成すホストO/Sの上部でさらに動作し得るか、またはし得ないハイパーバイザを使用して動作するゲストオペレーティングシステム(O/S)を使用するVM、VM内で動作し得るかし得ないコンテナ、基礎を成すハイパーバイザなしに「ベアメタル」ハードウェア上で実行され得るインスタンス)を制御または利用する能力がユーザに提供され得、1つまたは複数の計算インスタンスは、単一の電子デバイスを使用して実装されることができる。したがって、ユーザは、プロバイダネットワークによってホストされるコンピューティングインスタンス(例えば、ハードウェア仮想化サービスによって提供される)を直接利用して、様々なコンピューティングタスクを実行することができる。追加的に、または代替的に、ユーザは、プロバイダネットワークにより実行されるコードを提出することによって計算インスタンスを間接的に利用することができ(例えば、オンデマンドコード実行サービスを介して)、これが、次いで、計算インスタンスを利用してコードを実行(通常、含まれる基礎となる計算インスタンス(複数可)のいずれの制御も知識もユーザが有することなく)する。
【0011】
図1に示されるように、リクエストがデータベースサービス112に送信され、1つ以上のデータベースインスタンス110に格納されたデータに対してクエリを実行することができる。いくつかの実施形態では、このリクエストは、数字1Aに示されるように、ユーザデバイス102から発信されることができるか、または数字1Bに示されるように、プロバイダネットワーク100のサービス108(例えば、サーバレス機能または他のサービス)から発信されることができる。様々な実施形態では、「サーバレス」機能は、オンデマンドで実行されることができる、ユーザまたは他のエンティティ(プロバイダネットワーク自体など)によって提供されるコードを含み得る。サーバレス機能は、オンデマンドコード実行サービスによってプロバイダネットワーク100内で維持され得、特定のユーザまたはアカウントに関連付けられ得るか、または概して複数のユーザ/アカウントにアクセス可能になり得る。サーバレス機能は、ユニフォームリソースロケータ(URL)、ユニフォームリソース識別子(URI)、またはサーバレス機能を呼び出すために使用できるその他の参照に関連付けられることができる。サーバレス機能は、トリガーまたは呼び出されたときに、仮想マシン、コンテナなどの計算インスタンスによって実行され得る。いくつかの実施形態では、サーバレス機能は、アプリケーションプログラミングインターフェース(API)コール、または特別にフォーマットされたハイパーテキストトランスポートプロトコル(TX)リクエストメッセージを介して呼び出されることができる。したがって、ユーザがサーバレス機能を実行するための専用インフラストラクチャを維持する必要なしに、ユーザは、オンデマンドで実行できるサーバレス機能を定義できる。代わりに、サーバレス機能は、プロバイダネットワーク100によって維持されるリソースを使用してオンデマンドで実行されることができる。いくつかの実施形態では、これらのリソースは「準備完了」状態(例えば、サーバレス機能を実行するように構成された事前に初期化されたランタイム環境を有する)に維持され得、サーバレス機能がほぼリアルタイムで実行されることを可能にする。
【0012】
リクエストは、ユーザデバイス102上で実行されるクライアント104A、またはサービス108のクライアント104Bから発信されることができ、これは、アプリケーションプログラミングインターフェース(API)、テキストインターフェース、グラフィカルユーザインターフェース(GUI)、または他のインターフェースなどの1つ以上のインターフェースを介してデータベースサービス112とインターフェースすることができる。リクエストには、SQL(または他の照会言語)ステートメントなどのデータベースクエリが含まれ得る。実施形態は、概してSQLステートメントを使用して説明されているが、これは説明を容易にするためであり、限定することを意図するものではない。実施形態は、代替の照会言語を使用して同様に実装され得る。データベースインスタンス110は、リクエストに含まれるクエリを処理することができる。様々な実施形態において、データベースサービスは、データベースクエリに含まれる推論リクエストを識別するために更新され得る。いくつかの実施形態では、データベースサービス112は、機械学習支援サービス120によって公開されたAPIのためのAPIコールを識別できるように更新されることができる。機械学習支援サービス120は、ユーザデータの推論を実行するために使用され得る1つ以上の事前トレーニングされたモデルを含み得る。このモデルは、センチメント分析、テキスト識別、オブジェクト検出など、複数のユーザによって使用され得る、様々な推論タスク用にトレーニングされ得る。
【0013】
いくつかの実施形態では、ユーザは、カスタムモデルをトレーニングするか、または独自のモデルを提供することができ、それらは、次いでホストされたモデル118として機械学習サービス116によってホストされる。これらのホストされたモデルは、ユーザ自身のトレーニングデータに基づいて、ユーザに固有の推論タスク、または他のユーザ固有のタスクを実行するために使用され得る。そのような実施形態では、ユーザは、クエリ実行中にデータベースサービスが認識する機能、またはモデル呼び出しコマンドを作成することができる。例えば、ユーザは、データベースサービス112に格納されたデータに対して不正検出を実行するために使用されることができるホストされたモデル118を有することができる。モデルを使用して推論を実行するために、ユーザは、以下のユーザ定義関数などを介して、いつクエリでモデルが呼び出されているかを認識するようにデータベースサービスに指示することができる。
create model My_FraudDetection
from [storage location]
returns [type]

[inputs to the model]
);
【0014】
次に、ユーザは、モデルを使用して、データベースクエリ内のデータベースサービス112内のデータに対して推論を実行することができる。例えば、そのようなクエリは、select My_FraudDetection([inputs]) from [data source]を含むことができ、ここで、ホストされたモデルであるMy_FraudDetectionは、入力に基づいて、1つ以上のデータベーステーブル、1つ以上のデータベーステーブルの特定の列、などといったデータソースからのデータ上で呼び出される。クエリ処理中に、データベースパーサは、セレクトステートメント内のMy_FraudDetectionコールを識別し、モデルを使用して推論を実行するために機械学習サービスに提供されるそのコールに関連付けられたデータを判定できる。例えば、[inputs]は、特定のデータベーステーブルの1つ以上の列、特定のデータベーステーブルの特定の行(複数可)と列(複数可)、複数のデータベーステーブルのデータなどを識別するステートメントを含み得る。同様に、機械学習支援サービスに関連付けられたAPIがクエリ処理中に識別された場合、データベースパーサは、クエリ内のAPIを識別し、事前トレーニングされたモデルを使用して推論を実行するために機械学習支援サービスに提供されるAPIに関連付けられたデータを決定できる。
【0015】
数字2において、機械学習サービスまたは機械学習支援サービスに提供されるデータは、非同期リクエストハンドラ114に提供されることができる。機械学習コールに関連付けられていると識別された各記録が、機械学習サービスまたは機械学習支援サービスに個別に渡される場合、結果として生じる(例えば、別のサービスの呼び出しによって追加された様々なネットワークコールと実際の推論時間によって導入された)遅延は、ユーザエクスペリエンスの低下に繋がる。代わりに、データベースインスタンス110のクエリ処理、及び機械学習サービス116または機械学習支援サービス120によって実行される推論は、非同期リクエストハンドラ114を使用して結合解除されることができる。
【0016】
非同期リクエストハンドラは、入力バッファで推論が実行されるデータを受信できる。このことが、データベースサービスが機械学習リクエストをバッチで送信することを可能にし、バッチは、入力バッファサイズまでの数の記録を含み得る。非同期リクエストハンドラが決定したデータが入力バッファに加えられると、非同期リクエストハンドラ114は、入力バッファからデータのミニバッチを作成して、数字3Aと3Bに示されるように、クエリで呼び出されたサービスに応じて、機械学習サービスまたは機械学習支援サービスに送信されることができる。ミニバッチサイズは、サービス固有であり得、これは各サービスが、一度に異なる最大数の記録を受信するように構成されていることからである。例えば、所与のサービスによって提供されるAPIは、バッチに含まれ得るリクエストの数に制限を設けることがある。ミニバッチサイズ及び入力バッファバッチサイズは異なり得、非同期リクエストハンドラは、入力バッファ内のリクエストからミニバッチを生成できる。いくつかの実施形態では、ミニバッチサイズは、入力バッファバッチサイズよりも小さくなり得、その場合、非同期リクエストハンドラは、入力バッファからのすべての機械学習リクエストが呼び出された外部サービス(例えば、機械学習サービスまたは機械学習支援サービス)に送信されるまで、複数のミニバッチを生成することができる。いくつかの実施形態では、ミニバッチサイズは、入力バッファバッチサイズより大きくてもよく、この場合、ミニバッチは、入力バッファに含まれるすべてのリクエストを含み得る。
【0017】
いくつかの実施形態では、単一のクエリは、非同期リクエストハンドラ114の入力バッファを満たすのに十分な機械学習リクエストを生成することができない。このような場合、非同期リクエストハンドラは、異なるユーザからのクエリを含む複数のクエリによって生成された機械学習リクエスト、及び/またはデータベースサービスによって実行されている異なるトランザクションの一部として機械学習リクエストを取得することができる。
【0018】
機械学習リクエストのミニバッチの受信に応答して、(クエリでどのサービスが呼び出されたかに応じて)機械学習サービス116または機械学習支援サービス120は、ミニバッチに含まれる記録に対して推論を実行し、各記録の応答を生成することができる。応答は、数字4Aまたは4Bにおいて、非同期リクエストハンドラ114の出力バッファに加えられることができる。非同期リクエストハンドラは、出力バッファをモニタし、送信されたリクエストのミニバッチに対して応答の完全なセットが受信されたことを示すフラグまたはその他のデータを追加できる。データベースサービスは、出力バッファを監視することができ、フラグが識別されるときに、数字5で示されるように、出力バッファから応答をプルすることができる。非同期リクエストハンドラが、複数のユーザからのリクエスト、及び/またはトランザクションを処理しているいくつかの実施形態では、各データベースインスタンスは、その特定の応答について出力バッファを監視し、そのインスタンスによって送信されたリクエストに対応する応答のみをプルすることができる。いくつかの実施形態では、各応答は、応答が関連付けられているリクエスト、データベースインスタンス、ユーザ、及び/またはトランザクションを識別することができる。クエリ処理は、機械学習サービス及び/または機械学習支援サービスからの応答を使用してデータベースインスタンスによって完了されることができ、数字6Aまたは6Bにおいて、クエリの結果が戻され得る。
【0019】
図2は、いくつかの実施形態による非同期リクエストハンドラを示す図である。データベースインスタンス110がクエリを処理するとき、クエリを実行するためのクエリ実行計画を識別することができる。所与のクエリは様々な方法で実行されることができ、それぞれの方法が、様々な性能特性を提示することができる。クエリオプティマイザは、クエリのための1つ以上の性能要件に基づく、所与のクエリのための最も良好なクエリ実行計画であり得る。いくつかの実施形態では、クエリ実行中に、データベースプロセッサ208は、スレッドを加えるためのクエリ実行計画の実行を可能にする仮想オペレータ200を作成することができ、そこでは、機械学習リクエスト(複数可)が送信されることができ、メインクエリ処理スレッドをブロックすることなく応答が受信されることができる。いくつかの実施形態では、クエリオプティマイザは、クエリ内の述語の評価順序を変更して、仮想オペレータ200によって行われる機械学習コールを必要とする記録の数を減らすことができる。
【0020】
仮想オペレータ200は、非同期リクエストハンドラ114の入力バッファ202サイズに等しいバッチで機械学習サービスまたは機械学習支援サービスに送信される必要がある記録を識別することができる。いくつかの実施形態では、仮想オペレータ200は、一時データ構造(例えば、一時的ファイル、スクラッチパッド、または他のデータ構造)として実装され得、これは、機械学習サービスまたは機械学習支援サービスに送信されることになる記録を識別するために、クエリの少なくとも一部分を実行するために用いられ得る。例えば、クエリは、データベースサービス内の複数のテーブルからのデータが結合されるように指定し、次いで、結合されたデータ内の記録の一部分が、機械学習サービスまたは機械学習支援サービスに送信されるために識別され得る。仮想オペレータを使用することで、機械学習リクエストが識別され、クエリの他の部分の処理と並行して非同期リクエストハンドラに送信され得る。数字1において、機械学習リクエストのバッチ(例えば、記録、モデルエンドポイント/APIなどを含む)が、入力バッファ202に送信され得る。いくつかの実施形態では、機械学習リクエストが送信され得る機械学習サービス及び機械学習支援サービスごとに、異なる入力バッファが維持され得る。各入力バッファは、仮想オペレータによりリクエストが追加され得るキューまたはその他のデータ構造として実装され得る。バッチハンドラ204は、呼び出されるサービスのための適切なサイズのミニバッチを生成することができる。例えば、数字2において、バッチハンドラ204は、入力バッファ202からの入力バッチを、呼び出されたサービスに送信される複数のミニバッチに分割することができる。数字3において、各ミニバッチは、次に、呼び出された外部サービス(例えば、機械学習サービス116または機械学習支援サービス120)に送信されることができる。説明したように、いくつかの実施形態では、入力バッチサイズは、呼び出された外部サービスに関連付けられたバッチサイズよりも小さくなり得る。このような場合、ミニバッチには、入力バッチからのすべての機械学習リクエストが含まれ得る。
【0021】
機械学習応答が生成されると、外部サービスは、数字4で示されるように、非同期リクエストハンドラ114の出力バッファ206に結果を追加できる。各ミニバッチが完全に処理されると、外部サービスは、ミニバッチの処理が完了したことを示す出力バッファにフラグまたは他のインジケータを追加できる。いくつかの実施形態では、外部サービスは、所与のトランザクションに関連付けられたすべての機械学習リクエストが完了すると、追加的に、または代替的に、出力バッファにフラグまたは他のインジケータを追加することができる。データベースプロセッサ208は、機械学習リクエスト及び応答が別個のスレッドで取得されている間に、クエリ実行計画を同時に実行することができる。クエリ実行が機械学習サービス呼び出し(例えば、APIコール、ユーザ定義関数など)に達すると、データベースプロセッサ208は、数字5において、機械学習応答のための出力バッファ206にアクセスすることができる。応答が出力バッファにまだ投入されていない場合、処理は、処理が完了したことを示す1つ以上のフラグが出力バッファに設定されるまで待機することができる。
【0022】
図3は、いくつかの実施形態による、ローカル機械学習モデルを用いたデータベースクエリ処理のための機械学習推論コールの環境を示す図である。説明したように、機械学習サービス116及びホストされたモデル118と共に使用されるとき、ユーザは、機械学習サービスが呼び出されていることをデータベースインスタンスが識別できるように、ホストされたモデル118に関連する関数を定義することができる。数字1において、ユーザ定義の関数ステートメントが、データベースパーサ200(例えば、SQLパーサまたは他のパーサ)によって受信され得る。いくつかの実施形態では、数字2において、データベースサービスによって必要とされるネットワークコールの数を減らすために、リクエストが、ユーザ定義の関数ステートメントで識別されるモデルのための機械学習サービスに送信され得る。このリクエストは、データベースインスタンスの性能、ハードウェア、またはその他の特性を含むことができる。機械学習サービスは、データベースインスタンスのためのモデルのコピーをコンパイルし、数字3において、モデルをデータベースインスタンスに返すことができる。いくつかの実施形態では、コンパイルされたモデル306は、共有ライブラリ304に実装され得る。
【0023】
数字4において、呼び出された機械学習モデルをコンパイルされたモデル306にマッピングするモデルスキーマ302が生成されることができる。続いて、数字5において、クエリが、モデルを呼び出すデータベースインスタンス110によって受信されることができる。データベースプロセッサは、モデルスキーマ302を使用して、モデルライブラリ304内の対応するコンパイルされたモデル306を識別し、数字6で示されるように、非同期リクエストハンドラ302を介して機械学習リクエストをコンパイルされたモデルに向けることができる。機械学習リクエストと応答の処理は、外部サービスへのネットワークコールを介してリクエストのミニバッチを送信する代わりに、リクエストのミニバッチが、モデルライブラリ304内のコンパイルされたモデル306にローカルに送信されていることを除いて、概して、図2に関して上述したように進行することができる。このことが、所与のトランザクションで使用されているモデルの数に必要とされる必要なネットワークコールの数を低減する。
【0024】
図4は、いくつかの実施形態による、ローカル機械学習モデルを用いるデータベースクエリ処理のための機械学習推論コールの代替的環境を示す図である。図4の実施形態では、データベースサービスは、データベースインスタンス110(例えば、ヘッドノード)及び複数のノード400A~400Nを含む複数のノードとして実装され得る。データベースインスタンスに格納されたデータは、複数のストレージノードにわたって分散され得る。数字1~3は、図3に関して上述したように進めることができるが、しかしながら、数字3において、コンパイルされたモデルは、モデル展開器402によって受信されている。モデル展開器402は、コンパイルされたモデルを取得して、数字4において、モデルのコピーを各ストレージノード400A~400Nに展開することができる。
【0025】
数字5において、モデルスキーマ302が生成されることができ、これが呼び出された機械学習モデルをコンパイルされたモデル306にマッピングする。続いて、数字6において、クエリが、モデルを呼び出すデータベースインスタンス110によって受信されることができる。数字7において、クエリが、データが格納されている場所に基づいて、1つ以上のストレージノードで並行に実行され得る。クエリは並行して処理されるため、推論もまた、モデルスキーマ302を使用して識別されたコンパイルされたモデル306を使用して、各ストレージノードで並行して実行され得る。いくつかの実施形態では、各ノードはまた、対応するストレージノード上の各コンパイルされたモデルにリクエストのバッチを渡すことができる非同期リクエストハンドラを含み得る。機械学習のリクエスト及び応答の処理は、ネットワークコールを介してリクエストのミニバッチを外部サービスへ送信する代わりに、リクエストのミニバッチが、モデルライブラリ304内のコンパイルされたモデル306にローカルに送信されることを除いて、概して、図2に関して上述したように進めることができる。このことが、所与のトランザクションで使用されるモデルの数に必要とされるネットワークコールの数を低減する。
【0026】
図5は、いくつかの実施形態による、機械学習推論コールのための例示的ユーザインターフェースを示す図である。図5に示されるように、所与のデータベースクエリ内で行われる推論コールを可能にするために、複数のユーザインターフェース(UI)500が実装されることができる。例えば、UI502は、テキスト入力でML_service関数(または他のユーザ定義関数)を使用して機械学習サービスを呼び出すことができる(例えば、選択ステートメントを介して、例えば、「review_table」という名称のデータベーステーブルから「review」という名称の列を識別する)。追加的に、または代替的に、UI504は、データベーステーブルなどのデータセットからの「storage_location」に格納された「file_name」のファイル(例えば、データストア名、URI、URL、またはその他のロケーション識別子)などの任意のデータタイプに対して推論を実行するために使用され得る。追加的に、または代替的に、UI506は、ユーザ定義関数「ML_function」を呼び出すことができ、これは、前述のように、特定のモデル(例えば、model_name)を呼び出して、1つ以上の入力値に基づいて、データセットからの記録に対して推論を実行するためにユーザによって定義され得る。いくつかの実施形態では、モデルは、UI506に示されるユーザ定義関数を使用するのではなく、UI508に示されるように、直接呼び出され得る。いくつかの実施形態では、ビュースタイルUI510が、事前定義されたビューV1から、特定の記録(図5に示されるように、テーブルT1に含まれるもの、または述語ステートメントで定義されるような他の記録)に推論を実行するためのモデルを呼び出すために使用されることができる。
【0027】
図6は、いくつかの実施形態による、データベースクエリ処理のための機械学習推論コールの方法の操作600を示すフロー図である。操作600(または本明細書で説明される他のプロセス、もしくはそれらの変形形態、及び/またはそれらの組み合わせ)のうちの一部または全ては、実行可能命令で構成された1つ以上のコンピュータシステムの制御下で実行され、ハードウェアまたはそれらの組み合わせにより、1つ以上のプロセッサ上で集合的に実行されるコード(例えば、実行可能命令、1つ以上のコンピュータプログラム、または1つ以上のアプリケーション)として実装される。コードは、例えば、1つ以上のプロセッサにより実行可能な命令を含むコンピュータプログラムの形態で、コンピュータ可読記憶媒体に格納される。コンピュータ可読記憶媒体は、非一時的である。いくつかの実施形態では、操作600の1つまたは複数(またはすべて)は、他の図のデータベースインスタンス110、非同期リクエストハンドラ114、等によって実行される。
【0028】
操作600は、ブロック602において、一時データ構造を使用してデータベースサービスに格納されたデータに対してクエリの少なくとも一部分を実行して、機械学習リクエストの第1のバッチを生成することを含み、このクエリは機械学習サービスを識別する。いくつかの実施形態では、一時データ構造は、クエリの全部または一部を実行するためにデータベースプロセッサによって作成されている仮想オペレータであり得る。いくつかの実施形態では、クエリの全部または一部を実行するために識別されたクエリプランは、クエリを処理するために行われる必要がある機械学習コールの数を低減するように最適化され得る。いくつかの実施形態では、クエリは、構造化照会言語(SQL)クエリである。いくつかの実施形態では、SQLクエリは、機械学習サービスへのアプリケーションプログラミングインターフェース(API)コールを使用して機械学習を識別する。いくつかの実施形態では、機械学習サービスは、複数のユーザから受信したリクエストに応答して、機械学習モデルを使用して推論を実行するためにAPIを公開する。いくつかの実施形態では、クエリは、機械学習サービスによってホストされる機械学習モデルに関連付けられたエンドポイントを使用して、機械学習サービスを識別する。
【0029】
操作600はさらに、ブロック604において、機械学習リクエストの第1のバッチに基づいて、及び機械学習サービスに基づいて、機械学習リクエストの第2のバッチを生成することを含む。いくつかの実施形態では、機械学習リクエストの第1のバッチは、非同期リクエストハンドラの入力バッファに追加されることができる。説明したように、非同期リクエストハンドラは、機械学習サービスまたは機械学習支援サービスに送信される機械学習リクエストを管理できる。いくつかの実施形態では、機械学習リクエストの第2のバッチは、少なくとも1つのネットワークを介して機械学習サービスに送信される。いくつかの実施形態では、第2のバッチサイズは、第1のバッチサイズとは異なり、第2のバッチサイズは、機械学習サービスに関連付けられている。例えば、機械学習サービスは、最大バッチサイズを有することができ、これは機械学習サービスにバッチで送信され得るリクエストの数を制限する。いくつかの実施形態では、機械学習リクエストの第1のバッチは、複数の異なるユーザから受信した複数のクエリに応答して生成された機械学習リクエストを含む。
【0030】
いくつかの実施形態では、操作600は、機械学習モデルの機械学習サービスへリクエストを送信することと、機械学習サービスから機械学習モデルを受信することと、機械学習サービスによってデータベースサービス用にコンパイルされた機械学習モデルと、をさらに含むことができ、機械学習リクエストの第2のバッチは、データベースサービスによってホストされている機械学習モデルに送信されている。いくつかの実施形態では、操作600は、データベースサービスの複数のノードに機械学習モデルのコピーを格納することをさらに含み得、データベースサービスの特定のノードによってクエリ処理中に生成された機械学習リクエストが、特定のノードに格納された機械学習モデルのコピーに送信されている。
【0031】
操作600は、ブロック606において、複数の機械学習応答を取得することをさらに含み、これらの機械学習応答は、機械学習リクエストの第2のバッチを受信することに応答して機械学習モデルを用いて機械学習サービスによって生成されている。いくつかの実施形態では、説明したように、複数の機械学習応答が、非同期リクエストハンドラの出力バッファに追加されることができる。データベースプロセッサは、出力バッファから機械学習応答を取得し、クエリの処理を完了するためにその応答を使用することができる。
【0032】
いくつかの実施形態では、操作600は、データベースサービスでリクエストを受信することであって、リクエストがデータベースサービス内のデータセットの少なくとも一部分に対して実行される構造化照会言語(SQL)クエリを含む、受信することと、リクエストが、SQLクエリの処理に使用される機械学習サービスを識別することと、SQLクエリの少なくとも一部分を実行する仮想オペレータを作成することと、仮想オペレータによって実行されるSQLクエリの少なくとも一部分に基づいた機械学習リクエストの第1のバッチを生成することと、機械学習リクエストの第1のバッチを非同期リクエストハンドラの入力バッファに送信することであって、非同期リクエストハンドラが、機械学習リクエストの第1のバッチに基づいて機械学習リクエストの第2のバッチを生成する、送信することと、非同期リクエストハンドラの出力バッファから複数の機械学習応答を取得することであって、機械学習応答が、機械学習リクエストの第2のバッチを受信することに応答して、機械学習モデルを用いて機械学習サービスによって生成されることと、機械学習応答に基づいてクエリ応答を生成することと、を含み得る。
【0033】
いくつかの実施形態では、少なくともSQLクエリに基づいて機械学習リクエストの第1のバッチを生成することは、機械学習リクエストに関連付けられた記録の数を最小化するクエリ実行計画を決定することをさらに含む。いくつかの実施形態では、機械学習サービスは、機械学習リクエストの第2のバッチが処理されたときに、出力バッファにフラグを追加する。
【0034】
図7は、いくつかの実施形態における、機械学習モデルが訓練され、ホスティングされる例示的な動作環境のブロック図である。動作環境は、エンドユーザデバイス102、モデルトレーニングシステム700、モデルホスティングシステム702、トレーニングデータストア760、トレーニングメトリクスデータストア765、コンテナデータストア770、トレーニングモデルデータストア775及びモデル予測データストア780を含む。
【0035】
本明細書で説明される機械学習サービス116は、モデルホスティングシステム702、モデルトレーニングシステム702などのような、これらのエンティティのうちの1つ以上を含み得る。
【0036】
いくつかの実施形態では、ユーザは、ユーザデバイス102を介して、モデルトレーニングシステム702と対話し、モデルトレーニングシステム702に、例えば、本明細書の別の場所に説明されるように、1つ以上の機械学習モデルを訓練させるデータを提供する。機械学習モデルは、概して、データセットを使用して「トレーニング」される1つ以上の方程式と考えることができる。いくつかの実施形態では、モデルトレーニングシステム702は、ML機能をウェブサービスとして提供し、したがって、ユーザデバイス102とモデルトレーニングシステム702(またはプロバイダネットワーク100)との間、及び/またはモデルトレーニングシステム702(またはプロバイダネットワーク100)の構成要素間でのメッセージングは、HTTPメッセージを使用して、eXtensible Markup Language(XML)またはJavaScript Object Notation(JSON)などの機械可読ファイル形式でデータを転送できる。いくつかの実施形態では、ウェブサービスとして様々な機能性へのアクセスを提供することは、ワールドワイドウェブを介して交換される通信に限定されず、より一般的には、コンピュータネットワークを介して他の電子デバイスと通信できるサービスを指す。
【0037】
ユーザデバイス102は、モデルトレーニングシステム702のフロントエンド729を介してモデルトレーニングシステム702と対話することができる。例えば、ユーザデバイス102は、トレーニングリクエストをフロントエンド729に提供することができ、このトレーニングリクエストは、コンテナイメージ(もしくは複数のコンテナイメージ、またはコンテナイメージが格納されている1つ以上の場所の識別子)、入力データのインジケータ(例えば、入力データのアドレスまたは場所)、1つ以上のハイパーパラメータ値(例えば、アルゴリズムがどのように動作するか、並列に動作するアルゴリズムはいくつか、データを区別するためのクラスタはいくつか、などを示す値)、及び/または機械学習モデルを訓練するコンピューティングマシンについて説明する情報(例えば、グラフィック処理ユニット(GPU)インスタンスタイプ、中央処理ユニット(CPU)インスタンスタイプ、割り当てるメモリ量、トレーニングに使用する仮想マシンインスタンスの種類など)を含む
【0038】
いくつかの実施形態では、コンテナイメージは、1つ以上の層を含むことができ、ここで各層は実行可能命令を表す。実行可能命令の一部または全ては、共に、機械学習モデルを定義するアルゴリズムを表す。実行可能命令(例えば、アルゴリズム)は、任意のプログラミング言語(例えば、Python、Ruby、C++、Java(登録商標)など)で記述されることができる。いくつかの実施形態では、アルゴリズムは、ユーザデバイス102を介して、アルゴリズムリポジトリ(例えば、ネットワークアクセス可能なマーケットプレイス、機械学習トレーニングサービスによって提供されるデータストア、など)からユーザによって事前生成され、取得されている。いくつかの実施形態では、アルゴリズムは、完全にユーザ生成されるか、または部分的にユーザ生成されている(例えば、ユーザ提供のコードは、既存のアルゴリズムコードを変更または構成する)。
【0039】
いくつかの実施形態では、トレーニングリクエストにおいてコンテナイメージを提供する代わりに、ユーザデバイス102は、トレーニングリクエストにおいて、任意のプログラミング言語で記述されたアルゴリズムを提供することができる。以下でより詳細に説明されるように、モデルトレーニングシステム702は、次いで、機械学習モデルのトレーニングのために仮想マシンインスタンス722に最終的にロードされるコンテナに(任意選択で、ユーザが提供したコードが補足された「ベース」MLアルゴリズムなど他のコードと共に)アルゴリズムをパッケージ化する。例えば、ユーザは、ユーザデバイス102を介して、アプリケーション(例えば、インタラクティブなウェブベースのプログラミング環境)を使用してアルゴリズム/コードを開発し、アルゴリズム/コードを、おそらくトレーニングリクエストの一部(またはトレーニングリクエストで参照されるもの)として、モデルトレーニングシステム702に提供されるようにすることができ、このアルゴリズム/コードは、例えば、それ自体でコンテナ化することも、または機械学習フレームワークを有する既存のコンテナと共に使用することもできる。
【0040】
いくつかの実施形態では、トレーニングリクエストにおいてコンテナイメージを提供する代わりに、ユーザデバイス102は、トレーニングリクエストにおいて、コンテナイメージのインジケータ(例えば、コンテナイメージが格納されているアドレスまたは場所の提示)を提供する。例えば、コンテナイメージは、コンテナデータストア770に格納されることができ、このコンテナイメージは、ユーザによって以前に作成/アップロードされた可能性がある。モデルトレーニングシステム702は、指示された場所からコンテナイメージを取り出し、取り出されたコンテナイメージを使用してコンテナを作成することができる。以下でより詳細に説明されるように、コンテナは、次いで、機械学習モデルを訓練するための仮想マシンインスタンス722にロードされる。
【0041】
モデルトレーニングシステム702は、ユーザデバイス102によって提供された情報を使用して、いくつかの実施形態では1つ以上の事前に構築された仮想マシンインスタンス722において機械学習モデルをトレーニングすることができる。特に、モデルトレーニングシステム702は、単一の物理コンピューティングデバイス、または1つ以上のコンピューティングネットワーク(図示せず)を使用して相互接続された複数の物理コンピューティングデバイスを含み、ここで、物理コンピューティングデバイス(複数可)は、1つ以上の仮想マシンインスタンス722をホスティングする。モデルトレーニングシステム702は、ユーザデバイス102によって提供された機械学習モデルをトレーニングするコンピューティングマシンについて記載した情報に基づいて、計算容量(例えば、以下でより詳細に説明されるコンテナ、インスタンスなど)の入手及び設定をハンドリングすることができる。以下でより詳細に説明されるように、モデルトレーニングシステム702は、次いで、計算容量を使用して機械学習モデルをトレーニングすることができる。モデルトレーニングシステム702は、フロントエンド729を介してユーザデバイス102から受信したトレーニングリクエストの量に基づいて自動的にスケールアップ及びスケールダウンすることができ、それにより、過剰利用(例えば、非常に少ないコンピューティングリソースを入手し、性能に問題をきたすこと)、または過少利用(例えば、機械学習モデルをトレーニングするのに必要であるよりも多くのコンピューティングリソースを入手し、したがって余分に支払うこと)について心配しなければならない負担からユーザを開放する。
【0042】
いくつかの実施形態では、仮想マシンインスタンス722は、タスクを実行するために利用される。例えば、そのようなタスクは、機械学習モデルをトレーニングすることを含み得る。図7に示すように、各仮想マシンインスタンス722は、オペレーティングシステム(OS)724、言語ランタイム726及び1つ以上のMLトレーニングコンテナ730を含む。概して、MLトレーニングコンテナ730は、仮想マシンインスタンス内で利用可能なリソースを使用し、そのインスタンス内に作成される論理ユニットであり、タスクの実行をインスタンス内で発生する他のプロセス(例えば、タスクの実行)から分離するために利用されることができる。いくつかの実施形態では、MLトレーニングコンテナ730は、1つ以上のコンテナイメージ及び上部コンテナ層から形成される。各コンテナイメージは、1つ以上のイメージ層を更に含み、各イメージ層は実行可能命令を表している。上述したように、実行可能命令の一部または全ては、共に機械学習モデルを定義するアルゴリズムを表す。MLトレーニングコンテナ730に対してなされた変更(例えば、新規ファイルの作成、既存ファイルの修正、ファイルの削除など)は、上部コンテナ層に保存される。MLトレーニングコンテナ730が削除された場合、上部コンテナ層も削除される。しかしながら、削除されたMLトレーニングコンテナ730の一部を形成するコンテナイメージ(複数可)は、変更されないままであり得る。MLトレーニングコンテナ730は、例えば、Linux(登録商標)コンテナ(LXC)、Dockerコンテナなどとして実装することができる。
【0043】
MLトレーニングコンテナ730は、個々のランタイム734、コード737、及びいくつかの実施形態においてコード737によって必要とされる依存性732を含み得る。ランタイム734は、MLトレーニングコンテナ730を形成するために使用されるコンテナイメージの少なくとも一部分を形成する1つ以上の実行可能命令(例えば、コンテナイメージから形成されたコンテナで実行するためのオペレーティングシステム及び/またはランタイムを定義するコンテナイメージ内の実行可能命令(複数可))によって定義されることができる。コード737は、MLトレーニングコンテナ730を形成するために使用されるコンテナイメージの少なくとも一部分を形成する1つ以上の実行可能命令を含む。例えば、コード737は、依存性732からコードまたはライブラリを参照(または利用)できる機械学習モデルを定義するアルゴリズムを表す実行可能命令をコンテナイメージ内に含む。ランタイム734は、機械学習モデルトレーニングを開始するための命令に応答してコード737を実行するように構成されている。コード737を実行すると、以下で詳しく説明するように、モデルデータが生成される。
【0044】
いくつかの実施形態では、コード737は、異なる機械学習モデルを定義するアルゴリズムを表す実行可能命令を含む。例えば、コード737は、第1の機械学習モデルを定義する第1のアルゴリズムを表す実行可能命令の第1のセットと、第2の機械学習モデルを定義する第2のアルゴリズムを表す実行可能命令の第2のセットと、を含む。いくつかの実施形態では、仮想マシンインスタンス722は、コード737を実行し、すべての機械学習モデルをトレーニングする。いくつかの実施形態では、仮想マシンインスタンス722は、コード737を実行し、トレーニングする機械学習モデルの1つを選択する。例えば、仮想マシンインスタンス722は、トレーニングリクエストによって示されるトレーニングデータのタイプを識別し、識別されたタイプのトレーニングデータに対応するトレーニング(例えば、選択された機械学習モデルを定義するアルゴリズムを表す実行可能命令を実行する)する機械学習モデルを選択することができる。
【0045】
いくつかの実施形態では、ランタイム734は、仮想マシンインスタンス722によって利用されるランタイム726と同じである。いくつかの実施形態では、ランタイム734は、仮想マシンインスタンス722によって利用されるランタイム726とは異なっている。
【0046】
いくつかの実施形態では、モデルトレーニングシステム702は、トレーニングリクエストに含まれる1つ以上のコンテナイメージ(または受信したトレーニングリクエストに応答してコンテナデータストア770から取得されたコンテナイメージ)を使用して、仮想マシンインスタンス722内のMLトレーニングコンテナ730を作成及び初期化する。例えば、モデルトレーニングシステム702は、コンテナイメージ(複数可)及び/または上部コンテナ層を含むMLトレーニングコンテナ730を作成する。
【0047】
トレーニングプロセスを開始する前に、いくつかの実施形態では、モデルトレーニングシステム702は、トレーニングリクエストに示された場所からトレーニングデータを取り出す。例えば、トレーニングリクエストに示される場所は、トレーニングデータストア760内の場所であり得る。したがって、モデルトレーニングシステム702は、トレーニングデータストア760内の示された場所からトレーニングデータを取り出す。いくつかの実施形態では、モデルトレーニングシステム702は、トレーニングプロセスを開始する前にトレーニングデータを取得しない。むしろ、モデルトレーニングシステム702は、トレーニングプロセス中に示された場所からトレーニングデータをストリーミングする。例えば、モデルトレーニングシステム702は、最初にトレーニングデータの一部分を取り出し、取り出した部分を、機械学習モデルをトレーニングする仮想マシンインスタンス722に提供することができる。一旦、仮想マシンインスタンス722が取り出した部分を適用して使用すると、または仮想マシンインスタンス722が取り出した部分のすべてを使用しようとする(例えば、取り出した部分を格納するバッファがほぼ空になる)と、モデルトレーニングシステム702は、トレーニングデータの第2の部分を取り出し、第2に取り出した部分を仮想マシンインスタンス722に提供することができる、などである。
【0048】
機械学習モデルトレーニングを実行するために、仮想マシンインスタンス722は、いくつかの実施形態では、MLトレーニングコンテナ730に格納されたコード737を実行する。例えば、コード737は、その中で初期化されたMLトレーニングコンテナ730のコンテナイメージを形成する実行可能命令の一部またはすべてを含む。したがって、仮想マシンインスタンス722は、機械学習モデルをトレーニングするためにその中で初期化されたMLトレーニングコンテナ730のコンテナイメージを形成する実行可能命令のいくつかまたはすべてを実行する。仮想マシンインスタンス722は、トレーニングリクエストに含まれるハイパーパラメータ値に従って、実行可能命令の一部またはすべてを実行する。例示的な例として、仮想マシンインスタンス722は、特定のパラメータ(例えば、係数、重み、セントロイドなど)の値を識別することによって機械学習モデルをトレーニングする。識別された値は、トレーニングの実行方法を定義するハイパーパラメータに依存する。したがって、仮想マシンインスタンス722は、実行可能命令を実行して、機械学習モデルトレーニングプロセスを開始することができ、トレーニングプロセスは、トレーニングリクエストに含まれるハイパーパラメータ値を使用して実行される。実行可能命令の実行は、実行されている命令のいくつかまたはすべてに対する入力パラメータとしてモデルトレーニングシステム702によって取り出されたトレーニングデータを適用する仮想マシンインスタンス722を含むことができる。
【0049】
いくつかの実施形態では、実行可能命令を実行することにより、仮想マシンインスタンス722(例えば、MLトレーニングコンテナ730)がモデルデータを生成する。例えば、MLトレーニングコンテナ730は、モデルデータを生成し、モデルデータをMLトレーニングコンテナ730のファイルシステムに格納する。モデルデータは、機械学習モデルの層の数、機械学習モデルのハイパーパラメータ、機械学習モデルの係数、機械学習モデルの重み、及び/または同様のもの、などのトレーニングされている機械学習モデルの特性を含む。特に、生成されたモデルデータは、トレーニングされている機械学習モデルを定義する特性の値を含む。いくつかの実施形態では、実行可能命令を実行すると、MLトレーニングコンテナ730に変更が加えられ、モデルデータがMLトレーニングコンテナ730の上部コンテナ層、及び/またはMLトレーニングコンテナ730の一部分を形成するコンテナイメージ(複数可)に書き込まれ、モデルデータを含むように修正される。
【0050】
仮想マシンインスタンス722(またはモデルトレーニングシステム702自体)は、生成されたモデルデータをMLトレーニングコンテナ730から引き出し、生成されたモデルデータを、仮想マシンインスタンス722及び/またはトレーニング中の機械学習モデルに関連付けられたエントリのトレーニングモデルデータストア775に格納する。いくつかの実施形態では、仮想マシンインスタンス722は、モデルデータを含む単一のファイルを生成し、単一のファイルをトレーニングモデルデータストア775に格納する。いくつかの実施形態では、仮想マシンインスタンス722は、機械学習モデルをトレーニングする過程で複数のファイルを生成し、各ファイルはモデルデータを含む。いくつかの実施形態では、各モデルデータファイルは、同一の、または異なるモデルデータ情報を含む(例えば、1つのファイルがアルゴリズムの構造を識別し、別のファイルが係数のリストを含むなど)。仮想マシンインスタンス722は、トレーニングが完了すると、複数のファイルを単一のファイルにパッケージ化し、単一のファイルをトレーニングモデルデータストア775に格納することができる。代替的に、仮想マシンインスタンス722は、トレーニングモデルデータストア775に複数のファイルを格納する。仮想マシンインスタンス722は、トレーニングプロセスが進行中である間に、及び/またはトレーニングプロセスが完了した後に、ファイル(複数可)をトレーニングモデルデータストア775に格納する。
【0051】
いくつかの実施形態では、仮想マシンインスタンス722は、トレーニングプロセスが進行している間、モデルデータファイル(複数可)をトレーニングモデルデータストア775に定期的に格納する。したがって、モデルデータファイル(複数可)は、トレーニングプロセス中の異なる時間にトレーニングモデルデータストア775に格納されることができる。特定の時間に対応するモデルデータファイルの各セット、または特定の時間の時点でトレーニングモデルデータストア775に存在するモデルデータファイルの各セットは、トレーニングプロセスの異なる段階での間に部分的にトレーニングされた機械学習モデルの異なるバージョンを表すチェックポイントである可能性がある。したがって、トレーニングが完了する前に、ユーザは、ユーザデバイス102を介して、以下に説明する方法で展開及び/または実行リクエストを提出して、部分的にトレーニングされた機械学習モデル(例えば、トレーニングプロセスの特定の段階でトレーニングされた機械学習モデル)のバージョンを展開及び/または実行することができる。部分的にトレーニングされた機械学習モデルのバージョンは、トレーニングモデルデータストア775に保存されているモデルデータファイルの一部またはすべてに基づくことができる。
【0052】
いくつかの実施形態では、仮想マシンインスタンス722は、複数のMLトレーニングコンテナ730に格納されたコード737を実行する。例えば、コンテナイメージに含まれるアルゴリズムは、トレーニングプロセスの並列化を可能にする形式であることができる。したがって、モデルトレーニングシステム702は、トレーニングリクエストで提供されるコンテナイメージの複数のコピーを作成し、仮想マシンインスタンス722に、各コンテナイメージコピーを別個のMLトレーニングコンテナ730にロードさせることができる。次に、仮想マシンインスタンス722は、MLトレーニングコンテナ730に格納されたコード737を並行して実行することができる。仮想マシンインスタンス722は、各MLトレーニングコンテナ730に構成情報をさらに提供することができ(例えば、N個のMLトレーニングコンテナ730が機械学習モデルを集合的にトレーニングしており、構成情報を受信する特定のMLトレーニングコンテナ730がN個のうちX番目のMLトレーニングコンテナ730であることを示す情報)、これは、結果のモデルデータに含めることができる。トレーニングプロセスを並列化することにより、いくつかの実施形態において、モデルトレーニングシステム702は、トレーニング時間を大幅に短縮することができる。
【0053】
いくつかの実施形態では、複数の仮想マシンインスタンス722は、複数のMLトレーニングコンテナ730に格納されたコード737を実行する。例えば、特定の機械学習モデルをトレーニングするために使用されるリソースは、単一の仮想マシンインスタンス722の制限を超える可能性がある。しかしながら、コンテナイメージに含まれるアルゴリズムは、トレーニングプロセスの並列化を可能にする形式であることができる。したがって、モデルトレーニングシステム702は、トレーニングリクエストで提供されるコンテナイメージの複数のコピーを作成し、複数の仮想マシンインスタンス722を初期化し、各仮想マシンインスタンス722に、コンテナイメージコピーを1つ以上の別個のMLトレーニングコンテナ730にロードさせることができる。次に、仮想マシンインスタンス722は、MLトレーニングコンテナ730に格納されたコード737をそれぞれ並行して実行することができる。モデルトレーニングシステム702は、仮想マシンインスタンス722を介して各MLトレーニングコンテナ730に構成情報(例えば、N個のMLトレーニングコンテナ730が機械学習モデルを集合的にトレーニングし、構成情報を受信する特定のMLトレーニングコンテナ730が、N個のうちX番目のMLトレーニングコンテナ730であることを示す情報、M個の仮想マシンインスタンス722が集合的に機械学習モデルをトレーニングし、構成情報を受信する特定のMLトレーニングコンテナ730が、M個のうちY番目の仮想マシンインスタンス722で初期化されていることを示す情報)をさらに提供することができ、このことは、結果のモデルデータに含めることができる。上述のように、トレーニングプロセスを並列化することにより、モデルトレーニングシステム702は、いくつかの実施形態においてトレーニング時間を大幅に短縮することができる。
【0054】
いくつかの実施形態では、モデルトレーニングシステム702は、複数の物理コンピューティングデバイスを含み、2つ以上の物理コンピューティングデバイスは、コード737を実行する1つ以上の仮想マシンインスタンス722をホストする。したがって、並列化は、異なる仮想マシンインスタンス722及び/またはMLトレーニングコンテナ730に加えて、異なる物理コンピューティングデバイス上で発生する可能性がある。
【0055】
いくつかの実施形態では、モデルトレーニングシステム702は、MLモデル評価器728を含む。MLモデル評価器728は、機械学習モデルがトレーニングされ、生成されたモデルデータを取得し、モデルメトリクスを生成するために取得されたモデルデータを処理しているときに仮想マシンインスタンス722を監視する。例えば、モデルメトリクスは、トレーニング中の機械学習モデルのエラー率、トレーニング中の機械学習モデルの統計的分布、トレーニング中の機械学習モデルの待ち時間、トレーニング中の機械学習モデルの信頼レベル(例えば、トレーニング中の機械学習モデルの精度がわかっているという信頼レベル)などの品質メトリクスを含めることができる。MLモデル評価器728は、トレーニング中の機械学習モデルのモデルデータと、トレーニングデータストア760からの評価データと、を取得することができる。評価データは、機械学習モデルのトレーニングに使用されるデータとは分離されており、入力データと期待される出力(例えば、既知の結果)の両方を含み、そのため、MLモデル評価器728は、モデルデータを使用して機械学習モデルを定義し、機械学習モデルへの入力として入力データを提供することにより機械学習モデルを実行できる。次に、MLモデル評価器728は、機械学習モデルの出力を期待される出力と比較し、比較に基づいてトレーニングされている機械学習モデルの1つ以上の品質メトリクスを決定できる(例えば、エラー率は、機械学習モデルの出力と期待される出力の間の差または距離であり得る)。
【0056】
MLモデル評価器728は、トレーニングプロセス中に定期的にモデルメトリクスを生成し、いくつかの実施形態では、モデルメトリクスをトレーニングメトリクスデータストア765に格納する。機械学習モデルがトレーニングされている間、ユーザは、ユーザデバイス102を介して、トレーニングメトリクスデータストア765からモデルメトリクスにアクセスして取得することができる。ユーザは、次いでモデルメトリクスを使用して、トレーニングプロセスを調整するか、及び/またはトレーニングプロセスを停止するかを決定できる。例えば、モデルメトリクスは、機械学習モデルのパフォーマンスが低いことを示すことができ、(例えば、閾値を超えるエラー率を有し、予期されたか、または望ましい分布ではない統計分布(例えば、二項分布ではない、ポアソン分布、幾何分布、正規分布、ガウス分布など)を有し、閾値を超える実行待ち時間を有し、閾値を下回る信頼レベルを有する)、及び/または進行的な劣化を実行している(例えば、品質メトリックは経時的に劣化し続ける)。これに応答して、いくつかの実施形態では、ユーザは、ユーザデバイス102を介して、モデルトレーニングシステム702にリクエストを送信して、トレーニング中の機械学習モデルを変更することができる(例えば、変更リクエストを送信する)。リクエストは、新規のまたは変更されたコンテナイメージ、新規のまたは変更されたアルゴリズム、新規のまたは変更されたハイパーパラメータ(複数可)、及び/または機械学習モデルをトレーニングするコンピューティングマシンを記述する新規または変更された情報を含むことができる。それに応じて、モデルトレーニングシステム702は、機械学習モデルを変更することができる。例えば、モデルトレーニングシステム702は、仮想マシンインスタンス722に、既存のMLトレーニングコンテナ730を任意選択で削除させ、リクエストに含まれる情報の一部またはすべてを使用して新規MLトレーニングコンテナ730を作成及び初期化し、新規MLトレーニングコンテナ730に格納されたコード737に機械学習モデルのトレーニングプロセスの再開を実行させることができる。別の例として、モデルトレーニングシステム702は、仮想マシンインスタンス722に、変更リクエストで提供されたデータに従って、既存のMLトレーニングコンテナ730に格納されたコードの実行を変更させることができる。いくつかの実施形態では、ユーザは、ユーザデバイス102を介して、機械学習モデルトレーニングプロセスを停止するようにモデルトレーニングシステム702にリクエストを送信することができる。モデルトレーニングシステム702は、次いで、仮想マシンインスタンス722に、MLトレーニングコンテナ730を削除するように、及び/またはトレーニングモデルデータストア775に格納された任意のモデルデータを削除するように指示することができる。
【0057】
以下に説明するように、いくつかの実施形態では、トレーニングモデルデータストア775に格納されたモデルデータは、機械学習モデルを展開するためにモデルホスティングシステム700によって使用される。代替的または追加的に、ユーザデバイス102または別のコンピューティングデバイス(図示せず)は、トレーニングモデルデータストア775からモデルデータを取り出して、外部デバイスに学習アルゴリズムを実装することができる。実例として、ロボットデバイスは、入力データをキャプチャするためのセンサを含むことができる。ユーザデバイス102は、トレーニングモデルデータストア775からモデルデータを取り出し、ロボットデバイスにモデルデータを格納することができる。モデルデータは、機械学習モデルを定義する。したがって、ロボットデバイスは、キャプチャされた入力データを機械学習モデルへの入力として提供し、出力を生成できる。次に、ロボットデバイスは、結果の出力に基づいてアクション(例えば、前進、腕を上げる、音を生成するなど)を実行できる。
【0058】
仮想マシンインスタンス722の単一のグループとして仮想マシンインスタンス722が図7に示される一方で、本出願のいくつかの実施形態は、タスクを実行するためにアクティブに割り当てられる仮想マシンインスタンス722を、タスクを実行するためにアクティブに割り当てられていない仮想マシンインスタンス722から分離する。例えば、タスクを実行するためにアクティブに割り当てられた仮想マシンインスタンス722は、「アクティブプール」にグループ化され、一方で、タスクを実行するためにアクティブに割り当てられていない仮想マシンインスタンス722は、「ウォーミングプール」内に配置されている。いくつかの実施形態では、ウォーミングプール内のこれらの仮想マシンインスタンス722は、トレーニングリクエストに応答して、オペレーティングシステム、言語ランタイム、及び/またはタスクの迅速な実行を可能にするために必要な他のソフトウェアと共に事前に初期化(例えば、MLトレーニングコンテナ(複数可)730における機械学習モデルトレーニングの迅速な初期化)されることができる。
【0059】
いくつかの実施形態では、モデルトレーニングシステム102は、処理ユニット、ネットワークインターフェース、コンピュータ可読媒体ドライブ、及び入力/出力デバイスインターフェースを含み、これらはすべて、通信バスを介して互いに通信することができる。ネットワークインターフェースは、1つ以上のネットワークまたはコンピューティングシステムへの接続性を提供できる。したがって、処理ユニットは、他のコンピューティングシステムまたはサービス(例えば、ユーザデバイス102、モデルホスティングシステム700など)から情報及び命令を受信することができる。処理ユニットはまた、仮想マシンインスタンス722のメモリとの間で通信することができ、入力/出力デバイスインターフェースを介して任意選択のディスプレイのための出力情報をさらに提供することができる。入力/出力デバイスインターフェースは、任意選択の入力デバイスからの入力を受け入れることもできる。メモリは、本開示の1つ以上の態様を実装するために処理ユニットが実行するコンピュータプログラム命令(いくつかの実施形態ではモジュールとしてグループ化される)を含むことができる。
【0060】
いくつかの実施形態では、モデルホスティングシステム700は、単一の物理コンピューティングデバイス、または1つ以上のコンピューティングネットワーク(図示せず)を使用して相互接続された複数の物理コンピューティングデバイスを含み、物理コンピューティングデバイス(複数可)は、1つ以上の仮想マシンインスタンス742をホストする。モデルホスティングシステム700は、トレーニングされた機械学習モデルの実行に対する需要に基づいて、計算容量(例えば、コンテナ、インスタンスなど)の取得及び構成を処理することができる。次に、モデルホスティングシステム700は、以下でより詳細に説明されるように、計算容量を使用して機械学習モデルを実行することができる。モデルホスティングシステム700は、モデルホスティングシステム700のフロントエンドを介してユーザデバイス102から受信された実行リクエストの量に基づいて、自動的にスケールアップ及びスケールダウンすることができ、それにより、(例えば、取得するコンピューティングリソースが少なすぎてパフォーマンスの問題が発生している)過剰利用、または(例えば、機械学習モデルを実行するために必要なものよりも多くのコンピューティングリソースを取得しているため、高額になっている)過小利用について、ユーザが心配しなければならない負担から解放する。
【0061】
いくつかの実施形態では、仮想マシンインスタンス742は、タスクを実行するために利用される。例えば、このようなタスクには、機械学習モデルの実行が含まれ得る。図7に示されるように、各仮想マシンインスタンス742は、オペレーティングシステム(OS)744、言語ランタイム746、及び1つ以上のMLスコアリングコンテナ750を含む。MLスコアリングコンテナ750が、仮想マシンインスタンスで利用可能なリソースを使用して仮想マシンインスタンス内に形成された論理ユニットであり、仮想マシンインスタンス内に作成され、タスクの実行をインスタンス内で生じる他のプロセス(例えば、タスクの実行)から分離するために利用され得るという点で、MLスコアリングコンテナ750は、MLトレーニングコンテナ730に類似している。いくつかの実施形態では、MLスコアリングコンテナ750は、1つ以上のコンテナイメージ及び上部コンテナ層から形成されている。各コンテナイメージは、1つ以上のイメージ層をさらに含み、各イメージ層は実行可能命令を表す。上述のように、実行可能命令の一部またはすべては、共に機械学習モデルを定義するアルゴリズムを表す。MLスコアリングコンテナ750に加えられた変更(例えば、新しいファイルの作成、既存のファイルの変更、ファイルの削除など)は、上部コンテナ層に格納されている。MLスコアリングコンテナ750が削除されると、上部コンテナ層も削除される。しかしながら、削除されたMLスコアリングコンテナ750の一部分を形成するコンテナイメージ(複数可)は、変更されないままであることができる。MLスコアリングコンテナ750は、例えば、Linux(登録商標)コンテナとして実装されることができる。
【0062】
MLスコアリングコンテナ750はそれぞれ、ランタイム754、コード756、及びいくつかの実施形態においてコード756によって必要とされる依存性752(例えば、ライブラリなどのサポートソフトウェア)を含む。ランタイム754は、MLスコアリングコンテナ750を形成するために使用されるコンテナイメージの少なくとも一部分を形成する1つ以上の実行可能命令(例えば、コンテナイメージから形成されたコンテナ内で実行するためのオペレーティングシステム及び/またはランタイムを定義するコンテナイメージ内の実行可能命令(複数可))によって定義されることができる。コード756は、MLスコアリングコンテナ750を形成するために使用されるコンテナイメージの少なくとも一部分を形成する1つ以上の実行可能命令を含む。例えば、コード756は、依存性752を参照できる機械学習モデルを定義するアルゴリズムを表すコンテナイメージ内に実行可能命令を含む。コード756はまた、以下でより詳細に説明されるように、定義された機械学習モデルの特性を表すモデルデータを含むことができる。ランタイム754は、機械学習モデルの実行を開始するための命令に応答してコード756を実行するように構成される。以下でより詳細に説明するように、コード756の実行は、出力(例えば、予測結果)の生成をもたらす。
【0063】
いくつかの実施形態では、ランタイム754は、仮想マシンインスタンス742によって利用されるランタイム746と同じである。いくつかの実施形態では、ランタイム754は、仮想マシンインスタンス742によって利用されるランタイム746とは異なる。
【0064】
いくつかの実施形態では、モデルホスティングシステム700は、展開リクエストに含まれる1つ以上のコンテナイメージ(または受信した展開リクエストに応答してコンテナデータストア770から取り出したコンテナイメージ)を使用して、仮想マシンインスタンス742内でMLスコアリングコンテナ750を作成及び初期化する。例えば、モデルホスティングシステム700は、コンテナイメージ(複数可)及び/または上部コンテナ層を含むMLスコアリングコンテナ750を作成する。
【0065】
上述のように、ユーザデバイス102は、いくつかの実施形態では、フロントエンドを介してモデルホスティングシステム700に展開リクエスト及び/または実行リクエストを提出することができる。展開リクエストは、モデルホスティングシステム700に、トレーニングされた機械学習モデルを仮想マシンインスタンス742に展開させる。例えば、展開リクエストは、エンドポイントの識別(例えば、HTTPエンドポイント名などのエンドポイント名)と、1つ以上のトレーニングされた機械学習モデルの識別(例えば、トレーニングモデルデータストア775に保存されているモデルデータファイルの場所)と、を含むことができる。任意選択で、展開リクエストはまた、コンテナデータストア770に格納された1つ以上のコンテナイメージの識別も含む。
【0066】
展開リクエストを受信すると、モデルホスティングシステム700は、1つ以上のホストされた仮想マシンインスタンス742内の1つ以上のMLスコアリングコンテナ750を初期化する。展開リクエストが1つ以上のコンテナイメージの識別を含む実施形態では、モデルホスティングシステム700は、識別されたコンテナイメージ(複数可)からMLスコアリングコンテナ(複数可)750を形成する。例えば、展開リクエストで識別されるコンテナイメージは、展開リクエストに対応する機械学習モデルをトレーニングするために使用されるMLトレーニングコンテナ730を形成するために使用されるのと同じコンテナイメージであり得る。したがって、MLスコアリングコンテナ(複数可)750のコード756は、機械学習モデルを定義するアルゴリズムを表すコンテナイメージ(複数可)内の1つ以上の実行可能命令を含む。展開リクエストがコンテナイメージの識別を含まない実施形態では、モデルホスティングシステム700は、コンテナデータストア770に格納された1つ以上のコンテナイメージからMLスコアリングコンテナ(複数可)750を形成し、これらは識別されたトレーニングされた機械学習モデル(複数可)を実行するために適切である。例えば、適切なコンテナイメージは、識別されたトレーニングされた機械学習モデル(複数可)を定義するアルゴリズムを表す実行可能命令を含むコンテナイメージであることができる。
【0067】
モデルホスティングシステム700は、いくつかの実施形態において、識別されたトレーニングされた機械学習モデル(複数可)に対応するモデルデータを取り出すことによって、MLスコアリングコンテナ(複数可)750をさらに形成する。例えば、展開リクエストは、トレーニングモデルデータストア775に格納されているモデルデータファイル(複数可)の場所を識別できる。展開リクエストで単一のモデルデータファイルが識別された実施形態では、モデルホスティングシステム700は、識別されたモデルデータファイルをトレーニングモデルデータストア775から取り出し、コード756の一部分を形成する単一のMLスコアリングコンテナ750にモデルデータファイルを挿入する。いくつかの実施形態では、モデルデータファイルは、アーカイブまたは圧縮される(例えば、個々のファイルのパッケージから形成される)。したがって、モデルホスティングシステム700は、モデルデータファイルを復元または解凍して、複数の個別のファイルを取得し、個別のファイルをMLスコアリングコンテナ750に挿入する。いくつかの実施形態では、モデルホスティングシステム700は、モデルデータファイルがモデルデータファイルを生成するMLトレーニングコンテナ730内に格納された場所と同じ場所にモデルデータファイルを格納する。例えば、モデルデータファイルは、最初に、特定のオフセットでMLトレーニングコンテナ730の上部コンテナ層に格納され、次に、モデルホスティングシステム700は、MLスコアリングコンテナ750の上部コンテナ層に同じオフセットでモデルデータファイルを格納する。
【0068】
複数のモデルデータファイルが展開リクエストで識別された実施形態では、モデルホスティングシステム700は、識別されたモデルデータファイルをトレーニングモデルデータストア775から取り出す。モデルホスティングシステム700は、同じMLスコアリングコンテナ750の中に、同じ仮想マシンインスタンス742で初期化された異なるMLスコアリングコンテナ750の中に、または異なる仮想マシンインスタンス742で初期化された異なるMLスコアリングコンテナ750内に、モデルデータファイルを挿入することができる。例示的な例として、展開リクエストは、トレーニングされた機械学習モデルが関連している(例えば、1つのトレーニングされた機械学習モデルの出力が別のトレーニングされた機械学習モデルへの入力として使用される)ために、異なるトレーニングされた機械学習モデルに対応する複数のモデルデータファイルを識別できる。したがって、ユーザは、複数の機械学習モデルを展開して、最終的に複数の機械学習モデルの出力に依存する単一の出力を受け取ることを望む場合がある。
【0069】
いくつかの実施形態では、モデルホスティングシステム700は、初期化されたMLスコアリングコンテナ(複数可)750を、展開リクエストで識別されたエンドポイントに関連付ける。例えば、初期化されたMLスコアリングコンテナ(複数可)750のそれぞれは、ネットワークアドレスに関連付けられることができる。モデルホスティングシステム700は、ネットワークアドレス(複数可)を識別されたエンドポイントにマッピングすることができ、モデルホスティングシステム700または別のシステム(例えば、図示されていないルーティングシステム)は、マッピングを格納することができる。したがって、ユーザデバイス102は、エンドポイントを使用して、MLスコアリングコンテナ(複数可)750に格納されたトレーニングされた機械学習モデル(複数可)を参照することができる。これにより、ユーザデバイス102を操作するユーザに、ユーザがトレーニングされた機械学習モデルを参照する方法を変更させることなく、MLスコアリングコンテナ750のネットワークアドレスを変更することができる。
【0070】
MLスコアリングコンテナ(複数可)750が初期化されると、MLスコアリングコンテナ(複数可)750は、トレーニングされた機械学習モデル(複数可)を実行する準備ができている。いくつかの実施形態では、ユーザデバイス102は、フロントエンドを介してモデルホスティングシステム700に実行リクエストを送信し、ここで実行リクエストは、エンドポイントを識別し、機械学習モデルへの入力(例えば、入力データのセット)を含む。モデルホスティングシステム700または別のシステム(例えば、ルーティングシステム、図示せず)は、実行リクエストを取得し、識別されたエンドポイントに対応するMLスコアリングコンテナ(複数可)750を識別し、識別されたMLスコアリングコンテナ(複数可)750に入力をルーティングすることができる。
【0071】
いくつかの実施形態では、仮想マシンインスタンス742は、実行リクエストを受信するモデルホスティングシステム700に応答して、識別されたMLスコアリングコンテナ750に格納されたコード756を実行する。特に、コード756の実行により、アルゴリズムに対応するコード756の実行可能命令が、MLスコアリングコンテナ750に格納されたモデルデータファイルを読み取り、実行リクエストに含まれる入力を入力パラメータとして使用し、対応する出力を生成するようにさせる。例示的な例として、アルゴリズムは、係数、重み、層、クラスタセントロイド及び/または、同様のものを含むことができる。アルゴリズムに対応するコード756内の実行可能命令は、モデルデータファイルを読み取ることができ、係数、重み、層、クラスタセントロイド、及び/または、同様のものを決定することができる。実行可能命令は入力パラメータを含むことができ、実行リクエストに含まれる入力は、仮想マシンインスタンス742によって入力パラメータとして供給され得る。機械学習モデルの特性と提供された入力パラメータを使用して、仮想マシンインスタンス742による実行可能命令の実行を完了し、出力を得ることができる。
【0072】
いくつかの実施形態では、仮想マシンインスタンス742は、出力をモデル予測データストア780に格納する。代替的に、または追加的に、仮想マシンインスタンス742は、フロントエンドを介して実行結果を提出したユーザデバイス102に出力を送信する。
【0073】
いくつかの実施形態では、実行リクエストは、関連するトレーニングされた機械学習モデルのグループに対応している。したがって、MLスコアリングコンテナ750は、同じ仮想マシンインスタンス742または異なる仮想マシンインスタンス742で初期化された第2のMLスコアリングコンテナ750に出力を送信することができる。第2のMLスコアリングコンテナ750を初期化した仮想マシンインスタンス742は、次いで、第2のMLスコアリングコンテナ750に格納された第2のコード756を実行し、受信した出力を第2のコード756内の実行可能命令への入力パラメータとして提供することができる。第2のMLスコアリングコンテナ750は、そこに格納されたモデルデータファイルをさらに含み、これは、機械学習モデルを定義する特性の値を決定するために第2のコード756内の実行可能命令によって読み取られる。第2のコード756を実行すると、第2の出力が生成される。第2のMLスコアリングコンテナ750を初期化した仮想マシンインスタンス742は、次いで、第2の出力を、フロントエンドを介してモデル予測データストア780及び/またはユーザデバイス102に送信することができるか(例えば、トレーニングされた機械学習モデルが出力を生成するためにこれ以上必要とされない場合)、または同じまたは異なる仮想マシンインスタンス742内で初期化された第3のMLスコアリングコンテナ750に第2の出力を送信することができ(例えば、1つ以上の追加のトレーニングされた機械学習モデルからの出力が必要な場合)、上で参照したプロセスは、第3のMLスコアリングコンテナ750に関して繰り返えされることができる。
【0074】
仮想マシンインスタンス742が、図7に仮想マシンインスタンス742の単一のグループとして示されているが、本出願のいくつかの実施形態は、タスクを実行するためにアクティブに割り当てられる仮想マシンインスタンス742を、タスクを実行するためにアクティブに割り当てられない仮想マシンインスタンス742から分離する。例えば、タスクを実行するためにアクティブに割り当てられた仮想マシンインスタンス742は、「アクティブプール」にグループ化され、一方で、タスクを実行するためにアクティブに割り当てられていない仮想マシンインスタンス742は、「ウォーミングプール」内に配置される。いくつかの実施形態では、ウォーミングプール内のこれらの仮想マシンインスタンス742は、展開及び/または実行のリクエストに応答して、タスク(例えば、MLスコアリングコンテナ(複数可)750の迅速な初期化、MLスコアリングコンテナ(複数可)内のコード756の迅速な実行、等)の迅速な実行を可能にするために必要とされるオペレーティングシステム、言語ランタイム、及び/または他のソフトウェアで事前に初期化されることができる。
【0075】
いくつかの実施形態では、モデルホスティングシステム700は、処理ユニット、ネットワークインターフェース、コンピュータ可読媒体ドライブ、及び入力/出力デバイスインターフェースを含み、これらはすべて、通信バスを介して互いに通信することができる。ネットワークインターフェースは、1つ以上のネットワークまたはコンピューティングシステムへの接続性を提供できる。したがって、処理ユニットは、他のコンピューティングシステムまたはサービス(例えば、ユーザデバイス102、モデルトレーニングシステム702など)から情報及び命令を受信することができる。処理ユニットはまた、仮想マシンインスタンス742のメモリとの間で通信することができ、入力/出力デバイスインターフェースを介して任意選択のディスプレイ用に出力情報をさらに提供することができる。入力/出力デバイスインターフェースはまた、任意選択の入力デバイスからの入力を受け入れることもできる。メモリは、本開示の1つ以上の態様を実装するために処理ユニットが実行するコンピュータプログラム命令(いくつかの実施形態ではモジュールとしてグループ化される)を含むことができる。
【0076】
いくつかの実施形態では、動作環境は、マルチアームバンディットモデル、強化学習モデル、アンサンブル機械学習モデル、深層学習モデルなどの多くの異なるタイプの機械学習モデルをサポートする。
【0077】
図7に示されるモデルトレーニングシステム702及びモデルホスティングシステム700は、制限を意味するものではない。例えば、モデルトレーニングシステム702、及び/またはモデルホスティングシステム700はまた、図7に示されるよりも少ないか、または多い数のデバイスを有するコンピューティング環境内で動作することができる。したがって、図7のモデルトレーニングシステム702及び/またはモデルホスティングシステム700の描写は、例示として解釈されることができ、本開示に限定されない。例えば、モデルトレーニングシステム702、及び/またはモデルホスティングシステム700もしくはその様々な構成要素は、様々なウェブサービス構成要素、ホステッドもしくは「クラウド」コンピューティング環境、及び/またはピアツーピアネットワーク構成を実装して、本明細書で説明するプロセスの少なくとも一部分を実行する。いくつかの実施形態では、モデルトレーニングシステム702、及び/またはモデルホスティングシステム700は、ハードウェアまたはハードウェアデバイスによって実行されるソフトウェアに直接実装され、例えば、本明細書に記載されている様々な機能を実行するためのコンピュータ実行可能な命令を実行するように構成された物理コンピュータハードウェアに実装された1つ以上の物理または仮想サーバを含み得る。1つ以上のサーバは、例えば、1つ以上のポイント・オブ・プレゼンス(POP)または局所的なデータセンタにおいて、地理的に分散されるか、または地理的に同じ位置に配置されることができる。
【0078】
フロントエンド729は、ユーザデバイス102から受信したすべてのトレーニングリクエストを処理し、仮想マシンインスタンス722をプロビジョニングする。いくつかの実施形態では、フロントエンド729は、モデルトレーニングシステム702によって提供される他のすべてのサービスへのフロントドアとして機能する。フロントエンド729はリクエストを処理し、リクエストが適切に承認されていることを確認する。例えば、フロントエンド729は、トレーニングリクエストに関連付けられたユーザが、トレーニングプロセスを開始することを許可されているかどうかを判定することができる。
【0079】
同様に、フロントエンドは、ユーザデバイス102から受信したすべての展開及び実行リクエストを処理し、仮想マシンインスタンス742をプロビジョニングする。いくつかの実施形態では、フロントエンドは、モデルホスティングシステム700によって提供される他のすべてのサービスへのフロントドアとして機能する。フロントエンドはリクエストを処理し、リクエストが適切に承認されていることを確認する。例えば、フロントエンドは、展開リクエストまたは実行リクエストに関連付けられたユーザが、示されたモデルデータにアクセスすること、及び/または示された機械学習モデルを実行することを許可されているかどうかを判定することができる。
【0080】
トレーニングデータストア760は、トレーニングデータ及び/または評価データを格納する。トレーニングデータは、機械学習モデルのトレーニングに使用されるデータであることができ、評価データは、機械学習モデルの性能を評価するために使用されるデータであることができる。いくつかの実施形態では、トレーニングデータ及び評価データは共通のデータを有する。いくつかの実施形態では、トレーニングデータ及び評価データは共通のデータを有さない。いくつかの実施形態では、トレーニングデータは、入力データ及び期待される出力を含む。トレーニングデータストア760は、モデルトレーニングシステム702及びモデルホスティングシステム700の外部に配置されているように描かれているが、これは限定を意味するものではない。例えば、示されていない、いくつかの実施形態では、トレーニングデータストア760は、モデルトレーニングシステム702またはモデルホスティングシステム700のうちの少なくとも1つの内部に配置されている。
【0081】
いくつかの実施形態では、トレーニングメトリクスデータストア765は、モデルメトリクスを格納する。トレーニングメトリクスデータストア765は、モデルトレーニングシステム702及びモデルホスティングシステム700の外部に配置されているように示されているが、これは限定を意味するものではない。例えば、示されていない、いくつかの実施形態では、トレーニングメトリクスデータストア765は、モデルトレーニングシステム702またはモデルホスティングシステム700のうちの少なくとも1つの内部に配置されている。
【0082】
コンテナデータストア770は、MLトレーニングコンテナ730及び/またはMLスコアリングコンテナ750を形成するために使用されるコンテナイメージなどのコンテナイメージを格納し、これらは、様々な仮想マシンインスタンス722及び/または742によって取り出されることができる。コンテナデータストア770は、モデルトレーニングシステム702及びモデルホスティングシステム700の外部に配置されているように描かれているが、これは限定を意味するものではない。例えば、示されていない、いくつかの実施形態では、コンテナデータストア770は、モデルトレーニングシステム702及びモデルホスティングシステム700のうちの少なくとも1つの内部に配置されている。
【0083】
トレーニングモデルデータストア775は、モデルデータファイルを格納する。いくつかの実施形態では、モデルデータファイルのうちいくつかは、単一のファイルで構成されているが、他のモデルデータファイルは、複数の個別のファイルのパッケージである。トレーニングモデルデータストア775は、モデルトレーニングシステム702及びモデルホスティングシステム700の外部に配置されているように描かれているが、これは限定を意味するものではない。例えば、示されていない、いくつかの実施形態では、トレーニングモデルデータストア775は、モデルトレーニングシステム702またはモデルホスティングシステム700のうちの少なくとも1つの内部に配置されている。
【0084】
モデル予測データストア780は、いくつかの実施形態では、MLスコアリングコンテナ750によって生成された出力(例えば、実行結果)を格納する。モデル予測データストア780は、モデルトレーニングシステム702及びモデルホスティングシステム700の外部に配置されているように描かれているが、これは限定を意味するものではない。例えば、示されていない、いくつかの実施形態では、モデル予測データストア780は、モデルトレーニングシステム702及びモデルホスティングシステム700のうちの少なくとも1つの内部に配置されている。
【0085】
モデルトレーニングシステム702、モデルホスティングシステム700、トレーニングデータストア760、トレーニングメトリクスデータストア765、コンテナデータストア770、トレーニングモデルデータストア775、及びモデル予測データストア780は、別個の構成要素として示されているが、これは制限を意味するものではない。いくつかの実施形態では、これらの構成要素のうちいずれか1つまたはすべては、組み合わせられ、本明細書に記載の機能性を実行することができる。例えば、これらの構成要素のうちいずれか1つまたはすべては、単一のコンピューティングデバイスによって、またはコンピュータサーバーなどの複数の別個のコンピューティングデバイスによって実装されることができ、共に論理的または物理的にグループ化され、サーバシステムとして集合的に動作する。これら構成要素のうちいずれか1つまたはすべては、共有内部ネットワークを介して通信することができ、集合システム(例えば、本明細書では機械学習サービスとも呼ばれる)は、1つ以上のネットワーク(複数可)106を介して1つ以上のユーザデバイス102と通信することができる。
【0086】
様々な例示的なユーザデバイス102が図7に示されており、デスクトップコンピュータ、ラップトップ、及び携帯電話を含み、それぞれが例示として提供されている。一般に、ユーザデバイス102は、デスクトップ、ラップトップまたはタブレットコンピュータ、パーソナルコンピュータ、ウェアラブルコンピュータ、サーバ、携帯情報端末(PDA)、ハイブリッドPDA/携帯電話、携帯電話、電子ブックリーダ、セットトップボックス、音声コマンドデバイス、カメラ、デジタルメディアプレーヤなどの任意のコンピューティングデバイスであり得る。いくつかの実施形態では、モデルトレーニングシステム702及び/またはモデルホスティングシステム700は、トレーニングリクエスト、展開リクエスト、及び/または実行リクエストを提出するために、1つ以上のユーザインターフェース、コマンドラインインターフェース(CLI)、アプリケーションプログラミングインターフェース(API)、及び/または他のプログラムインターフェースをユーザデバイス102に提供する。いくつかの実施形態では、ユーザデバイス102は、トレーニングリクエスト、展開リクエスト、及び/または実行リクエストを提出するために、モデルトレーニングシステム702及び/またはモデルホスティングシステム700と相互作用するスタンドアロンアプリケーションを実行することができる。
【0087】
いくつかの実施形態では、ネットワーク106は、任意の有線ネットワーク、無線ネットワーク、またはそれらの組み合わせを含む。例えば、ネットワーク106は、パーソナルエリアネットワーク、ローカルエリアネットワーク、ワイドエリアネットワーク、無線放送ネットワーク(例えば、ラジオまたはテレビ用)、ケーブルネットワーク、衛星ネットワーク、セルラー電話ネットワーク、またはそれらの組み合わせであり得る。さらなる例として、ネットワーク106は、リンクされたネットワークの公的にアクセス可能なネットワークであり得、恐らくインターネットなどの様々な別個の関係者によって運用されるものであり得る。いくつかの実施形態では、ネットワーク106は、企業または大学のイントラネットなどのプライベートまたはセミプライベートネットワークであり得る。ネットワーク106は、グローバルシステムフォーモバイルコミュニケーションズ(GSM(登録商標))ネットワーク、コードディビジョンマルチアクセス(CDMA)ネットワーク、ロングタームエボリューション(LTE)ネットワーク、または任意の他のタイプのワイヤレスネットワークなどの1つ以上のワイヤレスネットワークを含み得る。ネットワーク106は、インターネットまたはネットワークの他の前述のタイプのいずれかを介して通信するためのプロトコル及び構成要素を使用することができる。例えば、ネットワーク106によって使用されるプロトコルは、HTTP、HTTPセキュア(HTTPS)、メッセージキューテレメトリトランスポート(MQTT)、制約付きアプリケーションプロトコル(CoAP)、及び同様のものを含み得る。インターネットまたは通信ネットワークの他の前述のタイプのいずれかを介して通信するためのプロトコル及び構成要素は、当業者に周知であり、したがって、本明細書ではより詳細に説明されていない。
【0088】
図8は、いくつかの実施形態による、例示的なプロバイダネットワーク(または「サービスプロバイダシステム」)環境を示している。プロバイダネットワーク800は、1つ以上の仮想化サービス810を介して顧客にリソース仮想化を提供することができ、これにより、顧客が、1つ以上のデータセンタ内の1つ以上のプロバイダネットワーク内のデバイスに実装された、コンピューテーション及びストレージリソースを含むがこれらに限定されない仮想化リソースのインスタンス812を購入、レンタル、または取得することを可能にする。ローカルインターネットプロトコル(IP)アドレス816は、リソースインスタンス812に関連付けられ得、ローカルIPアドレスは、プロバイダネットワーク800上のリソースインスタンス812の内部ネットワークアドレスである。いくつかの実施形態では、プロバイダネットワーク800はまた、顧客がプロバイダ800から取得することができるパブリックIPアドレス814及び/またはパブリックIPアドレス範囲(例えば、インターネットプロトコルバージョン4(IPv4)またはインターネットプロトコルバージョン6(IPv6)アドレス)を提供することができる。
【0089】
従来的に、プロバイダネットワーク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にルーティングされ得る。
【0090】
本明細書で使用されるローカルIPアドレスは、例えば、プロバイダネットワーク内のリソースインスタンスの内部または「プライベート」ネットワークアドレスを指す。ローカルIPアドレスは、インターネット技術特別調査委員会(IETF)のコメントのリクエスト(RFC)1918によって確保されたアドレスブロック内、及び/またはIETF RFC 4193によって指定されたアドレス形式のアドレスブロック内にあることができ、プロバイダネットワーク内で変更可能である。プロバイダネットワークの外部から発信されるネットワークトラフィックは、ローカルIPアドレスに直接ルーティングされず、代わりに、トラフィックはリソースインスタンスのローカルIPアドレスにマップされているパブリックIPアドレスを使用する。プロバイダネットワークは、パブリックIPアドレスからローカルIPアドレスへのマッピング、及びその逆方向のマッピングを実行するために、ネットワークアドレス変換(NAT)または同様の機能を提供するネットワークデバイスまたはアプライアンスを含み得る。
【0091】
パブリックIPアドレスは、サービスプロバイダにより、または顧客により、リソースインスタンスにアサインされるインターネット可変ネットワークアドレスである。パブリックIPアドレスにルーティングされたトラフィックは、例えば1:1NATを介して変換され、リソースインスタンスのそれぞれローカルIPアドレスに転送される。
【0092】
いくつかのパブリックIPアドレスは、プロバイダネットワークインフラストラクチャにより、特定のリソースインスタンスにアサインされ得、これらのパブリックIPアドレスは、標準パブリックIPアドレス、または単純に標準IPアドレスと称され得る。いくつかの実施形態では、標準IPアドレスをリソースインスタンスのローカルIPアドレスにマッピングすることは、全てのリソースインスタンスタイプのデフォルトの起動構成である。
【0093】
少なくともいくつかのパブリックIPアドレスは、プロバイダネットワーク800の顧客に割り当てられ得、または顧客により取得され得、次に、顧客は、自身の割り当てられたパブリックIPアドレスを、顧客に割り当てられた特定のリソースインスタンスにアサインし得る。これらのパブリックIPアドレスは、顧客パブリックIPアドレス、または単純に顧客IPアドレスと称され得る。顧客IPアドレスは、標準IPアドレスの事例のようにプロバイダネットワーク800によりリソースインスタンスにアサインされる代わりに、例えばサービスプロバイダにより提供されるAPIを介して、顧客によりリソースインスタンスにアサインされ得る。標準IPアドレスと異なり、顧客IPアドレスは、顧客アカウントに割り当てられ、必要または所望に応じて、それぞれの顧客により他のリソースインスタンスに再マッピングすることができる。顧客IPアドレスは、特定のリソースインスタンスではなく、顧客のアカウントに対応付けられ、顧客がそのIPアドレスを解除することを選択するまで、顧客はそのIPアドレスを制御する。従来の静的IPアドレスと異なり、顧客IPアドレスは、顧客が、顧客のパブリックIPアドレスを、顧客のアカウントに対応付けられた任意のリソースインスタンスに再マッピングすることにより、リソースインスタンスまたはアベイラビリティゾーンの障害をマスクすることを可能にする。顧客IPアドレスは、例えば、顧客が、顧客IPアドレスを代替リソースインスタンスに再マッピングすることにより、顧客のリソースインスタンスまたはソフトウェアの問題に対処することを可能にする。
【0094】
図9は、いくつかの実施形態による、顧客にストレージサービス及びハードウェア仮想化サービスを提供する例示的なプロバイダネットワークのブロック図である。ハードウェア仮想化サービス920は、多数のコンピューテーションリソース924(例えばVM)を顧客に提供する。コンピューテーションリソース924は、例えば、プロバイダネットワーク900の顧客(例えば、顧客ネットワーク950を実装する顧客)にレンタルまたはリースすることができる。各コンピューテーションリソース924には、1つ以上のローカルIPアドレスを設けることができる。プロバイダネットワーク900は、コンピューテーションリソース924のローカルIPアドレスからパブリックインターネット宛先に、かつ、パブリックインターネットソースからコンピューテーションリソース924のローカルIPアドレスにパケットをルーティングするように構成され得る。
【0095】
プロバイダネットワーク900は、例えば、ローカルネットワーク956を介して中間ネットワーク940に結合された顧客ネットワーク950と、中間ネットワーク940及びプロバイダネットワーク900に結合されたハードウェア仮想化サービス920を介して仮想コンピューティングシステム992を実装する能力と、を提供し得る。いくつかの実施形態では、ハードウェア仮想化サービス920は、1つ以上のAPI902、例えば、ウェブサービスインターフェースを提供することができ、それを介して、顧客ネットワーク950は、ハードウェア仮想化サービス920によって提供される機能性に、例えば、コンソール994(例えば、ウェブベースのアプリケーション、スタンドアロンアプリケーション、モバイルアプリケーションなど)を介してアクセスすることができる。いくつかの実施形態では、プロバイダネットワーク900において、顧客ネットワーク950における各仮想コンピューティングシステム992は、リース、レンタル、または他の方法で顧客ネットワーク950に提供されるコンピューテーションリソース924に対応し得る。
【0096】
仮想コンピューティングシステム992及び/または別の顧客デバイス990のインスタンスから(例えば、コンソール994を介して)、顧客は、例えば、1つ以上のAPI902を介して、ストレージサービス910の機能性にアクセスして、データにアクセスし、プロバイダネットワーク900によって提供される仮想データストア916のストレージリソース918A~918N(例えば、フォルダまたは「バケット」、仮想化ボリューム、データベースなど)にデータを格納することができる。いくつかの実施形態では、仮想化データストアゲートウェイ(図示せず)が顧客ネットワーク950に提供され得、これは、少なくともいくつかのデータ、例えば、頻繁にアクセスされるデータまたは重要なデータをローカルにキャッシュし得、そして1つ以上の通信チャネルを介してストレージサービス910と通信してローカルキャッシュからの新規の、または修正されたデータをアップロードし、データのプライマリストア(仮想化データストア916)が維持されるようになっている。いくつかの実施形態では、ユーザは、仮想コンピューティングシステム992を介して、及び/または別の顧客デバイス990上で、ストレージ仮想化サービスとして機能するストレージサービス910を介して仮想データストア916ボリュームをマウント及びアクセスすることができ、これらのボリュームはローカル(仮想化)ストレージ998としてユーザに見えることができる。
【0097】
図9には示されていないが、仮想化サービス(複数可)はまた、API(複数可)902を介してプロバイダネットワーク900内のリソースインスタンスからアクセスされ得る。例えば、顧客、アプライアンスサービスプロバイダ、または他のエンティティは、API902を介してプロバイダネットワーク900上のそれぞれの仮想ネットワーク内から仮想化サービスにアクセスして、仮想ネットワーク内または別の仮想ネットワーク内の1つ以上のリソースインスタンスの割り当てをリクエストすることができる。
【0098】
例示的なシステム
いくつかの実施形態では、本明細書に記載の技術の一部またはすべてを実装するシステムは、図10に示されるコンピュータシステム1000などの1つ以上のコンピュータアクセス可能な媒体を含むか、またはそれにアクセスするように構成される汎用コンピュータシステムを含み得る。図示した実施形態では、コンピュータシステム1000は、入力/出力(I/O)インターフェース1030を介してシステムメモリ1020に結合された1つ以上のプロセッサ1010を含む。コンピュータシステム1000は、I/Oインターフェース1030に結合されたネットワークインターフェース1040をさらに含む。図10は、コンピュータシステム1000を単一のコンピューティングデバイスとして示す一方で、様々な実施形態では、コンピュータシステム1000は、単一のコンピュータシステム1000として共に動作するように構成された1つのコンピューティングデバイスまたは任意数のコンピューティングデバイスを含み得る。
【0099】
様々な実施形態では、コンピュータシステム1000は、1つのプロセッサ1010を含むユニプロセッサシステム、またはいくつかのプロセッサ1010(例えば、2つ、4つ、8つ、または別の適切な数)を含むマルチプロセッサシステムであり得る。プロセッサ1010は、命令を実行することができる任意の適切なプロセッサであり得る。例えば、さまざまな実施形態では、プロセッサ1010は、x86、ARM、PowerPC、SPARC、またはMIPS ISA、または任意の他の適切なISAなどの様々な命令セットアーキテクチャ(ISA)のいずれかを実装する汎用または組み込みプロセッサであり得る。マルチプロセッサシステムでは、各プロセッサ1010は、必ずしもそうである必要はないが、一般的に同じISAを実装することができる。
【0100】
システムメモリ1020は、プロセッサ(複数可)1010によってアクセス可能な命令及びデータを格納することができる。様々な実施形態では、システムメモリ1020は、ランダムアクセスメモリ(RAM)、静的RAM(SRAM)、同期式動的RAM(SDRAM)、不揮発性/フラッシュ型メモリ、または任意の他の種類のメモリなど、任意の好適なメモリ技術を使用して実施され得る。例示された実施形態では、上述の方法、技術、及びデータなどの1つ以上の所望の機能を実装するプログラム命令及びデータが、データベースサービスコード1025及びデータ1026としてシステムメモリ1020内に格納されて示されている。
【0101】
一実施形態では、I/Oインターフェース1030は、プロセッサ1010、システムメモリ1020、及びネットワークインターフェース1040または他の周辺インターフェースを含むデバイス内の任意の周辺デバイスとの間のI/Oトラフィックを調整するように構成され得る。いくつかの実施形態では、I/Oインターフェース1030は、任意の必要なプロトコル、タイミング、または他のデータ変換を実行して、1つの構成要素(例えば、システムメモリ1020)からのデータ信号を別の構成要素(例えば、プロセッサ1010)によって使用するのに適したフォーマットに変換することができる。いくつかの実施形態では、I/Oインターフェース1030は、例えば、周囲構成要素相互接続(PCI)バス規格またはユニバーサルシリアルバス(USB)規格の変形など、様々なタイプのペリフェラルバスを介して接続されたデバイスのサポートを含み得る。いくつかの実施形態では、I/Oインターフェース1030の機能は、例えば、ノースブリッジ及びサウスブリッジなどの2つ以上の別個の構成要素に分割され得る。また、いくつかの実施形態では、システムメモリ1020へのインターフェースなど、I/Oインターフェース1030の機能性のいくつかまたはすべてが、プロセッサ1010に直接的に組み込まれ得る。
【0102】
ネットワークインターフェース1040は、コンピュータシステム1000と、例えば、図1に示されるような他のコンピュータシステムまたはデバイスなどの1つ以上のネットワーク1050に接続された他のデバイス1060との間でデータが交換され得るように構成され得る。様々な実施形態では、ネットワークインターフェース1040は、例えば、イーサネット(登録商標)ネットワークのタイプなどの任意の適切な有線または無線の一般的なデータネットワークを介した通信をサポートすることができる。さらに、ネットワークインターフェース1040は、アナログ音声ネットワークまたはデジタルファイバ通信ネットワークなどのテレコミュニケーション/テレフォニーネットワークを介し、ファイバチャネルSANなどのストレージエリアネットワーク(SAN)を介し、またはI/O、他の任意の適切なタイプのネットワーク及び/またはプロトコルを介した通信をサポートすることができる。
【0103】
いくつかの実施形態では、コンピュータシステム1000は、I/Oインターフェース1030(例えば、周辺構成要素相互接続エクスプレス(PCI-E)規格のバージョン、またはQuickPath相互接続(QPI)もしくはUltraPath相互接続(UPI)などの別の相互接続を実装するバス)を使用して接続された1つ以上のオフロードカード1070(1つ以上のプロセッサ1075を含み、場合によっては1つ以上のネットワークインターフェース1040を含む)を含む。例えば、いくつかの実施形態では、コンピュータシステム1000は、計算インスタンスをホストするホスト電子デバイス(例えば、ハードウェア仮想化サービスの一部として動作する)として機能することができ、1つ以上のオフロードカード1070は、ホスト電子デバイスで実行する計算インスタンスを管理できる仮想化マネージャを実行する。一例として、いくつかの実施形態では、オフロードカード(複数可)1070は、計算インスタンスの一時停止及び/または一時停止解除、計算インスタンスの起動及び/または終了、メモリ転送/コピー操作の実行などの計算インスタンス管理操作を実行することができる。これらの管理操作は、いくつかの実施形態では、コンピュータシステム1000の他のプロセッサ1010A~1010Nによって実行されるハイパーバイザと連携して(例えば、ハイパーバイザからのリクエストに応じて)オフロードカード(複数可)1070によって実行され得る。しかしながら、いくつかの実施形態では、オフロードカード(複数可)1070により実施される仮想化マネージャは、他のエンティティからの(例えば計算インスタンス自体からの)リクエストに対応し得、任意の別個のハイパーバイザと協働し得ない(または任意の別個のハイパーバイザにサービス提供し得ない)。
【0104】
いくつかの実施形態では、システムメモリ1020は、前述されたプログラム命令及びデータを格納するように構成されたコンピュータアクセス可能媒体の一実施形態であり得る。しかし、別の実施形態では、プログラム命令及び/またはデータは、異なる種類のコンピュータアクセス可能媒体上で受信、送信、または格納され得る。一般的に言えば、コンピュータアクセス可能な媒体は、非一時的な記憶媒体、または磁気または光学媒体などの記憶媒体、例えば、I/Oインターフェース1030を介してコンピュータシステム1000に結合されたディスクまたはDVD/CDなどを含み得る。非一時的なコンピュータアクセス可能な記憶媒体はまた、RAM(例えば、SDRAM、ダブルデータレート(DDR)SDRAM、SRAMなど)、読み取り専用メモリ(ROM)などの任意の揮発性または非揮発性媒体を含むことができ、これらは、システムメモリ1020または別のタイプのメモリとしてコンピュータシステム1000のいくつかの実施形態に含まれ得る。さらに、コンピュータアクセス可能な媒体は、ネットワークインターフェース1040を介して実装され得るような、ネットワーク及び/または無線リンクなどの通信媒体を介して伝達される、伝送媒体または電気、電磁、またはデジタル信号などの信号を含み得る。
【0105】
本明細書で論じられ、または提案される様々な実施形態は、多種多様な動作環境で実装されることができ、場合によっては、いくつかのアプリケーションのいずれかを動作させるために使用できる1つ以上のユーザコンピュータ、コンピューティングデバイス、または処理デバイスを含むことができる。ユーザまたはクライアントデバイスは、標準のオペレーティングシステムを実行するデスクトップまたはラップトップコンピュータや、モバイルソフトウェアを実行し、多数のネットワーク及びメッセージングプロトコルをサポートできるセルラー、ワイヤレス、及びハンドヘルドデバイスなど、任意の数の汎用パーソナルコンピュータを含むことができる。このようなシステムはまた、開発やデータベース管理などの目的で、様々な市販のオペレーティングシステムやその他の既知のアプリケーションのいずれかを実行する多数のワークステーションを含むことができる。これらのデバイスはまた、ダミー端末、シンクライアント、ゲームシステム、及び/またはネットワークを介して通信することができる他のデバイスなどの他の電子デバイスを含むことができる。
【0106】
ほとんどの実施形態は、伝送制御プロトコル/インターネットプロトコル(TCP/IP)、ファイル転送プロトコル(FTP)、ユニバーサルプラグアンドプレイ(UPnP)、ネットワークファイルシステム(NFS)、共通インターネットファイルシステム(CIFS)、エクステンシブルメッセージングアンドプレゼンスプロトコル(XMPP)、AppleTalk、等、などの様々な広く利用可能なプロトコルのいずれかを使用する通信をサポートするために当業者によく知られている少なくとも1つのネットワークを利用する。ネットワーク(複数可)は、例えば、ローカルエリアネットワーク(LAN)、ワイドエリアネットワーク(WAN)、仮想プライベートネットワーク(VPN)、インターネット、イントラネット、エクストラネット、公衆交換電話ネットワーク(PSTN)、赤外線ネットワーク、ワイヤレスネットワーク、及びそれらの任意の組み合わせを含むことができる。
【0107】
ウェブサーバを利用する実施形態では、ウェブサーバは、HTTPサーバ、ファイル転送プロトコル(FTP)サーバ、共通ゲートウェインターフェース(CGI)サーバ、データサーバ、Java(登録商標)サーバ、ビジネスアプリケーションサーバなどを含む、様々なサーバまたは中間層アプリケーションのいずれかを実行できる。サーバ(複数可)はまた、Java(登録商標)、C、C#、C++、またはPerl、Python、PHP、TCL、及びそれらの組み合わせなどの任意のスクリプト言語などの任意のプログラミング言語で記述された1つ以上のスクリプトまたはプログラムとして実装され得る1つ以上のウェブアプリケーションを実行することなど、ユーザデバイスからのリクエストに応答してプログラムまたはスクリプトを実行可能であり得る。サーバ(複数可)はまた、Oracle(登録商標)、Microsoft(登録商標)、Sybase(登録商標)、IBM(登録商標)などから市販されているものを含むがこれらに限定されないデータベースサーバを含むことができる。データベースサーバは、リレーショナルまたは非リレーショナル(例えば、「NoSQL」)、分散型または非分散型などであり得る。
【0108】
本明細書に開示される環境は、上述のように、様々なデータストアならびに他のメモリ及び記憶媒体を含むことができる。これらは、1つ以上のコンピュータのローカル(及び/または常駐)の記憶媒体上、またはネットワーク上のコンピュータのいずれかまたはすべてからリモートの記憶媒体上など、様々な場所に常駐できる。特定の一連の実施形態では、情報は、当業者によく知られているストレージエリアネットワーク(SAN)に存在し得る。同様に、コンピュータ、サーバ、またはその他のネットワークデバイスに起因する機能を実行するための任意の必要なファイルは、必要に応じてローカル及び/またはリモートに格納され得る。システムがコンピュータ化されたデバイスを含む場合、それぞれのそのようなデバイスは、バスを介して電気的に結合され得るハードウェア要素を含むことができ、これら要素は、例えば、少なくとも1つの中央処理ユニット(CPU)、少なくとも1つの入力デバイス(例えば、マウス、キーボード、コントローラ、タッチスクリーン、またはキーパッド)、及び/または少なくとも1つの出力デバイス(例えば、ディスプレイデバイス、プリンタ、スピーカ)を含む。このようなシステムはまた、ディスクドライブ、光ストレージデバイス、ならびにランダムアクセスメモリ(RAM)または読み取り専用メモリ(ROM)及びリムーバブルメディアデバイス、メモリカード、フラッシュカード、等のようなソリッドステートストレージデバイスなどの1つ以上のストレージデバイスを含むことができる。
【0109】
そのようなデバイスはまた、コンピュータ可読記憶媒体リーダ、通信デバイス(例えば、モデム、ネットワークカード(無線または有線)、赤外線通信デバイスなど)、及び上述のようなワーキングメモリを含むことができる。コンピュータ可読記憶媒体リーダは、リモート、ローカル、固定、及び/または取り外し可能な記憶装置、ならびにコンピュータ可読情報を一時的及び/またはより恒久的に収容、格納、送信、及び取り出すための記憶媒体を表す、コンピュータ可読記憶媒体と接続され得るか、または受信するように構成され得る。システム及び様々なデバイスはまた、通常、オペレーティングシステム及びクライアントアプリケーションやウェブブラウザなどのアプリケーションプログラムを含む、少なくとも1つのワーキングメモリデバイス内に配置された多数のソフトウェアアプリケーション、モジュール、サービス、またはその他の要素を含む。代替的な実施形態は、上述のものからの多数の変形を有し得ることが理解されるべきである。例えば、カスタマイズされたハードウェアもまた使用されることがあり、及び/または特定の要素が、ハードウェア、(アプレットなどのポータブルソフトウェアを含む)ソフトウェア、またはその両方に実装されることもある。さらに、ネットワーク入力/出力デバイスなどの他のコンピューティングデバイスへの接続が採用され得る。
【0110】
コードまたはコードの一部を含むための記憶媒体及びコンピュータ可読媒体は、記憶媒体及び通信媒体を含む、当技術分野で知られているまたは使用される任意の適切な媒体を含むことができ、それらは限定されるものでないが、揮発性及び非揮発性の、取り外し可能及び非取り外し可能な、任意の方法または技術で実装された情報の格納及び/または送信のための媒体であり、例えば、コンピュータ可読命令、データ構造、プログラムモジュール、またはRAM、ROM、電気的に消去可能なプログラム可能な読み取り専用メモリ(EEPROM)、フラッシュメモリまたは他の記憶技術、コンパクトディスク読み取り専用メモリ(CD-ROM)、デジタル多用途ディスク(DVD)またはその他の光ストレージ、磁気カセット、磁気テープ、磁気ディスクストレージもしくはその他の磁気ストレージデバイス、または所望の情報を格納するために使用され得、かつシステムデバイスからアクセスされ得る任意の他の媒体を含む他のデータである。本明細書に提供される開示及び教示に基づいて、当業者は、多様な実施形態を実装するための他の方法及び/または手法を理解するであろう。
【0111】
上記の説明では、様々な実施形態が説明された。説明目的で、実施形態の完全な理解を提供するために、具体的な構成及び詳細が明らかにされた。しかしながら、実施形態は具体的な詳細を伴わずに実施され得ることは、当業者には明らかであろう。さらに、説明される実施形態を不明瞭にしないために、周知の特徴は省略または簡略化され得る。
【0112】
本明細書では、括弧で囲まれたテキスト及び破線(例えば大きい破線、小さい破線、鎖線、及び点)で囲まれたブロックを使用して、いくつかの実施形態に付加的特徴を追加する任意の動作が説明される。しかしながら、そのような表記は、これらが唯一の選択肢であるか、または任意の操作であること、及び/または特定の実施形態において実線の境界を有するブロックが任意ではないことを意味すると解釈されるべきではない。
【0113】
接尾辞が付いた参照番号(例、918A~918N)は、様々な実施形態で参照エンティティの1つまたは複数のインスタンスが存在する可能性があることを示すために使用され得、複数のインスタンスが存在する場合、それぞれが同一である必要はないが、代わりにいくつかの一般的な特徴を共有するか、共通の方法で動作する。さらに、使用される特定の接尾辞は、特に反対の指示がない限り、特定の数のエンティティが存在することを意味するものではない。従って、同じまたは異なる接尾辞文字を使用する2つのエンティティは、様々な実施形態において同じ数のインスタンスを有しても有さなくてもよい。
【0114】
「一実施形態」、「実施形態」、「例示的な実施形態」などへの言及は、説明される実施形態が特定の特徴、構造、または特性を含み得ることを示すが、あらゆる実施形態が必ずしも特定の特徴、構造、または特性を含むわけではあり得ない。さらに、このような句は、必ずしも同じ実施形態を指すわけではない。さらに、特定の特徴、構造、または特性が実施形態に関連して説明される場合、他の実施形態と関連してこのような特徴、構造、または特性を備えることは、明確に記載されているか否かに関わらず、当業者の知識の範囲内であると考えられる。
【0115】
さらに、前述の様々な実施形態では、特に断りのない限り、「A、B、またはCのうちの少なくとも1つ」という句などの選言的表現は、A、B、またはCのいずれか、あるいはこれらの任意の組み合わせ(例えばA、B、及び/またはC)を意味すると理解されることが意図される。よって、選言的表現は、所与の実施形態に少なくとも1つのA、少なくとも1つのB、または少なくとも1つのCがそれぞれ存在する必要があることを意味する意図はなく、またそのように理解されるべきではない。
【0116】
開示される技術の少なくともいくつかの実施形態は、以下の条項を考慮して説明され得る。
1.データベースサービスにおいてリクエストを受信することであって、前記リクエストが、前記データベースサービス内でデータセットの少なくとも一部分に実行される構造化照会言語(SQL)クエリを含み、前記リクエストが、前記SQLクエリの処理で使用される機械学習サービスを識別する、前記受信することと、
前記SQLクエリの少なくとも一部分を実行するために仮想オペレータを作成することと、
前記仮想オペレータによって実行される前記SQLクエリの前記一部分に少なくとも基づいて、機械学習リクエストの第1のバッチを生成することと、
機械学習リクエストの前記第1のバッチを非同期リクエストハンドラの入力バッファに送信することであって、前記非同期リクエストハンドラが、機械学習リクエストの前記第1のバッチに基づいて、機械学習リクエストの第2のバッチを生成する、前記送信することと、
前記非同期リクエストハンドラの出力バッファから複数の機械学習応答を取得することであって、前記機械学習サービスによって生成された前記機械学習応答が、機械学習リクエストの前記第2のバッチを受信することに応答して機械学習モデルを使用している、前記取得することと、
前記機械学習応答に基づいてクエリ応答を生成することと、
を含む、コンピュータ実装方法。
【0117】
2.前記SQLクエリに少なくとも基づいて、機械学習リクエストの第1のバッチを生成することが、
機械学習リクエストに関連付けられた記録の数を最小化するクエリ実行計画を決定することをさらに含む、条項1に記載のコンピュータ実装方法。
【0118】
3.機械学習リクエストの前記第2のバッチが処理されたときに、前記機械学習サービスが、前記出力バッファにフラグを追加する、条項1または2のいずれか一項に記載のコンピュータ実装方法。
【0119】
4.機械学習リクエストの第1のバッチを生成するために、一時データ構造を使用してデータベースサービスに格納されたデータにクエリの少なくとも一部分を実行することであって、前記クエリが機械学習サービスを識別する、前記実行することと、
機械学習リクエストの前記第1のバッチに基づいて、かつ、前記機械学習サービスに基づいて、機械学習リクエストの第2のバッチを生成することと、
複数の機械学習応答を取得することであって、前記機械学習応答が、機械学習リクエストの前記第2のバッチを受信することに応答して、機械学習モデルを使用して、前記機械学習サービスによって生成される、前記取得することと、
を含む、コンピュータ実装方法。
【0120】
5.前記クエリが、構造化照会言語(SQL)クエリである、条項4に記載のコンピュータ実装方法。
【0121】
6.前記SQLクエリが、前記機械学習サービスへのアプリケーションプログラミングインターフェース(API)コールを使用して前記機械学習を識別する、条項5に記載のコンピュータ実装方法。
【0122】
7.前記機械学習サービスが、前記APIを公開し、複数のユーザから受信したリクエストに応答して前記機械学習モデルを用いた推論を実行する、条項6に記載のコンピュータ実装方法。
【0123】
8.前記クエリが、前記機械学習サービスによってホストされた前記機械学習モデルに関連付けられたエンドポイントを用いて前記機械学習サービスを識別する、条項4~7のいずれか一項に記載のコンピュータ実装方法。
【0124】
9.機械学習リクエストの前記第2のバッチが、少なくとも1つのネットワークを介して前記機械学習サービスに送信されている、条項4~8のいずれか一項に記載のコンピュータ実装方法。
【0125】
10.前記機械学習モデルのための前記機械学習サービスにリクエストを送信することと、
前記機械学習サービスから前記機械学習モデルを受信することであって、前記機械学習モデルが、前記機械学習サービスによって、前記データベースサービスのためにコンパイルされている、前記受信することと、をさらに含み、
機械学習リクエストの前記第2のバッチが、前記データベースサービスによってホストされた前記機械学習モデルに送信されている、条項4~9のいずれか一項に記載のコンピュータ実装方法。
【0126】
11.前記データベースサービスの複数のノード内に前記機械学習モデルのコピーを格納することをさらに含み、前記クエリの処理の間に前記データベースサービスの特定のノードによって生成された機械学習リクエストが、前記特定のノードに格納された前記機械学習モデルの前記コピーに送信されている、条項10に記載のコンピュータ実装方法。
【0127】
12.前記第2のバッチサイズが、前記第1のバッチサイズと異なっており、前記第2のバッチサイズが、前記機械学習サービスに関連付けられている、条項4~11のいずれか一項に記載のコンピュータ実装方法。
【0128】
13.機械学習リクエストの前記第1のバッチが、複数の異なるユーザから受信した複数のクエリに応答して生成された機械学習リクエストを含む、条項4~12のいずれか一項に記載のコンピュータ実装方法。
【0129】
14.第1の1つ以上の電子デバイスによって実装された機械学習サービスと、
第2の1つ以上の電子デバイスによって実装されたデータベースサービスと、を含むシステムであって、前記データベースサービスが、命令を含み、前記命令は、実行されると前記データベースに、機械学習リクエストの第1のバッチを生成するために、一時データ構造を使用してデータベースサービスに格納されたデータにクエリの少なくとも一部分を実行することであって、前記クエリが前記機械学習サービスを識別する、前記実行することと、
機械学習リクエストの前記第1のバッチに基づいて、かつ、前記機械学習サービスに基づいて、機械学習リクエストの第2のバッチを生成することと、
複数の機械学習応答を取得することであって、前記機械学習応答が、機械学習リクエストの前記第2のバッチを受信することに応答して、機械学習モデルを用いて、前記機械学習サービスによって生成される、前記取得することと、
を行わせる、前記システム。
【0130】
15.前記クエリが、構造化照会言語(SQL)クエリである、条項14に記載のシステム。
【0131】
16.前記SQLクエリが、前記機械学習サービスへのアプリケーションプログラミングインターフェース(API)コールを用いて前記機械学習を識別する、条項15に記載のシステム。
【0132】
17.前記機械学習サービスが、前記APIを公開し、複数のユーザから受信したリクエストに応答して前記機械学習モデルを用いた推論を実行する、条項16に記載のシステム。
【0133】
18.前記クエリが、前記機械学習サービスによってホストされた前記機械学習モデルに関連付けられたエンドポイントを用いて前記機械学習サービスを識別する、条項14~17のいずれか一項に記載のシステム。
【0134】
19.機械学習リクエストの前記第2のバッチが、少なくとも1のネットワークを介して前記機械学習サービスに送信されている、条項14~18のいずれか一項に記載のシステム。
【0135】
20.前記機械学習モデルのための前記機械学習サービスにリクエストを送信することと、
前記機械学習サービスから前記機械学習モデルを受信することであって、前記機械学習モデルが、前記機械学習サービスによって前記データベースサービスのためにコンパイルされ、
機械学習リクエストの前記第2のバッチは、前記データベースサービスによってホストされた前記機械学習モデルに送信されている、前記受信することと、
前記データベースサービスの複数のノード内に前記機械学習モデルのコピーを格納することであって、前記クエリの処理の間に前記データベースサービスの特定のノードによって生成された機械学習リクエストが、前記特定のノードに格納された前記機械学習モデルの前記コピーに送信されている、前記格納することと、
をさらに含む、条項14~19のいずれか一項に記載のシステム。
【0136】
明細書及び図面は、従って、限定的ではなく例示的な意味で考えられるべきである。しかしながら、特許請求の範囲に明記される本開示のより広い趣旨及び範囲から逸脱することなく、明細書及び図面に様々な修正及び変更が行われてもよいことは、明らかである。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10