(57)【要約】  ネットワークアクセス可能な機械学習サービスが本明細書で提供される。例えば、ネットワークアクセス可能な機械学習サービスの提供者は、ネットワークを介してユーザデバイスにアクセス可能な１つ以上の物理コンピューティングデバイスを運営することができる。これらの物理コンピューティングデバイス（複数可）は、ユーザデバイスによって参照された訓練データを使用して機械学習モデルを訓練するように構成された仮想マシンインスタンスをホスティングすることができる。これらの物理的コンピューティングデバイス（複数可）は、さらに、ユーザ提供の入力に応答して訓練済みの機械学習モデルを実行して、保存される、かつ／またはネットワークを介してユーザデバイスに送信される出力を生成するように構成された仮想マシンのインスタンスをホスティングすることができる。
2021504799.tif 000002
【特許請求の範囲】
【請求項１】
訓練モデルデータストアと、
第１の仮想マシンインスタンスをホスティングする第１のコンピューティングデバイスと、
を含むシステムであって、
前記第１のコンピューティングデバイスは、コンピュータ実行可能命令を含み、前記コンピュータ実行可能命令は、実行されると、前記第１のコンピューティングデバイスに、
ユーザデバイスから、コンテナイメージの指示子と、訓練データの指示子と、１つ以上の第１のハイパーパラメータ値と、を含む訓練要求を取得させ、
前記第１の仮想マシンインスタンス内で機械学習（ＭＬ）訓練コンテナを初期化させ、前記ＭＬ訓練コンテナは、前記コンテナイメージから形成され、
前記第１の仮想マシンインスタンスに、前記１つ以上の第１のハイパーパラメータ値にしたがって前記ＭＬ訓練コンテナ内に保存されたコードを実行させ、前記コードの実行により、前記第１の仮想マシンインスタンスが、前記訓練データを使用して機械学習モデルを訓練し、前記機械学習モデルの特性を表すモデルデータを生成し、
前記モデルデータを前記訓練モデルデータストアに保存させる、
システム。
【請求項２】
前記コンピュータ実行可能命令は、実行されると、前記第１のコンピューティングデバイスに、さらに、
訓練中の前記機械学習モデルを修正するための修正要求であって、第２のコンテナイメージの指示子を含む前記修正要求を取得させ、
前記第１の仮想マシンインスタンスに前記コードの実行を停止させ、
前記ＭＬ訓練コンテナを、前記第２のコンテナイメージを使用して形成された第２のＭＬ訓練コンテナに置き換え、
前記第１の仮想マシンインスタンスに前記第２のＭＬ訓練コンテナ内に保存された第２のコードを実行させ、前記第２のコードの実行により、前記第１の仮想マシンインスタンスが、前記機械学習モデルを再訓練し、第２のモデルデータを生成する、
請求項１に記載のシステム。
【請求項３】
前記コンピュータ実行可能命令は、実行されると、前記第１のコンピューティングデバイスに、さらに、
１つ以上の第２のハイパーパラメータ値を取得させ、
前記第１の仮想マシンインスタンスに、前記１つ以上の第１のハイパーパラメータ値の代わりに前記１つ以上の第２のハイパーパラメータ値にしたがって前記ＭＬ訓練コンテナ内に保存された前記コードを実行させる、
請求項１に記載のシステム。
【請求項４】
前記コンピュータ実行可能命令は、実行されると、前記第１のコンピューティングデバイスに、さらに
入力データと既知の結果とを含む評価データを取得させ、
前記入力データを入力として使用して前記モデルデータによって定められた前記機械学習モデルを実行してモデル出力データを生成させ、
前記モデル出力データと前記既知の結果とを比較して前記機械学習モデルの品質メトリックを決定させ、
前記品質メトリックを保存させる、
請求項１に記載のシステム。
【請求項５】
前記コンピュータ実行可能命令は、実行されると、前記第１のコンピューティングデバイスに、さらに、
前記第１の仮想マシンインスタンス内で第２のＭＬ訓練コンテナを初期化させ、前記第２のＭＬ訓練コンテナは、前記コンテナイメージから形成され、
前記第１の仮想マシンインスタンスに、前記ＭＬ訓練コンテナ内に保存された前記コードの前記実行と並列に、前記１つ以上の第１のハイパーパラメータ値にしたがって前記第２のＭＬ訓練コンテナ内に保存された第２のコードを実行させる、
請求項１に記載のシステム。
【請求項６】
前記第２のコードの実行により、前記第１の仮想マシンインスタンスは、第２のモデルデータを生成し、前記モデルデータと前記第２のモデルデータとの組み合わせは、前記機械学習モデルの訓練済みのバージョンの特性を定める、
請求項５に記載のシステム。
【請求項７】
コンピュータ実施方法であって、
ネットワークを通じてユーザデバイスから、コンテナイメージの指示子と訓練データの指示子とを含む訓練要求を受信するステップと、
第１のコンピューティングデバイスによってホスティングされた第１の仮想マシンインスタンス内で機械学習（ＭＬ）訓練コンテナを初期化するステップであって、前記ＭＬ訓練コンテナは、前記コンテナイメージから形成されるステップと、
前記第１の仮想マシンインスタンスに、前記ＭＬ訓練コンテナ内に保存されたコードを実行させるステップであって、前記コードの実行により、前記第１の仮想マシンインスタンスは、前記訓練データを使用して機械学習モデルを訓練し、前記機械学習モデルの特性を表すモデルデータを生成するステップと、
を含むコンピュータ実施方法。
【請求項８】
訓練中の前記機械学習モデルを修正するための修正要求であって、第２のコンテナイメージの指示子を含む前記修正要求を受信するステップと、
前記第１の仮想マシンインスタンスに前記コードの実行を停止させるステップと、
前記第１の仮想マシンインスタンス内で第２のＭＬ訓練コンテナを初期化するステップであって、前記第２のＭＬ訓練コンテナは、前記コンテナイメージを使用して形成されるステップと、
前記第１の仮想マシンインスタンスに前記第２のＭＬ訓練コンテナ内に保存された第２のコードを実行させるステップであって、前記第２のコードの実行により、前記第１の仮想マシンインスタンスは、前記機械学習モデルを再訓練し、第２のモデルデータを生成するステップと、
をさらに含む、
請求項７に記載のコンピュータ実施方法。
【請求項９】
入力データと既知の結果とを含む評価データを取得するステップと、
前記入力データを入力として使用して前記モデルデータによって定められた前記機械学習モデルを実行してモデル出力データを生成するステップと、
前記モデル出力データと前記既知の結果とを比較して前記機械学習モデルの品質メトリックを決定するステップと、
をさらに含む、
請求項７に記載のコンピュータ実施方法。
【請求項１０】
前記第１の仮想マシンインスタンス内で第２のＭＬ訓練コンテナを初期化するステップであって、前記第２のＭＬ訓練コンテナは、前記コンテナイメージから形成されるステップと、
前記第１の仮想マシンインスタンスに、前記ＭＬ訓練コンテナ内に保存された前記コードの前記実行と並列に、前記第２のＭＬ訓練コンテナ内に保存された第２のコードを実行させるステップであって、前記第２のコードの実行により、前記第１の仮想マシンインスタンスが第２のモデルデータを生成し、前記モデルデータと前記第２のモデルデータとの組み合わせは、前記機械学習モデルの訓練済みのバージョンの特性を定めるステップと、
をさらに含む、
請求項７に記載のコンピュータ実施方法。
【請求項１１】
第２のコンピューティングデバイスによってホスティングされた第２の仮想マシンインスタンス内でＭＬスコアリングコンテナを初期化するステップであって、前記ＭＬスコアリングコンテナは、前記コンテナイメージから形成されるステップと、
前記モデルデータを前記ＭＬスコアリングコンテナに保存するステップと、
前記ユーザデバイスから、入力データを含む実行要求を受信するステップと、
前記入力データを使用して前記ＭＬスコアリングコンテナに保存された第２のコードを実行して出力を生成するステップと、
前記出力を前記ユーザデバイスに送信するステップと、
をさらに含む、
請求項７に記載のコンピュータ実施方法。
【請求項１２】
前記訓練要求は、１つ以上の第１のハイパーパラメータ値をさらに含む、
請求項７に記載のコンピュータ実施方法。
【請求項１３】
前記第１の仮想マシンインスタンスに前記ＭＬ訓練コンテナ内に保存されたコードを実行させるステップは、前記第１の仮想マシンインスタンスに、前記１つ以上の第１のハイパーパラメータ値にしたがって前記ＭＬ訓練コンテナ内に保存された前記コードを実行させるステップをさらに含む、
請求項１２に記載のコンピュータ実施方法。
【請求項１４】
１つ以上の第２のハイパーパラメータ値を取得するステップと、
前記第１の仮想マシンインスタンスに、前記１つ以上の第１のハイパーパラメータ値ではなく前記１つ以上の第２のハイパーパラメータ値にしたがって前記ＭＬ訓練コンテナ内に保存された前記コードを実行させるステップと、
をさらに含む、
請求項１３に記載のコンピュータ実施方法。
【請求項１５】
前記訓練要求は、前記第１のコンピューティングデバイスのグラフィック処理ユニット（ＧＰＵ）インスタンスタイプ、前記第１のコンピューティングデバイスの中央処理ユニット（ＣＰＵ）インスタンスタイプ、前記第１のコンピューティングデバイスに割り当てるメモリ量または前記第１の仮想マシンインスタンスの種類の少なくとも１つをさらに含む、
請求項７に記載のコンピュータ実施方法。
【発明の詳細な説明】
【背景技術】
【０００１】
コンピューティングデバイスは、データを交換するために通信ネットワークを利用することができる。企業または組織は、業務を支援するために、またはサービスを第三者に提供するために複数のコンピューティングデバイスを相互接続するコンピュータネットワークを運営する。コンピューティングシステムは、単一の地理的位置に位置付けられるか、または（例えば、プライベートもしくはパブリックな通信ネットワークを介して相互接続された）複数の別々の地理的位置に位置付けられる場合がある。具体的には、本明細書では一般に「データセンタ」と呼ばれるデータセンタまたはデータ処理センタは、コンピューティングリソースをデータセンタのユーザに提供するために、複数の相互接続されたコンピューティングシステムを含んでもよい。データセンタリソースの利用の増加を促進するために、仮想化技術は、単一の物理コンピューティングデバイスが、データセンタのユーザに対して独立したコンピューティングデバイスとして見え、動作する仮想マシンの１つ以上のインスタンスをホスティングすることを可能にする。
【０００２】
図面全体で、参照番号は、参照された要素間の対応を示すために再度使用され得る。図面は、本明細書で説明される例示的な実施形態を示すために提供され、本開示の範囲を限定することを意図していない。
【図面の簡単な説明】
【０００３】
【図１】いくつかの実施形態における、機械学習モデルが訓練され、ホスティングされる例示的な動作環境のブロック図である。
【図２】いくつかの実施形態にしたがった、機械学習モデルを訓練するために動作環境の構成要素によって実行される動作を示す図１の動作環境のブロック図である。
【図３】いくつかの実施形態にしたがった、機械学習モデルの訓練を修正するために動作環境の構成要素によって実行される動作を示す図１の動作環境のブロック図である。
【図４】いくつかの実施形態にしたがった、機械学習モデル訓練プロセスを並列化するために動作環境の構成要素によって実行される動作を示す図１の動作環境のブロック図である。
【図５Ａ】いくつかの実施形態にしたがった、訓練済みの機械学習モデルを展開するために動作環境の構成要素によって実行される動作を示す図１の動作環境のブロック図である。
【図５Ｂ】いくつかの実施形態にしたがった、訓練済みの機械学習モデルを実行するために動作環境の構成要素によって実行される動作を示す図１の動作環境のブロック図である。
【図６】いくつかの実施形態にしたがった、関連する機械学習モデルを実行するために動作環境の構成要素によって実行される動作を示す図１の動作環境のブロック図である。
【図７】いくつかの実施形態にしたがった、モデル訓練システムによって例示的に実施される機械学習モデル訓練ルーチンを表したフロー図である。
【図８】本出願にしたがって機械学習モデルを訓練または／またはホスティングする、モデル訓練システムまたはモデルホスティングシステムなどの、例示的なモデルシステムのアーキテクチャのいくつかの実施形態を表す。
【図９】本出願にしたがってデータを受信し、データを準備し、モデル訓練システムに訓練要求を送信し、モデルホスティングシステムに展開要求または／または実行要求を送信することができる例示的なエンドユーザデバイスのアーキテクチャのいくつかの実施形態を表す。
【発明を実施するための形態】
【０００４】
上述したように、実施形態は、単一の物理コンピューティングデバイス（または複数の物理コンピューティングデバイス）が、ユーザに対して独立のコンピューティングデバイスとして見え、動作する仮想マシンの１つ以上のインスタンスをホスティングすることを可能にする。いくつかの実施形態では、サービス提供者は、仮想化技術を活用して、本明細書で説明されるネットワークアクセス可能な機械学習モデル訓練またはホスティングシステムなどの、ネットワークアクセス可能な機械学習サービスを提供することができる。例えば、サービスの提供者は、ネットワークを介してユーザデバイスにアクセス可能な１つ以上の物理コンピューティングデバイスを運営することができる。これらの物理コンピューティングデバイス（複数可）は、ユーザデバイスから受信したコマンドに応答して機械学習モデルを訓練または／または実行するように構成された仮想マシンインスタンスをホスティングすることができる。
【０００５】
本明細書で説明される実施形態は、機械学習モデルを訓練するように構成された従来のコンピューティングシステムと比べていくつかの技術的な利点を提供する。例えば、機械学習モデルを訓練することにより、大量の処理能力を利用することになり得る。その理由は、機械学習モデルが非常に複雑になる可能性があり、モデルを訓練するために使用されるデータ量が（例えば、ギガバイト、テラバイト、ペタバイトなどの）非常に大きいものになり得るためである。したがって、あるユーザは、訓練を実行するために、物理的に大きい従来のコンピューティングマシンを入手する。しかしながら、ユーザは、特定のソフトウェアを用いてこれらの従来のコンピューティングマシンをカスタマイズして所望のモデル訓練を実行してもよい。他方、本明細書で説明される実施形態は、ユーザが大量のカスタマイズされたコードを生成し、実装する必要がない環境を提供する。むしろ、ユーザは、単に、訓練するための機械学習モデルの種類を定めるのに過不足のない情報を提供することができ、本明細書で説明される実施形態は、自動的に仮想マシンインスタンスを初期化し、コンテナを初期化し、かつ／またはモデル訓練サービスを実施するための他の動作を実行することができる。
【０００６】
他方、本明細書で説明される実施形態は、いくつかの実施形態では、様々な物理コンピューティングデバイスにわたって訓練を分散させるように構成される。したがって、モデルを訓練するための時間を大幅に減少させることができる。
【０００７】
結果として得られた訓練済みのモデルが不正確であることが分かった場合、有益な時間が失われ得る。他方、本明細書で説明される実施形態は、訓練プロセスの間にモデルを周期的に評価し、評価に対応するメトリックを出力することができる。したがって、ユーザは、例えば、訓練中の機械学習モデルが不正確であるかどうか、または訓練ジョブを停止することが有益であり得るかどうかを判定するためにメトリックを調べることができる。
【０００８】
従来のコンピューティングマシンが既に別のモデルを訓練している途中である場合、ユーザは、機械学習モデルの訓練の大幅な遅延に遭遇し得る。他方、本明細書で説明される実施形態は、いくつかの実施形態では、コンピューティングリソースを動的に割り当て、ユーザの需要に基づいてモデル訓練を実行する。したがって、単一のユーザまたは複数のユーザが、重複する期間中に複数の機械学習モデルを訓練することを望む場合、トレーニングを同時に実行することができる。
【０００９】
しかしながら、これら従来のサービスは、一般に、単一の種類の機械学習モデルに制限され、所定のデータ入力フォーマットを許容するのみである。他方、ユーザは、様々な種類の入力データフォーマットを受信することが可能な多くの様々な種類の機械学習モデルを訓練または使用することを望む場合がある。これらの従来のサービスとは異なり、本明細書で説明される実施形態は、機械学習モデルの種類、機械学習モデルを定めるプログラミング言語、機械学習モデルのデータ入力フォーマット、または／または機械学習モデルのデータ出力フォーマットに関わりなく機械学習モデルを訓練または実行することができる柔軟な実行環境を提供する。
【００１０】
例示的な機械学習モデル訓練またはホスティング環境
図１は、いくつかの実施形態における、機械学習モデルが訓練され、ホスティングされる例示的な動作環境１００のブロック図である。動作環境１００は、エンドユーザデバイス１０２、モデル訓練システム１２０、モデルホスティングシステム１４０、訓練データストア１６０、訓練メトリックデータストア１６５、コンテナデータストア１７０、訓練モデルデータストア１７５またはモデル予測データストア１８０を含む。
【００１１】
例示的なモデル訓練システム
いくつかの実施形態では、ユーザは、ユーザデバイス１０２を経由してモデル訓練システム１２０と対話することにより、モデル訓練システム１２０に１つ以上の機械学習モデルを訓練させるデータを提供する。ユーザデバイス１０２は、モデル訓練システム１２０のフロントエンド１２９を介してモデル訓練システム１２０と対話することができる。例えば、ユーザデバイス１０２は、訓練要求をフロントエンド１２９に提供することができる。この訓練要求は、コンテナイメージ（もしくは複数のコンテナイメージ）、入力データの指示子（例えば、入力データのアドレスもしくは位置）、ハイパーパラメータ値（例えば、アルゴリズムがどのように動作するか、並列に動作するアルゴリズムはいくつか、データを区別するためのクラスタはいくつかなどを示す値）、または／または機械学習モデルを訓練するコンピューティングマシンについて記載した情報（例えば、グラフィック処理ユニット（ＧＰＵ）インスタンスタイプ、中央処理ユニット（ＣＰＵ）インスタンスタイプ、割り当てるメモリ量、訓練に使用する仮想マシンインスタンスの種類など）を含む。
【００１２】
いくつかの実施形態では、コンテナイメージは、１つ以上の層を含むことができる。ここで、各層は実行可能命令を表す。実行可能命令の一部または全ては、合わせて、機械学習モデルを定めるアルゴリズムを表す。実行可能命令（例えば、アルゴリズム）は、任意のプログラミング言語（例えば、Ｐｙｔｈｏｎ、Ｒｕｂｙ、Ｃ＋＋、Ｊａｖａなど）で記述することができる。いくつかの実施形態では、アルゴリズムは、ユーザデバイス１０２を介して、アルゴリズムのリポジトリ（例えば、ネットワークアクセス可能なマーケットプレイス、機械学習訓練サービスによって提供されるデータストアなど）からユーザによって事前に生成され、取得される。いくつかの実施形態では、アルゴリズムは、ユーザによって生成される。
【００１３】
いくつかの実施形態では、訓練要求においてコンテナイメージを提供する代わりに、ユーザデバイス１０２は、訓練要求において、任意のプログラミング言語で記述されたアルゴリズムを提供するのみである。以下でより詳細に説明されるように、モデル訓練システム１２０は、次いで、機械学習モデルを訓練するための仮想マシンインスタンス１２２に最終的にロードされるコンテナにアルゴリズムをパッケージ化する。
【００１４】
いくつかの実施形態では、訓練要求においてコンテナイメージを提供する代わりに、ユーザデバイス１０２は、訓練要求において、コンテナイメージの指示子（例えば、コンテナイメージのアドレスまたは保存された位置の指示）を提供する。例えば、コンテナイメージは、コンテナデータストア１７０に保存することができる。モデル訓練システム１２０は、次いで、指示された位置からコンテナイメージを読み出し、読み出されたコンテナイメージを使用してコンテナを作成することができる。以下でより詳細に説明されるように、コンテナは、次いで、機械学習モデルを訓練するための仮想マシンインスタンス１２２にロードされる。
【００１５】
モデル訓練システム１２０は、いくつかの実施形態では、ユーザデバイス１０２によって提供された情報を使用して、１つ以上の事前に構築された仮想マシンインスタンス１２２において機械学習モデルを訓練することができる。特に、モデル訓練システム１２０は、１つ以上のコンピューティングネットワーク（図示せず）を使用して相互接続された単一の物理コンピューティングデバイスまたは複数の物理コンピューティングデバイスを含む。ここで、物理コンピューティングデバイス（複数可）は、１つ以上の仮想マシンインスタンス１２２をホスティングする。モデル訓練システム１２０は、ユーザデバイス１０２によって提供された機械学習モデルを訓練するコンピューティングマシンについて記載した情報に基づいて計算容量（例えば、以下でより詳細に説明されるコンテナ、インスタンスなど）の入手または設定をハンドリングすることができる。以下でより詳細に説明されるように、モデル訓練システム１２０は、次いで、計算容量を使用して機械学習モデルを訓練することができる。モデル訓練システム１２０は、フロントエンド１２９を介してユーザデバイス１０２から受信した訓練要求の量に基づいて自動的に規模を拡大または縮小することができる。それにより、過剰利用（例えば、非常に少ないコンピューティングリソースを入手し、性能に問題をきたすこと）、または過少利用（例えば、機械学習モデルを訓練するのに必要であるよりも多くのコンピューティングリソースを入手し、したがって余分に支払うこと）について心配しなければならない負担からユーザを開放する。
【００１６】
いくつかの実施形態では、仮想マシンインスタンス１２２は、タスクを実行するために利用される。例えば、このようなタスクは、機械学習モデルを訓練することを含むことができる。図１に示すように、各仮想マシンインスタンス１２２は、オペレーティングシステム（ＯＳ）１２４、言語ランタイム１２６または１つ以上の機械学習（ＭＬ）訓練コンテナ１３０を含む。一般に、ＭＬ訓練コンテナ１３０は、仮想マシンインスタンス上で利用可能なリソースを使用してそのインスタンス内に作成される論理ユニットであり、タスクの実行をインスタンスに発生する他のプロセス（例えば、タスクの実行）から分離するために利用することができる。いくつかの実施形態では、ＭＬ訓練コンテナ１３０は、１つ以上のコンテナイメージまたは上部コンテナ層から形成される。各コンテナイメージは、１つ以上のイメージ層をさらに含む。ここで、各イメージ層は実行可能命令を表す。上述したように、実行可能命令の一部または全ては、合わせて、機械学習モデルを定めるアルゴリズムを表す。ＭＬ訓練コンテナ１３０に対してなされた変更（例えば、新規ファイルの作成、既存ファイルの修正、ファイルの削除など）は、上部コンテナ層に保存される。ＭＬ訓練コンテナ１３０が削除された場合、上部コンテナ層も削除される。しかしながら、削除されたＭＬ訓練コンテナ１３０の一部を形成するコンテナイメージ（複数可）は、変更されないままにすることができる。ＭＬ訓練コンテナ１３０は、例えば、Ｌｉｎｕｘコンテナとして実装することができる。
【００１７】
いくつかの実施形態では、ＭＬ訓練コンテナ１３０は、それぞれ、ＯＳ１３２、ランタイム１３４またはコード１３６の個々のコピーを含む。ＯＳ１３２または／またはランタイム１３４は、ＭＬ訓練コンテナ１３０を形成するために使用されるコンテナイメージの少なくとも一部を形成する１つ以上の実行可能命令（例えば、コンテナイメージから形成されたコンテナにおいて動作するオペレーティングシステムまたは／またはランタイムを定めるコンテナイメージ内の実行可能命令（複数可））によって定めることができる。コード１３６は、ＭＬ訓練コンテナ１３０を形成するために使用されるコンテナイメージの少なくとも一部を形成する１つ以上の実行可能命令を含む。例えば、コード１３６は、機械学習モデルを定めるアルゴリズムを表すコンテナイメージ内の実行可能命令を含む。ＯＳ１３２または／またはランタイム１３４は、機械学習モデルの訓練を開始するための命令に応答してコード１３６を実行するように構成される。以下でより詳細に説明されるように、コード１３６を実行すると、結果としてモデルデータが生成される。
【００１８】
いくつかの実施形態では、コード１３６は、様々な機械学習モデルを定めるアルゴリズムを表す実行可能命令を含む。例えば、コード１３６は、第１の機械学習モデルを定める第１のアルゴリズムを表す実行可能命令の１つのセット、または第２の機械学習モデルを定める第２のアルゴリズムを表す実行可能命令の第２のセットを含む。いくつかの実施形態では、仮想マシンインスタンス１２２は、コード１３６を実行し、機械学習モデルの全てを訓練する。いくつかの実施形態では、仮想マシンインスタンス１２２は、コード１３６を実行して、機械学習モデルの１つを訓練のために選択する。例えば、仮想マシンインスタンス１２２は、訓練要求によって指示された訓練データの種類を識別することができ、訓練データの識別された種類と一致する機械学習モデルを選択して訓練する（例えば、選択された機械学習モデルを定めるアルゴリズムを表す実行可能命令を実行する）ことができる。
【００１９】
いくつかの実施形態では、ＯＳ１３２またはランタイム１３４は、仮想マシンインスタンス１２２によって利用されるＯＳ１２４またはランタイム１２６と同一である。いくつかの実施形態では、ＯＳ１３２または／またはランタイム１３４は、仮想マシンインスタンス１２２によって利用されるＯＳ１２４または／またはランタイム１２６とは異なる。
【００２０】
いくつかの実施形態では、モデル訓練システム１２０は、訓練要求に含まれる１つ以上のコンテナイメージ（または受信した訓練要求に応答してコンテナデータストア１７０から読み出されたコンテナイメージ）を使用して、ＭＬ訓練コンテナ１３０を仮想マシンインスタンス１２２内に作成し、この仮想マシンインスタンス内で初期化する。例えば、モデル訓練システム１２０は、コンテナイメージ（複数可）または／または上部コンテナ層を含むＭＬ訓練コンテナ１３０を作成する。
【００２１】
訓練プロセスを開始する前に、いくつかの実施形態では、モデル訓練システム１２０は、訓練要求において指示された位置から訓練データを読み出す。例えば、訓練要求において指示された位置は、訓練データストア１６０の位置とすることができる。したがって、モデル訓練システム１２０は、訓練データストア１６０内の指示された位置から訓練データを読み出す。いくつかの実施形態では、モデル訓練システム１２０は、訓練プロセスを開始する前に訓練データを読み出さない。むしろ、モデル訓練システム１２０は、訓練プロセスの間、指示された位置から訓練データをストリーミングする。例えば、モデル訓練システム１２０は、訓練データの一部を最初に読み出すことができ、読み出された部分を、機械学習モデルを訓練する仮想マシンインスタンス１２２に提供することができる。一旦、仮想マシンインスタンス１２２が、読み出された部分を適用し、使用するか、または一旦、仮想マシンインスタンス１２２が、読み出された部分の全てを使用しそうになると（例えば、読み出された部分を保存しているバッファがほとんど空になる）、モデル訓練システム１２０は、訓練データの第２の部分を読み出すことができ、第２の読み出された部分を仮想マシンインスタンス１２２に提供することができる、などである。
【００２２】
機械学習モデルの訓練を実行するために、いくつかの実施形態では、仮想マシンインスタンス１２２は、ＭＬ訓練コンテナ１３０に保存されたコード１３６を実行する。例えば、コード１３６は、この仮想マシンインスタンス内で初期化されたＭＬ訓練コンテナ１３０のコンテナイメージを形成する実行可能命令の一部または全てを含む。したがって、仮想マシンインスタンス１２２は、機械学習モデルを訓練するために、この仮想マシンインスタンス内で初期化されたＭＬ訓練コンテナ１３０のコンテナイメージを形成する実行可能命令の一部または全てを実行する。仮想マシンインスタンス１２２は、訓練要求に含まれるハイパーパラメータ値にしたがって実行可能命令の一部または全てを実行する。実例として、仮想マシンインスタンス１２２は、あるパラメータ（例えば、係数、重み、重心など）の値を識別することによって機械学習モデルを訓練する。識別される値は、訓練がどのように実行されるかを定めるハイパーパラメータに依存する。したがって、仮想マシンインスタンス１２２は、機械学習モデル訓練プロセスを始動するための実行可能命令を実行することができ、その場合、この訓練プロセスは、訓練要求に含まれるハイパーパラメータ値を使用して実行される。実行可能命令の実行は、仮想マシンインスタンス１２２が、モデル訓練システム１２０によって読み出された訓練データを入力パラメータとして実行中の命令の一部もしくは全てに適用することを含むことができる。
【００２３】
いくつかの実施形態では、実行可能命令を実行することにより、仮想マシンインスタンス１２２（例えば、ＭＬ訓練コンテナ１３０）はモデルデータを生成する。例えば、ＭＬ訓練コンテナ１３０は、モデルデータを生成し、ＭＬ訓練コンテナ１３０のファイルシステムにモデルデータを保存する。モデルデータは、機械学習モデルにおける層の数、機械学習モデルのハイパーパラメータ、機械学習モデルの係数、機械学習モデルの重み、または／または同種のものなどの、訓練中の機械学習モデルの特性を含む。特に、生成されたモデルデータは、訓練中の機械学習モデルを定める特性の値を含む。いくつかの実施形態では、実行可能命令を実行することにより、ＭＬ訓練コンテナ１３０に対する修正が生じ、それにより、モデルデータがＭＬ訓練コンテナ１３０の上部コンテナ層に書き込まれ、かつ／またはＭＬ訓練コンテナ１３０の一部を形成するコンテナイメージ（複数可）が、モデルデータを含むように修正される。
【００２４】
仮想マシンインスタンス１２２（またはモデル訓練システム１２０自体）は、生成されたモデルデータをＭＬ訓練コンテナ１３０から取り出し、生成されたモデルデータを、訓練モデルデータストア１７５において仮想マシンインスタンス１２２または／または訓練中の機械学習モデルに関連したエントリに保存する。いくつかの実施形態では、仮想マシンインスタンス１２２は、モデルデータを含む単一のファイルを生成し、その単一のファイルを訓練モデルデータストア１７５に保存する。いくつかの実施形態では、仮想マシンインスタンス１２２は、機械学習モデルを訓練する過程で複数のファイルを生成する。ここで、各ファイルはモデルデータを含む。いくつかの実施形態では、各モデルデータファイルは、同一の、または異なるモデルデータ情報を含む（例えば、１つのファイルがアルゴリズムの構造を識別し、別のファイルが係数のリストを含むなど）。仮想マシンインスタンス１２２は、一旦訓練が完了すると複数のファイルを単一のファイルにパッケージ化し、その単一のファイルを訓練モデルデータストア１７５に保存することができる。あるいは、仮想マシンインスタンス１２２は、訓練モデルデータストア１７５に複数のファイルを保存する。仮想マシンインスタンス１２２は、訓練プロセスが進行している最中または／または訓練プロセスが完了した後、ファイル（複数可）を訓練モデルデータストア１７５に保存する。
【００２５】
いくつかの実施形態では、仮想マシンインスタンス１２２は、訓練プロセスが進行しているときにモデルデータファイル（複数可）を訓練モデルデータストア１７５に定期的に保存する。したがって、モデルデータファイル（複数可）は、訓練プロセスの間の異なる時刻において訓練モデルデータストア１７５に保存することができる。特定の時刻に対応するモデルデータの各セットまたは特定の時刻までに訓練モデルデータストア１７５に存在するモデルデータファイルの各セットは、訓練プロセスの様々な段階の間、部分的に訓練済みの機械学習モデルの様々なバージョンを表すチェックポイントであり得る。したがって、訓練が完了する前に、ユーザは、部分的に訓練済みの機械学習モデル（例えば、訓練プロセスのある段階まで訓練済みの機械学習モデル）のバージョンを展開または／または実行するために、ユーザデバイス１０２を介して、後述するような方法で展開要求または／または実行要求を送ることができる。部分的に訓練済みの機械学習モデルのバージョンは、訓練モデルデータストア１７５に保存されたモデルデータファイルの一部または全てに基づくことができる。
【００２６】
いくつかの実施形態では、仮想マシンインスタンス１２２は、複数のＭＬ訓練コンテナ１３０に保存されたコード１３６を実行する。例えば、コンテナイメージに含まれるアルゴリズムは、訓練プロセスの並列化が可能なフォーマットにすることができる。したがって、モデル訓練システム１２０は、訓練要求において提供されたコンテナイメージの複数のコピーを作成することができ、仮想マシンインスタンス１２２に、各コンテナイメージのコピーを個別のＭＬ訓練コンテナ１３０にロードさせることができる。仮想マシンインスタンス１２２は、次いで、ＭＬ訓練コンテナ１３０に保存されたコード１３６を並列に実行することができる。仮想マシンインスタンス１２２は、さらに、設定情報を各ＭＬ訓練コンテナ１３０に提供することができる（例えば、Ｎ個のＭＬ訓練コンテナ１３０が機械学習モデルを集合的に訓練していること、または設定情報を受信した特定のＭＬ訓練コンテナ１３０がＮ個のうちの番号ＸのＭＬ訓練コンテナ１３０であることを示す情報）。この設定情報は、結果として得られたモデルデータに含めることができる。訓練プロセスを並列化することにより、いくつかの実施形態では、モデル訓練システム１２０は、訓練時間を大幅に減少させることができる。
【００２７】
いくつかの実施形態では、複数の仮想マシンインスタンス１２２が、複数のＭＬ訓練コンテナ１３０に保存されたコード１３６を実行する。例えば、特定の機械学習モデルを訓練するために使用されるリソースは、単一の仮想マシンインスタンス１２２の制限を超える場合がある。しかしながら、コンテナイメージに含まれるアルゴリズムは、訓練プロセスの並列化が可能なフォーマットにすることができる。したがって、モデル訓練システム１２０は、訓練要求において提供されたコンテナイメージの複数のコピーを作成することができ、複数の仮想マシンインスタンス１２２を初期化することができ、各仮想マシンインスタンス１２２に、コンテナイメージのコピーを１つ以上の個別のＭＬ訓練コンテナ１３０にロードさせることができる。次いで、仮想マシンインスタンス１２２は、それぞれ、ＭＬ訓練コンテナ１３０に保存されたコード１３６を並列に実行することができる。モデル訓練システム１２０は、さらに、仮想マシンインスタンス１２２を介して設定情報を各ＭＬ訓練コンテナ１３０に提供することができる（例えば、Ｎ個のＭＬ訓練コンテナ１３０が機械学習モデルを集合的に訓練していること、または設定情報を受信した特定のＭＬ訓練コンテナ１３０がＮ個のうちの番号ＸのＭＬ訓練コンテナ１３０であることを示す情報、Ｍ個の仮想マシンインスタンス１２２が機械学習モデルを集合的に訓練していること、または設定情報を受信した特定のＭＬ訓練コンテナ１３０がＭ個のうちの番号Ｙの仮想マシンインスタンス１２２内で初期化されることを示す情報など）。この設定情報は、結果として得られたモデルデータに含めることができる。上述したように、訓練プロセスを並列化することにより、いくつかの実施形態では、モデル訓練システム１２０は、訓練時間を大幅に減少させることができる。
【００２８】
いくつかの実施形態では、モデル訓練システム１２０は、複数の物理コンピューティングデバイスを含み、これらの物理コンピューティングデバイスの２つ以上は、コード１３６を実行する１つ以上の仮想マシンインスタンス１２２をホスティングする。したがって、様々な仮想マシンインスタンス１２２または／またはＭＬ訓練コンテナ１３０にわたってのみならず、様々な物理コンピューティングデバイスにわたって並列化を行うことができる。
【００２９】
いくつかの実施形態では、モデル訓練システム１２０はＭＬモデル評価器１２８を含む。ＭＬモデル評価器１２８は、機械学習モデルを訓練しているときに仮想マシンインスタンス１２２を監視することにより、生成されたモデルデータを取得し、取得したモデルデータを処理してモデルメトリックを生成することができる。例えば、モデルメトリックは、訓練中の機械学習モデルのエラー率、訓練中の機械学習モデルの統計的分布、訓練中の機械学習モデルのレイテンシ、訓練中の機械学習モデルの信頼度（例えば、訓練中の機械学習モデルの精度が分かる信頼度など）などの品質メトリックを含むことができる。ＭＬモデル評価器１２８は、訓練中の機械学習モデルのためのモデルデータ、または評価データを訓練データストア１６０から取得することができる。評価データは、機械学習モデルを訓練するために使用されるデータとは別であり、入力データと期待出力（例えば、既知の結果）との両方を含み、したがって、ＭＬモデル評価器１２８は、モデルデータを使用して機械学習モデルを定めることができ、機械学習モデルに対する入力として入力データを提供することによって機械学習モデルを実行することができる。ＭＬモデル評価器１２８は、次いで、機械学習モデルの出力と期待出力とを比較し、その比較に基づいて訓練中の機械学習モデルの１つ以上の品質メトリックを決定することができる（例えば、エラー率は、機械学習モデルの出力と期待出力との差または距離とすることができる）。
【００３０】
ＭＬモデル評価器１２８は、いくつかの実施形態では、訓練プロセスの間にモデルメトリックを周期的に生成し、モデルメトリックを訓練メトリックデータストア１６５に保存する。機械学習モデルを訓練している最中、ユーザは、ユーザデバイス１０２を介して、訓練メトリックデータストア１６５にアクセスし、そこからモデルメトリックを読み出すことができる。ユーザは、次いで、モデルメトリックを使用して、訓練プロセスを調整すべきかどうかまたは／または訓練プロセスを停止すべきかどうかを決定することができる。例えば、モデルメトリックは、機械学習モデルが十分に動作していない（例えば、閾値を超えるエラー率を有する、期待される、もしくは望ましい分布ではない（例えば、二項分布、ポアソン分布、幾何分布、正規分布、ガウス分布などではない）統計的分布を有する、閾値を超える実行レイテンシを有する、閾値未満の信頼度を有する）こと、または／または徐々に悪化して動作している（例えば、品質メトリックが時間と共に悪化し続けている）ことを示すことができる。これに応答して、いくつかの実施形態では、ユーザは、ユーザデバイス１０２を介して、訓練中の機械学習モデルを修正するためにモデル訓練システム１２０に要求を送信する（例えば、修正要求を送信する）ことができる。この要求は、新しいもしくは修正されたコンテナイメージ、新しいもしくは修正されたアルゴリズム、新しいもしくは修正されたハイパーパラメータ（複数可）、または／または機械学習モデルを訓練するコンピューティングマシンについて記載した、新しいもしくは修正された情報を含むことができる。それに応じて、モデル訓練システム１２０は、機械学習モデルを修正することができる。例えば、モデル訓練システム１２０は、仮想マシンインスタンス１２２に、既存のＭＬ訓練コンテナ１３０を任意選択で削除させ、要求に含まれる情報の一部もしくは全てを使用して新しいＭＬ訓練コンテナ１３０を作成または初期化させ、機械学習モデル訓練プロセスを再開するためにその新しいＭＬ訓練コンテナ１３０に保存されたコード１３６を実行させることができる。別の例として、モデル訓練システム１２０は、仮想マシンインスタンス１２２に、修正要求において提供されたデータにしたがって既存のＭＬ訓練コンテナ１３０に保存されたコードの実行を修正させることができる。いくつかの実施形態では、ユーザは、ユーザデバイス１０２を介して、機械学習モデル訓練プロセスを停止するためにモデル訓練システム１２０に要求を送信することができる。モデル訓練システム１２０は、次いで、ＭＬ訓練コンテナ１３０を削除すること、または／または訓練モデルデータストア１７５に保存された任意のモデルデータを削除することを仮想マシンインスタンス１２２に指示することができる。
【００３１】
後述するように、いくつかの実施形態では、訓練モデルデータストア１７５に保存されたモデルデータは、機械学習モデルを展開するためにモデルホスティングシステム１４０によって使用される。あるいは、または加えて、ユーザデバイス１０２または別のコンピューティングデバイス（図示せず）が、訓練モデルデータストア１７５からモデルデータを読み出して外部デバイスにおいて学習アルゴリズムを実施することができる。実例として、ロボットデバイスは、入力データを取り込むセンサを含むことができる。ユーザデバイス１０２は、訓練モデルデータストア１７５からモデルデータを読み出し、モデルデータをロボットデバイスに保存することができる。モデルデータは、機械学習モデルを定める。したがって、ロボットデバイスは、取り込まれた入力データを機械学習モデルに対する入力として提供し、結果として出力を得ることができる。ロボットデバイスは、次いで、結果として得られた出力に基づいて作動（例えば、前進する、腕を上げる、音を生成するなど）を実行することができる。
【００３２】
図１には、仮想マシンインスタンス１２２が仮想マシンインスタンス１２２の単一のグループ化として示されているが、本出願のいくつかの実施形態は、タスクを実行するようにアクティブに割り当てられた仮想マシンインスタンス１２２と、タスクを実行するようにアクティブに割り当てられない仮想マシンインスタンス１２２とを区別する。例えば、タスクを実行するようにアクティブに割り当てられた仮想マシンインスタンス１２２は「アクティブプール」にグループ化される一方、タスクを実行するようにアクティブに割り当てられない仮想マシンインスタンス１２２は「ウォーミングプール」内に配置される。いくつかの実施形態では、ウォーミングプール内の仮想マシンインスタンス１２２は、訓練要求に応答したタスクの迅速な実行（例えば、ＭＬ訓練コンテナ（複数可）１３０における機械学習モデルの訓練の迅速な初期化）を可能にすることを要求されたオペレーティングシステム、言語ランタイムまたは／または他のソフトウェアによって事前に初期化することができる。
【００３３】
いくつかの実施形態では、モデル訓練システム１２０は、処理ユニット、ネットワークインタフェース、コンピュータ可読媒体ドライブまたは入出力デバイスインタフェースを含み、これらの全ては、通信バスを経由して互いに通信することができる。ネットワークインタフェースは、１つ以上のネットワークまたはコンピューティングシステムに接続性を提供することができる。したがって、処理ユニットは、他のコンピューティングシステムまたはサービス（例えば、ユーザデバイス１０２、モデルホスティングシステム１４０など）から情報または命令を受信することができる。処理ユニットは、仮想マシンインスタンス１２２のメモリとの間で通信し、さらに入出力デバイスインタフェースを介して出力情報を任意選択のディスプレイに提供することもできる。入出力デバイスインタフェースは、任意選択の入力デバイスからの入力を受け付けることもできる。メモリは、本開示の１つ以上の態様を実施するために処理ユニットが実行するコンピュータプログラム命令（いくつかの実施形態ではモジュールとしてグループ化される）を含むことができる。
【００３４】
例示的なモデルホスティングシステム
いくつかの実施形態では、モデル訓練システム１４０は、１つ以上のコンピューティングネットワーク（図示せず）を使用して相互接続された単一の物理コンピューティングデバイスまたは複数の物理コンピューティングデバイスを含む。ここで、物理コンピューティングデバイス（複数可）は、１つ以上の仮想マシンインスタンス１４２をホスティングする。モデルホスティングシステム１４０は、訓練済みの機械学習モデルの実行の必要性に基づいて計算容量（例えば、コンテナ、インスタンスなど）の入手または設定をハンドリングすることができる。以下でより詳細に説明されるように、モデルホスティングシステム１４０は、次いで、計算容量を使用して機械学習モデルを実行することができる。モデルホスティングシステム１４０は、モデルホスティングシステム１４０のフロントエンド１４９を介してユーザデバイス１０２から受信した実行要求の量に基づいて自動的に拡大または縮小することができる。それにより、過剰利用（例えば、非常に少ないコンピューティングリソースを入手し、性能に問題をきたすこと）、または過少利用（例えば、機械学習モデルを実行するのに必要であるよりも多くのコンピューティングリソースを入手し、したがって余分に支払うこと）について心配しなければならない負担からユーザを開放する。
【００３５】
いくつかの実施形態では、仮想マシンインスタンス１４２は、タスクを実行するために利用される。例えば、このようなタスクは、機械学習モデルを実行することを含むことができる。図１に示すように、各仮想マシンインスタンス１４２は、オペレーティングシステム（ＯＳ）１４４、言語ランタイム１４６または１つ以上のＭＬスコアリングコンテナ１５０を含む。ＭＬスコアリングコンテナ１５０は、ＭＬスコアリングコンテナ１５０が仮想マシンインスタンス上で利用可能なリソースを使用してそのインスタンス内で作成される論理ユニットであるという点でＭＬ訓練コンテナ１３０と同様であり、タスクの実行をインスタンスに発生する他のプロセス（例えば、タスクの実行）から分離するために利用することができる。いくつかの実施形態では、ＭＬスコアリングコンテナ１５０は、１つ以上のコンテナイメージまたは上部コンテナ層から形成される。各コンテナイメージは、１つ以上のイメージ層をさらに含む。ここで、各イメージ層は実行可能命令を表す。上述したように、実行可能命令の一部または全ては、合わせて、機械学習モデルを定めるアルゴリズムを表す。ＭＬスコアリングコンテナ１５０に対してなされた変更（例えば、新規ファイルの作成、既存ファイルの修正、ファイルの削除など）は、上部コンテナ層に保存される。ＭＬスコアリングコンテナ１５０が削除された場合、上部コンテナ層も削除される。しかしながら、削除されたＭＬスコアリングコンテナ１５０の一部を形成するコンテナイメージ（複数可）は、変更されないままにすることができる。ＭＬスコアリングコンテナ１５０は、例えば、Ｌｉｎｕｘコンテナとして実装することができる。
【００３６】
いくつかの実施形態では、ＭＬスコアリングコンテナ１５０は、それぞれ、ＯＳ１５２、ランタイム１５４またはコード１５６の個々のコピーを含む。ＯＳ１５２または／またはランタイム１５４は、ＭＬスコアリングコンテナ１５０を形成するために使用されるコンテナイメージの少なくとも一部を形成する１つ以上の実行可能命令（例えば、コンテナイメージから形成されたコンテナにおいて動作するオペレーティングシステムまたは／またはランタイムを定めるコンテナイメージ内の実行可能命令（複数可））によって定めることができる。コード１５６は、ＭＬスコアリングコンテナ１５０を形成するために使用されるコンテナイメージの少なくとも一部を形成する１つ以上の実行可能命令を含む。例えば、コード１５６は、機械学習モデルを定めるアルゴリズムを表すコンテナイメージ内の実行可能命令を含む。以下でより詳細に説明されるように、コード１５６は、定められた機械学習モデルの特性を表すモデルデータも含むことができる。ＯＳ１５２または／またはランタイム１５４は、機械学習モデルの実行を開始するための命令に応答してコード１５６を実行するように構成される。以下でより詳細に説明されるように、コード１５６を実行すると、結果として出力（例えば、予想された結果）が生成される。
【００３７】
いくつかの実施形態では、ＯＳ１５２またはランタイム１５４は、仮想マシンインスタンス１４２によって利用されるＯＳ１４４またはランタイム１４６と同一である。いくつかの実施形態では、ＯＳ１５２または／またはランタイム１５４は、仮想マシンインスタンス１４２によって利用されるＯＳ１４４または／またはランタイム１４６とは異なる。
【００３８】
いくつかの実施形態では、モデルホスティングシステム１４０は、展開要求に含まれる１つ以上のコンテナイメージ（または受信した展開要求に応答してコンテナデータストア１７０から読み出されたコンテナイメージ）を使用して、ＭＬスコアリングコンテナ１５０を仮想マシンインスタンス１４２内に作成し、この仮想マシンインスタンス内で初期化する。例えば、モデルホスティングシステム１４０は、コンテナイメージ（複数可）または／または上部コンテナ層を含むＭＬスコアリングコンテナ１５０を作成する。
【００３９】
上述したように、いくつかの実施形態では、ユーザデバイス１０２は、フロントエンド１４９を介して展開要求または／または実行要求をモデルホスティングシステム１４０に送ることができる。展開要求により、モデルホスティングシステム１４０は、訓練済みの機械学習モデルを仮想マシンインスタンス１４２に展開する。例えば、展開要求は、エンドポイントの識別子（例えば、ハイパーテキスト・トランスファー・プロトコル（ＨＴＴＰ）のエンドポイント名などのエンドポイント名）、または１つ以上の訓練済みの機械学習モデルの識別子（例えば、訓練モデルデータストア１７５に保存された１つ以上のモデルデータファイルの位置）を含むことができる。任意選択で、展開要求は、コンテナデータストア１７０に保存された１つの以上のコンテナイメージの識別子も含む。
【００４０】
展開要求を受信すると、モデルホスティングシステム１４０は、１つ以上のホスティングされた仮想マシンインスタンス１４２内で１つ以上のＭＬスコアリングコンテナ１５０を初期化する。展開要求が１つ以上のコンテナイメージの識別子を含む実施形態では、モデルホスティングシステム１４０は、識別されたコンテナイメージ（複数可）からＭＬスコアリングコンテナ（複数可）１５０を形成する。例えば、展開要求において識別されたコンテナイメージは、その展開要求に対応する機械学習モデルを訓練するために使用されるＭＬ訓練コンテナ１３０を形成するために使用されるコンテナイメージと同一であり得る。したがって、ＭＬスコアリングコンテナ（複数可）１５０のコード１５６は、機械学習モデルを定めるアルゴリズムを表すコンテナイメージ（複数可）内に１つ以上の実行可能命令を含む。展開要求がコンテナイメージの識別子を含まない実施形態では、モデルホスティングシステム１４０は、識別された訓練済みの機械学習モデル（複数可）を実行するのに適切であるコンテナデータストア１７０に保存された１つ以上のコンテナイメージからＭＬスコアリングコンテナ（複数可）１５０を形成する。例えば、適切なコンテナイメージは、識別された訓練済みの機械学習モデル（複数可）を定めるアルゴリズムを表す実行可能命令を含むコンテナイメージとすることができる。
【００４１】
いくつかの実施形態では、モデルホスティングシステム１４０は、さらに、識別された訓練済みの機械学習モデル（複数可）に対応するモデルデータを読み出すことによってＭＬスコアリングコンテナ（複数可）１５０を形成する。例えば、展開要求は、訓練モデルデータストア１７５に保存されたモデルデータファイル（複数可）の位置を識別することができる。単一のモデルデータファイルが展開要求において識別される実施形態では、モデルホスティングシステム１４０は、識別されたモデルデータファイルを訓練モデルデータストア１７５から読み出し、そのモデルデータファイルを単一のＭＬスコアリングコンテナ１５０に挿入する。これにより、コード１５６の一部が形成される。いくつかの実施形態では、モデルデータファイルは、アーカイブ化または圧縮される（例えば、個々のファイルのパッケージから形成される）。したがって、モデルホスティングシステム１４０は、モデルデータファイルを非アーカイブ化または復元して複数の個々のファイルを取得し、それら個々のファイルをＭＬスコアリングコンテナ１５０に挿入する。いくつかの実施形態では、モデルホスティングシステム１４０は、モデルデータファイルを生成したＭＬ訓練コンテナ１３０にモデルデータファイルが保存された位置と同一の位置にモデルデータファイルを保存する。例えば、モデルデータファイルは、あるオフセットでＭＬ訓練コンテナ１３０の上部コンテナ層に最初に保存され、次いで、モデルホスティングシステム１４０は、ＭＬスコアリングコンテナ１５０の上部コンテナ層に同一のオフセットでモデルデータファイルを保存する。
【００４２】
複数のモデルデータファイルが展開要求において識別される実施形態では、モデルホスティングシステム１４０は、識別されたモデルデータファイルを訓練モデルデータストア１７５から読み出す。モデルホスティングシステム１４０は、それらのモデルデータファイルを、同一のＭＬスコアリングコンテナ１５０に、同一の仮想マシンインスタンス１４２内で初期化された様々なＭＬスコアリングコンテナ１５０に、または様々な仮想マシンインスタンス１４２内で初期化された様々なＭＬスコアリングコンテナ１５０に挿入することができる。実例として、展開要求は、様々な訓練済みの機械学習モデルに対応する複数のモデルデータファイルを識別することができる。その理由は、これらの訓練済みの機械学習モデルが関連している（例えば、１つの訓練済みの機械学習モデルの出力が、別の訓練済みの機械学習モデルに対する入力として使用される）ためである。したがって、ユーザは、複数の機械学習モデルを展開して、複数の機械学習モデルの出力に依存した単一の出力を最終的に受信することを望んでもよい。
【００４３】
いくつかの実施形態では、モデルホスティングシステム１４０は、初期化されたＭＬスコアリングコンテナ（複数可）１５０を、展開要求において識別されたエンドポイントと関連付ける。例えば、初期化されたＭＬスコアリングコンテナ（複数可）１５０のそれぞれをネットワークアドレスと関連付けることができる。モデルホスティングシステム１４０は、ネットワークアドレス（複数可）を識別されたエンドポイントにマッピングすることができ、モデルホスティングシステム１４０または別のシステム（例えば、図示されないルーティングシステム）は、そのマッピングを保存することができる。したがって、ユーザデバイス１０２は、エンドポイントを使用して、ＭＬスコアリングコンテナ（複数可）１５０に保存された訓練済みの機械学習モデル（複数可）を参照することができる。これにより、訓練済みの機械学習モデルをユーザが参照する方法を変更するようにユーザにユーザデバイス１０２を操作させることなく、ＭＬスコアリングコンテナ１５０のネットワークアドレスを変更することが可能になる。
【００４４】
一旦、ＭＬスコアリングコンテナ１５０（複数可）が初期化されると、ＭＬスコアリングコンテナ（複数可）１５０は、訓練済みの機械学習モデル（複数可）を実行できる状況にある。いくつかの実施形態では、ユーザデバイス１０２は、フロントエンド１４９を介してモデルホスティングシステム１４０に実行要求を送信する。その場合、実行要求は、エンドポイントを識別し、機械学習モデルに対する入力（例えば、一組の入力データ）を含む。モデルホスティングシステム１４０または別のシステム（例えば、図示されないルーティングシステム）は、実行要求を取得し、識別されたエンドポイントに対応するＭＬスコアリングコンテナ（複数可）１５０を識別し、識別されたＭＬスコアリングコンテナ（複数可）１５０に入力をルーティングすることができる。
【００４５】
いくつかの実施形態では、仮想マシンインスタンス１４２は、モデルホスティングシステム１４０が実行要求を受信したことに応答して、識別されたＭＬスコアリングコンテナ１５０に保存されたコード１５６を実行する。特に、コード１５６の実行により、アルゴリズムに対応するコード１５６内の実行可能命令は、ＭＬスコアリングコンテナ１５０に保存されたモデルデータファイルを読み込み、実行要求に含まれる入力を入力パラメータとして使用し、対応する出力を生成する。実例として、アルゴリズムは、係数、重み、層、クラスタ重心または／または同種のものを含むことができる。アルゴリズムに対応するコード１５６内の実行可能命令は、モデルデータファイルを読み込んで、係数、重み、層、クラスタ重心または／または同種のものの値を決定することができる。実行可能命令は、入力パラメータを含むことができ、実行要求に含まれる入力は、仮想マシンインスタンス１４２によって入力パラメータとして供給することができる。機械学習モデルの特性または提供された入力パラメータを用いて、仮想マシンインスタンス１４２による実行可能命令の実行を完了させ、結果として出力を得ることができる。
【００４６】
いくつかの実施形態では、仮想マシンインスタンス１４２は、出力をモデル予測データストア１８０に保存する。あるいは、または加えて、仮想マシンインスタンス１４２は、実行結果を送ったユーザデバイス１０２にフロントエンド１４９を介して出力を送信する。
【００４７】
いくつかの実施形態では、実行要求は、関連する訓練済みの機械学習モデルのグループに対応する。したがって、ＭＬスコアリングコンテナ１５０は、同一の仮想マシンインスタンス１４２内で、または異なる仮想マシンインスタンス１４２内で初期化された第２のＭＬスコアリングコンテナ１５０に出力を送信することができる。第２のＭＬスコアリングコンテナ１５０を初期化した仮想マシンインスタンス１４２は、次いで、第２のＭＬスコアリングコンテナ１５０に保存された第２のコード１５６を実行して、受信した出力を入力パラメータとして第２のコード１５６の実行可能命令に提供することができる。第２のＭＬスコアリングコンテナ１５０は、内部に保存されたモデルデータファイルをさらに含む。このモデルデータファイルは、機械学習モデルを定める特性の値を決定するために第２のコード１５６内の実行可能命令によって読み込まれる。第２のコード１５６を実行すると、結果として第２の出力が得られる。第２のＭＬスコアリングコンテナ１５０を初期化した仮想マシンインスタンス１４２は、次いで、フロントエンド１４９を介してモデル予測データストア１８０または／またはユーザデバイス１０２に第２の出力を送信するか（例えば、出力を生成するために訓練済みの機械学習モデルがそれ以上必要とされない場合）、または同一の、もしくは異なる仮想マシンインスタンス１４２内で初期化された第３のＭＬスコアリングコンテナ１５０に第２の出力を送信する（例えば、１つ以上の追加の訓練済みの機械学習モデルからの出力が必要とされる場合）ことができ、上述したプロセスを第３のＭＬスコアリングコンテナ１５０に関して繰り返すことができる。
【００４８】
図１には、仮想マシンインスタンス１４２が仮想マシンインスタンス１４２の単一のグループ化として示されているが、本出願のいくつかの実施形態は、タスクを実行するようにアクティブに割り当てられた仮想マシンインスタンス１４２と、タスクを実行するようにアクティブに割り当てられない仮想マシンインスタンス１４２とを区別する。例えば、タスクを実行するようにアクティブに割り当てられた仮想マシンインスタンス１４２は「アクティブプール」にグループ化される一方、タスクを実行するようにアクティブに割り当てられない仮想マシンインスタンス１４２は「ウォーミングプール」内に配置される。いくつかの実施形態では、ウォーミングプール内の仮想マシンインスタンス１４２は、展開要求または／または実行要求に応答したタスクの迅速な実行（例えば、ＭＬスコアリングコンテナ（複数可）１５０の迅速な初期化、ＭＬスコアリングコンテナ（複数可）内のコード１５６の迅速な実行など）を可能にすることを要求されたオペレーティングシステム、言語ランタイムまたは／または他のソフトウェアによって事前に初期化することができる。
【００４９】
いくつかの実施形態では、モデルホスティングシステム１４０は、処理ユニット、ネットワークインタフェース、コンピュータ可読媒体ドライブまたは入出力デバイスインタフェースを含み、これらの全ては、通信バスを経由して互いに通信することができる。ネットワークインタフェースは、１つ以上のネットワークまたはコンピューティングシステムに接続性を提供することができる。したがって、処理ユニットは、他のコンピューティングシステムまたはサービス（例えば、ユーザデバイス１０２、モデル訓練システム１２０など）から情報または命令を受信することができる。処理ユニットは、仮想マシンインスタンス１４２のメモリとの間で通信し、さらに入出力デバイスインタフェースを介して出力情報を任意選択のディスプレイに提供することもできる。入出力デバイスインタフェースは、任意選択の入力デバイスからの入力を受け付けることもできる。メモリは、本開示の１つ以上の態様を実施するために処理ユニットが実行するコンピュータプログラム命令（いくつかの実施形態ではモジュールとしてグループ化される）を含むことができる。
【００５０】
例示的な訓練またはホスティング環境の更なる実施形態
いくつかの実施形態では、動作環境１００は、マルチアームバンディットモデル、強化学習モデル、アンサンブル機械学習モデル、深層学習モデルまたは／または同種のものなどの、多くの様々な種類の機械学習モデルに対応する。
【００５１】
図１に表されたモデル訓練システム１２０またはモデルホスティングシステム１４０は、限定を意味するものではない。例えば、モデル訓練システム１２０または／またはモデルホスティングシステム１４０は、図１に示したよりも少ない、または多い数のデバイスを有するコンピューティング環境内で動作することもできる。したがって、図１のモデル訓練システム１２０または／またはモデルホスティングシステム１４０の描写は、例示的であり、本開示に対する限定ではないと解釈され得る。例えば、モデル訓練システム１２０または／もしくはモデルホスティングシステム１４０、またはその各種の構成要素は、各種のウェブサービス構成要素、ホスティングされたコンピューティング環境もしくは「クラウド」コンピューティング環境、または／またはピアツーピアネットワーク構成を実装して、本明細書で説明されるプロセスの少なくとも一部を実装することができる。いくつかの実施形態では、モデル訓練システム１２０または／またはモデルホスティングシステム１４０は、ハードウェアまたはハードウェアデバイスによって実行されるソフトウェアで直接実装され、例えば、本明細書で説明される各種の特徴を実行するためのコンピュータ実行可能命令を実行するように構成された物理コンピュータハードウェア上に実装される１つ以上の物理サーバまたは仮想サーバを含んでもよい。１つ以上のサーバは、例えば、１つ以上のポイント・オブ・プレゼンス（ＰＯＰ）または局所的なデータセンタにおいて、地理的に分散させるか、または地理的に同じ位置に配置することができる。
【００５２】
フロントエンド１２９は、ユーザデバイス１０２またはプロビジョン仮想マシンインスタンス１２２から受信した全ての訓練要求を処理する。いくつかの実施形態では、フロントエンド１２９は、モデル訓練システム１２０によって提供された全ての他のサービスに対するフロントドアとして機能する。フロントエンド１２９は、要求を処理し、その要求に正しく権限が付与されていることを確認する。例えば、フロントエンド１２９は、訓練要求に関連したユーザに訓練プロセスを始動することの権限が付与されているどうかを判定してもよい。
【００５３】
同様に、フロントエンド１４９は、ユーザデバイス１０２またはプロビジョン仮想マシンインスタンス１４２から受信した全ての展開要求または実行要求を処理する。いくつかの実施形態では、フロントエンド１４９は、モデルホスティングシステム１４０によって提供された全ての他のサービスに対するフロントドアとして機能する。フロントエンド１４９は、要求を処理し、その要求に正しく権限が付与されていることを確認する。例えば、フロントエンド１４９は、展開要求または実行要求に関連したユーザに、指示されたモデルデータにアクセスすることまたは／または指示された機械学習モデルを実行することの権限が付与されているかどうかを判定してもよい。
【００５４】
訓練データストア１６０は、訓練データまたは／または評価データを保存する。訓練データは、機械学習モデルを訓練するために使用されるデータとすることができ、評価データは、機械学習モデルの性能を評価するために使用されるデータとすることができる。いくつかの実施形態では、訓練データまたは評価データは共通のデータを有する。いくつかの実施形態では、訓練データまたは評価データは共通のデータを有しない。いくつかの実施形態では、訓練データは、入力データまたは期待出力を含む。訓練データストア１６０がモデル訓練システム１２０またはモデルホスティングシステム１４０の外部に位置するものとして表されているが、これは限定を意味するものではない。例えば、図示されないいくつかの実施形態では、訓練データストア１６０は、モデル訓練システム１２０またはモデルホスティングシステム１４０の少なくとも一方の内部に位置する。
【００５５】
いくつかの実施形態では、訓練メトリックデータストア１６５はモデルメトリックを保存する。訓練メトリックデータストア１６５がモデル訓練システム１２０またはモデルホスティングシステム１４０の外部に位置するものとして表されているが、これは限定を意味するものではない。例えば、図示されないいくつかの実施形態では、訓練メトリックデータストア１６５は、モデル訓練システム１２０またはモデルホスティングシステム１４０の少なくとも一方の内部に位置する。
【００５６】
コンテナデータストア１７０は、ＭＬ訓練コンテナ１３０または／またはＭＬスコアリングコンテナ１５０を形成するために使用されるコンテナイメージなどのコンテナイメージを保存する。このコンテナイメージは、各種の仮想マシンインスタンス１２２または／または１４２によって読み出すことができる。コンテナデータストア１７０がモデル訓練システム１２０またはモデルホスティングシステム１４０の外部に位置するものとして表されているが、これは限定を意味するものではない。例えば、図示されないいくつかの実施形態では、コンテナデータストア１７０は、モデル訓練システム１２０またはモデルホスティングシステム１４０の少なくとも一方の内部に位置する。
【００５７】
訓練モデルデータストア１７５はモデルデータファイルを保存する。いくつかの実施形態では、モデルデータファイルの一部が単一のファイルで構成される一方、他のモデルデータファイルは複数の個々のファイルのパッケージである。訓練データストア１７５がモデル訓練システム１２０またはモデルホスティングシステム１４０の外部に位置するものとして表されているが、これは限定を意味するものではない。例えば、図示されないいくつかの実施形態では、訓練モデルデータストア１７５は、モデル訓練システム１２０またはモデルホスティングシステム１４０の少なくとも一方の内部に位置する。
【００５８】
モデル予測データストア１８０は、いくつかの実施形態では、ＭＬスコアリングコンテナ１５０によって生成された出力（例えば、実行結果）を保存する。モデル予測データストア１８０がモデル訓練システム１２０またはモデルホスティングシステム１４０の外部に位置するものとして表されているが、これは限定を意味するものではない。例えば、図示されないいくつかの実施形態では、モデル予測データストア１８０は、モデル訓練システム１２０またはモデルホスティングシステム１４０の少なくとも一方の内部に位置する。
【００５９】
モデル訓練システム１２０、モデルホスティングシステム１４０、訓練データストア１６０、訓練メトリックデータストア１６５、コンテナデータストア１７０、訓練モデルデータストア１７５またはモデル予測データストア１８０が個別の構成要素として示されているが、これは限定を意味するものではない。いくつかの実施形態では、これらの構成要素のいずれか１つまたは全てを、本明細書で説明される機能を実行するために結合することができる。例えば、これらの構成要素のいずれか１つまたは全ては、単一のコンピューティングデバイスによって、またはコンピュータサーバなどの、サーバシステムとして集合的に動作するように論理的もしくは物理的に共にグループ化された複数の別々のコンピューティングデバイスによって実装することができる。これらの構成要素のいずれか１つまたは全ては、共有された内部ネットワークを介して通信することができ、集合的なシステム（例えば、本明細書では機械学習サービスとも呼ばれる）は、ネットワーク１１０を介してユーザデバイス１０２の１つ以上と通信することができる。
【００６０】
デスクトップコンピュータ、ラップトップまたは携帯電話を含む、それぞれが一例として提供される各種の例示的なユーザデバイス１０２を図１に示す。一般に、ユーザデバイス１０２は、デスクトップ、ラップトップまたはタブレットコンピュータ、パーソナルコンピュータ、ウェアラブルコンピュータ、サーバ、パーソナルデジタルアシスタント（ＰＤＡ）、ハイブリッドＰＤＡ／携帯電話、携帯電話、電子ブックリーダ、セットトップボックス、音声コマンドデバイス、カメラまたはデジタルメディアプレーヤなどの、任意のコンピューティングデバイスとすることができる。いくつかの実施形態では、モデル訓練システム１２０または／またはモデルホスティングシステム１４０は、訓練要求、展開要求または／または実行要求を送るための１つ以上のユーザインタフェース、コマンドラインインタフェース（ＣＬＩ）、アプリケーションプログラミングインタフェース（ＡＰＩ）または／または他のプログラマチックインタフェースをユーザデバイス１０２に提供する。いくつかの実施形態では、ユーザデバイス１０２は、訓練要求、展開要求または／または実行要求を送るためにモデル訓練システム１２０または／またはモデルホスティングシステム１４０と対話するスタンドアロンアプリケーションを実行することができる。
【００６１】
いくつかの実施形態では、ネットワーク１１０は、任意の有線ネットワーク、無線ネットワーク、またはこれらの組み合わせを含む。例えば、ネットワーク１１０は、パーソナルエリアネットワーク、ローカルエリアネットワーク、ワイドエリアネットワーク、（例えば、ラジオもしくはテレビのための）地上波放送ネットワーク、ケーブルネットワーク、衛星ネットワーク、セルラ式電話ネットワーク、またはこれらの組み合わせであってもよい。更なる例として、ネットワーク１１０は、インターネットなどの、場合によっては各種の別々の当事者によって運用される、連結されたネットワークの公的にアクセス可能なネットワークであってもよい。いくつかの実施形態では、ネットワーク１１０は、企業または大学のイントラネットなどの、プライベートまたはセミプライベートなネットワークであってもよい。ネットワーク１１０は、モバイル通信用グローバルシステム（ＧＳＭ）ネットワーク、符号分割多重アクセス（ＣＤＭＡ）ネットワーク、ロングタームエボリューション（ＬＴＥ）ネットワークまたは任意の他の種類の無線ネットワークなどの、１つ以上の無線ネットワークを含んでもよい。ネットワーク１１０は、インターネット、または他の上述した種類のネットワークのいずれかを介して通信するためのプロトコルまたは構成要素を使用することができる。例えば、ネットワーク１１０によって使用されるプロトコルは、ハイパーテキスト・トランスファー・プロトコル（ＨＴＴＰ）、ＨＴＴＰセキュア（ＨＴＴＰＳ）、メッセージ・キュー・テレメトリ・トランスポート（ＭＱＴＴ）または制約アプリケーションプロトコル（ＣｏＡＰ）などを含んでもよい。インターネット、または他の上述した種類の通信ネットワークのいずれかを介して通信するためのプロトコルまたは構成要素は当業者にとって周知であり、したがって本明細書では、より詳細に説明されていない。
【００６２】
機械学習モデルの訓練のための例示的なブロック図
図２は、いくつかの実施形態にしたがった、機械学習モデルを訓練するために動作環境１００の構成要素によって実行される動作を示す図１の動作環境１００のブロック図である。図２に示すように、ユーザデバイス１０２は、（１）で、コンテナイメージの位置または訓練データの位置をフロントエンド１２９に送信する。フロントエンド１２９は、次いで、（２）で、仮想マシンインスタンス１２２を初期化させ、コンテナイメージの位置または訓練データの位置を、初期化された仮想マシンインスタンス１２２に転送する。いくつかの実施形態では、コンテナイメージの位置または訓練データの位置は、訓練要求の一部として送信される。
【００６３】
いくつかの実施形態では、仮想マシンインスタンス１２２は、（３）で、受信した位置を使用して訓練データストア１６０から訓練データを読み出す。訓練データを読み出す前、読み出している間、または読み出した後に、仮想マシンインスタンス１２２は、（４）で、受信した位置を使用してコンテナデータストア１７０からコンテナイメージを読み出す。
【００６４】
仮想マシンインスタンス１２２は、いくつかの実施形態では、受信したコンテナイメージを使用して仮想マシンインスタンス１２２内でＭＬ訓練コンテナを初期化する。仮想マシンインスタンス１２２は、次いで、機械学習モデルを訓練するために、（５）で、読み出された訓練データを使用してＭＬ訓練コンテナに保存されたコードを実行する。例えば、コードは、未だ訓練されない機械学習モデルを定めるアルゴリズムを表すコンテナイメージで始まる実行可能命令を含むことができる。仮想マシンインスタンス１２２は、ユーザデバイス１０２によって提供されたハイパーパラメータ値にしたがってコードを実行する。
【００６５】
実行可能命令を実行することにより、ＭＬ訓練コンテナは、訓練中の機械学習モデルの特性を含むモデルデータを生成する。仮想マシンインスタンス１２２は、いくつかの実施形態では、（６）で訓練モデルデータストア１７５にモデルデータを保存する。いくつかの実施形態では、仮想マシンインスタンス１２２は複数のモデルデータファイルを生成する。これらのモデルデータファイルは、訓練モデルデータストア１７５に保存される単一のファイルにパッケージ化される。
【００６６】
機械学習モデル訓練プロセスの間、ＭＬモデル評価器１２８は、（７）で訓練モデルデータストア１７５からモデルデータを読み出すことができる。ＭＬモデル評価器１２８は、さらに、（８）で訓練データストア１６０から評価データを読み出す。例えば、評価データは、機械学習モデルを訓練するために使用されるデータとは別であるデータとすることができる。評価データは、入力データ、または入力データの結果として生じた、または形成された既知の結果を含むことができる。いくつかの実施形態では、ＭＬモデル評価器１２８は、（９）で、評価データに含まれる入力データを使用して、読み出されたモデルデータによって定められた機械学習モデルを実行する。ＭＬモデル評価器１２８は、次いで、（１０）で、読み出されたモデルデータによって定められた機械学習モデルの出力と評価データに含まれる既知の結果とを比較して機械学習モデルの品質メトリックを決定する。例えば、品質メトリックは、機械学習モデルの出力と既知の結果との総体的な差（例えば、平均の差、メディアンの差など）に基づいて決定することができる。ＭＬモデル評価器１２８は、次いで、（１１）で訓練メトリックデータストア１６５に品質メトリックを保存することができる。
【００６７】
いくつかの実施形態では、ＭＬモデル評価器１２８は、訓練メトリックデータストア１６５に追加情報も保存する。例えば、ＭＬモデル評価器１２８は、入力データ（または入力データを表すタグ）、機械学習モデルの出力または既知の結果を保存することができる。したがって、ユーザは、ユーザデバイス１０２を介して、品質メトリック（複数可）を識別することができるのみならず、どの入力によって機械学習モデルの出力と既知の結果との差が小さくなったか、または差がなくなったか、どの入力によって機械学習モデルの出力と既知の結果との差が大きくなったかなどを識別することもできる。
【００６８】
機械学習モデルの訓練を修正するための例示的なブロック図
図３は、いくつかの実施形態にしたがった、機械学習モデルの訓練を修正するために動作環境１００の構成要素によって実行される動作を示す図１の動作環境１００のブロック図である。図３に示すように、ユーザデバイス１０２は、（１）で、訓練メトリックデータストア１６５に保存された品質メトリックを読み出す。いくつかの実施形態では、ユーザは、ユーザデバイス１０２を介して、依然として訓練中の機械学習モデルの精度を決定するために品質メトリックを読み出す。
【００６９】
いくつかの実施形態では、ユーザデバイス１０２は、（２）で、修正済みのコンテナイメージの位置をフロントエンド１２９に送信する。フロントエンド１２９は、次いで、（３）で、修正済みのコンテナイメージの位置を仮想マシンインスタンス１２２に転送する。ユーザデバイス１０２は、修正済みのコンテナイメージを、訓練中の機械学習モデルを修正するための修正要求の一部として送信することができる。これに応答して、仮想マシンインスタンス１２２は、（４）で、元のコンテナイメージから形成された元のＭＬ訓練コンテナに保存されたコードの実行を停止する。仮想マシンインスタンス１２２は、次いで、受信した位置を使用して、（５）で、修正済みのコンテナイメージをコンテナデータストア１７０から読み出す。仮想マシンインスタンス１２２は、次いで、修正済みのＭＬ訓練コンテナを修正済みのコンテナイメージから形成することができ、機械学習モデルを再訓練するために、（６）で、以前に読み出された訓練データを使用して修正済みのＭＬ訓練コンテナに保存されたコードを実行することができる。
【００７０】
コードの実行により、修正済みのＭＬ訓練コンテナは、更新されたモデルデータを生成する。仮想マシンインスタンス１２２は、次いで、（７）で、そのモデルデータを訓練モデルデータストア１７５に保存する。図示されないいくつかの実施形態では、仮想マシンインスタンス１２２は、訓練モデルデータストア１７５に、元のＭＬ訓練コンテナを使用して実行された訓練の結果として保存された任意のモデルデータを削除させる。
【００７１】
図示されないいくつかの実施形態では、訓練中の機械学習モデルを修正することをユーザが望むものの、ユーザは、ユーザデバイス１０２を介して、修正済みのコンテナイメージの位置を提供しない。その理由は、ユーザが、新しいＭＬ訓練コンテナを初期化してほしくないためである。むしろ、ユーザは、訓練プロセスを再開せずに機械学習モデルを修正することができるように、既存のＭＬ訓練コンテナを実行時に修正することを望む。したがって、ユーザデバイス１０２は、その代わりに、仮想マシンインスタンス１２２が既存のＭＬ訓練コンテナに追加する（または、ＭＬ訓練コンテナに既に存在している他のコードを置き換えるために使用する）コードを提供する。例えば、既存のＭＬ訓練コンテナを形成するために使用される元のコンテナイメージは、実行されると実行可能命令が追加コードを読み出し、実行するように構成された実行可能命令を含むことができる。このような追加コードは、コンテナイメージと併せて（例えば、ＭＬ訓練コンテナが初期化されるときに）、かつ／または仮想マシンインスタンス１２２がＭＬ訓練コンテナ内に保存されたコードの実行を既に開始した後に、ユーザデバイス１０２によって提供することができる。本実施形態では、コンテナイメージは、追加コードと共に、完全なＭＬ訓練コンテナを形成する。
【００７２】
機械学習モデルの訓練を並列化するための例示的なブロック図
図４は、いくつかの実施形態にしたがった、機械学習モデル訓練プロセスを並列化するために動作環境１００の構成要素によって実行される動作を示す図１の動作環境１００のブロック図である。図４に示すように、ユーザデバイス１０２は、（１）でコンテナイメージの位置または訓練データの位置をフロントエンド１２９に送信する。これに応答して、フロントエンド１２９は、第１の仮想マシンインスタンス１２２Ａまたは第２の仮想マシンインスタンス１２２Ｂを初期化して、第１の仮想マシンインスタンス１２２Ａが訓練データの第１の部分を使用して機械学習モデルの部分的な訓練を実行し、第２の仮想マシンインスタンス１２２Ｂが訓練データの第２の部分を使用して機械学習モデルの部分的な訓練を実行することができるようにする。フロントエンド１２９は、次いで、（２Ａ）でコンテナイメージの位置または訓練データの第１の部分の位置を仮想マシンインスタンス１２２Ａに送信する。コンテナイメージの位置または訓練データの第１の部分の位置を仮想マシンインスタンス１２２Ａに送信する前、送信している間、または送信した後に、フロントエンド１２９は、（２Ｂ）でコンテナイメージの位置または訓練データの第２の部分の位置を仮想マシンインスタンス１２２Ｂに送信する。いくつかの実施形態では、コンテナイメージの位置または訓練データの位置は、訓練要求の一部として送信される。
【００７３】
いくつかの実施形態では、仮想マシンインスタンス１２２Ａは、（３Ａ）で、受信した位置を使用して訓練データストア１６０から訓練データの第１の部分を読み出す。仮想マシンインスタンス１２２Ａが訓練データの第１の部分を読み出す前、読み出している間、または読み出した後に、仮想マシンインスタンス１２２Ｂは、（３Ｂ）で、受信した位置を使用して訓練データストア１６０から訓練データの第２の部分を読み出す。図示されないいくつかの実施形態では、仮想マシンインスタンス１２２Ａ〜１２２Ｂは、同一の訓練データを読み出す。
【００７４】
仮想マシンインスタンス１２２Ａは、次いで、いくつかの実施形態では指示された位置から読み出されたコンテナイメージを使用してＭＬ訓練コンテナを形成し、（４Ａ）で、読み出された訓練データの第１の部分を使用してＭＬ訓練コンテナに保存されたコードを実行する。仮想マシンインスタンス１２２Ａがコードを実行する前、実行している間、または実行した後に、仮想マシンインスタンス１２２Ｂは、指示された位置から読み出されたコンテナイメージを使用してＭＬ訓練コンテナを形成し、（４Ｂ）で、読み出された訓練データの第２の部分を使用してＭＬ訓練コンテナに保存されたコードを実行する。したがって、仮想マシンインスタンス１２２Ａ〜１２２Ｂは、それぞれ、同一のＭＬ訓練コンテナのコピーを含む。
【００７５】
コードを実行することにより、仮想マシンインスタンス１２２Ａ〜１２２Ｂ（例えば、これらに含まれるＭＬ訓練コンテナ）はモデルデータを生成する。したがって、仮想マシンインスタンス１２２Ａは、（５Ａ）でモデルデータを訓練モデルデータストア１７５に送信し、仮想マシンインスタンス１２２Ｂは、（５Ｂ）でモデルデータを訓練モデルデータストア１７５に送信する。図示されないいくつかの実施形態では、各仮想マシンインスタンス１２２Ａ〜１２２Ｂによって生成されたモデルデータは、（例えば、訓練モデルデータストア１７５によって）単一のモデルデータファイルにパッケージ化される。
【００７６】
いくつかの実施形態では、仮想マシンインスタンス１２２Ａ〜１２２Ｂは、機械学習モデルの訓練の間、互いに通信する。例えば、仮想マシンインスタンス１２２Ａ〜１２２Ｂは、訓練プロセスの間、係数、重み、訓練計画または／または同種のものを共有することができる。
【００７７】
機械学習モデルを展開または実行するための例示的なブロック図
図５Ａは、いくつかの実施形態にしたがった、訓練済みの機械学習モデルを展開するために動作環境１００の構成要素によって実行される動作を示す図１の動作環境１００のブロック図である。図５Ａに示すように、ユーザデバイス１０２は、（１）で機械学習モデル展開要求をフロントエンド１４９に送信する。フロントエンド１４９は、（２）で仮想マシンインスタンス１４２を初期化し、（３）で展開要求を仮想マシンインスタンス１４２に送信することができる。展開要求は、訓練モデルデータストア１７５に保存された１つ以上のモデルデータファイルの位置を含む。いくつかの実施形態では、展開要求はエンドポイント名を含む。いくつかの実施形態では、展開要求はエンドポイント名を含まない。
【００７８】
いくつかの実施形態では、仮想マシンインスタンス１４２は、（４）で、訓練モデルデータストア１７５からモデルデータを読み出す。例えば、仮想マシンインスタンス１４２は、展開要求において識別された位置に対応するモデルデータを読み出す。図示されないいくつかの実施形態では、仮想マシンインスタンス１４２はモデルデータを読み出さない。むしろ、仮想マシンインスタンス１４２によって読み出されたコンテナイメージにモデルデータを組み込むことができる。同様に、仮想マシンインスタンス１４２は、（５）でコンテナイメージをコンテナデータストア１７０から読み出す。コンテナイメージは、展開要求において識別されたコンテナイメージに対応することができる。
【００７９】
仮想マシンインスタンス１４２は、いくつかの実施形態では、（６）でＭＬスコアリングコンテナを初期化することができる。例えば、仮想マシンインスタンス１４２は、読み出されたコンテナイメージを使用してＭＬスコアリングコンテナを形成することができる。仮想マシンインスタンス１４２は、さらに、（７）でＭＬスコアリングコンテナに（例えば、機械学習モデルが訓練されるときにモデルデータがＭＬ訓練コンテナ１３０に保存される位置と同一である位置に）モデルデータを保存することができる。
【００８０】
いくつかの実施形態では、展開要求がエンドポイント名を含まない場合、仮想マシンインスタンス１４２は、（８）でエンドポイント名をフロントエンド１４９に送信することができる。フロントエンド１４９は、次いで、（９）でエンドポイント名をユーザデバイス１０２に転送することができる。したがって、ユーザデバイス１０２は、エンドポイント名を使用して、将来において（例えば、機械学習モデル実行要求を送るために）初期化されたＭＬスコアリングコンテナにアクセスすることができる。
【００８１】
図５Ｂは、いくつかの実施形態にしたがった、訓練済みの機械学習モデルを実行するために動作環境１００の構成要素によって実行される動作を示す図１の動作環境１００のブロック図である。図５Ｂに示すように、ユーザデバイス１０２は、（１）で機械学習モデル実行要求をフロントエンド１４９に送信する。フロントエンド１４９は、次いで、（２）で実行要求を仮想マシンインスタンス１４２に転送する。いくつかの実施形態では、実行要求はエンドポイント名を含む。モデルホスティングシステム１４０は、このエンドポイント名を使用して適切な仮想マシンインスタンス１４２に実行要求をルーティングする。
【００８２】
いくつかの実施形態では、仮想マシンインスタンス１４２は、（３）で、実行要求に含まれる入力データを使用して仮想マシンインスタンス１４２内で初期化されたＭＬスコアリングコンテナに保存されたコードを実行して出力を生成する。いくつかの実施形態では、仮想マシンインスタンス１４２は、（４）で出力をモデル予測データストア１８０に保存する。あるいは、または加えて、仮想マシンインスタンス１４２は、（５）で出力をフロントエンド１４９に送信し、フロントエンド１４９は、（６）で出力をユーザデバイス１０２に送信する。
【００８３】
関連する機械学習モデルを実行するための例示的なブロック図
図６は、いくつかの実施形態にしたがった、関連する機械学習モデルを実行するために動作環境１００の構成要素によって実行される動作を示す図１の動作環境１００のブロック図である。図６に示すように、ユーザデバイス１０２は、（１）で機械学習モデル実行要求をフロントエンド１４９に送信する。フロントエンド１４９は、次いで、（２）で、仮想マシンインスタンス１４２内で初期化された第１のＭＬスコアリングコンテナ１５０Ａに実行要求を転送する。いくつかの実施形態では、実行要求は、仮想マシンインスタンス１４２内で初期化された第２のＭＬスコアリングコンテナ１５０Ｂによって実行される第２の機械学習モデルからの出力を求める要求を含むことができる。しかしながら、出力を生成するために、ＭＬスコアリングコンテナ１５０Ｂは、ＭＬスコアリングコンテナ１５０Ａによって実行される第１の機械学習モデルの実行からのデータを必要とする。したがって、仮想マシンインスタンス１４２は、最初に、実行要求をＭＬスコアリングコンテナ１５０Ａにルーティングする。いくつかの実施形態では、ＭＬスコアリングコンテナ１５０Ａは、他のＭＬスコアリングコンテナ（例えば、ＭＬスコアリングコンテナ１５０Ｂ）との間の通信を管理するマスタコンテナとして機能する。
【００８４】
いくつかの実施形態では、仮想マシンインスタンス１４２は、（３）で、ＭＬスコアリングコンテナ１５０Ａに第１のコードを実行させて第１の出力を生成させる。例えば、第１のコードの実行は、実行要求に含まれる入力データを使用した第１の機械学習モデルの実行を表す。ＭＬスコアリングコンテナ１５０Ａは、次いで、（４）で第１の出力をＭＬスコアリングコンテナ１５０Ｂに送信する。
【００８５】
仮想マシンインスタンス１４２は、次いで、（５）で、第２のＭＬスコアリングコンテナ１５０Ｂに第１の出力を使用して第２のコードを実行させて第２の出力を生成させる。例えば、第２のコードの実行は、第１の出力を第２の機械学習モデルに対する入力として使用した第２の機械学習モデルの実行を表す。第２のＭＬスコアリングコンテナ１５０Ｂは、次いで、（６）で第２の出力をＭＬスコアリングコンテナ１５０Ａに送信する。
【００８６】
いくつかの実施形態では、仮想マシンインスタンス１４２は、第２の出力を第１のＭＬスコアリングコンテナ１５０Ａから取り出し、（７）で第２の出力をモデル予測データストア１８０に保存する。あるいは、または加えて、仮想マシンインスタンス１４２は、第２の出力を第１のＭＬスコアリングコンテナ１５０Ａから取り出し、（８）で第２の出力をフロントエンド１４９に送信する。フロントエンド１４９は、次いで、（９）で第２の出力をユーザデバイス１０２に送信する。
【００８７】
図示されないいくつかの実施形態では、ＭＬスコアリングコンテナ１５０Ａ〜１５０Ｂは、様々な仮想マシンインスタンス１４２内で初期化される。したがって、第１の出力または第２の出力の送信は、仮想マシンインスタンス１４２の間に生じる場合がある。
【００８８】
例示的な機械学習モデル精度向上ルーチン
図７は、いくつかの実施形態にしたがった、モデル訓練システムによって例示的に実施される機械学習モデル訓練ルーチン７００を表したフロー図である。例として、図１のモデル訓練システム１２０は、機械学習モデル訓練ルーチン７００を実行するように構成することができる。機械学習モデル訓練ルーチン７００は、ブロック７０２から開始される。
【００８９】
ブロック７０４で、いくつかの実施形態では、コンテナイメージの位置または訓練データの位置を受信する。例えば、コンテナイメージの位置または訓練データの位置は、訓練要求の一部として受信される。
【００９０】
ブロック７０６で、いくつかの実施形態では、仮想マシンインスタンスが初期化される。例えば、初期化された仮想マシンインスタンスは、機械学習モデルの訓練を実行するインスタンスである。
【００９１】
ブロック７０８で、いくつかの実施形態では、コンテナイメージまたは訓練データが読み出される。例えば、コンテナイメージはコンテナデータストア１７０から読み出すことができ、訓練データは訓練データストア１６０から読み出すことができる。
【００９２】
ブロック７１０で、いくつかの実施形態では、ＭＬ訓練コンテナが仮想マシンインスタンス内で初期化される。例えば、ＭＬ訓練コンテナは、受信したコンテナイメージを使用して形成される。コンテナイメージは、アルゴリズムを定める実行可能命令を含む。したがって、ＭＬ訓練コンテナは、アルゴリズムを定める実行可能命令を含むコードを含む。
【００９３】
ブロック７１２で、いくつかの実施形態では、ＭＬ訓練コンテナに保存されたコードが、読み出された訓練データを使用して実行される。例えば、読み出された訓練データ（例えば、訓練データ内の入力データ）は、アルゴリズムを定める実行可能命令に対する入力として（例えば、実行可能命令の入力パラメータの値として使用して）供給される。
【００９４】
ブロック７１４で、いくつかの実施形態では、コードの実行の結果として生成されたモデルデータが保存される。例えば、モデルデータは、訓練モデルデータストア１７５に保存される。モデルデータは、機械学習モデル訓練プロセスの間に周期的に生成することができる。
【００９５】
ブロック７１６で、いくつかの実施形態では、新しいコンテナイメージを機械学習モデル訓練プロセスの間に受信したかどうかの判定がなされる。新しいコンテナイメージを受信した場合、機械学習モデル訓練ルーチン７００はブロック７１８に進む。さもなければ、新しいコンテナイメージを機械学習モデル訓練プロセスの間に受信しなかった場合、機械学習モデル訓練ルーチン７００はブロック７２０に進み、終了する。
【００９６】
ブロック７１８で、いくつかの実施形態では、元のＭＬ訓練コンテナは、新しいＭＬ訓練コンテナに置き換えられる。例えば、新しいＭＬ訓練コンテナは、新しいコンテナイメージを使用して形成される。一旦、元のＭＬ訓練コンテナが置き換えられると、機械学習モデル訓練ルーチン７００は、新しいＭＬ訓練コンテナに保存されたコードが訓練データを使用して実行されるように、再度ブロック７１２に進む。
【００９７】
図示されないいくつかの実施形態では、新しいコンテナイメージを受信しない。しかしながら、新しいハイパーパラメータ（例えば、クラスタの数に対する変更、層の数に対する変更など）、新しいコードまたは／または同種のものを受信する。モデル訓練システム１２０は、（元のＭＬ訓練コンテナを新しいＭＬ訓練コンテナに置き換える代わりに）実行中に元のＭＬ訓練コンテナを修正することにより、新しいハイパーパラメータ、新しいコードまたは／または同種のものを使用して機械学習モデルを訓練することができる。
【００９８】
モデル訓練またはホスティングシステムの例示的なアーキテクチャ
図８は、本出願にしたがって機械学習モデルを訓練または／またはホスティングする、モデル訓練システム１２０またはモデルホスティングシステム１４０などの、例示的なモデルシステム８００のアーキテクチャのいくつかの実施形態を表す。図８に表されたモデルシステムの概略的なアーキテクチャは、本開示の態様を実施するために使用することができるコンピュータハードウェアまたはソフトウェア構成要素の配置構成を含む。示したように、モデルシステム８００は、処理ユニット８０４、ネットワークインタフェース８０６、コンピュータ可読媒体ドライブ８０７または入出力デバイスインタフェース８２０を含み、これらの全ては、通信バスを経由して互いに通信し得る。
【００９９】
いくつかの実施形態では、ネットワークインタフェース８０６は、図１のネットワーク１１０などの、１つ以上のネットワークまたはコンピューティングシステムに接続性を提供する。したがって、処理ユニット８０４は、他のコンピューティングシステムまたはサービスからネットワークを介して情報または命令を受信することができる。処理ユニット８０４は、メモリ８１０との間で通信し、さらに出力情報を提供することもできる。いくつかの実施形態では、モデルシステム８００は、図８に示したものよりも多い（または少ない）構成要素を含む。
【０１００】
いくつかの実施形態では、メモリ８１０は、１つ以上の実施形態を実施するために処理ユニット８０４が実行するコンピュータプログラム命令を含む。メモリ８１０は、一般に、ＲＡＭ、ＲＯＭ、または他の永続的もしくは非一時的なメモリを含む。メモリ８１０は、モデル訓練システム１２０または／またはモデルホスティングシステム１４０によって実施される機能の全体的な運用または動作において処理システム８０４によって使用するためのコンピュータプログラム命令を提供するオペレーティングシステム８１４を保存することができる。メモリ８１０は、本開示の態様を実施するためのコンピュータプログラム命令または他の情報をさらに含むことができる。例えば、いくつかの実施形態では、メモリ８１０は、図１に示したモデル訓練システム１２０によって提供される機能に対応するモデル訓練構成要素８１６を含む。いくつかの実施形態では、メモリ８１０は、モデルホスティングシステム１４０によって提供される機能に対応するモデル実行構成要素８１８を含む。
【０１０１】
エンドユーザデバイスの例示的なアーキテクチャ
図９は、本出願にしたがってデータを受信し、データを準備し、モデル訓練システム１２０に訓練要求を送信し、モデルホスティングシステム１４０に展開要求または／または実行要求を送信することができる例示的なエンドユーザデバイス１０２のアーキテクチャのいくつかの実施形態を表す。図９に表されたエンドユーザデバイス１０２の概略的なアーキテクチャは、本開示の態様を実施し、本開示の態様にアクセスするために使用することができるコンピュータハードウェアまたはソフトウェア構成要素の配置構成を含む。示したように、エンドユーザデバイス１０２は、処理ユニット９０４、ネットワークインタフェース９０６、コンピュータ可読媒体ドライブ９０７、入出力デバイスインタフェース９２０、任意選択のディスプレイ９３０、または入力デバイス９４０を含み、これらの全ては、通信バスを経由して互いに通信し得る。
【０１０２】
いくつかの実施形態では、ネットワークインタフェース９０６は、図１のネットワーク１１０などの、１つ以上のネットワークまたはコンピューティングシステムに接続性を提供する。したがって、処理ユニット９０４は、他のコンピューティングシステムまたはサービスからネットワークを介して情報または命令を受信することができる。処理ユニット９０４は、メモリ９１０との間で通信し、さらに入出力デバイスインタフェース９２０を介して出力情報を任意選択のディスプレイ９３０に提供することもできる。入出力デバイスインタフェース９２０は、キーボード、マウス、デジタルペン、タッチスクリーンなどの任意選択の入力デバイス９４０からの入力を受け付けることもできる。いくつかの実施形態では、エンドユーザデバイス１０２は、図９に示したものよりも多い（または少ない）構成要素を含む。
【０１０３】
いくつかの実施形態では、メモリ９１０は、データを受信し、データを準備し、本明細書で説明される要求を送信するために処理ユニット９０４が実行するコンピュータプログラム命令を含む。メモリ９１０は、一般に、ＲＡＭ、ＲＯＭ、または他の永続的もしくは非一時的なメモリを含む。メモリ９１０は、エンドユーザデバイス１０２の全体的な運用または動作において処理ユニット９０４によって使用するためのコンピュータプログラム命令またはインタフェースソフトウェア９１２を提供するオペレーティングシステム９１４を保存することができる。メモリ９１０は、本開示の態様を実施するためのコンピュータプログラム命令または他の情報をさらに含むことができる。例えば、いくつかの実施形態では、メモリ９１０は、コンテンツにアクセスし、モデル訓練システム１２０または／またはモデルホスティングシステム１４０と通信するための、ブラウザアプリケーション、メディアプレーヤ、ＣＬＩ、スタンドアロンアプリケーションなどのネットワークアプリケーション９１６を含む。
【０１０４】
用語
本明細書で説明される方法またはタスクの全ては、コンピュータシステムによって実行され、完全に自動化されてもよい。コンピュータシステムは、場合によっては、説明される機能を実行するためにネットワークを通じて通信し、相互作用する複数の別々コンピュータまたはコンピューティングデバイス（例えば、物理サーバ、ワークステーション、記憶アレイ、クラウドコンピューティングリソースなど）を含んでもよい。このような各コンピューティングデバイスは、通常、メモリまたは他の非一時的コンピュータ可読記憶媒体もしくはデバイス（例えば、ソリッドステート記憶デバイス、ディスクドライブなど）に保存されたプログラム命令またはモジュールを実行するプロセッサ（または複数のプロセッサ）を含む。本明細書に開示された各種の機能は、このようなプログラム命令で具現化されてもよく、またはコンピュータシステムの特定用途向け回路（例えば、ＡＳＩＣもしくはＦＰＧＡ）で実装されてもよい。コンピュータシステムが複数のコンピューティングデバイスを含む場合、これらのデバイスは、同じ位置に配置されてもよいが、必ずしもそうする必要はない。開示された方法またはタスクの結果は、ソリッドステートメモリチップまたは磁気ディスクなどの物理記憶デバイスを異なる状態に変えることによって永続的に記憶されてもよい。いくつかの実施形態では、コンピュータシステムは、複数の別々の事業体または他のユーザによって処理リソースが共有されるクラウドベースのコンピューティングシステムであってもよい。
【０１０５】
実施形態に応じて、本明細書で説明されるプロセスまたはアルゴリズムのいずれかのある作用、イベントまたは機能は、異なる順序で実行することができ、追加し、一体化し、または全体的に除外することができる（例えば、記載される全ての動作またはイベントが、アルゴリズムの実施のために必要であるわけではない）。さらに、ある実施形態では、動作またはイベントは、逐次的にではなく、例えば、マルチスレッド処理、割り込み処理、または複数のプロセッサもしくはプロセッサコアもしくは他の並列アーキテクチャによって同時に実行することができる。
【０１０６】
本明細書に開示された実施形態に関連して説明される各種の例示的な論理ブロック、モジュール、ルーチンまたはアルゴリズムステップは、電子ハードウェア（例えば、ＡＳＩＣもしくはＦＰＧＡデバイス）、コンピュータハードウェア上で動作するコンピュータソフトウェア、またはこれらの組み合わせとして実装することができる。さらに、本明細書に開示された実施形態に関連して説明される各種の例示的な論理ブロックまたはモジュールは、機械によって実装または実行することができる。このような機械としては、本明細書で説明される機能を実行するように設計されたプロセッサデバイス、デジタルシグナルプロセッサ（ＤＳＰ）、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）もしくは他のプログラマブルロジックデバイス、ディスクリートゲートもしくはトランジスタロジック、ディスクリートハードウェア構成要素、またはこれらの任意の組み合わせなどがある。プロセッサデバイスは、マイクロプロセッサとすることができるが、代替的に、プロセッサデバイスは、コントローラ、マイクロコントローラもしくはステートマシン、またはこれらの組み合わせなどとすることができる。プロセッサデバイスは、コンピュータ実行可能命令を処理するように構成された電気回路を含むことができる。別の実施形態では、プロセッサデバイスは、コンピュータ実行可能命令を処理せずに論理演算を実行するＦＰＧＡまたは他のプログラマブルデバイスを含む。プロセッサデバイスは、例えば、ＤＳＰとマイクロプロセッサとの組み合わせ、複数のマイクロプロセッサ、ＤＳＰコアと連携する１つ以上のマイクロプロセッサ、または任意の他のこのような構成などの、コンピューティングデバイスの組み合わせとして実装することもできる。本明細書では主としてデジタル技術に関して説明されているが、プロセッサデバイスはまた、主としてアナログ構成要素を含んでもよい。例えば、本明細書で説明されるレンダリング技術の一部または全ては、アナログ回路またはアナログ・デジタル混合回路で実装されてもよい。コンピューティング環境は、いくつか例を挙げると、マイクロプロセッサ、メインフレームコンピュータ、デジタルシグナルプロセッサ、携帯型コンピューティングデバイス、デバイスコントローラまたは電化製品内の計算エンジンに基づいたコンピュータシステムを含むが、これに限定されない任意の種類のコンピュータシステムを含むことができる。
【０１０７】
本明細書に開示された実施形態に関連して説明される方法、プロセス、ルーチンまたはアルゴリズムの要素は、直接ハードウェアで、プロセッサデバイスによって実行されるソフトウェアモジュールで、またはこれら２つの組み合わせで具現化することができる。ソフトウェアモジュールは、ＲＡＭメモリ、フラッシュメモリ、ＲＯＭメモリ、ＥＰＲＯＭメモリ、ＥＥＰＲＯＭメモリ、レジスタ、ハードディスク、リムーバブルディスク、ＣＤ−ＲＯＭ、または任意の他の形態の非一時的コンピュータ可読記憶媒体に存在することができる。例示的な記憶媒体は、プロセッサデバイスが記憶媒体から情報を読み込み、情報を記憶媒体に書き込むことができるようにプロセッサデバイスに接続することができる。代替的に、記憶媒体は、プロセッサデバイスと一体にすることができる。プロセッサデバイスまたは記憶媒体は、ＡＳＩＣに存在することができる。ＡＳＩＣは、ユーザ端末に存在することができる。代替的に、プロセッサデバイスまたは記憶媒体は、ユーザ端末内のディスクリート構成要素として存在することができる。
【０１０８】
本明細書で使用される条件付きの文言、特に、「できる」、「する可能性がある」、「する場合がある」、「し得る」または「例えば」などは、特に明確に指定のない限り、または使用される文脈内で解釈されない限り、一般に、ある特徴、要素またはステップが、ある実施形態には含まれるが他の実施形態には含まれないことを伝えるように意図される。したがって、このような条件付きの文言は、一般に、特徴、要素またはステップが１つ以上の実施形態に全て必要であることを示すように意図されるものでもなく、これらの特徴、要素もしくはステップが任意の特定の実施形態に含まれるか、それとも任意の特定の実施形態において実行されるものであるかを他の入力または指示の有無に関わらず決定する論理が１つ以上の実施形態に必ず含まれることを示すように意図されるものでもない。用語「備える」、「含む」または「有する」などは同義語であり、包括的に、制限されない様式で使用され、追加の要素、特徴、作用または動作などを排除しない。また、用語「または」は、（排他的な意味では使用されず）包括的な意味で使用される。したがって、例えば、要素のリストを連結するために使用されるとき、用語「または」は、そのリスト内の要素の１つ、いくつかまたは全てを意味する。
【０１０９】
別段の定めのない限り、語句「Ｘ、Ｙ、Ｚの少なくとも１つ」などの選言的な文言は、一般に、項目、用語などがＸ、ＹもしくはＺのいずれか、またはこれらの任意の組み合わせ（例えば、Ｘ、ＹもしくはＺ）であり得ることを表すために、使用される文脈で通常は解釈される。したがって、このような選言的な文言は、ある実施形態ではＸの少なくとも１つ、Ｙの少なくとも１つ、またはＺの少なくとも１つが、それぞれが存在するために必要であることを意味するように一般に意図されるものではなく、そのように意図されるべきではない。
【０１１０】
上記の詳細な説明では、各種の実施形態に適用されるように新規の特徴を図示し、説明し、指摘してきたが、例示されたデバイスまたはアルゴリズムの形態または細部における各種の省略、置換または変更が、本開示の趣旨から逸脱せずになされ得ることを理解することができる。理解できるように、本明細書で説明されるある実施形態は、ある特徴を他の特徴とは別に使用し、または実施することができるため、本明細書に記載される特徴または利点の全てを提供しない形態内に具現化することができる。本明細書に開示されたある実施形態の範囲は、前述の説明によってではなく、添付された特許請求の範囲によって示される。請求項の意味または均等範囲に属する全ての変更は、請求項の範囲内に包含される。
【０１１１】
前述の事項は、以下の条項を考慮することでより良く理解され得る。
条項１．訓練モデルデータストアと、
第１の仮想マシンインスタンスをホスティングする第１のコンピューティングデバイスであって、実行されると、前記第１のコンピューティングデバイスに、
ユーザデバイスから、コンテナイメージの指示子と、訓練データの指示子と、１つ以上の第１のハイパーパラメータ値とを含む訓練要求を取得することと、
前記第１の仮想マシンインスタンス内で機械学習（ＭＬ）訓練コンテナを初期化することであって、前記ＭＬ訓練コンテナが前記コンテナイメージから形成される、前記初期化することと、
前記第１の仮想マシンインスタンスに、前記１つ以上の第１のハイパーパラメータ値にしたがって前記ＭＬ訓練コンテナ内に保存されたコードを実行させることであって、前記コードの実行により、前記第１の仮想マシンインスタンスが、前記訓練データを使用して機械学習モデルを訓練し、前記機械学習モデルの特性を表すモデルデータを生成する、前記実行させることと、
前記モデルデータを前記訓練モデルデータストアに保存することと、を行わせるコンピュータ実行可能命令を含む前記第１のコンピューティングデバイスとを含む、システム。
【０１１２】
条項２．前記コンピュータ実行可能命令は、実行されると、前記第１のコンピューティングデバイスに、
訓練中の前記機械学習モデルを修正するための修正要求であって、第２のコンテナイメージの指示子を含む前記修正要求を取得することと、
前記第１の仮想マシンインスタンスに前記コードの実行を停止させることと、
前記ＭＬ訓練コンテナを、前記第２のコンテナイメージを使用して形成された第２のＭＬ訓練コンテナに置き換えることと、
前記第１の仮想マシンインスタンスに前記第２のＭＬ訓練コンテナ内に保存された第２のコードを実行させることであって、前記第２のコードの実行により、前記第１のマシンインスタンスが、前記機械学習モデルを再訓練し、第２のモデルデータを生成する、前記実行させることと、をさらに行わせる、条項１に記載のシステム。
【０１１３】
条項３．前記コンピュータ実行可能命令は、実行されると、前記第１のコンピューティングデバイスに、
１つ以上の第２のハイパーパラメータ値を取得することと、
前記第１の仮想マシンインスタンスに、前記１つ以上の第１のハイパーパラメータ値の代わりに前記１つ以上の第２のハイパーパラメータ値にしたがって前記ＭＬ訓練コンテナ内に保存された前記コードを実行させることと、をさらに行わせる、条項１に記載のシステム。
【０１１４】
条項４．前記コンピュータ実行可能命令は、実行されると、前記第１のコンピューティングデバイスに、
入力データと既知の結果とを含む評価データを取得することと、
前記入力データを入力として使用して前記モデルデータによって定められた前記機械学習モデルを実行してモデル出力データを生成することと、
前記モデル出力データと前記既知の結果とを比較して前記機械学習モデルの品質メトリックを決定することと、
前記品質メトリックを保存することと、をさらに行わせる、条項１に記載のシステム。
【０１１５】
条項５．前記コンピュータ実行可能命令は、実行されると、前記第１のコンピューティングデバイスに、
前記第１の仮想マシンインスタンス内で第２のＭＬ訓練コンテナを初期化することであって、前記第２のＭＬ訓練コンテナが前記コンテナイメージから形成される、前記初期化することと、
前記第１の仮想マシンインスタンスに、前記ＭＬ訓練コンテナ内に保存された前記コードの前記実行と並列に、前記１つ以上の第１のハイパーパラメータ値にしたがって前記第２のＭＬ訓練コンテナ内に保存された第２のコードを実行させることとをさらに行わせる、条項１に記載のシステム。
【０１１６】
条項６．ネットワークを通じてユーザデバイスから、コンテナイメージの指示子と訓練データの指示子とを含む訓練要求を受信することと、
第１のコンピューティングデバイスによってホスティングされた第１の仮想マシンインスタンス内で機械学習（ＭＬ）訓練コンテナを初期化することであって、前記ＭＬ訓練コンテナが前記コンテナイメージから形成される、前記初期化することと、
前記第１の仮想マシンインスタンスに、前記ＭＬ訓練コンテナ内に保存されたコードを実行させることであって、前記コードの実行により、前記第１の仮想マシンインスタンスが、前記訓練データを使用して機械学習モデルを訓練し、前記機械学習モデルの特性を表すモデルデータを生成する、前記実行させることと、を含む、コンピュータ実施方法。
【０１１７】
条項７．訓練中の前記機械学習モデルを修正するための修正要求であって、第２のコンテナイメージの指示子を含む前記修正要求を受信することと、
前記第１の仮想マシンインスタンスに前記コードの実行を停止させることと、
前記第１の仮想マシンインスタンス内で第２のＭＬ訓練コンテナを初期化することであって、前記第２のＭＬ訓練コンテナが前記コンテナイメージを使用して形成される、前記初期化することと、
前記第１の仮想マシンインスタンスに前記第２のＭＬ訓練コンテナ内に保存された第２のコードを実行させることであって、前記第２のコードの実行により、前記第１のマシンインスタンスが、前記機械学習モデルを再訓練し、第２のモデルデータを生成する、前記実行させることと、をさらに含む、条項６に記載のコンピュータ実施方法。
【０１１８】
条項８．入力データと既知の結果とを含む評価データを取得することと、
前記入力データを入力として使用して前記モデルデータによって定められた前記機械学習モデルを実行してモデル出力データを生成することと、
前記モデル出力データと前記既知の結果とを比較して前記機械学習モデルの品質メトリックを決定することとをさらに含む、条項６に記載のコンピュータ実施方法。
【０１１９】
条項９．前記第１の仮想マシンインスタンス内で第２のＭＬ訓練コンテナを初期化することであって、前記第２のＭＬ訓練コンテナが前記コンテナイメージから形成される、前記初期化することと、
前記第１の仮想マシンインスタンスに、前記ＭＬ訓練コンテナ内に保存された前記コードの前記実行と並列に、前記第２のＭＬ訓練コンテナ内に保存された第２のコードを実行させることであって、前記第２のコードの実行により前記第１のマシンインスタンスが第２のモデルデータを生成し、前記モデルデータと前記第２のモデルデータとの組み合わせが前記機械学習モデルの訓練済みのバージョンの特性を定める、前記実行させることとをさらに含む、条項６に記載のコンピュータ実施方法。
【０１２０】
条項１０．第２のコンピューティングデバイスによってホスティングされた第２の仮想マシンインスタンス内でＭＬスコアリングコンテナを初期化することであって、前記ＭＬスコアリングコンテナが前記コンテナイメージから形成される、前記初期化することと、
前記モデルデータを前記ＭＬスコアリングコンテナに保存することと、
前記ユーザデバイスから、入力データを含む実行要求を受信することと、
前記入力データを使用して前記ＭＬスコアリングコンテナに保存された第２のコードを実行して出力を生成することと、
前記出力を前記ユーザデバイスに送信することと、をさらに含む、条項６に記載のコンピュータ実施方法。
【０１２１】
条項１１．前記訓練要求が、１つ以上の第１のハイパーパラメータ値をさらに含む、条項６に記載のコンピュータ実施方法。
【０１２２】
条項１２．前記第１の仮想マシンインスタンスに前記ＭＬ訓練コンテナ内に保存されたコードを実行させることが、前記第１の仮想マシンインスタンスに、前記１つ以上の第１のハイパーパラメータ値にしたがって前記ＭＬ訓練コンテナ内に保存された前記コードを実行させることをさらに含む、条項１１に記載のコンピュータ実施方法。
【０１２３】
条項１３．１つ以上の第２のハイパーパラメータ値を取得することと、
前記第１の仮想マシンインスタンスに、前記１つ以上の第１のハイパーパラメータ値ではなく前記１つ以上の第２のハイパーパラメータ値にしたがって前記ＭＬ訓練コンテナ内に保存された前記コードを実行させることと、をさらに含む、条項１２に記載のコンピュータ実施方法。
【０１２４】
条項１４．前記訓練要求が、前記第１のコンピューティングデバイスのグラフィック処理ユニット（ＧＰＵ）インスタンスタイプ、前記第１のコンピューティングデバイスの中央処理ユニット（ＣＰＵ）インスタンスタイプ、前記第１のコンピューティングデバイスに割り当てるメモリ量または前記第１の仮想マシンインスタンスの種類の少なくとも１つをさらに含む、条項６に記載のコンピュータ実施方法。
【０１２５】
条項１５．１つ以上の非一時的コンピュータ可読記憶媒体であって、１つ以上のプロセッサによって実行される場合、前記１つ以上のプロセッサに、少なくとも、
ユーザデバイスから、コンテナイメージの指示子と訓練データの指示子とを取得することと、
前記コンテナイメージを使用して第１の仮想マシンインスタンス内で訓練コンテナを初期化することと、
前記第１の仮想マシンインスタンスに前記訓練コンテナ内に保存されたコードを実行させることであって、前記コードの実行により、前記第１の仮想マシンインスタンスが、前記訓練データを使用して機械学習モデルを訓練し、前記機械学習モデルの特性を表すモデルデータを生成する、前記実行させることと、を行わせるコンピュータ実行可能命令を記憶する、前記非一時的コンピュータ可読記憶媒体。
【０１２６】
条項１６．前記コンピュータ実行可能命令が、前記１つ以上のプロセッサに、少なくとも、
第２のコンテナイメージの指示子を受信することと、
前記第１の仮想マシンインスタンスに前記コードの実行を停止させることと、
前記第１の仮想マシンインスタンス内で第２の訓練コンテナを初期化することであって、前記第２の訓練コンテナが前記第２のコンテナイメージを使用して形成される、前記初期化することと、
前記第１の仮想マシンインスタンスに前記第２の訓練コンテナ内に保存された第２のコードを実行させることであって、前記第２のコードの実行により、前記第１のマシンインスタンスが、前記機械学習モデルを再訓練し、第２のモデルデータを生成する、前記実行させることと、をさらに行わせる、条項１５に記載の非一時的コンピュータ可読記憶媒体。
【０１２７】
条項１７．前記コンピュータ実行可能命令が、前記１つ以上のプロセッサに、少なくとも、
前記第１の仮想マシンインスタンス内で第２の訓練コンテナを初期化することであって、前記第２の訓練コンテナが前記コンテナイメージから形成される、前記初期化することと、
前記第１の仮想マシンインスタンスに、前記訓練コンテナ内に記憶された前記コードの前記実行と並列に、前記第２の訓練コンテナ内に保存された第２のコードを実行させることであって、前記第２のコードの実行により前記第１の仮想マシンインスタンスが第２のモデルデータを生成し、前記モデルデータと前記第２のモデルデータとの組み合わせが前記機械学習モデルの訓練済みのバージョンの特性を定める、前記実行させることとをさらに行わせる、条項１５に記載の非一時的コンピュータ可読記憶媒体。
【０１２８】
条項１８．前記コンピュータ実行可能命令が、前記１つ以上のプロセッサに、少なくとも、
第２のコンピューティングデバイスによってホスティングされた第２の仮想マシンインスタンス内でスコアリングコンテナを初期化することであって、前記スコアリングコンテナが前記コンテナイメージから形成される、前記初期化することと、
前記モデルデータを前記スコアリングコンテナに保存することと、をさらに行わせる、条項１５に記載の非一時的コンピュータ可読記憶媒体。
【０１２９】
条項１９．前記コンピュータ実行可能命令が、前記１つ以上のプロセッサに、少なくとも、
前記ユーザデバイスから、入力データを含む実行要求を受信することと、
前記入力データを使用して前記スコアリングコンテナに保存された第２のコードを実行して出力を生成することと、
前記出力を前記ユーザデバイスに送信することと、をさらに行わせる、条項１８に記載の非一時的コンピュータ可読記憶媒体。
【０１３０】
条項２０．前記コンピュータ実行可能命令が、前記１つ以上のプロセッサに、少なくとも、
１つ以上の第１のハイパーパラメータ値を取得することと、
前記第１の仮想マシンインスタンスに、前記１つ以上の第１のハイパーパラメータ値にしたがって前記訓練コンテナ内に保存された前記コードを実行させることと、をさらに行わせる、条項１５に記載の非一時的コンピュータ可読記憶媒体。
【図１】
2021504799.tif 000003
【図２】
2021504799.tif 000004
【図３】
2021504799.tif 000005
【図４】
2021504799.tif 000006
【図５Ａ】
2021504799.tif 000007
【図５Ｂ】
2021504799.tif 000008
【図６】
2021504799.tif 000009
【図７】
2021504799.tif 000010
【図８】
2021504799.tif 000011
【図９】
2021504799.tif 000012
【国際調査報告】
2021504799.tif 000013
2021504799.tif 000014