(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2021-12-20
(45)【発行日】2022-01-17
(54)【発明の名称】ネットワークアクセス可能な機械学習モデル訓練またはホスティングシステム
(51)【国際特許分類】
G06N 20/00 20190101AFI20220107BHJP
【FI】
G06N20/00
(21)【出願番号】P 2020528075
(86)(22)【出願日】2018-11-20
(86)【国際出願番号】 US2018062064
(87)【国際公開番号】W WO2019104063
(87)【国際公開日】2019-05-31
【審査請求日】2020-05-21
(32)【優先日】2017-11-22
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】506329306
【氏名又は名称】アマゾン テクノロジーズ インコーポレイテッド
(74)【代理人】
【識別番号】100114890
【氏名又は名称】アインゼル・フェリックス=ラインハルト
(74)【代理人】
【識別番号】100098501
【氏名又は名称】森田 拓
(74)【代理人】
【識別番号】100116403
【氏名又は名称】前川 純一
(74)【代理人】
【識別番号】100135633
【氏名又は名称】二宮 浩康
(74)【代理人】
【識別番号】100162880
【氏名又は名称】上島 類
(72)【発明者】
【氏名】トマス アルバート フォールヘイバー ジュニア
(72)【発明者】
【氏名】ステファノ ステファニ
(72)【発明者】
【氏名】オーウェン トマス
【審査官】松崎 孝大
(56)【参考文献】
【文献】特表2017-520068(JP,A)
【文献】特表2017-524183(JP,A)
【文献】米国特許出願公開第2017/0220949(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06N 20/00
(57)【特許請求の範囲】
【請求項1】
訓練モデルデータストアと、
第1の仮想マシンインスタンスをホスティングする第1のコンピューティングデバイスと、
を含むシステムであって、
前記第1のコンピューティングデバイスは、コンピュータ実行可能命令を含み、前記コンピュータ実行可能命令は、実行されると、前記第1のコンピューティングデバイスに、
ユーザデバイスから、コンテナイメージの指示子と、訓練データの指示子と、1つ以上の第1のハイパーパラメータ値と、を含む訓練要求を取得させ、
前記第1の仮想マシンインスタンス内で機械学習(ML)訓練コンテナを初期化させ、前記ML訓練コンテナは、前記コンテナイメージから形成され、
前記第1の仮想マシンインスタンスに、前記1つ以上の第1のハイパーパラメータ値にしたがって前記ML訓練コンテナ内に保存されたコードを実行させ、前記コードの実行により、前記第1の仮想マシンインスタンスが、前記訓練データを使用して機械学習モデルを訓練し、前記機械学習モデルの特性を表すモデルデータを生成し、
前記モデルデータを前記訓練モデルデータストアに保存させる、
システム。
【請求項2】
前記コンピュータ実行可能命令は、実行されると、前記第1のコンピューティングデバイスに、さらに、
訓練中の前記機械学習モデルを修正するための修正要求であって、第2のコンテナイメージの指示子を含む前記修正要求を取得させ、
前記第1の仮想マシンインスタンスに前記コードの実行を停止させ、
前記ML訓練コンテナを、前記第2のコンテナイメージを使用して形成された第2のML訓練コンテナに置き換え、
前記第1の仮想マシンインスタンスに前記第2のML訓練コンテナ内に保存された第2のコードを実行させ、前記第2のコードの実行により、前記第1の仮想マシンインスタンスが、前記機械学習モデルを再訓練し、第2のモデルデータを生成する、
請求項1に記載のシステム。
【請求項3】
前記コンピュータ実行可能命令は、実行されると、前記第1のコンピューティングデバイスに、さらに、
1つ以上の第2のハイパーパラメータ値を取得させ、
前記第1の仮想マシンインスタンスに、前記1つ以上の第1のハイパーパラメータ値の代わりに前記1つ以上の第2のハイパーパラメータ値にしたがって前記ML訓練コンテナ内に保存された前記コードを実行させる、
請求項1に記載のシステム。
【請求項4】
前記コンピュータ実行可能命令は、実行されると、前記第1のコンピューティングデバイスに、さらに
入力データと既知の結果とを含む評価データを取得させ、
前記入力データを入力として使用して前記モデルデータによって定められた前記機械学習モデルを実行してモデル出力データを生成させ、
前記モデル出力データと前記既知の結果とを比較して前記機械学習モデルの品質メトリックを決定させ、
前記品質メトリックを保存させる、
請求項1に記載のシステム。
【請求項5】
前記コンピュータ実行可能命令は、実行されると、前記第1のコンピューティングデバイスに、さらに、
前記第1の仮想マシンインスタンス内で第2のML訓練コンテナを初期化させ、前記第2のML訓練コンテナは、前記コンテナイメージから形成され、
前記第1の仮想マシンインスタンスに、前記ML訓練コンテナ内に保存された前記コードの前記実行と並列に、前記1つ以上の第1のハイパーパラメータ値にしたがって前記第2のML訓練コンテナ内に保存された第2のコードを実行させる、
請求項1に記載のシステム。
【請求項6】
前記第2のコードの実行により、前記第1の仮想マシンインスタンスは、第2のモデルデータを生成し、前記モデルデータと前記第2のモデルデータとの組み合わせは、前記機械学習モデルの訓練済みのバージョンの特性を定める、
請求項5に記載のシステム。
【請求項7】
コンピュータ実施方法であって、
ネットワークを通じてユーザデバイスから、コンテナイメージの指示子と訓練データの指示子とを含む訓練要求を受信するステップと、
第1のコンピューティングデバイスによってホスティングされた第1の仮想マシンインスタンス内で機械学習(ML)訓練コンテナを初期化するステップであって、前記ML訓練コンテナは、前記コンテナイメージから形成されるステップと、
前記第1の仮想マシンインスタンスに、前記ML訓練コンテナ内に保存されたコードを実行させるステップであって、前記コードの実行により、前記第1の仮想マシンインスタンスは、前記訓練データを使用して機械学習モデルを訓練し、前記機械学習モデルの特性を表すモデルデータを生成するステップと、
を含むコンピュータ実施方法。
【請求項8】
訓練中の前記機械学習モデルを修正するための修正要求であって、第2のコンテナイメージの指示子を含む前記修正要求を受信するステップと、
前記第1の仮想マシンインスタンスに前記コードの実行を停止させるステップと、
前記第1の仮想マシンインスタンス内で第2のML訓練コンテナを初期化するステップであって、前記第2のML訓練コンテナは、前記
第2のコンテナイメージを使用して形成されるステップと、
前記第1の仮想マシンインスタンスに前記第2のML訓練コンテナ内に保存された第2のコードを実行させるステップであって、前記第2のコードの実行により、前記第1の仮想マシンインスタンスは、前記機械学習モデルを再訓練し、第2のモデルデータを生成するステップと、
をさらに含む、
請求項7に記載のコンピュータ実施方法。
【請求項9】
入力データと既知の結果とを含む評価データを取得するステップと、
前記入力データを入力として使用して前記モデルデータによって定められた前記機械学習モデルを実行してモデル出力データを生成するステップと、
前記モデル出力データと前記既知の結果とを比較して前記機械学習モデルの品質メトリックを決定するステップと、
をさらに含む、
請求項7に記載のコンピュータ実施方法。
【請求項10】
前記第1の仮想マシンインスタンス内で第2のML訓練コンテナを初期化するステップであって、前記第2のML訓練コンテナは、前記コンテナイメージから形成されるステップと、
前記第1の仮想マシンインスタンスに、前記ML訓練コンテナ内に保存された前記コードの前記実行と並列に、前記第2のML訓練コンテナ内に保存された第2のコードを実行させるステップであって、前記第2のコードの実行により、前記第1の仮想マシンインスタンスが第2のモデルデータを生成し、前記モデルデータと前記第2のモデルデータとの組み合わせは、前記機械学習モデルの訓練済みのバージョンの特性を定めるステップと、
をさらに含む、
請求項7に記載のコンピュータ実施方法。
【請求項11】
第2のコンピューティングデバイスによってホスティングされた第2の仮想マシンインスタンス内でMLスコアリングコンテナを初期化するステップであって、前記MLスコアリングコンテナは、前記コンテナイメージから形成されるステップと、
前記モデルデータを前記MLスコアリングコンテナに保存するステップと、
前記ユーザデバイスから、入力データを含む実行要求を受信するステップと、
前記入力データを使用して前記MLスコアリングコンテナに保存された第2のコードを実行して出力を生成するステップと、
前記出力を前記ユーザデバイスに送信するステップと、
をさらに含む、
請求項7に記載のコンピュータ実施方法。
【請求項12】
前記訓練要求は、1つ以上の第1のハイパーパラメータ値をさらに含む、
請求項7に記載のコンピュータ実施方法。
【請求項13】
前記第1の仮想マシンインスタンスに前記ML訓練コンテナ内に保存されたコードを実行させるステップは、前記第1の仮想マシンインスタンスに、前記1つ以上の第1のハイパーパラメータ値にしたがって前記ML訓練コンテナ内に保存された前記コードを実行させるステップをさらに含む、
請求項12に記載のコンピュータ実施方法。
【請求項14】
1つ以上の第2のハイパーパラメータ値を取得するステップと、
前記第1の仮想マシンインスタンスに、前記1つ以上の第1のハイパーパラメータ値ではなく前記1つ以上の第2のハイパーパラメータ値にしたがって前記ML訓練コンテナ内に保存された前記コードを実行させるステップと、
をさらに含む、
請求項13に記載のコンピュータ実施方法。
【請求項15】
前記訓練要求は、前記第1のコンピューティングデバイスのグラフィック処理ユニット(GPU)インスタンスタイプ、前記第1のコンピューティングデバイスの中央処理ユニット(CPU)インスタンスタイプ、前記第1のコンピューティングデバイスに割り当てるメモリ量または前記第1の仮想マシンインスタンスの種類の少なくとも1つをさらに含む、
請求項7に記載のコンピュータ実施方法。
【発明の詳細な説明】
【背景技術】
【0001】
コンピューティングデバイスは、データを交換するために通信ネットワークを利用することができる。企業または組織は、業務を支援するために、またはサービスを第三者に提供するために複数のコンピューティングデバイスを相互接続するコンピュータネットワークを運営する。コンピューティングシステムは、単一の地理的位置に位置付けられるか、または(例えば、プライベートもしくはパブリックな通信ネットワークを介して相互接続された)複数の別々の地理的位置に位置付けられる場合がある。具体的には、本明細書では一般に「データセンタ」と呼ばれるデータセンタまたはデータ処理センタは、コンピューティングリソースをデータセンタのユーザに提供するために、複数の相互接続されたコンピューティングシステムを含んでもよい。データセンタリソースの利用の増加を促進するために、仮想化技術は、単一の物理コンピューティングデバイスが、データセンタのユーザに対して独立したコンピューティングデバイスとして見え、動作する仮想マシンの1つ以上のインスタンスをホスティングすることを可能にする。
【0002】
図面全体で、参照番号は、参照された要素間の対応を示すために再度使用され得る。図面は、本明細書で説明される例示的な実施形態を示すために提供され、本開示の範囲を限定することを意図していない。
【図面の簡単な説明】
【0003】
【
図1】いくつかの実施形態における、機械学習モデルが訓練され、ホスティングされる例示的な動作環境のブロック図である。
【
図2】いくつかの実施形態にしたがった、機械学習モデルを訓練するために動作環境の構成要素によって実行される動作を示す
図1の動作環境のブロック図である。
【
図3】いくつかの実施形態にしたがった、機械学習モデルの訓練を修正するために動作環境の構成要素によって実行される動作を示す
図1の動作環境のブロック図である。
【
図4】いくつかの実施形態にしたがった、機械学習モデル訓練プロセスを並列化するために動作環境の構成要素によって実行される動作を示す
図1の動作環境のブロック図である。
【
図5A】いくつかの実施形態にしたがった、訓練済みの機械学習モデルを展開するために動作環境の構成要素によって実行される動作を示す
図1の動作環境のブロック図である。
【
図5B】いくつかの実施形態にしたがった、訓練済みの機械学習モデルを実行するために動作環境の構成要素によって実行される動作を示す
図1の動作環境のブロック図である。
【
図6】いくつかの実施形態にしたがった、関連する機械学習モデルを実行するために動作環境の構成要素によって実行される動作を示す
図1の動作環境のブロック図である。
【
図7】いくつかの実施形態にしたがった、モデル訓練システムによって例示的に実施される機械学習モデル訓練ルーチンを表したフロー図である。
【
図8】本出願にしたがって機械学習モデルを訓練または/またはホスティングする、モデル訓練システムまたはモデルホスティングシステムなどの、例示的なモデルシステムのアーキテクチャのいくつかの実施形態を表す。
【
図9】本出願にしたがってデータを受信し、データを準備し、モデル訓練システムに訓練要求を送信し、モデルホスティングシステムに展開要求または/または実行要求を送信することができる例示的なエンドユーザデバイスのアーキテクチャのいくつかの実施形態を表す。
【発明を実施するための形態】
【0004】
上述したように、実施形態は、単一の物理コンピューティングデバイス(または複数の物理コンピューティングデバイス)が、ユーザに対して独立のコンピューティングデバイスとして見え、動作する仮想マシンの1つ以上のインスタンスをホスティングすることを可能にする。いくつかの実施形態では、サービス提供者は、仮想化技術を活用して、本明細書で説明されるネットワークアクセス可能な機械学習モデル訓練またはホスティングシステムなどの、ネットワークアクセス可能な機械学習サービスを提供することができる。例えば、サービスの提供者は、ネットワークを介してユーザデバイスにアクセス可能な1つ以上の物理コンピューティングデバイスを運営することができる。これらの物理コンピューティングデバイス(複数可)は、ユーザデバイスから受信したコマンドに応答して機械学習モデルを訓練または/または実行するように構成された仮想マシンインスタンスをホスティングすることができる。
【0005】
本明細書で説明される実施形態は、機械学習モデルを訓練するように構成された従来のコンピューティングシステムと比べていくつかの技術的な利点を提供する。例えば、機械学習モデルを訓練することにより、大量の処理能力を利用することになり得る。その理由は、機械学習モデルが非常に複雑になる可能性があり、モデルを訓練するために使用されるデータ量が(例えば、ギガバイト、テラバイト、ペタバイトなどの)非常に大きいものになり得るためである。したがって、あるユーザは、訓練を実行するために、物理的に大きい従来のコンピューティングマシンを入手する。しかしながら、ユーザは、特定のソフトウェアを用いてこれらの従来のコンピューティングマシンをカスタマイズして所望のモデル訓練を実行してもよい。他方、本明細書で説明される実施形態は、ユーザが大量のカスタマイズされたコードを生成し、実装する必要がない環境を提供する。むしろ、ユーザは、単に、訓練するための機械学習モデルの種類を定めるのに過不足のない情報を提供することができ、本明細書で説明される実施形態は、自動的に仮想マシンインスタンスを初期化し、コンテナを初期化し、かつ/またはモデル訓練サービスを実施するための他の動作を実行することができる。
【0006】
他方、本明細書で説明される実施形態は、いくつかの実施形態では、様々な物理コンピューティングデバイスにわたって訓練を分散させるように構成される。したがって、モデルを訓練するための時間を大幅に減少させることができる。
【0007】
結果として得られた訓練済みのモデルが不正確であることが分かった場合、有益な時間が失われ得る。他方、本明細書で説明される実施形態は、訓練プロセスの間にモデルを周期的に評価し、評価に対応するメトリックを出力することができる。したがって、ユーザは、例えば、訓練中の機械学習モデルが不正確であるかどうか、または訓練ジョブを停止することが有益であり得るかどうかを判定するためにメトリックを調べることができる。
【0008】
従来のコンピューティングマシンが既に別のモデルを訓練している途中である場合、ユーザは、機械学習モデルの訓練の大幅な遅延に遭遇し得る。他方、本明細書で説明される実施形態は、いくつかの実施形態では、コンピューティングリソースを動的に割り当て、ユーザの需要に基づいてモデル訓練を実行する。したがって、単一のユーザまたは複数のユーザが、重複する期間中に複数の機械学習モデルを訓練することを望む場合、トレーニングを同時に実行することができる。
【0009】
しかしながら、これら従来のサービスは、一般に、単一の種類の機械学習モデルに制限され、所定のデータ入力フォーマットを許容するのみである。他方、ユーザは、様々な種類の入力データフォーマットを受信することが可能な多くの様々な種類の機械学習モデルを訓練または使用することを望む場合がある。これらの従来のサービスとは異なり、本明細書で説明される実施形態は、機械学習モデルの種類、機械学習モデルを定めるプログラミング言語、機械学習モデルのデータ入力フォーマット、または/または機械学習モデルのデータ出力フォーマットに関わりなく機械学習モデルを訓練または実行することができる柔軟な実行環境を提供する。
【0010】
例示的な機械学習モデル訓練またはホスティング環境
図1は、いくつかの実施形態における、機械学習モデルが訓練され、ホスティングされる例示的な動作環境100のブロック図である。動作環境100は、エンドユーザデバイス102、モデル訓練システム120、モデルホスティングシステム140、訓練データストア160、訓練メトリックデータストア165、コンテナデータストア170、訓練モデルデータストア175またはモデル予測データストア180を含む。
【0011】
例示的なモデル訓練システム
いくつかの実施形態では、ユーザは、ユーザデバイス102を経由してモデル訓練システム120と対話することにより、モデル訓練システム120に1つ以上の機械学習モデルを訓練させるデータを提供する。ユーザデバイス102は、モデル訓練システム120のフロントエンド129を介してモデル訓練システム120と対話することができる。例えば、ユーザデバイス102は、訓練要求をフロントエンド129に提供することができる。この訓練要求は、コンテナイメージ(もしくは複数のコンテナイメージ)、入力データの指示子(例えば、入力データのアドレスもしくは位置)、ハイパーパラメータ値(例えば、アルゴリズムがどのように動作するか、並列に動作するアルゴリズムはいくつか、データを区別するためのクラスタはいくつかなどを示す値)、または/または機械学習モデルを訓練するコンピューティングマシンについて記載した情報(例えば、グラフィック処理ユニット(GPU)インスタンスタイプ、中央処理ユニット(CPU)インスタンスタイプ、割り当てるメモリ量、訓練に使用する仮想マシンインスタンスの種類など)を含む。
【0012】
いくつかの実施形態では、コンテナイメージは、1つ以上の層を含むことができる。ここで、各層は実行可能命令を表す。実行可能命令の一部または全ては、合わせて、機械学習モデルを定めるアルゴリズムを表す。実行可能命令(例えば、アルゴリズム)は、任意のプログラミング言語(例えば、Python、Ruby、C++、Javaなど)で記述することができる。いくつかの実施形態では、アルゴリズムは、ユーザデバイス102を介して、アルゴリズムのリポジトリ(例えば、ネットワークアクセス可能なマーケットプレイス、機械学習訓練サービスによって提供されるデータストアなど)からユーザによって事前に生成され、取得される。いくつかの実施形態では、アルゴリズムは、ユーザによって生成される。
【0013】
いくつかの実施形態では、訓練要求においてコンテナイメージを提供する代わりに、ユーザデバイス102は、訓練要求において、任意のプログラミング言語で記述されたアルゴリズムを提供するのみである。以下でより詳細に説明されるように、モデル訓練システム120は、次いで、機械学習モデルを訓練するための仮想マシンインスタンス122に最終的にロードされるコンテナにアルゴリズムをパッケージ化する。
【0014】
いくつかの実施形態では、訓練要求においてコンテナイメージを提供する代わりに、ユーザデバイス102は、訓練要求において、コンテナイメージの指示子(例えば、コンテナイメージのアドレスまたは保存された位置の指示)を提供する。例えば、コンテナイメージは、コンテナデータストア170に保存することができる。モデル訓練システム120は、次いで、指示された位置からコンテナイメージを読み出し、読み出されたコンテナイメージを使用してコンテナを作成することができる。以下でより詳細に説明されるように、コンテナは、次いで、機械学習モデルを訓練するための仮想マシンインスタンス122にロードされる。
【0015】
モデル訓練システム120は、いくつかの実施形態では、ユーザデバイス102によって提供された情報を使用して、1つ以上の事前に構築された仮想マシンインスタンス122において機械学習モデルを訓練することができる。特に、モデル訓練システム120は、1つ以上のコンピューティングネットワーク(図示せず)を使用して相互接続された単一の物理コンピューティングデバイスまたは複数の物理コンピューティングデバイスを含む。ここで、物理コンピューティングデバイス(複数可)は、1つ以上の仮想マシンインスタンス122をホスティングする。モデル訓練システム120は、ユーザデバイス102によって提供された機械学習モデルを訓練するコンピューティングマシンについて記載した情報に基づいて計算容量(例えば、以下でより詳細に説明されるコンテナ、インスタンスなど)の入手または設定をハンドリングすることができる。以下でより詳細に説明されるように、モデル訓練システム120は、次いで、計算容量を使用して機械学習モデルを訓練することができる。モデル訓練システム120は、フロントエンド129を介してユーザデバイス102から受信した訓練要求の量に基づいて自動的に規模を拡大または縮小することができる。それにより、過剰利用(例えば、非常に少ないコンピューティングリソースを入手し、性能に問題をきたすこと)、または過少利用(例えば、機械学習モデルを訓練するのに必要であるよりも多くのコンピューティングリソースを入手し、したがって余分に支払うこと)について心配しなければならない負担からユーザを開放する。
【0016】
いくつかの実施形態では、仮想マシンインスタンス122は、タスクを実行するために利用される。例えば、このようなタスクは、機械学習モデルを訓練することを含むことができる。
図1に示すように、各仮想マシンインスタンス122は、オペレーティングシステム(OS)124、言語ランタイム126または1つ以上の機械学習(ML)訓練コンテナ130を含む。一般に、ML訓練コンテナ130は、仮想マシンインスタンス上で利用可能なリソースを使用してそのインスタンス内に作成される論理ユニットであり、タスクの実行をインスタンスに発生する他のプロセス(例えば、タスクの実行)から分離するために利用することができる。いくつかの実施形態では、ML訓練コンテナ130は、1つ以上のコンテナイメージまたは上部コンテナ層から形成される。各コンテナイメージは、1つ以上のイメージ層をさらに含む。ここで、各イメージ層は実行可能命令を表す。上述したように、実行可能命令の一部または全ては、合わせて、機械学習モデルを定めるアルゴリズムを表す。ML訓練コンテナ130に対してなされた変更(例えば、新規ファイルの作成、既存ファイルの修正、ファイルの削除など)は、上部コンテナ層に保存される。ML訓練コンテナ130が削除された場合、上部コンテナ層も削除される。しかしながら、削除されたML訓練コンテナ130の一部を形成するコンテナイメージ(複数可)は、変更されないままにすることができる。ML訓練コンテナ130は、例えば、Linuxコンテナとして実装することができる。
【0017】
いくつかの実施形態では、ML訓練コンテナ130は、それぞれ、OS132、ランタイム134またはコード136の個々のコピーを含む。OS132または/またはランタイム134は、ML訓練コンテナ130を形成するために使用されるコンテナイメージの少なくとも一部を形成する1つ以上の実行可能命令(例えば、コンテナイメージから形成されたコンテナにおいて動作するオペレーティングシステムまたは/またはランタイムを定めるコンテナイメージ内の実行可能命令(複数可))によって定めることができる。コード136は、ML訓練コンテナ130を形成するために使用されるコンテナイメージの少なくとも一部を形成する1つ以上の実行可能命令を含む。例えば、コード136は、機械学習モデルを定めるアルゴリズムを表すコンテナイメージ内の実行可能命令を含む。OS132または/またはランタイム134は、機械学習モデルの訓練を開始するための命令に応答してコード136を実行するように構成される。以下でより詳細に説明されるように、コード136を実行すると、結果としてモデルデータが生成される。
【0018】
いくつかの実施形態では、コード136は、様々な機械学習モデルを定めるアルゴリズムを表す実行可能命令を含む。例えば、コード136は、第1の機械学習モデルを定める第1のアルゴリズムを表す実行可能命令の1つのセット、または第2の機械学習モデルを定める第2のアルゴリズムを表す実行可能命令の第2のセットを含む。いくつかの実施形態では、仮想マシンインスタンス122は、コード136を実行し、機械学習モデルの全てを訓練する。いくつかの実施形態では、仮想マシンインスタンス122は、コード136を実行して、機械学習モデルの1つを訓練のために選択する。例えば、仮想マシンインスタンス122は、訓練要求によって指示された訓練データの種類を識別することができ、訓練データの識別された種類と一致する機械学習モデルを選択して訓練する(例えば、選択された機械学習モデルを定めるアルゴリズムを表す実行可能命令を実行する)ことができる。
【0019】
いくつかの実施形態では、OS132またはランタイム134は、仮想マシンインスタンス122によって利用されるOS124またはランタイム126と同一である。いくつかの実施形態では、OS132または/またはランタイム134は、仮想マシンインスタンス122によって利用されるOS124または/またはランタイム126とは異なる。
【0020】
いくつかの実施形態では、モデル訓練システム120は、訓練要求に含まれる1つ以上のコンテナイメージ(または受信した訓練要求に応答してコンテナデータストア170から読み出されたコンテナイメージ)を使用して、ML訓練コンテナ130を仮想マシンインスタンス122内に作成し、この仮想マシンインスタンス内で初期化する。例えば、モデル訓練システム120は、コンテナイメージ(複数可)または/または上部コンテナ層を含むML訓練コンテナ130を作成する。
【0021】
訓練プロセスを開始する前に、いくつかの実施形態では、モデル訓練システム120は、訓練要求において指示された位置から訓練データを読み出す。例えば、訓練要求において指示された位置は、訓練データストア160の位置とすることができる。したがって、モデル訓練システム120は、訓練データストア160内の指示された位置から訓練データを読み出す。いくつかの実施形態では、モデル訓練システム120は、訓練プロセスを開始する前に訓練データを読み出さない。むしろ、モデル訓練システム120は、訓練プロセスの間、指示された位置から訓練データをストリーミングする。例えば、モデル訓練システム120は、訓練データの一部を最初に読み出すことができ、読み出された部分を、機械学習モデルを訓練する仮想マシンインスタンス122に提供することができる。一旦、仮想マシンインスタンス122が、読み出された部分を適用し、使用するか、または一旦、仮想マシンインスタンス122が、読み出された部分の全てを使用しそうになると(例えば、読み出された部分を保存しているバッファがほとんど空になる)、モデル訓練システム120は、訓練データの第2の部分を読み出すことができ、第2の読み出された部分を仮想マシンインスタンス122に提供することができる、などである。
【0022】
機械学習モデルの訓練を実行するために、いくつかの実施形態では、仮想マシンインスタンス122は、ML訓練コンテナ130に保存されたコード136を実行する。例えば、コード136は、この仮想マシンインスタンス内で初期化されたML訓練コンテナ130のコンテナイメージを形成する実行可能命令の一部または全てを含む。したがって、仮想マシンインスタンス122は、機械学習モデルを訓練するために、この仮想マシンインスタンス内で初期化されたML訓練コンテナ130のコンテナイメージを形成する実行可能命令の一部または全てを実行する。仮想マシンインスタンス122は、訓練要求に含まれるハイパーパラメータ値にしたがって実行可能命令の一部または全てを実行する。実例として、仮想マシンインスタンス122は、あるパラメータ(例えば、係数、重み、重心など)の値を識別することによって機械学習モデルを訓練する。識別される値は、訓練がどのように実行されるかを定めるハイパーパラメータに依存する。したがって、仮想マシンインスタンス122は、機械学習モデル訓練プロセスを始動するための実行可能命令を実行することができ、その場合、この訓練プロセスは、訓練要求に含まれるハイパーパラメータ値を使用して実行される。実行可能命令の実行は、仮想マシンインスタンス122が、モデル訓練システム120によって読み出された訓練データを入力パラメータとして実行中の命令の一部もしくは全てに適用することを含むことができる。
【0023】
いくつかの実施形態では、実行可能命令を実行することにより、仮想マシンインスタンス122(例えば、ML訓練コンテナ130)はモデルデータを生成する。例えば、ML訓練コンテナ130は、モデルデータを生成し、ML訓練コンテナ130のファイルシステムにモデルデータを保存する。モデルデータは、機械学習モデルにおける層の数、機械学習モデルのハイパーパラメータ、機械学習モデルの係数、機械学習モデルの重み、または/または同種のものなどの、訓練中の機械学習モデルの特性を含む。特に、生成されたモデルデータは、訓練中の機械学習モデルを定める特性の値を含む。いくつかの実施形態では、実行可能命令を実行することにより、ML訓練コンテナ130に対する修正が生じ、それにより、モデルデータがML訓練コンテナ130の上部コンテナ層に書き込まれ、かつ/またはML訓練コンテナ130の一部を形成するコンテナイメージ(複数可)が、モデルデータを含むように修正される。
【0024】
仮想マシンインスタンス122(またはモデル訓練システム120自体)は、生成されたモデルデータをML訓練コンテナ130から取り出し、生成されたモデルデータを、訓練モデルデータストア175において仮想マシンインスタンス122または/または訓練中の機械学習モデルに関連したエントリに保存する。いくつかの実施形態では、仮想マシンインスタンス122は、モデルデータを含む単一のファイルを生成し、その単一のファイルを訓練モデルデータストア175に保存する。いくつかの実施形態では、仮想マシンインスタンス122は、機械学習モデルを訓練する過程で複数のファイルを生成する。ここで、各ファイルはモデルデータを含む。いくつかの実施形態では、各モデルデータファイルは、同一の、または異なるモデルデータ情報を含む(例えば、1つのファイルがアルゴリズムの構造を識別し、別のファイルが係数のリストを含むなど)。仮想マシンインスタンス122は、一旦訓練が完了すると複数のファイルを単一のファイルにパッケージ化し、その単一のファイルを訓練モデルデータストア175に保存することができる。あるいは、仮想マシンインスタンス122は、訓練モデルデータストア175に複数のファイルを保存する。仮想マシンインスタンス122は、訓練プロセスが進行している最中または/または訓練プロセスが完了した後、ファイル(複数可)を訓練モデルデータストア175に保存する。
【0025】
いくつかの実施形態では、仮想マシンインスタンス122は、訓練プロセスが進行しているときにモデルデータファイル(複数可)を訓練モデルデータストア175に定期的に保存する。したがって、モデルデータファイル(複数可)は、訓練プロセスの間の異なる時刻において訓練モデルデータストア175に保存することができる。特定の時刻に対応するモデルデータの各セットまたは特定の時刻までに訓練モデルデータストア175に存在するモデルデータファイルの各セットは、訓練プロセスの様々な段階の間、部分的に訓練済みの機械学習モデルの様々なバージョンを表すチェックポイントであり得る。したがって、訓練が完了する前に、ユーザは、部分的に訓練済みの機械学習モデル(例えば、訓練プロセスのある段階まで訓練済みの機械学習モデル)のバージョンを展開または/または実行するために、ユーザデバイス102を介して、後述するような方法で展開要求または/または実行要求を送ることができる。部分的に訓練済みの機械学習モデルのバージョンは、訓練モデルデータストア175に保存されたモデルデータファイルの一部または全てに基づくことができる。
【0026】
いくつかの実施形態では、仮想マシンインスタンス122は、複数のML訓練コンテナ130に保存されたコード136を実行する。例えば、コンテナイメージに含まれるアルゴリズムは、訓練プロセスの並列化が可能なフォーマットにすることができる。したがって、モデル訓練システム120は、訓練要求において提供されたコンテナイメージの複数のコピーを作成することができ、仮想マシンインスタンス122に、各コンテナイメージのコピーを個別のML訓練コンテナ130にロードさせることができる。仮想マシンインスタンス122は、次いで、ML訓練コンテナ130に保存されたコード136を並列に実行することができる。仮想マシンインスタンス122は、さらに、設定情報を各ML訓練コンテナ130に提供することができる(例えば、N個のML訓練コンテナ130が機械学習モデルを集合的に訓練していること、または設定情報を受信した特定のML訓練コンテナ130がN個のうちの番号XのML訓練コンテナ130であることを示す情報)。この設定情報は、結果として得られたモデルデータに含めることができる。訓練プロセスを並列化することにより、いくつかの実施形態では、モデル訓練システム120は、訓練時間を大幅に減少させることができる。
【0027】
いくつかの実施形態では、複数の仮想マシンインスタンス122が、複数のML訓練コンテナ130に保存されたコード136を実行する。例えば、特定の機械学習モデルを訓練するために使用されるリソースは、単一の仮想マシンインスタンス122の制限を超える場合がある。しかしながら、コンテナイメージに含まれるアルゴリズムは、訓練プロセスの並列化が可能なフォーマットにすることができる。したがって、モデル訓練システム120は、訓練要求において提供されたコンテナイメージの複数のコピーを作成することができ、複数の仮想マシンインスタンス122を初期化することができ、各仮想マシンインスタンス122に、コンテナイメージのコピーを1つ以上の個別のML訓練コンテナ130にロードさせることができる。次いで、仮想マシンインスタンス122は、それぞれ、ML訓練コンテナ130に保存されたコード136を並列に実行することができる。モデル訓練システム120は、さらに、仮想マシンインスタンス122を介して設定情報を各ML訓練コンテナ130に提供することができる(例えば、N個のML訓練コンテナ130が機械学習モデルを集合的に訓練していること、または設定情報を受信した特定のML訓練コンテナ130がN個のうちの番号XのML訓練コンテナ130であることを示す情報、M個の仮想マシンインスタンス122が機械学習モデルを集合的に訓練していること、または設定情報を受信した特定のML訓練コンテナ130がM個のうちの番号Yの仮想マシンインスタンス122内で初期化されることを示す情報など)。この設定情報は、結果として得られたモデルデータに含めることができる。上述したように、訓練プロセスを並列化することにより、いくつかの実施形態では、モデル訓練システム120は、訓練時間を大幅に減少させることができる。
【0028】
いくつかの実施形態では、モデル訓練システム120は、複数の物理コンピューティングデバイスを含み、これらの物理コンピューティングデバイスの2つ以上は、コード136を実行する1つ以上の仮想マシンインスタンス122をホスティングする。したがって、様々な仮想マシンインスタンス122または/またはML訓練コンテナ130にわたってのみならず、様々な物理コンピューティングデバイスにわたって並列化を行うことができる。
【0029】
いくつかの実施形態では、モデル訓練システム120はMLモデル評価器128を含む。MLモデル評価器128は、機械学習モデルを訓練しているときに仮想マシンインスタンス122を監視することにより、生成されたモデルデータを取得し、取得したモデルデータを処理してモデルメトリックを生成することができる。例えば、モデルメトリックは、訓練中の機械学習モデルのエラー率、訓練中の機械学習モデルの統計的分布、訓練中の機械学習モデルのレイテンシ、訓練中の機械学習モデルの信頼度(例えば、訓練中の機械学習モデルの精度が分かる信頼度など)などの品質メトリックを含むことができる。MLモデル評価器128は、訓練中の機械学習モデルのためのモデルデータ、または評価データを訓練データストア160から取得することができる。評価データは、機械学習モデルを訓練するために使用されるデータとは別であり、入力データと期待出力(例えば、既知の結果)との両方を含み、したがって、MLモデル評価器128は、モデルデータを使用して機械学習モデルを定めることができ、機械学習モデルに対する入力として入力データを提供することによって機械学習モデルを実行することができる。MLモデル評価器128は、次いで、機械学習モデルの出力と期待出力とを比較し、その比較に基づいて訓練中の機械学習モデルの1つ以上の品質メトリックを決定することができる(例えば、エラー率は、機械学習モデルの出力と期待出力との差または距離とすることができる)。
【0030】
MLモデル評価器128は、いくつかの実施形態では、訓練プロセスの間にモデルメトリックを周期的に生成し、モデルメトリックを訓練メトリックデータストア165に保存する。機械学習モデルを訓練している最中、ユーザは、ユーザデバイス102を介して、訓練メトリックデータストア165にアクセスし、そこからモデルメトリックを読み出すことができる。ユーザは、次いで、モデルメトリックを使用して、訓練プロセスを調整すべきかどうかまたは/または訓練プロセスを停止すべきかどうかを決定することができる。例えば、モデルメトリックは、機械学習モデルが十分に動作していない(例えば、閾値を超えるエラー率を有する、期待される、もしくは望ましい分布ではない(例えば、二項分布、ポアソン分布、幾何分布、正規分布、ガウス分布などではない)統計的分布を有する、閾値を超える実行レイテンシを有する、閾値未満の信頼度を有する)こと、または/または徐々に悪化して動作している(例えば、品質メトリックが時間と共に悪化し続けている)ことを示すことができる。これに応答して、いくつかの実施形態では、ユーザは、ユーザデバイス102を介して、訓練中の機械学習モデルを修正するためにモデル訓練システム120に要求を送信する(例えば、修正要求を送信する)ことができる。この要求は、新しいもしくは修正されたコンテナイメージ、新しいもしくは修正されたアルゴリズム、新しいもしくは修正されたハイパーパラメータ(複数可)、または/または機械学習モデルを訓練するコンピューティングマシンについて記載した、新しいもしくは修正された情報を含むことができる。それに応じて、モデル訓練システム120は、機械学習モデルを修正することができる。例えば、モデル訓練システム120は、仮想マシンインスタンス122に、既存のML訓練コンテナ130を任意選択で削除させ、要求に含まれる情報の一部もしくは全てを使用して新しいML訓練コンテナ130を作成または初期化させ、機械学習モデル訓練プロセスを再開するためにその新しいML訓練コンテナ130に保存されたコード136を実行させることができる。別の例として、モデル訓練システム120は、仮想マシンインスタンス122に、修正要求において提供されたデータにしたがって既存のML訓練コンテナ130に保存されたコードの実行を修正させることができる。いくつかの実施形態では、ユーザは、ユーザデバイス102を介して、機械学習モデル訓練プロセスを停止するためにモデル訓練システム120に要求を送信することができる。モデル訓練システム120は、次いで、ML訓練コンテナ130を削除すること、または/または訓練モデルデータストア175に保存された任意のモデルデータを削除することを仮想マシンインスタンス122に指示することができる。
【0031】
後述するように、いくつかの実施形態では、訓練モデルデータストア175に保存されたモデルデータは、機械学習モデルを展開するためにモデルホスティングシステム140によって使用される。あるいは、または加えて、ユーザデバイス102または別のコンピューティングデバイス(図示せず)が、訓練モデルデータストア175からモデルデータを読み出して外部デバイスにおいて学習アルゴリズムを実施することができる。実例として、ロボットデバイスは、入力データを取り込むセンサを含むことができる。ユーザデバイス102は、訓練モデルデータストア175からモデルデータを読み出し、モデルデータをロボットデバイスに保存することができる。モデルデータは、機械学習モデルを定める。したがって、ロボットデバイスは、取り込まれた入力データを機械学習モデルに対する入力として提供し、結果として出力を得ることができる。ロボットデバイスは、次いで、結果として得られた出力に基づいて作動(例えば、前進する、腕を上げる、音を生成するなど)を実行することができる。
【0032】
図1には、仮想マシンインスタンス122が仮想マシンインスタンス122の単一のグループ化として示されているが、本出願のいくつかの実施形態は、タスクを実行するようにアクティブに割り当てられた仮想マシンインスタンス122と、タスクを実行するようにアクティブに割り当てられない仮想マシンインスタンス122とを区別する。例えば、タスクを実行するようにアクティブに割り当てられた仮想マシンインスタンス122は「アクティブプール」にグループ化される一方、タスクを実行するようにアクティブに割り当てられない仮想マシンインスタンス122は「ウォーミングプール」内に配置される。いくつかの実施形態では、ウォーミングプール内の仮想マシンインスタンス122は、訓練要求に応答したタスクの迅速な実行(例えば、ML訓練コンテナ(複数可)130における機械学習モデルの訓練の迅速な初期化)を可能にすることを要求されたオペレーティングシステム、言語ランタイムまたは/または他のソフトウェアによって事前に初期化することができる。
【0033】
いくつかの実施形態では、モデル訓練システム120は、処理ユニット、ネットワークインタフェース、コンピュータ可読媒体ドライブまたは入出力デバイスインタフェースを含み、これらの全ては、通信バスを経由して互いに通信することができる。ネットワークインタフェースは、1つ以上のネットワークまたはコンピューティングシステムに接続性を提供することができる。したがって、処理ユニットは、他のコンピューティングシステムまたはサービス(例えば、ユーザデバイス102、モデルホスティングシステム140など)から情報または命令を受信することができる。処理ユニットは、仮想マシンインスタンス122のメモリとの間で通信し、さらに入出力デバイスインタフェースを介して出力情報を任意選択のディスプレイに提供することもできる。入出力デバイスインタフェースは、任意選択の入力デバイスからの入力を受け付けることもできる。メモリは、本開示の1つ以上の態様を実施するために処理ユニットが実行するコンピュータプログラム命令(いくつかの実施形態ではモジュールとしてグループ化される)を含むことができる。
【0034】
例示的なモデルホスティングシステム
いくつかの実施形態では、モデル訓練システム140は、1つ以上のコンピューティングネットワーク(図示せず)を使用して相互接続された単一の物理コンピューティングデバイスまたは複数の物理コンピューティングデバイスを含む。ここで、物理コンピューティングデバイス(複数可)は、1つ以上の仮想マシンインスタンス142をホスティングする。モデルホスティングシステム140は、訓練済みの機械学習モデルの実行の必要性に基づいて計算容量(例えば、コンテナ、インスタンスなど)の入手または設定をハンドリングすることができる。以下でより詳細に説明されるように、モデルホスティングシステム140は、次いで、計算容量を使用して機械学習モデルを実行することができる。モデルホスティングシステム140は、モデルホスティングシステム140のフロントエンド149を介してユーザデバイス102から受信した実行要求の量に基づいて自動的に拡大または縮小することができる。それにより、過剰利用(例えば、非常に少ないコンピューティングリソースを入手し、性能に問題をきたすこと)、または過少利用(例えば、機械学習モデルを実行するのに必要であるよりも多くのコンピューティングリソースを入手し、したがって余分に支払うこと)について心配しなければならない負担からユーザを開放する。
【0035】
いくつかの実施形態では、仮想マシンインスタンス142は、タスクを実行するために利用される。例えば、このようなタスクは、機械学習モデルを実行することを含むことができる。
図1に示すように、各仮想マシンインスタンス142は、オペレーティングシステム(OS)144、言語ランタイム146または1つ以上のMLスコアリングコンテナ150を含む。MLスコアリングコンテナ150は、MLスコアリングコンテナ150が仮想マシンインスタンス上で利用可能なリソースを使用してそのインスタンス内で作成される論理ユニットであるという点でML訓練コンテナ130と同様であり、タスクの実行をインスタンスに発生する他のプロセス(例えば、タスクの実行)から分離するために利用することができる。いくつかの実施形態では、MLスコアリングコンテナ150は、1つ以上のコンテナイメージまたは上部コンテナ層から形成される。各コンテナイメージは、1つ以上のイメージ層をさらに含む。ここで、各イメージ層は実行可能命令を表す。上述したように、実行可能命令の一部または全ては、合わせて、機械学習モデルを定めるアルゴリズムを表す。MLスコアリングコンテナ150に対してなされた変更(例えば、新規ファイルの作成、既存ファイルの修正、ファイルの削除など)は、上部コンテナ層に保存される。MLスコアリングコンテナ150が削除された場合、上部コンテナ層も削除される。しかしながら、削除されたMLスコアリングコンテナ150の一部を形成するコンテナイメージ(複数可)は、変更されないままにすることができる。MLスコアリングコンテナ150は、例えば、Linuxコンテナとして実装することができる。
【0036】
いくつかの実施形態では、MLスコアリングコンテナ150は、それぞれ、OS152、ランタイム154またはコード156の個々のコピーを含む。OS152または/またはランタイム154は、MLスコアリングコンテナ150を形成するために使用されるコンテナイメージの少なくとも一部を形成する1つ以上の実行可能命令(例えば、コンテナイメージから形成されたコンテナにおいて動作するオペレーティングシステムまたは/またはランタイムを定めるコンテナイメージ内の実行可能命令(複数可))によって定めることができる。コード156は、MLスコアリングコンテナ150を形成するために使用されるコンテナイメージの少なくとも一部を形成する1つ以上の実行可能命令を含む。例えば、コード156は、機械学習モデルを定めるアルゴリズムを表すコンテナイメージ内の実行可能命令を含む。以下でより詳細に説明されるように、コード156は、定められた機械学習モデルの特性を表すモデルデータも含むことができる。OS152または/またはランタイム154は、機械学習モデルの実行を開始するための命令に応答してコード156を実行するように構成される。以下でより詳細に説明されるように、コード156を実行すると、結果として出力(例えば、予想された結果)が生成される。
【0037】
いくつかの実施形態では、OS152またはランタイム154は、仮想マシンインスタンス142によって利用されるOS144またはランタイム146と同一である。いくつかの実施形態では、OS152または/またはランタイム154は、仮想マシンインスタンス142によって利用されるOS144または/またはランタイム146とは異なる。
【0038】
いくつかの実施形態では、モデルホスティングシステム140は、展開要求に含まれる1つ以上のコンテナイメージ(または受信した展開要求に応答してコンテナデータストア170から読み出されたコンテナイメージ)を使用して、MLスコアリングコンテナ150を仮想マシンインスタンス142内に作成し、この仮想マシンインスタンス内で初期化する。例えば、モデルホスティングシステム140は、コンテナイメージ(複数可)または/または上部コンテナ層を含むMLスコアリングコンテナ150を作成する。
【0039】
上述したように、いくつかの実施形態では、ユーザデバイス102は、フロントエンド149を介して展開要求または/または実行要求をモデルホスティングシステム140に送ることができる。展開要求により、モデルホスティングシステム140は、訓練済みの機械学習モデルを仮想マシンインスタンス142に展開する。例えば、展開要求は、エンドポイントの識別子(例えば、ハイパーテキスト・トランスファー・プロトコル(HTTP)のエンドポイント名などのエンドポイント名)、または1つ以上の訓練済みの機械学習モデルの識別子(例えば、訓練モデルデータストア175に保存された1つ以上のモデルデータファイルの位置)を含むことができる。任意選択で、展開要求は、コンテナデータストア170に保存された1つの以上のコンテナイメージの識別子も含む。
【0040】
展開要求を受信すると、モデルホスティングシステム140は、1つ以上のホスティングされた仮想マシンインスタンス142内で1つ以上のMLスコアリングコンテナ150を初期化する。展開要求が1つ以上のコンテナイメージの識別子を含む実施形態では、モデルホスティングシステム140は、識別されたコンテナイメージ(複数可)からMLスコアリングコンテナ(複数可)150を形成する。例えば、展開要求において識別されたコンテナイメージは、その展開要求に対応する機械学習モデルを訓練するために使用されるML訓練コンテナ130を形成するために使用されるコンテナイメージと同一であり得る。したがって、MLスコアリングコンテナ(複数可)150のコード156は、機械学習モデルを定めるアルゴリズムを表すコンテナイメージ(複数可)内に1つ以上の実行可能命令を含む。展開要求がコンテナイメージの識別子を含まない実施形態では、モデルホスティングシステム140は、識別された訓練済みの機械学習モデル(複数可)を実行するのに適切であるコンテナデータストア170に保存された1つ以上のコンテナイメージからMLスコアリングコンテナ(複数可)150を形成する。例えば、適切なコンテナイメージは、識別された訓練済みの機械学習モデル(複数可)を定めるアルゴリズムを表す実行可能命令を含むコンテナイメージとすることができる。
【0041】
いくつかの実施形態では、モデルホスティングシステム140は、さらに、識別された訓練済みの機械学習モデル(複数可)に対応するモデルデータを読み出すことによってMLスコアリングコンテナ(複数可)150を形成する。例えば、展開要求は、訓練モデルデータストア175に保存されたモデルデータファイル(複数可)の位置を識別することができる。単一のモデルデータファイルが展開要求において識別される実施形態では、モデルホスティングシステム140は、識別されたモデルデータファイルを訓練モデルデータストア175から読み出し、そのモデルデータファイルを単一のMLスコアリングコンテナ150に挿入する。これにより、コード156の一部が形成される。いくつかの実施形態では、モデルデータファイルは、アーカイブ化または圧縮される(例えば、個々のファイルのパッケージから形成される)。したがって、モデルホスティングシステム140は、モデルデータファイルを非アーカイブ化または復元して複数の個々のファイルを取得し、それら個々のファイルをMLスコアリングコンテナ150に挿入する。いくつかの実施形態では、モデルホスティングシステム140は、モデルデータファイルを生成したML訓練コンテナ130にモデルデータファイルが保存された位置と同一の位置にモデルデータファイルを保存する。例えば、モデルデータファイルは、あるオフセットでML訓練コンテナ130の上部コンテナ層に最初に保存され、次いで、モデルホスティングシステム140は、MLスコアリングコンテナ150の上部コンテナ層に同一のオフセットでモデルデータファイルを保存する。
【0042】
複数のモデルデータファイルが展開要求において識別される実施形態では、モデルホスティングシステム140は、識別されたモデルデータファイルを訓練モデルデータストア175から読み出す。モデルホスティングシステム140は、それらのモデルデータファイルを、同一のMLスコアリングコンテナ150に、同一の仮想マシンインスタンス142内で初期化された様々なMLスコアリングコンテナ150に、または様々な仮想マシンインスタンス142内で初期化された様々なMLスコアリングコンテナ150に挿入することができる。実例として、展開要求は、様々な訓練済みの機械学習モデルに対応する複数のモデルデータファイルを識別することができる。その理由は、これらの訓練済みの機械学習モデルが関連している(例えば、1つの訓練済みの機械学習モデルの出力が、別の訓練済みの機械学習モデルに対する入力として使用される)ためである。したがって、ユーザは、複数の機械学習モデルを展開して、複数の機械学習モデルの出力に依存した単一の出力を最終的に受信することを望んでもよい。
【0043】
いくつかの実施形態では、モデルホスティングシステム140は、初期化されたMLスコアリングコンテナ(複数可)150を、展開要求において識別されたエンドポイントと関連付ける。例えば、初期化されたMLスコアリングコンテナ(複数可)150のそれぞれをネットワークアドレスと関連付けることができる。モデルホスティングシステム140は、ネットワークアドレス(複数可)を識別されたエンドポイントにマッピングすることができ、モデルホスティングシステム140または別のシステム(例えば、図示されないルーティングシステム)は、そのマッピングを保存することができる。したがって、ユーザデバイス102は、エンドポイントを使用して、MLスコアリングコンテナ(複数可)150に保存された訓練済みの機械学習モデル(複数可)を参照することができる。これにより、訓練済みの機械学習モデルをユーザが参照する方法を変更するようにユーザにユーザデバイス102を操作させることなく、MLスコアリングコンテナ150のネットワークアドレスを変更することが可能になる。
【0044】
一旦、MLスコアリングコンテナ150(複数可)が初期化されると、MLスコアリングコンテナ(複数可)150は、訓練済みの機械学習モデル(複数可)を実行できる状況にある。いくつかの実施形態では、ユーザデバイス102は、フロントエンド149を介してモデルホスティングシステム140に実行要求を送信する。その場合、実行要求は、エンドポイントを識別し、機械学習モデルに対する入力(例えば、一組の入力データ)を含む。モデルホスティングシステム140または別のシステム(例えば、図示されないルーティングシステム)は、実行要求を取得し、識別されたエンドポイントに対応するMLスコアリングコンテナ(複数可)150を識別し、識別されたMLスコアリングコンテナ(複数可)150に入力をルーティングすることができる。
【0045】
いくつかの実施形態では、仮想マシンインスタンス142は、モデルホスティングシステム140が実行要求を受信したことに応答して、識別されたMLスコアリングコンテナ150に保存されたコード156を実行する。特に、コード156の実行により、アルゴリズムに対応するコード156内の実行可能命令は、MLスコアリングコンテナ150に保存されたモデルデータファイルを読み込み、実行要求に含まれる入力を入力パラメータとして使用し、対応する出力を生成する。実例として、アルゴリズムは、係数、重み、層、クラスタ重心または/または同種のものを含むことができる。アルゴリズムに対応するコード156内の実行可能命令は、モデルデータファイルを読み込んで、係数、重み、層、クラスタ重心または/または同種のものの値を決定することができる。実行可能命令は、入力パラメータを含むことができ、実行要求に含まれる入力は、仮想マシンインスタンス142によって入力パラメータとして供給することができる。機械学習モデルの特性または提供された入力パラメータを用いて、仮想マシンインスタンス142による実行可能命令の実行を完了させ、結果として出力を得ることができる。
【0046】
いくつかの実施形態では、仮想マシンインスタンス142は、出力をモデル予測データストア180に保存する。あるいは、または加えて、仮想マシンインスタンス142は、実行結果を送ったユーザデバイス102にフロントエンド149を介して出力を送信する。
【0047】
いくつかの実施形態では、実行要求は、関連する訓練済みの機械学習モデルのグループに対応する。したがって、MLスコアリングコンテナ150は、同一の仮想マシンインスタンス142内で、または異なる仮想マシンインスタンス142内で初期化された第2のMLスコアリングコンテナ150に出力を送信することができる。第2のMLスコアリングコンテナ150を初期化した仮想マシンインスタンス142は、次いで、第2のMLスコアリングコンテナ150に保存された第2のコード156を実行して、受信した出力を入力パラメータとして第2のコード156の実行可能命令に提供することができる。第2のMLスコアリングコンテナ150は、内部に保存されたモデルデータファイルをさらに含む。このモデルデータファイルは、機械学習モデルを定める特性の値を決定するために第2のコード156内の実行可能命令によって読み込まれる。第2のコード156を実行すると、結果として第2の出力が得られる。第2のMLスコアリングコンテナ150を初期化した仮想マシンインスタンス142は、次いで、フロントエンド149を介してモデル予測データストア180または/またはユーザデバイス102に第2の出力を送信するか(例えば、出力を生成するために訓練済みの機械学習モデルがそれ以上必要とされない場合)、または同一の、もしくは異なる仮想マシンインスタンス142内で初期化された第3のMLスコアリングコンテナ150に第2の出力を送信する(例えば、1つ以上の追加の訓練済みの機械学習モデルからの出力が必要とされる場合)ことができ、上述したプロセスを第3のMLスコアリングコンテナ150に関して繰り返すことができる。
【0048】
図1には、仮想マシンインスタンス142が仮想マシンインスタンス142の単一のグループ化として示されているが、本出願のいくつかの実施形態は、タスクを実行するようにアクティブに割り当てられた仮想マシンインスタンス142と、タスクを実行するようにアクティブに割り当てられない仮想マシンインスタンス142とを区別する。例えば、タスクを実行するようにアクティブに割り当てられた仮想マシンインスタンス142は「アクティブプール」にグループ化される一方、タスクを実行するようにアクティブに割り当てられない仮想マシンインスタンス142は「ウォーミングプール」内に配置される。いくつかの実施形態では、ウォーミングプール内の仮想マシンインスタンス142は、展開要求または/または実行要求に応答したタスクの迅速な実行(例えば、MLスコアリングコンテナ(複数可)150の迅速な初期化、MLスコアリングコンテナ(複数可)内のコード156の迅速な実行など)を可能にすることを要求されたオペレーティングシステム、言語ランタイムまたは/または他のソフトウェアによって事前に初期化することができる。
【0049】
いくつかの実施形態では、モデルホスティングシステム140は、処理ユニット、ネットワークインタフェース、コンピュータ可読媒体ドライブまたは入出力デバイスインタフェースを含み、これらの全ては、通信バスを経由して互いに通信することができる。ネットワークインタフェースは、1つ以上のネットワークまたはコンピューティングシステムに接続性を提供することができる。したがって、処理ユニットは、他のコンピューティングシステムまたはサービス(例えば、ユーザデバイス102、モデル訓練システム120など)から情報または命令を受信することができる。処理ユニットは、仮想マシンインスタンス142のメモリとの間で通信し、さらに入出力デバイスインタフェースを介して出力情報を任意選択のディスプレイに提供することもできる。入出力デバイスインタフェースは、任意選択の入力デバイスからの入力を受け付けることもできる。メモリは、本開示の1つ以上の態様を実施するために処理ユニットが実行するコンピュータプログラム命令(いくつかの実施形態ではモジュールとしてグループ化される)を含むことができる。
【0050】
例示的な訓練またはホスティング環境の更なる実施形態
いくつかの実施形態では、動作環境100は、マルチアームバンディットモデル、強化学習モデル、アンサンブル機械学習モデル、深層学習モデルまたは/または同種のものなどの、多くの様々な種類の機械学習モデルに対応する。
【0051】
図1に表されたモデル訓練システム120またはモデルホスティングシステム140は、限定を意味するものではない。例えば、モデル訓練システム120または/またはモデルホスティングシステム140は、
図1に示したよりも少ない、または多い数のデバイスを有するコンピューティング環境内で動作することもできる。したがって、
図1のモデル訓練システム120または/またはモデルホスティングシステム140の描写は、例示的であり、本開示に対する限定ではないと解釈され得る。例えば、モデル訓練システム120または/もしくはモデルホスティングシステム140、またはその各種の構成要素は、各種のウェブサービス構成要素、ホスティングされたコンピューティング環境もしくは「クラウド」コンピューティング環境、または/またはピアツーピアネットワーク構成を実装して、本明細書で説明されるプロセスの少なくとも一部を実装することができる。いくつかの実施形態では、モデル訓練システム120または/またはモデルホスティングシステム140は、ハードウェアまたはハードウェアデバイスによって実行されるソフトウェアで直接実装され、例えば、本明細書で説明される各種の特徴を実行するためのコンピュータ実行可能命令を実行するように構成された物理コンピュータハードウェア上に実装される1つ以上の物理サーバまたは仮想サーバを含んでもよい。1つ以上のサーバは、例えば、1つ以上のポイント・オブ・プレゼンス(POP)または局所的なデータセンタにおいて、地理的に分散させるか、または地理的に同じ位置に配置することができる。
【0052】
フロントエンド129は、ユーザデバイス102またはプロビジョン仮想マシンインスタンス122から受信した全ての訓練要求を処理する。いくつかの実施形態では、フロントエンド129は、モデル訓練システム120によって提供された全ての他のサービスに対するフロントドアとして機能する。フロントエンド129は、要求を処理し、その要求に正しく権限が付与されていることを確認する。例えば、フロントエンド129は、訓練要求に関連したユーザに訓練プロセスを始動することの権限が付与されているどうかを判定してもよい。
【0053】
同様に、フロントエンド149は、ユーザデバイス102またはプロビジョン仮想マシンインスタンス142から受信した全ての展開要求または実行要求を処理する。いくつかの実施形態では、フロントエンド149は、モデルホスティングシステム140によって提供された全ての他のサービスに対するフロントドアとして機能する。フロントエンド149は、要求を処理し、その要求に正しく権限が付与されていることを確認する。例えば、フロントエンド149は、展開要求または実行要求に関連したユーザに、指示されたモデルデータにアクセスすることまたは/または指示された機械学習モデルを実行することの権限が付与されているかどうかを判定してもよい。
【0054】
訓練データストア160は、訓練データまたは/または評価データを保存する。訓練データは、機械学習モデルを訓練するために使用されるデータとすることができ、評価データは、機械学習モデルの性能を評価するために使用されるデータとすることができる。いくつかの実施形態では、訓練データまたは評価データは共通のデータを有する。いくつかの実施形態では、訓練データまたは評価データは共通のデータを有しない。いくつかの実施形態では、訓練データは、入力データまたは期待出力を含む。訓練データストア160がモデル訓練システム120またはモデルホスティングシステム140の外部に位置するものとして表されているが、これは限定を意味するものではない。例えば、図示されないいくつかの実施形態では、訓練データストア160は、モデル訓練システム120またはモデルホスティングシステム140の少なくとも一方の内部に位置する。
【0055】
いくつかの実施形態では、訓練メトリックデータストア165はモデルメトリックを保存する。訓練メトリックデータストア165がモデル訓練システム120またはモデルホスティングシステム140の外部に位置するものとして表されているが、これは限定を意味するものではない。例えば、図示されないいくつかの実施形態では、訓練メトリックデータストア165は、モデル訓練システム120またはモデルホスティングシステム140の少なくとも一方の内部に位置する。
【0056】
コンテナデータストア170は、ML訓練コンテナ130または/またはMLスコアリングコンテナ150を形成するために使用されるコンテナイメージなどのコンテナイメージを保存する。このコンテナイメージは、各種の仮想マシンインスタンス122または/または142によって読み出すことができる。コンテナデータストア170がモデル訓練システム120またはモデルホスティングシステム140の外部に位置するものとして表されているが、これは限定を意味するものではない。例えば、図示されないいくつかの実施形態では、コンテナデータストア170は、モデル訓練システム120またはモデルホスティングシステム140の少なくとも一方の内部に位置する。
【0057】
訓練モデルデータストア175はモデルデータファイルを保存する。いくつかの実施形態では、モデルデータファイルの一部が単一のファイルで構成される一方、他のモデルデータファイルは複数の個々のファイルのパッケージである。訓練データストア175がモデル訓練システム120またはモデルホスティングシステム140の外部に位置するものとして表されているが、これは限定を意味するものではない。例えば、図示されないいくつかの実施形態では、訓練モデルデータストア175は、モデル訓練システム120またはモデルホスティングシステム140の少なくとも一方の内部に位置する。
【0058】
モデル予測データストア180は、いくつかの実施形態では、MLスコアリングコンテナ150によって生成された出力(例えば、実行結果)を保存する。モデル予測データストア180がモデル訓練システム120またはモデルホスティングシステム140の外部に位置するものとして表されているが、これは限定を意味するものではない。例えば、図示されないいくつかの実施形態では、モデル予測データストア180は、モデル訓練システム120またはモデルホスティングシステム140の少なくとも一方の内部に位置する。
【0059】
モデル訓練システム120、モデルホスティングシステム140、訓練データストア160、訓練メトリックデータストア165、コンテナデータストア170、訓練モデルデータストア175またはモデル予測データストア180が個別の構成要素として示されているが、これは限定を意味するものではない。いくつかの実施形態では、これらの構成要素のいずれか1つまたは全てを、本明細書で説明される機能を実行するために結合することができる。例えば、これらの構成要素のいずれか1つまたは全ては、単一のコンピューティングデバイスによって、またはコンピュータサーバなどの、サーバシステムとして集合的に動作するように論理的もしくは物理的に共にグループ化された複数の別々のコンピューティングデバイスによって実装することができる。これらの構成要素のいずれか1つまたは全ては、共有された内部ネットワークを介して通信することができ、集合的なシステム(例えば、本明細書では機械学習サービスとも呼ばれる)は、ネットワーク110を介してユーザデバイス102の1つ以上と通信することができる。
【0060】
デスクトップコンピュータ、ラップトップまたは携帯電話を含む、それぞれが一例として提供される各種の例示的なユーザデバイス102を
図1に示す。一般に、ユーザデバイス102は、デスクトップ、ラップトップまたはタブレットコンピュータ、パーソナルコンピュータ、ウェアラブルコンピュータ、サーバ、パーソナルデジタルアシスタント(PDA)、ハイブリッドPDA/携帯電話、携帯電話、電子ブックリーダ、セットトップボックス、音声コマンドデバイス、カメラまたはデジタルメディアプレーヤなどの、任意のコンピューティングデバイスとすることができる。いくつかの実施形態では、モデル訓練システム120または/またはモデルホスティングシステム140は、訓練要求、展開要求または/または実行要求を送るための1つ以上のユーザインタフェース、コマンドラインインタフェース(CLI)、アプリケーションプログラミングインタフェース(API)または/または他のプログラマチックインタフェースをユーザデバイス102に提供する。いくつかの実施形態では、ユーザデバイス102は、訓練要求、展開要求または/または実行要求を送るためにモデル訓練システム120または/またはモデルホスティングシステム140と対話するスタンドアロンアプリケーションを実行することができる。
【0061】
いくつかの実施形態では、ネットワーク110は、任意の有線ネットワーク、無線ネットワーク、またはこれらの組み合わせを含む。例えば、ネットワーク110は、パーソナルエリアネットワーク、ローカルエリアネットワーク、ワイドエリアネットワーク、(例えば、ラジオもしくはテレビのための)地上波放送ネットワーク、ケーブルネットワーク、衛星ネットワーク、セルラ式電話ネットワーク、またはこれらの組み合わせであってもよい。更なる例として、ネットワーク110は、インターネットなどの、場合によっては各種の別々の当事者によって運用される、連結されたネットワークの公的にアクセス可能なネットワークであってもよい。いくつかの実施形態では、ネットワーク110は、企業または大学のイントラネットなどの、プライベートまたはセミプライベートなネットワークであってもよい。ネットワーク110は、モバイル通信用グローバルシステム(GSM)ネットワーク、符号分割多重アクセス(CDMA)ネットワーク、ロングタームエボリューション(LTE)ネットワークまたは任意の他の種類の無線ネットワークなどの、1つ以上の無線ネットワークを含んでもよい。ネットワーク110は、インターネット、または他の上述した種類のネットワークのいずれかを介して通信するためのプロトコルまたは構成要素を使用することができる。例えば、ネットワーク110によって使用されるプロトコルは、ハイパーテキスト・トランスファー・プロトコル(HTTP)、HTTPセキュア(HTTPS)、メッセージ・キュー・テレメトリ・トランスポート(MQTT)または制約アプリケーションプロトコル(CoAP)などを含んでもよい。インターネット、または他の上述した種類の通信ネットワークのいずれかを介して通信するためのプロトコルまたは構成要素は当業者にとって周知であり、したがって本明細書では、より詳細に説明されていない。
【0062】
機械学習モデルの訓練のための例示的なブロック図
図2は、いくつかの実施形態にしたがった、機械学習モデルを訓練するために動作環境100の構成要素によって実行される動作を示す
図1の動作環境100のブロック図である。
図2に示すように、ユーザデバイス102は、(1)で、コンテナイメージの位置または訓練データの位置をフロントエンド129に送信する。フロントエンド129は、次いで、(2)で、仮想マシンインスタンス122を初期化させ、コンテナイメージの位置または訓練データの位置を、初期化された仮想マシンインスタンス122に転送する。いくつかの実施形態では、コンテナイメージの位置または訓練データの位置は、訓練要求の一部として送信される。
【0063】
いくつかの実施形態では、仮想マシンインスタンス122は、(3)で、受信した位置を使用して訓練データストア160から訓練データを読み出す。訓練データを読み出す前、読み出している間、または読み出した後に、仮想マシンインスタンス122は、(4)で、受信した位置を使用してコンテナデータストア170からコンテナイメージを読み出す。
【0064】
仮想マシンインスタンス122は、いくつかの実施形態では、受信したコンテナイメージを使用して仮想マシンインスタンス122内でML訓練コンテナを初期化する。仮想マシンインスタンス122は、次いで、機械学習モデルを訓練するために、(5)で、読み出された訓練データを使用してML訓練コンテナに保存されたコードを実行する。例えば、コードは、未だ訓練されない機械学習モデルを定めるアルゴリズムを表すコンテナイメージで始まる実行可能命令を含むことができる。仮想マシンインスタンス122は、ユーザデバイス102によって提供されたハイパーパラメータ値にしたがってコードを実行する。
【0065】
実行可能命令を実行することにより、ML訓練コンテナは、訓練中の機械学習モデルの特性を含むモデルデータを生成する。仮想マシンインスタンス122は、いくつかの実施形態では、(6)で訓練モデルデータストア175にモデルデータを保存する。いくつかの実施形態では、仮想マシンインスタンス122は複数のモデルデータファイルを生成する。これらのモデルデータファイルは、訓練モデルデータストア175に保存される単一のファイルにパッケージ化される。
【0066】
機械学習モデル訓練プロセスの間、MLモデル評価器128は、(7)で訓練モデルデータストア175からモデルデータを読み出すことができる。MLモデル評価器128は、さらに、(8)で訓練データストア160から評価データを読み出す。例えば、評価データは、機械学習モデルを訓練するために使用されるデータとは別であるデータとすることができる。評価データは、入力データ、または入力データの結果として生じた、または形成された既知の結果を含むことができる。いくつかの実施形態では、MLモデル評価器128は、(9)で、評価データに含まれる入力データを使用して、読み出されたモデルデータによって定められた機械学習モデルを実行する。MLモデル評価器128は、次いで、(10)で、読み出されたモデルデータによって定められた機械学習モデルの出力と評価データに含まれる既知の結果とを比較して機械学習モデルの品質メトリックを決定する。例えば、品質メトリックは、機械学習モデルの出力と既知の結果との総体的な差(例えば、平均の差、メディアンの差など)に基づいて決定することができる。MLモデル評価器128は、次いで、(11)で訓練メトリックデータストア165に品質メトリックを保存することができる。
【0067】
いくつかの実施形態では、MLモデル評価器128は、訓練メトリックデータストア165に追加情報も保存する。例えば、MLモデル評価器128は、入力データ(または入力データを表すタグ)、機械学習モデルの出力または既知の結果を保存することができる。したがって、ユーザは、ユーザデバイス102を介して、品質メトリック(複数可)を識別することができるのみならず、どの入力によって機械学習モデルの出力と既知の結果との差が小さくなったか、または差がなくなったか、どの入力によって機械学習モデルの出力と既知の結果との差が大きくなったかなどを識別することもできる。
【0068】
機械学習モデルの訓練を修正するための例示的なブロック図
図3は、いくつかの実施形態にしたがった、機械学習モデルの訓練を修正するために動作環境100の構成要素によって実行される動作を示す
図1の動作環境100のブロック図である。
図3に示すように、ユーザデバイス102は、(1)で、訓練メトリックデータストア165に保存された品質メトリックを読み出す。いくつかの実施形態では、ユーザは、ユーザデバイス102を介して、依然として訓練中の機械学習モデルの精度を決定するために品質メトリックを読み出す。
【0069】
いくつかの実施形態では、ユーザデバイス102は、(2)で、修正済みのコンテナイメージの位置をフロントエンド129に送信する。フロントエンド129は、次いで、(3)で、修正済みのコンテナイメージの位置を仮想マシンインスタンス122に転送する。ユーザデバイス102は、修正済みのコンテナイメージを、訓練中の機械学習モデルを修正するための修正要求の一部として送信することができる。これに応答して、仮想マシンインスタンス122は、(4)で、元のコンテナイメージから形成された元のML訓練コンテナに保存されたコードの実行を停止する。仮想マシンインスタンス122は、次いで、受信した位置を使用して、(5)で、修正済みのコンテナイメージをコンテナデータストア170から読み出す。仮想マシンインスタンス122は、次いで、修正済みのML訓練コンテナを修正済みのコンテナイメージから形成することができ、機械学習モデルを再訓練するために、(6)で、以前に読み出された訓練データを使用して修正済みのML訓練コンテナに保存されたコードを実行することができる。
【0070】
コードの実行により、修正済みのML訓練コンテナは、更新されたモデルデータを生成する。仮想マシンインスタンス122は、次いで、(7)で、そのモデルデータを訓練モデルデータストア175に保存する。図示されないいくつかの実施形態では、仮想マシンインスタンス122は、訓練モデルデータストア175に、元のML訓練コンテナを使用して実行された訓練の結果として保存された任意のモデルデータを削除させる。
【0071】
図示されないいくつかの実施形態では、訓練中の機械学習モデルを修正することをユーザが望むものの、ユーザは、ユーザデバイス102を介して、修正済みのコンテナイメージの位置を提供しない。その理由は、ユーザが、新しいML訓練コンテナを初期化してほしくないためである。むしろ、ユーザは、訓練プロセスを再開せずに機械学習モデルを修正することができるように、既存のML訓練コンテナを実行時に修正することを望む。したがって、ユーザデバイス102は、その代わりに、仮想マシンインスタンス122が既存のML訓練コンテナに追加する(または、ML訓練コンテナに既に存在している他のコードを置き換えるために使用する)コードを提供する。例えば、既存のML訓練コンテナを形成するために使用される元のコンテナイメージは、実行されると実行可能命令が追加コードを読み出し、実行するように構成された実行可能命令を含むことができる。このような追加コードは、コンテナイメージと併せて(例えば、ML訓練コンテナが初期化されるときに)、かつ/または仮想マシンインスタンス122がML訓練コンテナ内に保存されたコードの実行を既に開始した後に、ユーザデバイス102によって提供することができる。本実施形態では、コンテナイメージは、追加コードと共に、完全なML訓練コンテナを形成する。
【0072】
機械学習モデルの訓練を並列化するための例示的なブロック図
図4は、いくつかの実施形態にしたがった、機械学習モデル訓練プロセスを並列化するために動作環境100の構成要素によって実行される動作を示す
図1の動作環境100のブロック図である。
図4に示すように、ユーザデバイス102は、(1)でコンテナイメージの位置または訓練データの位置をフロントエンド129に送信する。これに応答して、フロントエンド129は、第1の仮想マシンインスタンス122Aまたは第2の仮想マシンインスタンス122Bを初期化して、第1の仮想マシンインスタンス122Aが訓練データの第1の部分を使用して機械学習モデルの部分的な訓練を実行し、第2の仮想マシンインスタンス122Bが訓練データの第2の部分を使用して機械学習モデルの部分的な訓練を実行することができるようにする。フロントエンド129は、次いで、(2A)でコンテナイメージの位置または訓練データの第1の部分の位置を仮想マシンインスタンス122Aに送信する。コンテナイメージの位置または訓練データの第1の部分の位置を仮想マシンインスタンス122Aに送信する前、送信している間、または送信した後に、フロントエンド129は、(2B)でコンテナイメージの位置または訓練データの第2の部分の位置を仮想マシンインスタンス122Bに送信する。いくつかの実施形態では、コンテナイメージの位置または訓練データの位置は、訓練要求の一部として送信される。
【0073】
いくつかの実施形態では、仮想マシンインスタンス122Aは、(3A)で、受信した位置を使用して訓練データストア160から訓練データの第1の部分を読み出す。仮想マシンインスタンス122Aが訓練データの第1の部分を読み出す前、読み出している間、または読み出した後に、仮想マシンインスタンス122Bは、(3B)で、受信した位置を使用して訓練データストア160から訓練データの第2の部分を読み出す。図示されないいくつかの実施形態では、仮想マシンインスタンス122A~122Bは、同一の訓練データを読み出す。
【0074】
仮想マシンインスタンス122Aは、次いで、いくつかの実施形態では指示された位置から読み出されたコンテナイメージを使用してML訓練コンテナを形成し、(4A)で、読み出された訓練データの第1の部分を使用してML訓練コンテナに保存されたコードを実行する。仮想マシンインスタンス122Aがコードを実行する前、実行している間、または実行した後に、仮想マシンインスタンス122Bは、指示された位置から読み出されたコンテナイメージを使用してML訓練コンテナを形成し、(4B)で、読み出された訓練データの第2の部分を使用してML訓練コンテナに保存されたコードを実行する。したがって、仮想マシンインスタンス122A~122Bは、それぞれ、同一のML訓練コンテナのコピーを含む。
【0075】
コードを実行することにより、仮想マシンインスタンス122A~122B(例えば、これらに含まれるML訓練コンテナ)はモデルデータを生成する。したがって、仮想マシンインスタンス122Aは、(5A)でモデルデータを訓練モデルデータストア175に送信し、仮想マシンインスタンス122Bは、(5B)でモデルデータを訓練モデルデータストア175に送信する。図示されないいくつかの実施形態では、各仮想マシンインスタンス122A~122Bによって生成されたモデルデータは、(例えば、訓練モデルデータストア175によって)単一のモデルデータファイルにパッケージ化される。
【0076】
いくつかの実施形態では、仮想マシンインスタンス122A~122Bは、機械学習モデルの訓練の間、互いに通信する。例えば、仮想マシンインスタンス122A~122Bは、訓練プロセスの間、係数、重み、訓練計画または/または同種のものを共有することができる。
【0077】
機械学習モデルを展開または実行するための例示的なブロック図
図5Aは、いくつかの実施形態にしたがった、訓練済みの機械学習モデルを展開するために動作環境100の構成要素によって実行される動作を示す
図1の動作環境100のブロック図である。
図5Aに示すように、ユーザデバイス102は、(1)で機械学習モデル展開要求をフロントエンド149に送信する。フロントエンド149は、(2)で仮想マシンインスタンス142を初期化し、(3)で展開要求を仮想マシンインスタンス142に送信することができる。展開要求は、訓練モデルデータストア175に保存された1つ以上のモデルデータファイルの位置を含む。いくつかの実施形態では、展開要求はエンドポイント名を含む。いくつかの実施形態では、展開要求はエンドポイント名を含まない。
【0078】
いくつかの実施形態では、仮想マシンインスタンス142は、(4)で、訓練モデルデータストア175からモデルデータを読み出す。例えば、仮想マシンインスタンス142は、展開要求において識別された位置に対応するモデルデータを読み出す。図示されないいくつかの実施形態では、仮想マシンインスタンス142はモデルデータを読み出さない。むしろ、仮想マシンインスタンス142によって読み出されたコンテナイメージにモデルデータを組み込むことができる。同様に、仮想マシンインスタンス142は、(5)でコンテナイメージをコンテナデータストア170から読み出す。コンテナイメージは、展開要求において識別されたコンテナイメージに対応することができる。
【0079】
仮想マシンインスタンス142は、いくつかの実施形態では、(6)でMLスコアリングコンテナを初期化することができる。例えば、仮想マシンインスタンス142は、読み出されたコンテナイメージを使用してMLスコアリングコンテナを形成することができる。仮想マシンインスタンス142は、さらに、(7)でMLスコアリングコンテナに(例えば、機械学習モデルが訓練されるときにモデルデータがML訓練コンテナ130に保存される位置と同一である位置に)モデルデータを保存することができる。
【0080】
いくつかの実施形態では、展開要求がエンドポイント名を含まない場合、仮想マシンインスタンス142は、(8)でエンドポイント名をフロントエンド149に送信することができる。フロントエンド149は、次いで、(9)でエンドポイント名をユーザデバイス102に転送することができる。したがって、ユーザデバイス102は、エンドポイント名を使用して、将来において(例えば、機械学習モデル実行要求を送るために)初期化されたMLスコアリングコンテナにアクセスすることができる。
【0081】
図5Bは、いくつかの実施形態にしたがった、訓練済みの機械学習モデルを実行するために動作環境100の構成要素によって実行される動作を示す
図1の動作環境100のブロック図である。
図5Bに示すように、ユーザデバイス102は、(1)で機械学習モデル実行要求をフロントエンド149に送信する。フロントエンド149は、次いで、(2)で実行要求を仮想マシンインスタンス142に転送する。いくつかの実施形態では、実行要求はエンドポイント名を含む。モデルホスティングシステム140は、このエンドポイント名を使用して適切な仮想マシンインスタンス142に実行要求をルーティングする。
【0082】
いくつかの実施形態では、仮想マシンインスタンス142は、(3)で、実行要求に含まれる入力データを使用して仮想マシンインスタンス142内で初期化されたMLスコアリングコンテナに保存されたコードを実行して出力を生成する。いくつかの実施形態では、仮想マシンインスタンス142は、(4)で出力をモデル予測データストア180に保存する。あるいは、または加えて、仮想マシンインスタンス142は、(5)で出力をフロントエンド149に送信し、フロントエンド149は、(6)で出力をユーザデバイス102に送信する。
【0083】
関連する機械学習モデルを実行するための例示的なブロック図
図6は、いくつかの実施形態にしたがった、関連する機械学習モデルを実行するために動作環境100の構成要素によって実行される動作を示す
図1の動作環境100のブロック図である。
図6に示すように、ユーザデバイス102は、(1)で機械学習モデル実行要求をフロントエンド149に送信する。フロントエンド149は、次いで、(2)で、仮想マシンインスタンス142内で初期化された第1のMLスコアリングコンテナ150Aに実行要求を転送する。いくつかの実施形態では、実行要求は、仮想マシンインスタンス142内で初期化された第2のMLスコアリングコンテナ150Bによって実行される第2の機械学習モデルからの出力を求める要求を含むことができる。しかしながら、出力を生成するために、MLスコアリングコンテナ150Bは、MLスコアリングコンテナ150Aによって実行される第1の機械学習モデルの実行からのデータを必要とする。したがって、仮想マシンインスタンス142は、最初に、実行要求をMLスコアリングコンテナ150Aにルーティングする。いくつかの実施形態では、MLスコアリングコンテナ150Aは、他のMLスコアリングコンテナ(例えば、MLスコアリングコンテナ150B)との間の通信を管理するマスタコンテナとして機能する。
【0084】
いくつかの実施形態では、仮想マシンインスタンス142は、(3)で、MLスコアリングコンテナ150Aに第1のコードを実行させて第1の出力を生成させる。例えば、第1のコードの実行は、実行要求に含まれる入力データを使用した第1の機械学習モデルの実行を表す。MLスコアリングコンテナ150Aは、次いで、(4)で第1の出力をMLスコアリングコンテナ150Bに送信する。
【0085】
仮想マシンインスタンス142は、次いで、(5)で、第2のMLスコアリングコンテナ150Bに第1の出力を使用して第2のコードを実行させて第2の出力を生成させる。例えば、第2のコードの実行は、第1の出力を第2の機械学習モデルに対する入力として使用した第2の機械学習モデルの実行を表す。第2のMLスコアリングコンテナ150Bは、次いで、(6)で第2の出力をMLスコアリングコンテナ150Aに送信する。
【0086】
いくつかの実施形態では、仮想マシンインスタンス142は、第2の出力を第1のMLスコアリングコンテナ150Aから取り出し、(7)で第2の出力をモデル予測データストア180に保存する。あるいは、または加えて、仮想マシンインスタンス142は、第2の出力を第1のMLスコアリングコンテナ150Aから取り出し、(8)で第2の出力をフロントエンド149に送信する。フロントエンド149は、次いで、(9)で第2の出力をユーザデバイス102に送信する。
【0087】
図示されないいくつかの実施形態では、MLスコアリングコンテナ150A~150Bは、様々な仮想マシンインスタンス142内で初期化される。したがって、第1の出力または第2の出力の送信は、仮想マシンインスタンス142の間に生じる場合がある。
【0088】
例示的な機械学習モデル精度向上ルーチン
図7は、いくつかの実施形態にしたがった、モデル訓練システムによって例示的に実施される機械学習モデル訓練ルーチン700を表したフロー図である。例として、
図1のモデル訓練システム120は、機械学習モデル訓練ルーチン700を実行するように構成することができる。機械学習モデル訓練ルーチン700は、ブロック702から開始される。
【0089】
ブロック704で、いくつかの実施形態では、コンテナイメージの位置または訓練データの位置を受信する。例えば、コンテナイメージの位置または訓練データの位置は、訓練要求の一部として受信される。
【0090】
ブロック706で、いくつかの実施形態では、仮想マシンインスタンスが初期化される。例えば、初期化された仮想マシンインスタンスは、機械学習モデルの訓練を実行するインスタンスである。
【0091】
ブロック708で、いくつかの実施形態では、コンテナイメージまたは訓練データが読み出される。例えば、コンテナイメージはコンテナデータストア170から読み出すことができ、訓練データは訓練データストア160から読み出すことができる。
【0092】
ブロック710で、いくつかの実施形態では、ML訓練コンテナが仮想マシンインスタンス内で初期化される。例えば、ML訓練コンテナは、受信したコンテナイメージを使用して形成される。コンテナイメージは、アルゴリズムを定める実行可能命令を含む。したがって、ML訓練コンテナは、アルゴリズムを定める実行可能命令を含むコードを含む。
【0093】
ブロック712で、いくつかの実施形態では、ML訓練コンテナに保存されたコードが、読み出された訓練データを使用して実行される。例えば、読み出された訓練データ(例えば、訓練データ内の入力データ)は、アルゴリズムを定める実行可能命令に対する入力として(例えば、実行可能命令の入力パラメータの値として使用して)供給される。
【0094】
ブロック714で、いくつかの実施形態では、コードの実行の結果として生成されたモデルデータが保存される。例えば、モデルデータは、訓練モデルデータストア175に保存される。モデルデータは、機械学習モデル訓練プロセスの間に周期的に生成することができる。
【0095】
ブロック716で、いくつかの実施形態では、新しいコンテナイメージを機械学習モデル訓練プロセスの間に受信したかどうかの判定がなされる。新しいコンテナイメージを受信した場合、機械学習モデル訓練ルーチン700はブロック718に進む。さもなければ、新しいコンテナイメージを機械学習モデル訓練プロセスの間に受信しなかった場合、機械学習モデル訓練ルーチン700はブロック720に進み、終了する。
【0096】
ブロック718で、いくつかの実施形態では、元のML訓練コンテナは、新しいML訓練コンテナに置き換えられる。例えば、新しいML訓練コンテナは、新しいコンテナイメージを使用して形成される。一旦、元のML訓練コンテナが置き換えられると、機械学習モデル訓練ルーチン700は、新しいML訓練コンテナに保存されたコードが訓練データを使用して実行されるように、再度ブロック712に進む。
【0097】
図示されないいくつかの実施形態では、新しいコンテナイメージを受信しない。しかしながら、新しいハイパーパラメータ(例えば、クラスタの数に対する変更、層の数に対する変更など)、新しいコードまたは/または同種のものを受信する。モデル訓練システム120は、(元のML訓練コンテナを新しいML訓練コンテナに置き換える代わりに)実行中に元のML訓練コンテナを修正することにより、新しいハイパーパラメータ、新しいコードまたは/または同種のものを使用して機械学習モデルを訓練することができる。
【0098】
モデル訓練またはホスティングシステムの例示的なアーキテクチャ
図8は、本出願にしたがって機械学習モデルを訓練または/またはホスティングする、モデル訓練システム120またはモデルホスティングシステム140などの、例示的なモデルシステム800のアーキテクチャのいくつかの実施形態を表す。
図8に表されたモデルシステムの概略的なアーキテクチャは、本開示の態様を実施するために使用することができるコンピュータハードウェアまたはソフトウェア構成要素の配置構成を含む。示したように、モデルシステム800は、処理ユニット804、ネットワークインタフェース806、コンピュータ可読媒体ドライブ807または入出力デバイスインタフェース820を含み、これらの全ては、通信バスを経由して互いに通信し得る。
【0099】
いくつかの実施形態では、ネットワークインタフェース806は、
図1のネットワーク110などの、1つ以上のネットワークまたはコンピューティングシステムに接続性を提供する。したがって、処理ユニット804は、他のコンピューティングシステムまたはサービスからネットワークを介して情報または命令を受信することができる。処理ユニット804は、メモリ810との間で通信し、さらに出力情報を提供することもできる。いくつかの実施形態では、モデルシステム800は、
図8に示したものよりも多い(または少ない)構成要素を含む。
【0100】
いくつかの実施形態では、メモリ810は、1つ以上の実施形態を実施するために処理ユニット804が実行するコンピュータプログラム命令を含む。メモリ810は、一般に、RAM、ROM、または他の永続的もしくは非一時的なメモリを含む。メモリ810は、モデル訓練システム120または/またはモデルホスティングシステム140によって実施される機能の全体的な運用または動作において処理システム804によって使用するためのコンピュータプログラム命令を提供するオペレーティングシステム814を保存することができる。メモリ810は、本開示の態様を実施するためのコンピュータプログラム命令または他の情報をさらに含むことができる。例えば、いくつかの実施形態では、メモリ810は、
図1に示したモデル訓練システム120によって提供される機能に対応するモデル訓練構成要素816を含む。いくつかの実施形態では、メモリ810は、モデルホスティングシステム140によって提供される機能に対応するモデル実行構成要素818を含む。
【0101】
エンドユーザデバイスの例示的なアーキテクチャ
図9は、本出願にしたがってデータを受信し、データを準備し、モデル訓練システム120に訓練要求を送信し、モデルホスティングシステム140に展開要求または/または実行要求を送信することができる例示的なエンドユーザデバイス102のアーキテクチャのいくつかの実施形態を表す。
図9に表されたエンドユーザデバイス102の概略的なアーキテクチャは、本開示の態様を実施し、本開示の態様にアクセスするために使用することができるコンピュータハードウェアまたはソフトウェア構成要素の配置構成を含む。示したように、エンドユーザデバイス102は、処理ユニット904、ネットワークインタフェース906、コンピュータ可読媒体ドライブ907、入出力デバイスインタフェース920、任意選択のディスプレイ930、または入力デバイス940を含み、これらの全ては、通信バスを経由して互いに通信し得る。
【0102】
いくつかの実施形態では、ネットワークインタフェース906は、
図1のネットワーク110などの、1つ以上のネットワークまたはコンピューティングシステムに接続性を提供する。したがって、処理ユニット904は、他のコンピューティングシステムまたはサービスからネットワークを介して情報または命令を受信することができる。処理ユニット904は、メモリ910との間で通信し、さらに入出力デバイスインタフェース920を介して出力情報を任意選択のディスプレイ930に提供することもできる。入出力デバイスインタフェース920は、キーボード、マウス、デジタルペン、タッチスクリーンなどの任意選択の入力デバイス940からの入力を受け付けることもできる。いくつかの実施形態では、エンドユーザデバイス102は、
図9に示したものよりも多い(または少ない)構成要素を含む。
【0103】
いくつかの実施形態では、メモリ910は、データを受信し、データを準備し、本明細書で説明される要求を送信するために処理ユニット904が実行するコンピュータプログラム命令を含む。メモリ910は、一般に、RAM、ROM、または他の永続的もしくは非一時的なメモリを含む。メモリ910は、エンドユーザデバイス102の全体的な運用または動作において処理ユニット904によって使用するためのコンピュータプログラム命令またはインタフェースソフトウェア912を提供するオペレーティングシステム914を保存することができる。メモリ910は、本開示の態様を実施するためのコンピュータプログラム命令または他の情報をさらに含むことができる。例えば、いくつかの実施形態では、メモリ910は、コンテンツにアクセスし、モデル訓練システム120または/またはモデルホスティングシステム140と通信するための、ブラウザアプリケーション、メディアプレーヤ、CLI、スタンドアロンアプリケーションなどのネットワークアプリケーション916を含む。
【0104】
用語
本明細書で説明される方法またはタスクの全ては、コンピュータシステムによって実行され、完全に自動化されてもよい。コンピュータシステムは、場合によっては、説明される機能を実行するためにネットワークを通じて通信し、相互作用する複数の別々コンピュータまたはコンピューティングデバイス(例えば、物理サーバ、ワークステーション、記憶アレイ、クラウドコンピューティングリソースなど)を含んでもよい。このような各コンピューティングデバイスは、通常、メモリまたは他の非一時的コンピュータ可読記憶媒体もしくはデバイス(例えば、ソリッドステート記憶デバイス、ディスクドライブなど)に保存されたプログラム命令またはモジュールを実行するプロセッサ(または複数のプロセッサ)を含む。本明細書に開示された各種の機能は、このようなプログラム命令で具現化されてもよく、またはコンピュータシステムの特定用途向け回路(例えば、ASICもしくはFPGA)で実装されてもよい。コンピュータシステムが複数のコンピューティングデバイスを含む場合、これらのデバイスは、同じ位置に配置されてもよいが、必ずしもそうする必要はない。開示された方法またはタスクの結果は、ソリッドステートメモリチップまたは磁気ディスクなどの物理記憶デバイスを異なる状態に変えることによって永続的に記憶されてもよい。いくつかの実施形態では、コンピュータシステムは、複数の別々の事業体または他のユーザによって処理リソースが共有されるクラウドベースのコンピューティングシステムであってもよい。
【0105】
実施形態に応じて、本明細書で説明されるプロセスまたはアルゴリズムのいずれかのある作用、イベントまたは機能は、異なる順序で実行することができ、追加し、一体化し、または全体的に除外することができる(例えば、記載される全ての動作またはイベントが、アルゴリズムの実施のために必要であるわけではない)。さらに、ある実施形態では、動作またはイベントは、逐次的にではなく、例えば、マルチスレッド処理、割り込み処理、または複数のプロセッサもしくはプロセッサコアもしくは他の並列アーキテクチャによって同時に実行することができる。
【0106】
本明細書に開示された実施形態に関連して説明される各種の例示的な論理ブロック、モジュール、ルーチンまたはアルゴリズムステップは、電子ハードウェア(例えば、ASICもしくはFPGAデバイス)、コンピュータハードウェア上で動作するコンピュータソフトウェア、またはこれらの組み合わせとして実装することができる。さらに、本明細書に開示された実施形態に関連して説明される各種の例示的な論理ブロックまたはモジュールは、機械によって実装または実行することができる。このような機械としては、本明細書で説明される機能を実行するように設計されたプロセッサデバイス、デジタルシグナルプロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)もしくは他のプログラマブルロジックデバイス、ディスクリートゲートもしくはトランジスタロジック、ディスクリートハードウェア構成要素、またはこれらの任意の組み合わせなどがある。プロセッサデバイスは、マイクロプロセッサとすることができるが、代替的に、プロセッサデバイスは、コントローラ、マイクロコントローラもしくはステートマシン、またはこれらの組み合わせなどとすることができる。プロセッサデバイスは、コンピュータ実行可能命令を処理するように構成された電気回路を含むことができる。別の実施形態では、プロセッサデバイスは、コンピュータ実行可能命令を処理せずに論理演算を実行するFPGAまたは他のプログラマブルデバイスを含む。プロセッサデバイスは、例えば、DSPとマイクロプロセッサとの組み合わせ、複数のマイクロプロセッサ、DSPコアと連携する1つ以上のマイクロプロセッサ、または任意の他のこのような構成などの、コンピューティングデバイスの組み合わせとして実装することもできる。本明細書では主としてデジタル技術に関して説明されているが、プロセッサデバイスはまた、主としてアナログ構成要素を含んでもよい。例えば、本明細書で説明されるレンダリング技術の一部または全ては、アナログ回路またはアナログ・デジタル混合回路で実装されてもよい。コンピューティング環境は、いくつか例を挙げると、マイクロプロセッサ、メインフレームコンピュータ、デジタルシグナルプロセッサ、携帯型コンピューティングデバイス、デバイスコントローラまたは電化製品内の計算エンジンに基づいたコンピュータシステムを含むが、これに限定されない任意の種類のコンピュータシステムを含むことができる。
【0107】
本明細書に開示された実施形態に関連して説明される方法、プロセス、ルーチンまたはアルゴリズムの要素は、直接ハードウェアで、プロセッサデバイスによって実行されるソフトウェアモジュールで、またはこれら2つの組み合わせで具現化することができる。ソフトウェアモジュールは、RAMメモリ、フラッシュメモリ、ROMメモリ、EPROMメモリ、EEPROMメモリ、レジスタ、ハードディスク、リムーバブルディスク、CD-ROM、または任意の他の形態の非一時的コンピュータ可読記憶媒体に存在することができる。例示的な記憶媒体は、プロセッサデバイスが記憶媒体から情報を読み込み、情報を記憶媒体に書き込むことができるようにプロセッサデバイスに接続することができる。代替的に、記憶媒体は、プロセッサデバイスと一体にすることができる。プロセッサデバイスまたは記憶媒体は、ASICに存在することができる。ASICは、ユーザ端末に存在することができる。代替的に、プロセッサデバイスまたは記憶媒体は、ユーザ端末内のディスクリート構成要素として存在することができる。
【0108】
本明細書で使用される条件付きの文言、特に、「できる」、「する可能性がある」、「する場合がある」、「し得る」または「例えば」などは、特に明確に指定のない限り、または使用される文脈内で解釈されない限り、一般に、ある特徴、要素またはステップが、ある実施形態には含まれるが他の実施形態には含まれないことを伝えるように意図される。したがって、このような条件付きの文言は、一般に、特徴、要素またはステップが1つ以上の実施形態に全て必要であることを示すように意図されるものでもなく、これらの特徴、要素もしくはステップが任意の特定の実施形態に含まれるか、それとも任意の特定の実施形態において実行されるものであるかを他の入力または指示の有無に関わらず決定する論理が1つ以上の実施形態に必ず含まれることを示すように意図されるものでもない。用語「備える」、「含む」または「有する」などは同義語であり、包括的に、制限されない様式で使用され、追加の要素、特徴、作用または動作などを排除しない。また、用語「または」は、(排他的な意味では使用されず)包括的な意味で使用される。したがって、例えば、要素のリストを連結するために使用されるとき、用語「または」は、そのリスト内の要素の1つ、いくつかまたは全てを意味する。
【0109】
別段の定めのない限り、語句「X、Y、Zの少なくとも1つ」などの選言的な文言は、一般に、項目、用語などがX、YもしくはZのいずれか、またはこれらの任意の組み合わせ(例えば、X、YもしくはZ)であり得ることを表すために、使用される文脈で通常は解釈される。したがって、このような選言的な文言は、ある実施形態ではXの少なくとも1つ、Yの少なくとも1つ、またはZの少なくとも1つが、それぞれが存在するために必要であることを意味するように一般に意図されるものではなく、そのように意図されるべきではない。
【0110】
上記の詳細な説明では、各種の実施形態に適用されるように新規の特徴を図示し、説明し、指摘してきたが、例示されたデバイスまたはアルゴリズムの形態または細部における各種の省略、置換または変更が、本開示の趣旨から逸脱せずになされ得ることを理解することができる。理解できるように、本明細書で説明されるある実施形態は、ある特徴を他の特徴とは別に使用し、または実施することができるため、本明細書に記載される特徴または利点の全てを提供しない形態内に具現化することができる。本明細書に開示されたある実施形態の範囲は、前述の説明によってではなく、添付された特許請求の範囲によって示される。請求項の意味または均等範囲に属する全ての変更は、請求項の範囲内に包含される。
【0111】
前述の事項は、以下の条項を考慮することでより良く理解され得る。
条項1.訓練モデルデータストアと、
第1の仮想マシンインスタンスをホスティングする第1のコンピューティングデバイスであって、実行されると、前記第1のコンピューティングデバイスに、
ユーザデバイスから、コンテナイメージの指示子と、訓練データの指示子と、1つ以上の第1のハイパーパラメータ値とを含む訓練要求を取得することと、
前記第1の仮想マシンインスタンス内で機械学習(ML)訓練コンテナを初期化することであって、前記ML訓練コンテナが前記コンテナイメージから形成される、前記初期化することと、
前記第1の仮想マシンインスタンスに、前記1つ以上の第1のハイパーパラメータ値にしたがって前記ML訓練コンテナ内に保存されたコードを実行させることであって、前記コードの実行により、前記第1の仮想マシンインスタンスが、前記訓練データを使用して機械学習モデルを訓練し、前記機械学習モデルの特性を表すモデルデータを生成する、前記実行させることと、
前記モデルデータを前記訓練モデルデータストアに保存することと、を行わせるコンピュータ実行可能命令を含む前記第1のコンピューティングデバイスとを含む、システム。
【0112】
条項2.前記コンピュータ実行可能命令は、実行されると、前記第1のコンピューティングデバイスに、
訓練中の前記機械学習モデルを修正するための修正要求であって、第2のコンテナイメージの指示子を含む前記修正要求を取得することと、
前記第1の仮想マシンインスタンスに前記コードの実行を停止させることと、
前記ML訓練コンテナを、前記第2のコンテナイメージを使用して形成された第2のML訓練コンテナに置き換えることと、
前記第1の仮想マシンインスタンスに前記第2のML訓練コンテナ内に保存された第2のコードを実行させることであって、前記第2のコードの実行により、前記第1のマシンインスタンスが、前記機械学習モデルを再訓練し、第2のモデルデータを生成する、前記実行させることと、をさらに行わせる、条項1に記載のシステム。
【0113】
条項3.前記コンピュータ実行可能命令は、実行されると、前記第1のコンピューティングデバイスに、
1つ以上の第2のハイパーパラメータ値を取得することと、
前記第1の仮想マシンインスタンスに、前記1つ以上の第1のハイパーパラメータ値の代わりに前記1つ以上の第2のハイパーパラメータ値にしたがって前記ML訓練コンテナ内に保存された前記コードを実行させることと、をさらに行わせる、条項1に記載のシステム。
【0114】
条項4.前記コンピュータ実行可能命令は、実行されると、前記第1のコンピューティングデバイスに、
入力データと既知の結果とを含む評価データを取得することと、
前記入力データを入力として使用して前記モデルデータによって定められた前記機械学習モデルを実行してモデル出力データを生成することと、
前記モデル出力データと前記既知の結果とを比較して前記機械学習モデルの品質メトリックを決定することと、
前記品質メトリックを保存することと、をさらに行わせる、条項1に記載のシステム。
【0115】
条項5.前記コンピュータ実行可能命令は、実行されると、前記第1のコンピューティングデバイスに、
前記第1の仮想マシンインスタンス内で第2のML訓練コンテナを初期化することであって、前記第2のML訓練コンテナが前記コンテナイメージから形成される、前記初期化することと、
前記第1の仮想マシンインスタンスに、前記ML訓練コンテナ内に保存された前記コードの前記実行と並列に、前記1つ以上の第1のハイパーパラメータ値にしたがって前記第2のML訓練コンテナ内に保存された第2のコードを実行させることとをさらに行わせる、条項1に記載のシステム。
【0116】
条項6.ネットワークを通じてユーザデバイスから、コンテナイメージの指示子と訓練データの指示子とを含む訓練要求を受信することと、
第1のコンピューティングデバイスによってホスティングされた第1の仮想マシンインスタンス内で機械学習(ML)訓練コンテナを初期化することであって、前記ML訓練コンテナが前記コンテナイメージから形成される、前記初期化することと、
前記第1の仮想マシンインスタンスに、前記ML訓練コンテナ内に保存されたコードを実行させることであって、前記コードの実行により、前記第1の仮想マシンインスタンスが、前記訓練データを使用して機械学習モデルを訓練し、前記機械学習モデルの特性を表すモデルデータを生成する、前記実行させることと、を含む、コンピュータ実施方法。
【0117】
条項7.訓練中の前記機械学習モデルを修正するための修正要求であって、第2のコンテナイメージの指示子を含む前記修正要求を受信することと、
前記第1の仮想マシンインスタンスに前記コードの実行を停止させることと、
前記第1の仮想マシンインスタンス内で第2のML訓練コンテナを初期化することであって、前記第2のML訓練コンテナが前記コンテナイメージを使用して形成される、前記初期化することと、
前記第1の仮想マシンインスタンスに前記第2のML訓練コンテナ内に保存された第2のコードを実行させることであって、前記第2のコードの実行により、前記第1のマシンインスタンスが、前記機械学習モデルを再訓練し、第2のモデルデータを生成する、前記実行させることと、をさらに含む、条項6に記載のコンピュータ実施方法。
【0118】
条項8.入力データと既知の結果とを含む評価データを取得することと、
前記入力データを入力として使用して前記モデルデータによって定められた前記機械学習モデルを実行してモデル出力データを生成することと、
前記モデル出力データと前記既知の結果とを比較して前記機械学習モデルの品質メトリックを決定することとをさらに含む、条項6に記載のコンピュータ実施方法。
【0119】
条項9.前記第1の仮想マシンインスタンス内で第2のML訓練コンテナを初期化することであって、前記第2のML訓練コンテナが前記コンテナイメージから形成される、前記初期化することと、
前記第1の仮想マシンインスタンスに、前記ML訓練コンテナ内に保存された前記コードの前記実行と並列に、前記第2のML訓練コンテナ内に保存された第2のコードを実行させることであって、前記第2のコードの実行により前記第1のマシンインスタンスが第2のモデルデータを生成し、前記モデルデータと前記第2のモデルデータとの組み合わせが前記機械学習モデルの訓練済みのバージョンの特性を定める、前記実行させることとをさらに含む、条項6に記載のコンピュータ実施方法。
【0120】
条項10.第2のコンピューティングデバイスによってホスティングされた第2の仮想マシンインスタンス内でMLスコアリングコンテナを初期化することであって、前記MLスコアリングコンテナが前記コンテナイメージから形成される、前記初期化することと、
前記モデルデータを前記MLスコアリングコンテナに保存することと、
前記ユーザデバイスから、入力データを含む実行要求を受信することと、
前記入力データを使用して前記MLスコアリングコンテナに保存された第2のコードを実行して出力を生成することと、
前記出力を前記ユーザデバイスに送信することと、をさらに含む、条項6に記載のコンピュータ実施方法。
【0121】
条項11.前記訓練要求が、1つ以上の第1のハイパーパラメータ値をさらに含む、条項6に記載のコンピュータ実施方法。
【0122】
条項12.前記第1の仮想マシンインスタンスに前記ML訓練コンテナ内に保存されたコードを実行させることが、前記第1の仮想マシンインスタンスに、前記1つ以上の第1のハイパーパラメータ値にしたがって前記ML訓練コンテナ内に保存された前記コードを実行させることをさらに含む、条項11に記載のコンピュータ実施方法。
【0123】
条項13.1つ以上の第2のハイパーパラメータ値を取得することと、
前記第1の仮想マシンインスタンスに、前記1つ以上の第1のハイパーパラメータ値ではなく前記1つ以上の第2のハイパーパラメータ値にしたがって前記ML訓練コンテナ内に保存された前記コードを実行させることと、をさらに含む、条項12に記載のコンピュータ実施方法。
【0124】
条項14.前記訓練要求が、前記第1のコンピューティングデバイスのグラフィック処理ユニット(GPU)インスタンスタイプ、前記第1のコンピューティングデバイスの中央処理ユニット(CPU)インスタンスタイプ、前記第1のコンピューティングデバイスに割り当てるメモリ量または前記第1の仮想マシンインスタンスの種類の少なくとも1つをさらに含む、条項6に記載のコンピュータ実施方法。
【0125】
条項15.1つ以上の非一時的コンピュータ可読記憶媒体であって、1つ以上のプロセッサによって実行される場合、前記1つ以上のプロセッサに、少なくとも、
ユーザデバイスから、コンテナイメージの指示子と訓練データの指示子とを取得することと、
前記コンテナイメージを使用して第1の仮想マシンインスタンス内で訓練コンテナを初期化することと、
前記第1の仮想マシンインスタンスに前記訓練コンテナ内に保存されたコードを実行させることであって、前記コードの実行により、前記第1の仮想マシンインスタンスが、前記訓練データを使用して機械学習モデルを訓練し、前記機械学習モデルの特性を表すモデルデータを生成する、前記実行させることと、を行わせるコンピュータ実行可能命令を記憶する、前記非一時的コンピュータ可読記憶媒体。
【0126】
条項16.前記コンピュータ実行可能命令が、前記1つ以上のプロセッサに、少なくとも、
第2のコンテナイメージの指示子を受信することと、
前記第1の仮想マシンインスタンスに前記コードの実行を停止させることと、
前記第1の仮想マシンインスタンス内で第2の訓練コンテナを初期化することであって、前記第2の訓練コンテナが前記第2のコンテナイメージを使用して形成される、前記初期化することと、
前記第1の仮想マシンインスタンスに前記第2の訓練コンテナ内に保存された第2のコードを実行させることであって、前記第2のコードの実行により、前記第1のマシンインスタンスが、前記機械学習モデルを再訓練し、第2のモデルデータを生成する、前記実行させることと、をさらに行わせる、条項15に記載の非一時的コンピュータ可読記憶媒体。
【0127】
条項17.前記コンピュータ実行可能命令が、前記1つ以上のプロセッサに、少なくとも、
前記第1の仮想マシンインスタンス内で第2の訓練コンテナを初期化することであって、前記第2の訓練コンテナが前記コンテナイメージから形成される、前記初期化することと、
前記第1の仮想マシンインスタンスに、前記訓練コンテナ内に記憶された前記コードの前記実行と並列に、前記第2の訓練コンテナ内に保存された第2のコードを実行させることであって、前記第2のコードの実行により前記第1の仮想マシンインスタンスが第2のモデルデータを生成し、前記モデルデータと前記第2のモデルデータとの組み合わせが前記機械学習モデルの訓練済みのバージョンの特性を定める、前記実行させることとをさらに行わせる、条項15に記載の非一時的コンピュータ可読記憶媒体。
【0128】
条項18.前記コンピュータ実行可能命令が、前記1つ以上のプロセッサに、少なくとも、
第2のコンピューティングデバイスによってホスティングされた第2の仮想マシンインスタンス内でスコアリングコンテナを初期化することであって、前記スコアリングコンテナが前記コンテナイメージから形成される、前記初期化することと、
前記モデルデータを前記スコアリングコンテナに保存することと、をさらに行わせる、条項15に記載の非一時的コンピュータ可読記憶媒体。
【0129】
条項19.前記コンピュータ実行可能命令が、前記1つ以上のプロセッサに、少なくとも、
前記ユーザデバイスから、入力データを含む実行要求を受信することと、
前記入力データを使用して前記スコアリングコンテナに保存された第2のコードを実行して出力を生成することと、
前記出力を前記ユーザデバイスに送信することと、をさらに行わせる、条項18に記載の非一時的コンピュータ可読記憶媒体。
【0130】
条項20.前記コンピュータ実行可能命令が、前記1つ以上のプロセッサに、少なくとも、
1つ以上の第1のハイパーパラメータ値を取得することと、
前記第1の仮想マシンインスタンスに、前記1つ以上の第1のハイパーパラメータ値にしたがって前記訓練コンテナ内に保存された前記コードを実行させることと、をさらに行わせる、条項15に記載の非一時的コンピュータ可読記憶媒体。