(57)【要約】  プロバイダネットワークは、被接続デバイスで機械学習を実施するためのパッケージを生成および展開するための機械学習展開サービスを実施する。本サービスは、クライアントから、推論アプリケーション、推論アプリケーションによって使用される機械学習フレームワーク、推論アプリケーションによって使用される機械学習モデル、および推論アプリケーションを走行させるエッジデバイスの指標を受信することができる。次に、本サービスは、推論アプリケーション、機械学習フレームワーク、機械学習モデル、およびエッジデバイスのハードウェアプラットフォームに基づいてパッケージを生成することができる。パッケージを生成するために、本サービスは、エッジデバイスのハードウェアプラットフォームおよび／または機械学習フレームワークに基づいてモデルを最適化することができる。次に、本サービスは、パッケージをエッジデバイスに展開することができる。次に、エッジデバイスは、推論アプリケーションをインストールし、機械学習モデルによって生成された推論データに基づいてアクションを行う。【選択図】図１
2021503681.tif 000002
【特許請求の範囲】
【請求項１】
システムであって、
機械学習展開サービスを実施するためのそれぞれのプロセッサおよびメモリを備える、プロバイダネットワークの１つ以上のコンピューティングデバイスを備え、
機械学習モデルによって生成された推論データに基づいて１つ以上のアクションを行うように構成された１つ以上の機能を含む推論アプリケーション、
機械学習モデルの少なくとも一部分を走行させるように構成された機械学習フレームワークであって、
前記機械学習モデルが、前記推論データを生成するように構成されている、機械学習フレームワーク、および
少なくとも１つの被接続デバイス、の指標を受信し、
少なくとも前記推論アプリケーション、前記機械学習フレームワーク、および前記機械学習モデルに基づいてパッケージを生成し、かつ
前記少なくとも１つの被接続デバイスに前記パッケージを展開する、システム。
【請求項２】
前記パッケージを生成するために、前記１つ以上のコンピューティングデバイスが、前記機械学習展開サービスを実施するように構成されて、
前記少なくとも１つの被接続デバイスのハードウェアプラットフォームを決定し、かつ
前記少なくとも１つの被接続デバイスの前記ハードウェアプラットフォームに基づいて、前記機械学習モデルに修正を行い、前記修正された機械学習モデルが、前記ハードウェアプラットフォームでの実行のために最適化される、請求項１に記載のシステム。
【請求項３】
前記機械学習モデルに修正を行うために、前記１つ以上のコンピューティングデバイスが、前記機械学習展開サービスを実施するようにさらに構成されて、
前記機械学習フレームワークに基づいて前記機械学習モデルに追加の修正を行い、前記修正された機械学習モデルが、前記ハードウェアプラットフォームおよび前記機械学習フレームワーク用に最適化される、請求項２に記載のシステム。
【請求項４】
前記１つ以上のコンピューティングデバイスが、前記機械学習展開サービスを実施するように構成されて、
前記機械学習モデルの更新バージョンが利用可能であるという指標を受信し、
少なくとも前記更新された機械学習モデル検索し、
少なくとも前記更新された機械学習モデルに基づいて別のパッケージを生成し、かつ
前記少なくとも１つの被接続デバイスに前記他のパッケージを展開する、請求項１に記載のシステム。
【請求項５】
前記パッケージを生成するために、前記１つ以上のコンピューティングデバイスが、前記機械学習展開サービスを実施するように構成されて、
前記少なくとも１つの被接続デバイスのハードウェアプラットフォームを決定し、
前記少なくとも１つの被接続デバイスの前記ハードウェアプラットフォームに基づいて、異なるそれぞれのハードウェアプラットフォーム用に事前構成された前記機械学習フレームワークの複数のバージョンの中から１つのバージョンを選択し、前記機械学習フレームワークの前記選択されたバージョンが、前記少なくとも１つの被接続デバイスの前記ハードウェアプラットフォームに対して事前構成されている、請求項１に記載のシステム。
【請求項６】
方法であって、
プロバイダネットワークの１つ以上のコンピューティングデバイスによって行われることと、
機械学習モデルによって生成された推論データに基づき１つ以上のアクションを行うように構成された１つ以上の機能を含む推論アプリケーション、
機械学習モデルの少なくとも一部分を走行させるように構成された機械学習フレームワーク、
前記推論データを生成するように構成された前記機械学習モデル、および
少なくとも１つの被接続デバイス、の指標を受信することと、
少なくとも前記推論アプリケーション、前記機械学習モデル、および前記機械学習フレームワークに基づいてパッケージを生成することと、
前記少なくとも１つの被接続デバイスに前記パッケージを展開することと、を含む、方法。
【請求項７】
前記パッケージを生成することが、
前記少なくとも１つの被接続デバイスのハードウェアプラットフォームを決定することと、
前記少なくとも１つの被接続デバイスの前記ハードウェアプラットフォームに基づいて、前記機械学習モデルに修正を行うことと、を含み、前記修正された機械学習モデルが、前記ハードウェアプラットフォームでの実行のために最適化される、請求項６に記載の方法。
【請求項８】
前記機械学習モデルに修正を行うことが、前記機械学習モデルのサイズを低減することを含む、請求項７に記載の方法。
【請求項９】
少なくとも前記機械学習モデルの更新バージョンに基づいて、別のパッケージを生成することと、
前記他のパッケージを前記少なくとも１つの被接続デバイスに展開することと、をさらに含む、請求項６に記載の方法。
【請求項１０】
前記他のパッケージを生成することが、
前記少なくとも１つの被接続デバイスの前記ハードウェアプラットフォームに基づいて、前記更新された機械学習モデルに修正を行うことをさらに含み、修正により、前記更新された機械学習モデルのサイズを低減する、請求項９に記載の方法。
【請求項１１】
前記少なくとも１つの被接続デバイスの１つ以上のハードウェアリソースが、前記推論アプリケーションによってアクセス可能であるという指標を受信することと、
前記１つ以上のハードウェアリソースを使用するように前記推論アプリケーションを構成することと、をさらに含む、請求項６に記載の方法。
【請求項１２】
前記機械学習モデルの更新バージョンが利用可能であるという通知を、前記少なくとも１つの被接続デバイスに送信することと、
前記被接続デバイスからフィンガプリントを受信することと、
前記受信したフィンガプリントが、前記プロバイダネットワークに記憶されているフィンガプリントと一致するかどうかを判定することであって、前記記憶されているフィンガプリントが、前記被接続デバイスの以前の構成を記載する、記憶されている構成情報に関連付けられている、判定することと、
前記受信したフィンガプリントが、前記記憶されているフィンガプリントと一致しないとの判定に応じて、前記被接続デバイスの現在のソフトウェアおよび／またはハードウェア構成情報を記載する構成情報を提供するための要求を前記被接続デバイスに送信することと、をさらに含む、請求項６に記載の方法。
【請求項１３】
前記プロバイダネットワークのストレージロケーションから前記推論アプリケーション、前記機械学習モデル、または前記機械学習フレームワークのうちの１つ以上を検索するここと、をさらに含む、請求項６に記載の方法。
【請求項１４】
前記推論アプリケーションの前記指標を前記受信することが、
前記プロバイダネットワークによって記憶された複数の推論アプリケーションの中から前記推論アプリケーションの選択を受信することを含み、前記推論アプリケーションのうちの異なるものが、異なる機械学習モデルによって生成されたデータを処理するように構成されている、請求項６に記載の方法。
【請求項１５】
プログラム命令を記憶する非一時的なコンピュータ可読ストレージ媒体であって、前記命令が、プロバイダネットワークの機械学習展開サービスのために１つ以上のコンピューティングデバイスによって実行されたときに、前記１つ以上のコンピューティングデバイスに、
機械学習モデルによって生成された推論データに基づき１つ以上のアクションを行うように構成された１つ以上の機能を含む推論アプリケーション、
機械学習モデルの少なくとも一部分を走行させるように構成された機械学習フレームワーク、
前記推論データを生成するように構成された前記機械学習モデル、および
少なくとも１つの被接続デバイス、の指標を受信することと、
少なくとも前記推論アプリケーション、前記機械学習モデル、および前記機械学習フレームワークに基づいてパッケージを生成することと、
前記少なくとも１つの被接続デバイスに前記パッケージを展開することと、を実施させる、非一時的なコンピュータ可読ストレージ媒体。
【発明の詳細な説明】
【背景技術】
【０００１】
被接続コンピューティングデバイスは、様々なアプリケーションに対して、多くの環境で使用される。家庭にあるか、車両および工場に組み込まれているかに関係なく、これらのデバイスは、様々なセンサを使用して周囲を監視し、予測を行い、予測に基づいてアクションをする。多くのシナリオ（例えば、監視カメラ、自動運転車、産業機械）では、デバイスは、非常に短時間で大量のデータを収集し、収集したデータに基づいてリアルタイムの意思決定を行う。したがって、多くの場合、機械学習の推論は、分析のためにデータを別のデバイスに送信する代わりに、デバイス上でローカルに行われる。例えば、デバイスで走行している機械学習モデルは、収集されたデータを処理して、推論（例えば、予測）を生成する。次に、デバイスは、推論に基づいてアクションを行うことができる。
【０００２】
機械学習モデルを使用して予測を生成する前に、それをトレーニングする必要がある。機械学習モデルをトレーニングするには、大量のコンピューティングリソースが必要になる場合がある。したがって、機械学習モデルは通常、強力なコンピューティングシステムによってトレーニングされる。機械学習モデルがトレーニングされた後、そのモデルは、被接続デバイスに移動され、被接続デバイスで機械学習推論を行うために有効化される。しかしながら、被接続デバイスで機械学習モデルを走行させることを可能にするには、多くの手順が必要になる場合がある。したがって、被接続デバイスで機械学習モデルを走行できるようにするプロセスは、非常に複雑で時間がかかり、エラーが発生しやすくなる可能性がある。
【図面の簡単な説明】
【０００３】
【図１】いくつかの実施形態による、被接続デバイスでの機械学習用パッケージを生成および展開するためのシステムを図示する。
【図２】いくつかの実施形態による、被接続デバイスの例示的な構成要素を示すブロック図である。
【図３】いくつかの実施形態による、被接続デバイスでの機械学習のためのパッケージの生成および展開を示す流れ図である。
【図４】いくつかの実施形態による、被接続デバイスのハードウェアプラットフォームに基づいてパッケージを生成し、被接続デバイスで機械学習用パッケージを展開することを示す流れ図である。
【図５】いくつかの実施形態による、被接続デバイスでの機械学習のための更新されたモデルを含むパッケージを生成および展開するためのシステムを図示する。
【図６】いくつかの実施形態による、被接続デバイスでの機械学習のための更新されたモデルを含むパッケージの生成および展開を示す流れ図である。
【図７】いくつかの実施形態による、本明細書で記載される技法の一部または全てを実装する例示的なコンピュータシステムを示すブロック図である。
【０００４】
実施形態は、いくつかの実施形態および説明的な図面の例として本明細書に記載されているが、当業者は、実施形態が記載された実施形態または図面に限定されないことを認識するであろう。図面およびその詳細な説明は、実施形態を開示された特定の形態に限定することを意図するものではなく、むしろ、その意図は、添付の特許請求の範囲によって定義される主旨および範囲に該当する全ての変更、均等物、および代替物を包含することが理解されるべきである。本明細書で使用される見出しは、編成目的のみのためであり、説明または請求項の範囲を限定するために使用されることを意味しない。本出願を通して使用されるように、「することができる（ｍａｙ）」という語は、必須の意味（すなわち、必然的な意味）ではなく、許容の意味（すなわち、可能性を有するという意味）で使用される。同様に、「含む（ｉｎｃｌｕｄｅ）」、「含む（ｉｎｃｌｕｄｉｎｇ）」、および「含む（ｉｎｃｌｕｄｅｓ）」という語は、含むがそれに限定されないことを意味する。
【発明を実施するための形態】
【０００５】
本明細書で記載するシステムおよび方法は、被接続デバイスで機械学習用パッケージを生成および展開することを実施する。プロバイダネットワークの機械学習展開サービスは、推論アプリケーション、推論アプリケーションによって使用される機械学習フレームワーク、推論によって使用される機械学習モデル、および推論アプリケーションを走行させるための被接続デバイスの指標を（例えば、クライアントのユーザから）受信することができる。次に、機械学習展開サービスは、推論アプリケーション、機械学習フレームワーク、および機械学習モデルに基づいてパッケージを生成することができる。次に、機械学習展開サービスは、被接続デバイスにパッケージを展開することができる。
【０００６】
実施形態では、「被接続デバイス」、「エッジデバイス」、または「ＩｏＴ（モノのインターネット）デバイス」は、同じタイプのデバイスを指し得る。様々な実施形態では、被接続デバイス、エッジデバイス、またはＩｏＴデバイスは、１つ以上のネットワークを介して、リモートネットワーク（例えば、リモートプロバイダネットワーク）の１つ以上のデバイス、および／または同じローカルネットワークの他のデバイスと通信するのに好適な任意のタイプのコンピューティングデバイスを指すことができる。実施形態では、「エンドポイント」は、ローカルネットワークまたはリモートネットワークの一部である１つ以上のコンピューティングデバイス、および／または１つ以上のサービスであり得、それにより、１つ以上のネットワーク接続を介してエンドポイントに、またはエンドポイントから情報が伝送され得る。
【０００７】
実施形態では、「パッケージ」または「機械学習パッケージ」は、被接続デバイスによって使用され得る、および／または被接続デバイスを構成し得る、１つ以上の構成要素を含むことができ、それにより、被接続デバイスが１つ以上の機械学習モデルを実行し、１つ以上のモデルによって生成された結果に基づく１つ以上のアクションを行うことができる。例えば、被接続デバイスは、ＩｏＴデバイスが、機械学習モデルに基づいて顔認識を行うために、および機械学習モデルによって生成された顔認識結果に基づいて１つ以上のアクションを行うために、インストールおよび実行できる１つ以上の構成要素を含む機械学習パッケージをダウンロードする。いくつかの実施形態では、機械学習は、任意の好適な機械学習／人工知能技法（例えば、ニューラルネットワーク、ディープニューラルネットワーク、強化学習、決定木学習、遺伝的アルゴリズム、分類子など）を使用して実施され得る。
【０００８】
銃声の検出とアラートシステムは、複数の被接続デバイスに機械学習を実装する例である。被接続デバイス（例えば、エッジノード）は、都市全体の電柱に設置できる。発砲された武器のタイプを識別し、発砲された位置を三角測量するために、銃声オーディオサンプルを使用して、機械学習モデルをクラウド内で（例えば、プロバイダネットワークによって）トレーニングできる。本明細書で記載する技法を使用して、機械学習モデルおよびモデルの将来の更新を各エッジデバイスに対して修正（例えば、最適化）し、エッジデバイスに迅速に展開して、発砲検出およびアラートシステムを実施することができる。
【０００９】
被接続デバイスで機械学習用パッケージを生成して展開することにより、様々な実施形態は、機械学習（例えば、推論アプリケーション、機械学習フレームワーク、および／または機械学習モデル）を実施するように被接続デバイスを構成する、従来の技術に勝る利点を可能にする。例えば、推論アプリケーションおよび／または機械学習モデル（または更新されたモデル）をインストールおよび／または有効にして、被接続デバイスで走行させるには、多数の手順が必要になる場合がある。したがって、推論アプリケーションおよび／または機械学習モデルをインストールおよび／または有効にするプロセスは、エラーが発生しやすく、かなりの時間を必要とする場合がある。インストールされた推論アプリケーションおよび／または機械学習モデルが、被接続デバイスで機能するように最適に構成されていない可能性がある。したがって、推論アプリケーションおよび／または機械学習モデルを走行させると、被接続デバイスのコンピューティングリソース（例えば、メモリ、プロセッサ、ネットワーク帯域幅）が大量または過度に消費され、推論データを生成するために過度の時間が消費される場合がある。
【００１０】
実施形態では、機械学習展開サービスは、被接続デバイスが、推論アプリケーションおよび／または機械学習モデルを、（例えば、推論アプリケーション、推論アプリケーションで使用される機械学習フレームワーク、推論アプリケーションで使用される機械学習モデル、および／または被接続デバイスのハードウェアプラットフォーム／構成要素に基づく最適化された構成による）最適またはより最適な手法で走行させることができるようにするために、インストールのために機械学習パッケージを生成し、被接続デバイスにパッケージを展開することができる。例えば、被接続デバイスは、被接続デバイスのコンピューティングリソース（例えば、メモリおよびプロセッサ）の消費量を減らし、ならびに／または推論データの生成に必要な時間を低減しながら、推論アプリケーションおよび／または機械学習モデルを走行させることができる。実施形態では、被接続デバイスで機械学習用パッケージを生成および展開することにより、プロバイダネットワークのコンピューティングデバイスおよび／またはクライアントネットワークの被接続デバイスによるネットワーク帯域幅、コンピューティングリソース、時間、および／またはストレージスペースの不必要な使用を防ぐことができる。
【００１１】
図１は、いくつかの実施形態による、被接続デバイスで機械学習用パッケージを生成および展開するシステムを図示する。図１に示されている被接続デバイス１００は、同じタイプの被接続デバイスであってもよく、実施形態では、図１〜図６に描写された他の被接続デバイスと同じ構成要素のいくつかまたは全てを含む。プロバイダネットワーク１０２ならびに／または機械学習および展開サービス１０４の特定の構成要素は、様々なアクションを行うものとして記載されているが、プロバイダネットワーク１０２および／または機械学習展開サービス１０４によって行われると記載されたアクションのいずれかは、プロバイダネットワーク１０２の任意のハードウェアおよび／またはソフトウェア構成要素、機械学習および展開サービス１０４、または図１〜図６のネットワークの他の構成要素によって行われてもよい。
【００１２】
描写された実施形態では、機械学習展開サービス１０４は、少なくとも推論アプリケーション１０８、機械学習フレームワーク１１０、機械学習モデル１１２、および／または被接続デバイス１００のハードウェアプラットフォームに基づいて、パッケージを生成することができる機械学習パッケージジェネレータ１０６を含む。実施形態では、ユーザは、推論アプリケーション１０８の１つ、推論アプリケーションによって使用される機械学習フレームワーク１１０の１つ、推論アプリケーションによって使用される機械学習モデル１１２の１つ、および／または推論アプリケーションを走行させるための１つ以上の被接続デバイス１００の指標を（例えば、識別子を選択または提供することによって）機械学習展開サービス１０４に提供することができる。
【００１３】
ユーザは、管理アプリケーションプログラミングインターフェース（ＡＰＩ）１２０を介して機械学習展開サービス１０４と通信する、リモートクライアントネットワーク１１６の管理デバイス１１４を使用して（例えば、グラフィカルユーザインターフェースおよび／またはコマンドラインインターフェースを介して）上記の指標を提供することができる。例えば、ユーザは、１つ以上の利用可能な推論アプリケーション、機械学習フレームワーク、機械学習モデル、ハードウェアプラットフォーム、および／または被接続デバイスのリストから、特定の推論アプリケーション、機械学習フレームワーク、機械学習モデル、ハードウェアプラットフォームおよび／または被接続デバイスを選択することで指標を提供できる。いくつかの実施形態では、ユーザは、推論アプリケーション、機械学習フレームワーク、機械学習モデル、ハードウェアプラットフォーム、および／または被接続デバイスの識別子／名称をデータフィールドに入力することによって指標を提供することができる。
【００１４】
以下でより詳細に記載するように、特定の被接続デバイスについて、機械学習パッケージジェネレータ１０６は、指示された推論アプリケーション１０８、機械学習フレームワーク１１０、機械学習モデル１１２、および／または被接続デバイスに基づいてパッケージを生成し得る。実施形態では、生成されたパッケージは、被接続デバイスに別々に送信される複数の部分を含み得る。そのような実施形態では、被接続デバイスは、複数の部分でパッケージを受信し、次に、本明細書で説明されるように推論アプリケーションをインストールする。
【００１５】
いくつかの実施形態では、機械学習展開サービス１０４に提供される被接続デバイスの指標は、被接続デバイスのソフトウェアおよび／またはハードウェア構成情報（例えば、インストールされたソフトウェアのバージョンおよび／またはインストールされた実行環境、ハードウェア、プラットフォーム、プロセッサアーキテクチャ、ＧＰＵ、ＦＰＵなど）を記載する構成情報を含む。機械学習展開サービス１０４は、構成情報に基づいて、被接続デバイスの構成の一意の識別子としてフィンガプリントを生成することができる。次に、機械学習展開サービス１０４は、被接続デバイスに関連するフィンガプリントおよび構成情報を記憶することができる。図５について以下で記載するように、機械学習展開サービス１０４は、後の時点でフィンガプリントを使用して、被接続デバイスの構成が変更されたかどうかを判定することができる。
【００１６】
図示されるように、任意の数のクライアントネットワーク１１６が存在し得、クライアントネットワーク１１６の各々は、本明細書で記載されているように推論アプリケーションおよび関連する構成要素をインストールして実施するために、機械学習展開サービス１０４からパッケージを受信し得る任意の数の被接続デバイス１００を含み得る。図示されるように、プロバイダネットワーク１０２は、広域ネットワーク１２２（例えば、インターネット）を介して、クライアントネットワーク１１６のいずれかのデバイスに、およびデバイスからデータを伝送することができる。
【００１７】
実施形態では、プロバイダネットワークは、１つ以上の推論アプリケーション１０８、１つ以上の機械学習フレームワーク１１０、および１つ以上の機械学習モデル１１２をストレージサービス１２４のそれぞれのロケーションに記憶するストレージサービス１２４を含む。いくつかの実施形態では、上記の構成要素の１つ以上は、代わりに、またはその上に、機械学習展開サービス１０４によって（少なくとも一時的に）、またはプロバイダネットワークの任意の他のロケーションに記憶されてもよい。
【００１８】
図示されるように、機械学習展開サービス１０４は、デプロイヤ１２６を含む。機械学習パッケージジェネレータ１０６がパッケージを生成した後、デプロイヤ１２６は、被接続デバイス１００（例えば、被接続デバイス１００ａ）のうちの１つ以上にパッケージを展開する（例えば、伝送する、または送信する）ことができる。実施形態では、パッケージは、一連の複数の伝送を使用して展開されてもよい。例えば、１つ以上の構成要素に送信されてもよく、次に、１つ以上の他の構成要素に１つ以上の後の時点で送信されてもよい。
【００１９】
実施形態において、次に、展開エージェントは、パッケージの構成要素をアンパックして、推論アプリケーション１０８、機械学習フレームワーク１１０、機械学習モデル１１２、ならびに／または、推論アプリケーション１０８および／もしくは機械学習モデル１１２を使用するように被接続デバイス１００を構成するために使用され得る１つ以上の他の構成要素もしくはデータを取得および／または識別することができる。いくつかの実施形態では、次に、展開エージェント１２８および／または被接続デバイス１００は、推論アプリケーション、機械学習フレームワーク、および機械学習モデルを被接続デバイス１００に記憶および／またはインストールすることができる。
【００２０】
実施形態では、被接続デバイス１００は、推論アプリケーションの実行を開始することができ、それは次に機械学習フレームワークを実行する。実施形態では、推論アプリケーションおよび／または機械学習フレームワークは、次に機械学習モデルを実行することができる。いくつかの実施形態では、機械学習フレームワークおよび機械学習モデルは、推論アプリケーションの一部と見なされてもよい。したがって、推論アプリケーションによって行われるものとして記載されているアクションは、実施形態では、機械学習フレームワークおよび／または機械学習モデルによって行うことができる。
【００２１】
被接続デバイス１００での実行中に、推論アプリケーションは、１つ以上のデータソース１３０からデータ（例えば、画像データ）を収集し、収集したデータを機械学習モデル（例えば、モデル１１２ｐ）に提供することができる。以下でより詳細に記載するように、モデル１１２ｐは、プロバイダネットワーク１０２によって記憶されたモデル１１２の１つであり得るか、またはプロバイダネットワーク１０２によって記憶されたモデル１１２の１つの修正バージョンであり得る。同様に、推論アプリケーション１０８ｐおよび／もしくはフレームワーク１１０ｐは、プロバイダネットワーク１０２によって記憶された推論アプリケーション１０８および／もしくはフレームワーク１１０の１つであり得るか、またはプロバイダネットワーク１０２によって記憶された推論アプリケーション１０８および／もしくはフレームワーク１１０の１つの修正バージョンであり得る。
【００２２】
機械学習モデル１１２ｐは、収集されたデータを処理して、推論データ（例えば、１つ以上の推論および／または１つ以上の予測）を生成することができる。実施形態では、推論アプリケーション１０８ｐは、機械学習モデル１１２ｐによって生成された推論データに基づいて１つ以上のアクションを行う（例えば、画像データが侵入者を示すという推論に基づいて、アラームをアクティブにする）ことができる。
【００２３】
実施形態では、実行環境は、推論アプリケーション１０８、フレームワーク１１０、および／またはモデル１１２を、それぞれの被接続デバイス１００上で実行することができる。実行環境は、機能実行環境および／または他の任意のタイプのランタイム実行環境であり得る。このように、実行環境は、１つ以上のオペレーティングシステム、プロセス、機能、および／またはアプリケーションを走行および／または実行するために使用可能な任意の数のソフトウェアおよび／またはハードウェア構成要素を含み得る。実施形態では、実行環境は、クライアントに出荷される前または後に、被接続デバイスにインストールされてもよい。いくつかの実施形態では、実行環境は、プロバイダネットワーク１０２から被接続デバイスにダウンロードされて、被接続デバイスにインストールされてもよい。
【００２４】
図２は、いくつかの実施形態による、いくつかの実施形態による、被接続デバイスの例示的な構成要素を示すブロック図である。描写された実施形態では、被接続デバイス１００は、オペレーティングメモリ２００（例えば、揮発性メモリおよび／または不揮発性メモリ）、プロセッサ２０２（例えば、ＣＰＵ）、グラフィックス処理ユニット２０４（ＧＰＵ）、他のリソース２０６、およびネットワークインターフェース２０８を含む。実施形態では、被接続デバイス１００は、１つ以上の追加のメモリ、プロセッサ、ＧＰＵ、ＦＰＵ、または他のプロセッサを含んでもよい。機械学習展開サービスからの展開に利用可能である異なる機能には、異なるタイプのプロセッサ、ＧＰＵ、ＦＰＵ、および／または被接続デバイス１００の他のハードウェア構成要素が必要になる場合がある。
【００２５】
実施形態では、他のリソース２０６は、推論アプリケーション、モデル、および／またはフレームワークを記憶する不揮発性メモリを含み得る。いくつかの実施形態では、推論アプリケーション、モデル、および／またはフレームワークは、（例えば、再起動または停電の後に）オペレーティングメモリ２００にロードされてもよい。
【００２６】
オペレーティングメモリは、展開エージェント１２８、推論アプリケーション（複数可）１０８、機械学習モデル（複数可）１１２、および機械学習フレームワーク（複数可）１１２を走行させるのに好適な実行環境２１０を含む。実施形態では、実行環境は、推論アプリケーション１０８の１つ以上の機能を含む、機能のイベント駆動型実行を提供することができる。例えば、トリガイベントを検出する実行環境（例えば、１つ以上のデータソースからのデータの受信および／または検出、またはメッセージもしくはコマンドの受信）に応じて、１つ以上の機能を呼び出すことができる。実施形態では、データソースからデータを受信することに応じて、推論アプリケーション１０８の機能が呼び出され、モデル１１０を実行し、受信したデータを処理して推論データを生成することができる。機能（または推論アプリケーションの別の機能）は、推論データに基づいて１つ以上のアクションを行うことができる（例えば、セキュリティアラームをトリガする）。
【００２７】
実施形態では、１つ以上のイベントソースは、被接続デバイスの一部または（例えば、同じネットワークまたはリモートネットワーク内の）別のデバイスの一部であり得る。例えば、カメラは、被接続デバイスに視覚データを提供する一種のデータソースであり得、それは、機能の実行（例えば、起動）をトリガする。実施形態では、推論アプリケーション１０８、機械学習モデル１１２、および機械学習フレームワーク１１２はまた、プロバイダネットワークの実行環境と互換性がある（例えば、プロバイダネットワークの実行環境によって実行可能である）。したがって、いくつかの実施形態では、推論アプリケーション、モデル、および／またはフレームワークは、（例えば、推論アプリケーション１０８が、（例えば、エラーまたは障害のために）被接続デバイス１００上で走行できない場合、１つ以上のデータソース１３０からのデータをテストするために、またはデータ処理のバックアップとして）プロバイダネットワークで走行させることもできる。
【００２８】
実施形態では、ネットワークインターフェース２０８は、被接続デバイス１００をローカルネットワークに通信可能に結合する。このように、被接続デバイス１００は、ネットワークインターフェース２０８を介して、１つ以上の他のデータソースデバイス、被接続デバイス、機械学習展開サービス１０４、またはプロバイダネットワーク１０２もしくはクライアントネットワーク１１６の他のエンドポイントに、データを伝送および／またはそれらからデータを受信する。実施形態では、ネットワークインターフェース２０８は、有線または無線インターフェースを介してデータを伝送および受信することができる。
【００２９】
様々な実施形態において、被接続デバイス１００は、高レベルのセキュリティ（例えば、暗号化されたメッセージ）を提供して、被接続デバイス間、および被接続デバイスとプロバイダネットワーク１０２との間で通信されるデータを保護することができる。被接続デバイスは、シンプルでありながら強力なプロセッサおよび／またはオペレーティングシステムを提供して、プラットフォームに依存しない能力を提供することができる。いくつかの実施形態では、サービス（例えば、機械学習展開サービス１０４または機械学習展開サービスの構成要素）を実施するためにプロバイダネットワーク１０２の１つ以上のサーバによって使用される１つ以上のメモリおよび／または１つ以上のプロセッサのサイズは、被接続デバイス１００によって使用されるメモリおよび／またはプロセッサのサイズよりも少なくとも一桁大きい。しかしながら、被接続デバイス１００は、依然として、同じ機能（例えば、イベント駆動型機能）を呼び出して実行するためにプロバイダネットワーク１０２の１つ以上のサーバ上で走行するものと同じまたは同様の機能実行環境２１０を走行させるのに十分強力であり得る。
【００３０】
実施形態では、実行環境２１０は、展開エージェント１２８を走行させる。展開エージェント２１２は、デプロイヤ１２６と通信し、推論アプリケーション１０８、機械学習モデル１１２、および機械学習フレームワーク１１２を被接続デバイスにダウンロードするプログラムまたはアプリケーションであり得る。
【００３１】
いくつかの実施形態では、展開エージェント１２８は、デプロイヤ１２６から、展開に利用可能である、機械学習モデル、機械学習モデルの新しいバージョン、または（モデルとフレームワークを含む、または１つ以上の更新された機能を含む）推論アプリケーションの通知を受信し、モデルまたはアプリケーションのリクエストをデプロイヤ１２６に送信し、デプロイヤ１２６からモデルまたはアプリケーションを受信することができる。次に、展開エージェント２１２は、被接続デバイス上にモデルまたはアプリケーションをインストールおよび／または構成することができる。いくつかの実施形態では、デプロイヤ１２６は、利用可能なとき、代わりにモデルまたはアプリケーションを被接続デバイスにプッシュし、次に、展開エージェント２１２は、被接続デバイス上にモデルまたはアプリケーションをインストールおよび／または構成することができる。
【００３２】
図３は、いくつかの実施形態による、被接続デバイスでの機械学習用パッケージの生成および展開を示す流れ図である。様々な実施形態では、図３、図４、および図６の図示されたプロセスの１つ以上の部分は、プロバイダネットワーク１０２および／または被接続デバイス１００の１つ以上の構成要素またはサービスのいずれかを介して行われ得る。
【００３３】
ブロック３０２で、機械学習展開サービスは、推論アプリケーション、推論アプリケーションによって使用される機械学習フレームワーク、推論アプリケーションによって使用される機械学習モデル、および推論アプリケーションをインストールするターゲット被接続デバイス１００の指標を受信する。ブロック３０４で、機械学習展開サービスは、推論アプリケーション、機械学習フレームワーク、および機械学習モデルを（例えば、ストレージサービスから）検索する。
【００３４】
ブロック３０６で、機械学習展開サービスは、推論アプリケーション、機械学習フレームワーク、および機械学習モデルに基づいてパッケージを生成する。ブロック３０８で、機械学習展開サービスは、被接続デバイスにパッケージを展開する。いくつかの実施形態では、機械学習展開サービスは、パッケージを複数の被接続デバイスに展開することができ、デバイスの各々は、以下で記載するように推論アプリケーションをインストールして走行させる。
【００３５】
ブロック３１０で、被接続デバイスは、推論アプリケーション、機械学習フレームワーク、および機械学習モデルを被接続デバイスにインストールする。ブロック３１２で、推論アプリケーションは、１つ以上のデータソースからデータを収集する。ブロック３１４で、推論アプリケーションは、機械学習モデルを使用して推論データを生成する。ブロック３１６で、推論アプリケーションは、機械学習モデルによって生成された推論データに基づいて１つ以上のアクションを行う。
【００３６】
図４は、いくつかの実施形態による、被接続デバイスのハードウェアプラットフォームに基づいてパッケージを生成し、被接続デバイスで機械学習用パッケージを展開することを示す流れ図である。
【００３７】
ブロック４０２で、機械学習展開サービスは、推論アプリケーション、推論アプリケーションによって使用される機械学習フレームワーク、推論アプリケーションによって使用される機械学習モデル、および推論アプリケーションをインストールするターゲット被接続デバイス１００の指標を受信する。ブロック４０４で、機械学習展開サービスは、被接続デバイスのハードウェアプラットフォームを決定する。実施形態では、そうすることで、サービスは、被接続デバイスの１つ以上のハードウェア構成要素またはハードウェアアーキテクチャを決定することができる。実施形態では、サービスは、被接続デバイスのベンダおよび／またはデバイスの特定のバージョンを決定することができる。いくつかの実施形態では、ハードウェアプラットフォームを記載する情報の一部または全てが（例えば、管理デバイスを介してユーザによって）サービスに提供されてもよい。
【００３８】
いくつかの実施形態において、特定の推論アプリケーションは、プロバイダネットワークによって（例えば、ストレージサービスにおいて）記憶されている異なる推論アプリケーションのグループの中から選択される。実施形態では、異なる推論アプリケーションは、異なる機械学習モデルによって生成されたデータを処理するように構成される。
【００３９】
実施形態では、異なる推論アプリケーションのそれぞれは、クライアントによって（例えば、コードを修正することによって）修正されていてもされていなくてもよい青写真として機能することができる。例えば、特定の推論アプリケーションは、自動運転車で使用するためのものであってもよい。したがって、アプリケーションは、車に搭載されたカメラからのセンサデータに基づいて推論データを生成する機械学習モデルで使用するように書くことができる。
【００４０】
ブロック４０６において、機械学習展開サービスは、推論アプリケーションおよび機械学習モデルを（例えば、ストレージサービスから）検索する。いくつかの実施形態では、推論アプリケーションの複数の異なるバージョン（例えば、青写真）および／または機械学習モデルは、プロバイダネットワークによって記憶されてもよく、各バージョンは、異なるハードウェアプラットフォーム（例えば、異なるタイプの被接続デバイス）上で走行するように構成されている。したがって、いくつかの実施形態では、被接続デバイスのハードウェアプラットフォーム用に構成された推論アプリケーションおよび／または機械学習モデルの特定のバージョンが、複数のバージョンの中から選択および／または検索される。
【００４１】
いくつかの実施形態では、機械学習展開サービスは、プロバイダネットワーク上の所望の機械学習モデルのストレージロケーションを示す識別子（例えば、ネットワークアドレスまたはモデル名）をユーザから受信する。次に、機械学習展開サービスは、ストレージロケーションから機械学習モデルを検索することができる。
【００４２】
実施形態では、検索された機械学習モデルは、プロバイダネットワークのモデルトレーニングサービスによってトレーニングされている場合がある。いくつかの実施形態では、検索された機械学習モデルは、別のリモートネットワークのモデルトレーニングサービスによってトレーニングされ、その後、ストレージのためにプロバイダネットワークに伝送され得る。
【００４３】
ブロック４０８で、機械学習展開サービスは、被接続デバイスのハードウェアプラットフォームに基づいて、被接続デバイスのハードウェアプラットフォーム用に構成された機械学習フレームワークのバージョンを（例えば、ストレージサービスから）選択および／または検索する。実施形態では、機械学習フレームワークの複数の異なるバージョンが、プロバイダネットワークによって記憶されてもよく、各バージョンは、ハードウェアプラットフォームに固有の最適化、または（例えば、異なるベンダからの異なるタイプの被接続デバイスに基づいて）他のハードウェアプラットフォーム用に作成されたものとは異なる最適化に基づいて、異なるハードウェアプラットフォームで走行されるように構成（例えば「事前構成」）される。したがって、いくつかの実施形態では、機械学習フレームワークの特定のバージョンは、複数のバージョンの中から選択および／または検索される。
【００４４】
いくつかの実施形態では、モデルは、（例えば、ベンダ固有の）特定のフレームワークおよび／またはプラットフォームを使用してトレーニングされてもよいが、モデルは、異なるフレームワークおよび／またはプラットフォーム（例えば、異なるベンダ）を使用して被接続デバイス上で走行される。このように、機械学習展開サービスは異なるフレームワークを選択する。このような場合、機械学習展開サービスは、異なるフレームワークに固有の最適化に基づいてモデルを修正することもある。
【００４５】
ブロック４１０で、機械学習展開サービスは、被接続デバイスのハードウェアプラットフォームおよび／または機械学習フレームワークに基づいて機械学習モデルに修正を行う。実施形態では、修正により、特定のハードウェアプラットフォームで走行させるためにモデルを最適化することができる。このように、実施形態では、機械学習展開サービスは、同じモデルに対して異なる修正を行って、異なるハードウェアプラットフォーム用にモデルを最適化する。いくつかの実施形態では、トレーニングされたモデルは、どのハードウェアプラットフォームまたはフレームワーク（例えば、「汎用」または非最適化モデル）に対しても最適化されない場合がある。このように、機械学習展開サービスは、モデルを修正して、被接続デバイスのハードウェアプラットフォームによって走行されるように、および／または選択されたフレームワークによって走行されるようにモデルを最適化することができる。
【００４６】
実施形態では、修正により、機械学習モデルのサイズを低減することができる。したがって、モデルはフットプリントが小さいため、ハードウェアリソース（例えば、メモリおよびプロセッサリソース）の消費量が少なくなる。
【００４７】
いくつかの実施形態では、修正により、修正されていないモデルよりも速い速度で推論データを生成するようにモデルを構成することができる。実施形態では、他のハードウェアプラットフォームに関して、被接続デバイスの特定のハードウェアプラットフォームに固有のハードウェアによって実行されるモデルの少なくともいくつかを構成することによって、より速い速度を達成することができる。実施形態では、ハードウェアは、（被接続デバイスのプラットフォームを含む）いくつかのハードウェアプラットフォームで利用可能であるが、他のハードウェアプラットフォーム（例えば、他のタイプのプラットフォームおよび／または他のベンダ）では利用できない。
【００４８】
いくつかの実施形態では、機械学習展開サービスは、少なくとも１つの被接続デバイスの１つ以上のハードウェアリソースが、推論アプリケーションによってアクセス可能であるという指標を（例えば、グラフィカルユーザインターフェースまたはコマンドラインインターフェースを使用し管理デバイスを通りユーザ選択を介して）受信する。例えば、１つ以上のハードウェアリソースは、複数の異なる利用可能なリソースから選択されてもよい。いくつかの実施形態では、ユーザは、選択のために１つ以上のリソースの名称／識別子を入力することができる。機械学習展開サービスは、１つ以上のハードウェアリソースを使用するように推論アプリケーションを構成できる。
【００４９】
ハードウェアリソースには、推論アプリケーション、機械学習フレームワーク、および／または機械学習モデルで使用できる、被接続デバイスのローカルハードウェアリソースを含めることができる。例えば、ハードウェアリソースには、機械学習モデルによる推論データの生成を加速するように構成されたプロセッサ（例えばＧＰＵ）、メモリ、カメラ、センサ、または機械学習モデルが処理するデータのソースを提供する、他のデバイスが含まれる場合がある。
【００５０】
ブロック４１２で、機械学習展開サービスは、推論アプリケーション、機械学習フレームワーク、および機械学習モデルに基づいてパッケージを生成する。ブロック４１４で、機械学習展開サービスは、被接続デバイスにパッケージを展開する。いくつかの実施形態では、機械学習展開サービスは、複数の被接続デバイスにパッケージを展開することができ、各デバイスは、推論アプリケーションをインストールして走行させる。
【００５１】
図５は、いくつかの実施形態による、被接続デバイスにおける機械学習用の、更新されたモデルを用いてパッケージを生成および展開するシステムを図示する。描写された実施形態では、プロバイダネットワーク１０２は、（例えば、機械学習展開サービスによる検索に利用可能なモデルとして、ストレージサービス１２４によって記憶された）１つ以上の機械学習モデル１１２をそれらが展開に利用可能になる前に、トレーニングするモデルトレーニングサービス５０２も含む。
【００５２】
いくつかの実施形態では、モデル１１２のうちの１つ以上は、他のリモートネットワーク５０６の１つ以上の他のモデルトレーニングサービス５０４によってトレーニングされ、次にネットワーク１２２を介してプロバイダネットワークに送信されてもよい。実施形態では、プロバイダネットワークは、１つ以上の他のサービス５０８を使用して、モデル１１２をトレーニングまたは生成することができる。例えば、モデルトレーニングサービス５０２は、コンピューティングサービスの１つ以上のコンピューティングインスタンスを使用して、大量のトレーニングデータを処理してモデル１１２を生成することができる。
【００５３】
描写された実施形態では、モデルトレーニングサービス５０２は、機械学習モデルの更新されたバージョンを生成し、更新されたモデル５１０をストレージサービス１２４に記憶する。上述のように、いくつかの実施形態では、機械学習展開サービス１０４自体が更新されたモデルを記憶することができる。
【００５４】
実施形態では、モデルトレーニングサービス５０２は、クライアントから、および／または１つ以上の他のトレーニングデータ（例えば、１つ以上の他のリモートネットワークから収集されたデータ）のソースから、追加のトレーニングデータを受信することに応じて、更新されたモデル５１０を生成し得る。いくつかの実施形態では、モデルトレーニングサービス５０２は、モデルの以前のバージョンを生成するために使用された以前のアルゴリズムとは異なる、更新されたモデル５１０を生成するための新しいトレーニングアルゴリズムを実施し得る。
【００５５】
機械学習展開サービス１０４は、更新されたモデル５１０（ならびに場合によっては推論アプリケーションおよび／またはフレームワーク）を検索し、少なくとも更新されたモデル５１０（ならびに場合によっては推論アプリケーションおよび／またはフレームワーク）に基づいてパッケージを生成し、かつ以前の展開に基づいてモデル５１０の以前のバージョンを有する１つ以上の被接続デバイスにパッケージを展開する。以下に記載するように、いくつかの実施形態では、機械学習展開サービス１０４は、更新されたモデル５１０を被接続デバイスに自動的にプッシュする代わりに、それが利用可能であるという通知を提供することができる。
【００５６】
いくつかの実施形態では、更新されたモデル５１０が展開に利用可能であるという、機械学習展開サービス１０４からの通知の受信に応じて、被接続デバイスは、機械学習展開サービス１０４にフィンガプリントを送信し得、フィンガプリントは、被接続デバイスの現在のソフトウェアおよび／またはハードウェア構成に基づいている。実施形態では、フィンガプリントは、以前に生成されていてもよく、または機械学習展開サービス１０４からの通知の受信に応じて生成されてもよい。実施形態では、機械学習展開サービス１０４によって使用されるものと同じアルゴリズムを使用してフィンガプリントを生成することができる。したがって、同じ構成情報の場合、被接続デバイスによって、および機械学習展開サービス１０４によって、同じフィンガプリントが生成され得る。
【００５７】
実施形態では、被接続デバイスからフィンガプリントを受信することに応じて、機械学習展開サービス１０４は、受信したフィンガプリントが、記憶されたフィンガプリントと一致するかどうかを判定することができる。そうである場合、機械学習展開サービス１０４は、被接続デバイスのソフトウェアおよび／またはハードウェア構成が変更されていないと判定することができる。このように、機械学習展開サービス１０４は、記憶された構成情報が記憶されたフィンガプリントに関連付けられていると判定する。次に、機械学習展開サービス１０４は、更新されたモデル、記憶された構成情報、および／または被接続デバイスのハードウェアプラットフォームに基づいてパッケージを生成することができる。
【００５８】
しかしながら、受信されたフィンガプリントが記憶されたフィンガプリントと一致しない場合、機械学習展開サービス１０４は、被接続デバイスのソフトウェアおよび／またはハードウェア構成が変更されたと判定することができる。次に、機械学習展開サービス１０４は、被接続デバイスの新しいソフトウェアおよび／またはハードウェア構成情報を記載する構成情報を提供するための要求を被接続デバイスに送信することができる。次に、機械学習展開サービス１０４は、更新されたモデル、新しい構成情報、および／または被接続デバイスのハードウェアプラットフォームに基づいてパッケージを生成し、パッケージを被接続デバイスに展開することができる。機械学習展開サービス１０４は、新しいフィンガプリントを生成し、被接続デバイスに関連付けられた新しいフィンガプリントおよび構成情報を記憶することもできる。
【００５９】
いくつかの実施形態では、被接続デバイスは、機械学習展開サービス１０４の代わりに、フィンガプリント比較および関連する判定を行うことができる。例えば、更新されたモデルの通知の受信に応じて、被接続デバイスは、被接続デバイスの現在の構成に基づいて新しいフィンガプリントを生成し、それを（被接続デバイスに記憶されているか、または機械学習展開サービス１０４から通知と共に受信した）以前に生成されたフィンガプリントと比較することができる。
【００６０】
フィンガプリントが一致する場合、被接続デバイスは、構成が変更されていないという指標を機械学習展開サービス１０４に送信することができる。フィンガプリントが一致しない場合、機械学習展開サービス１０４は、被接続デバイスの新しい構成情報および／または新しく生成されたフィンガプリントを機械学習展開サービス１０４に送信することができる。次に、機械学習展開サービス１０４は、更新されたモデル、新しい構成情報、および／または被接続デバイスのハードウェアプラットフォームに基づいてパッケージを生成し、パッケージを被接続デバイスに展開することができる。いくつかの実施形態では、被接続デバイスと機械学習展開サービス１０４の両方が、上記のアクションのいくつかまたは全て（例えば、情報の様々な比較、判定、および送信）を行うことができる。
【００６１】
上図で記載したように、パッケージの生成には、更新されたモデル５１０の修正が含まれ得る。例えば、更新されたモデルは、被接続デバイスのハードウェアプラットフォームおよび／または機械学習フレームワークに基づいて修正できる。いくつかの実施形態では、更新されたモデル５１０が展開されることになる異なる被接続デバイスに基づいて、複数のパッケージを生成することができる。例えば、あるパッケージには特定のハードウェアプラットフォームおよび／またはフレームワークに基づいて何らかの修正を加えた更新モデルが含まれ、別のパッケージには異なるハードウェアプラットフォームおよび／またはフレームワークに基づいて異なる修正を加えた更新モデルが含まれる場合がある。次に、１つ以上のパッケージを、１つ以上のそれぞれの被接続デバイス（例えば、被接続デバイス５１０）に展開することができる。
【００６２】
図６は、いくつかの実施形態による、被接続デバイスでの機械学習用の、更新されたモデルを伴うパッケージの生成および展開を示す流れ図である。ブロック６０２で、機械学習展開サービスは、展開されたモデルの更新されたバージョンが展開に利用可能であるという指標を受信する。
【００６３】
ブロック６０４で、機械学習展開サービスは、少なくとも更新されたモデルを検索する。実施形態では、機械学習展開サービスは、推論アプリケーションおよび／または機械学習フレームワークも検索する。上記のように、機械学習展開サービスは、１つ以上の基準に基づいて、複数のバージョンの中から推論アプリケーションおよび／または機械学習フレームワークを選択することができる。
【００６４】
ブロック６０６で、機械学習展開サービスは、少なくとも更新されたモデルに基づいて１つ以上のパッケージを生成する。上記のように、いくつかの実施形態では、更新されたモデルが展開されることになる、異なるタイプの被接続デバイスに基づいて、複数のパッケージを生成することができる。実施形態では、機械学習展開サービスは、記載されている要因のいずれかに基づいて、図３および図４に記載されているように機械学習モデルを修正することができる。
【００６５】
ブロック６０８で、機械学習展開サービスは、更新されたモデルを展開する別の被接続デバイスがあるかどうかを判定する。そうである場合、ブロック６１０で、機械学習展開サービスは、被接続デバイスに対して自動更新が有効にされているかどうかを判定する。そうである場合、ブロック６１２で、機械学習展開サービスは、被接続デバイスのハードウェアプラットフォームに基づいて、ブロック６０６で生成された１つ以上のパッケージの中から、被接続デバイスのパッケージを選択する。ブロック６１４で、機械学習展開サービスは、被接続デバイスにパッケージを展開する。次に、プロセスはブロック６０８に戻る。
【００６６】
ブロック６１０で、機械学習展開サービスが、被接続デバイスに対して自動更新が有効でないと判定した場合、ブロック６１６で、機械学習展開サービスは、更新されたモデルがターゲットデバイスへの展開に利用可能であるという通知を提供する。例えば、機械学習展開サービスは、被接続デバイス、管理デバイス、および／または１つ以上の他のコンピューティングデバイスに通知を送って、更新されたモデルが利用可能であることをクライアントに指示することができる。図５について上述したように、いくつかの実施形態では、機械学習展開サービスは、被接続デバイスからフィンガプリントを受信し、必要に応じて、被接続デバイスの更新されたモデル、新しい構成情報、および／またはハードウェアプラットフォームに基づいてパッケージを生成し、被接続デバイスにパッケージを展開する。次に、プロセスはブロック６０８に戻る。ブロック６０８で、機械学習展開サービスが、更新されたモデルの以前のバージョンを使用している被接続デバイスがもうないと判定した場合、プロセスは終了する。
【００６７】
様々なコンピュータシステムのいずれも、ＩｏＴデバイスとの機能互換性の決定およびＩｏＴデバイスへの機能の展開に関連するプロセスを実施するように構成され得る。例えば、図７は、本明細書に記載されるシステムおよび方法の少なくともいくつかを実施するのに好適なコンピュータシステムの一実施形態を示すブロック図である。様々な実施形態では、被接続デバイス１００、プロバイダネットワーク１０２のサービスを実装するコンピューティングデバイス、および／または任意の他の記載された構成要素はそれぞれ、図７に図示されたような１つ以上のコンピュータシステム７００、またはコンピュータシステム７００について記載したのと同じまたは同様の仕方で機能するコンピュータシステム７００の１つ以上の構成要素を含むことができる。
【００６８】
図示の実施形態では、コンピュータシステム７００は、入出力（Ｉ／Ｏ）インターフェース７３０を介してシステムメモリ７２０に結合された１つ以上のプロセッサ７１０を含む。コンピュータシステム７００は、Ｉ／Ｏインターフェース７３０に結合されたネットワークインターフェース７４０をさらに含む。いくつかの実施形態では、コンピュータシステム７００は、エンタープライズロジックまたはダウンロード可能なアプリケーションを実装するサーバを例示することができ、他の実施形態では、サーバは、コンピュータシステム７００よりも多い、少ない、または異なる要素を含むことができる。
【００６９】
様々な実施形態において、コンピュータシステム７００は、１つのプロセッサ７１０を含む単一プロセッサシステム、またはいくつかのプロセッサ７１０（例えば、２、４、８、または他の適切な数）を含むマルチプロセッサシステムであり得る。プロセッサ７１０は、命令を実行することができる任意の適切なプロセッサであり得る。例えば、様々な実施形態において、プロセッサ７１０は、ｘ８６、ＰｏｗｅｒＰＣ、ＳＰＡＲＣ、またはＭＩＰＳ  ＩＳＡ、または任意の他の好適なＩＳＡなどの様々な命令セットアーキテクチャ（ＩＳＡ）のいずれかを実装する組み込みプロセッサであり得る。マルチプロセッサシステムでは、プロセッサ７１０のそれぞれは、必ずしもそうとは限らないが一般的に同じＩＳＡを実装することができる。
【００７０】
システムメモリ７２０は、プロセッサ７１０によってアクセス可能な命令およびデータを記憶するように構成され得る。様々な実施形態において、システムメモリ７２０は、スタティックランダムアクセスメモリ（ＳＲＡＭ）、シンクロナスダイナミックＲＡＭ（ＳＤＲＡＭ）、不揮発性／フラッシュ型メモリ、または任意の他のタイプのメモリなどの任意の適切なメモリ技術を使用して実装され得る。図示の実施形態では、ダウンロード可能なソフトウェアまたはサービスプロバイダについて上記した方法および技法などの所望の機能を実装するプログラム命令およびデータは、システムメモリ７２０内にプログラム命令７２５として記憶されて示されている。いくつかの実施形態では、システムメモリ７２０は、本明細書に記載されるように構成され得るデータ７３５を含み得る。
【００７１】
一実施形態では、Ｉ／Ｏインターフェース７３０は、ネットワークインターフェース７４０または他の周辺インターフェースを通って含む、プロセッサ７１０、システムメモリ７２０、およびシステム内の任意の周辺デバイス間のＩ／Ｏトラフィックを調整するように構成され得る。いくつかの実施形態では、Ｉ／Ｏインターフェース７３０は、ある構成要素（例えば、システムメモリ７２０）からのデータ信号を別の構成要素（例えば、プロセッサ７１０）による使用に適したフォーマットに変換するために必要な任意のプロトコル、タイミングまたは他のデータ変換を行い得る。いくつかの実施形態では、Ｉ／Ｏインターフェース７３０は、例えば、周辺構成要素インターコネクト（ＰＣＩ）バス規格またはユニバーサルシリアルバス（ＵＳＢ）規格の変形など、様々なタイプの周辺バスを介して付設されたデバイスのサポートを含むことができる。いくつかの実施形態において、Ｉ／Ｏインターフェース７３０の機能は、例えば、ノースブリッジおよびサウスブリッジなどの２つ以上の別々の構成要素に分割され得る。また、いくつかの実施形態では、システムメモリ７２０へのインターフェースなど、Ｉ／Ｏインターフェース７３０の機能の一部または全部をプロセッサ７１０に直接組み込むことができる。
【００７２】
ネットワークインターフェース７４０は、例えば、被接続デバイス１００と他のコンピュータシステムとの間など、ネットワークに付設された他のデバイスとコンピュータシステム７００との間でデータを交換できるように構成され得る。特に、ネットワークインターフェース７４０は、コンピュータシステム７００および／または様々なＩ／Ｏデバイス７５０の間の通信を可能にするように構成され得る。Ｉ／Ｏデバイス７５０は、本明細書に記載されるように、走査デバイス、ディスプレイデバイス、入力デバイス、および／または他の通信デバイスを含み得る。ネットワークインターフェース７４０は、一般的に、１つ以上の無線ネットワーキングプロトコル（例えば、Ｗｉ−Ｆｉ／ＩＥＥＥ８０２．７、または別の無線ネットワーキング規格）をサポートすることができる。しかしながら、様々な実施形態において、ネットワークインターフェース７４０は、例えば、他のタイプのイーサネットネットワークなど、任意の好適な有線または無線の一般データネットワークを介した通信をサポートすることもできる。さらに、ネットワークインターフェース７４０は、アナログ音声ネットワークまたはデジタルファイバ通信ネットワークなどの電気通信／電話ネットワーク、ファイバチャネルＳＡＮなどのストレージエリアネットワーク、または任意の他の適切な種類のネットワークおよび／もしくはプロトコルを介した通信をサポートし得る。
【００７３】
いくつかの実施形態では、システムメモリ７２０は、上記のようにプログラム命令およびデータを記憶するように構成されたコンピュータアクセス可能な媒体の一実施形態であり得る。しかしながら、他の実施形態では、プログラム命令および／またはデータは、異なるタイプのコンピュータアクセス可能媒体上で受信、送信、または記憶されてもよい。一般的に言えば、コンピュータアクセス可能媒体は、Ｉ／Ｏインターフェース７３０を介してコンピュータシステム７００に結合された、磁気または光学媒体、例えば、ディスクまたはＤＶＤ／ＣＤ−ＲＯＭなどのコンピュータ可読ストレージ媒体またはメモリ媒体を含むことができる。コンピュータ可読ストレージ媒体はまた、システムメモリ７２０または他のタイプのメモリとしてコンピュータシステム７００のいくつかの実施形態に含まれ得る、ＲＡＭ（例えば、ＳＤＲＡＭ、ＤＤＲ  ＳＤＲＡＭ、ＲＤＲＡＭ、ＳＲＡＭなど）、ＲＯＭなどの任意の揮発性または不揮発性媒体を含み得る。さらに、コンピュータアクセス可能媒体は、ネットワークインターフェース７４０を介して実装され得るような、ネットワークおよび／または無線リンクなどの通信媒体を介して伝達される、電気信号、電磁気信号、またはデジタル信号などの伝送媒体または信号を含み得る。
【００７４】
いくつかの実施形態では、Ｉ／Ｏデバイス７５０は、比較的単純なまたは「薄い」クライアントデバイスであり得る。例えば、Ｉ／Ｏデバイス７５０は、ディスプレイ、データ入力、および通信機能を備えたダム端末として構成されてもよいが、それ以外には、計算機能はほとんどない。しかしながら、いくつかの実施形態では、Ｉ／Ｏデバイス７５０は、１つ以上のプロセッサ７１０および様々な他のデバイスを含む、コンピュータシステム７００と同様に構成されたコンピュータシステムであり得る（ただし、いくつかの実施形態では、Ｉ／Ｏデバイス７５０を実装するコンピュータシステム７００は、やや異なるデバイス、または異なるクラスのデバイスを有することもある）。
【００７５】
様々な実施形態では、Ｉ／Ｏデバイス７５０（例えば、スキャナまたはディスプレイデバイスおよび他の通信デバイス）は、様々な実施形態に従って、ハンドヘルドデバイス、人に着用または取り付けられるデバイス、および任意のモバイル機器もしくは固定機器に統合または搭載されたデバイスのうちの１つ以上を含み得るが、これらに限定されない。Ｉ／Ｏデバイス７５０はさらに、パーソナルコンピュータシステム、デスクトップコンピュータ、ラックマウントコンピュータ、ラップトップもしくはノートブックコンピュータ、ワークステーション、ネットワークコンピュータ、「ダム」端末（すなわち、統合処理能力がほとんど、またはまったくないコンピュータ端末）、携帯情報端末（ＰＤＡ）、携帯電話、または他のハンドヘルドデバイス、専有デバイス、プリンタ、またはコンピュータシステム７００との通信に好適な任意の他のデバイスのうちの１つ以上を含み得るが、これらに限定されない。一般に、Ｉ／Ｏデバイス７５０（例えば、カーソル制御デバイス、キーボード、またはディスプレイ（複数可））は、コンピューティングシステム７００の要素と通信することができる任意のデバイスであり得る。
【００７６】
本開示の実施形態はまた、以下の節を考慮して説明され得る。
節１．機械学習展開サービスを実施するためのそれぞれのプロセッサおよびメモリを備えたプロバイダネットワークの１つ以上のコンピューティングデバイスを含むシステムであって、
機械学習モデルによって生成された推論データに基づいて１つ以上のアクションを行うように構成された１つ以上の機能を含む推論アプリケーション、
推論アプリケーションで使用される機械学習フレームワークであって、機械学習モデルの少なくとも一部分を走行させるように構成された機械学習フレームワーク、
推論アプリケーションで使用される機械学習モデルであって、収集されたデータに基づいて推論データを生成するように構成されている機械学習モデル、および
推論アプリケーションを走行させるためのリモートネットワークの少なくとも１つの被接続デバイス、の指標を受信し、
少なくとも推論アプリケーション、機械学習フレームワーク、機械学習モデルに基づいてパッケージを生成し、かつ
少なくとも１つの被接続デバイスにパッケージを展開する、システム。
節２．パッケージを生成するために、１つ以上のコンピューティングデバイスが、機械学習展開サービスを実施するように構成されて、
少なくとも１つの被接続デバイスのハードウェアプラットフォームを決定し、かつ
少なくとも１つの被接続デバイスのハードウェアプラットフォームに基づいて、機械学習モデルに修正を行い、修正された機械学習モデルが、ハードウェアプラットフォームでの走行用に最適化される、節１に記載のシステム。
節３．機械学習モデルに修正を行うために、１つ以上のコンピューティングデバイスが、機械学習展開サービスを実施するようにさらに構成されて、
機械学習フレームワークに基づいて機械学習モデルに追加の修正を行い、修正された機械学習モデルが、ハードウェアプラットフォームと機械学習フレームワーク用に最適化される、節２に記載のシステム。
節４．１つ以上のコンピューティングデバイスが、機械学習展開サービスを実施するように構成されて、
機械学習モデルの更新バージョンが利用可能であるという指標を受信し、
少なくとも更新された機械学習モデル検索し、
少なくとも更新された機械学習モデルに基づいて別のパッケージを生成し、かつ
少なくとも１つの被接続デバイスに他のパッケージを展開する、節１に記載のシステム。
節５．パッケージを生成するために、１つ以上のコンピューティングデバイスが、機械学習展開サービスを実施するように構成されて、
少なくとも１つの被接続デバイスのハードウェアプラットフォームを決定し、
少なくとも１つの被接続デバイスのハードウェアプラットフォームに基づいて、異なるそれぞれのハードウェアプラットフォーム用に事前構成された機械学習フレームワークの複数のバージョンの中から１つのバージョンを選択し、機械学習フレームワークの選択したバージョンが、少なくとも１つの被接続デバイスのハードウェアプラットフォーム用に事前構成されている、節１に記載のシステム。
節６．プロバイダネットワークの１つ以上のコンピューティングデバイスによって行われることと、
機械学習モデルによって生成された推論データに基づき１つ以上のアクションを行うように構成された１つ以上の機能を含む推論アプリケーション、
機械学習モデルの少なくとも一部分を走行させるように構成された機械学習フレームワーク、
推論データを生成するように構成された機械学習モデル、および
少なくとも１つの被接続デバイス、の指標を受信することと、
少なくとも推論アプリケーション、機械学習モデル、および機械学習フレームワークに基づいてパッケージを生成することと、
少なくとも１つの被接続デバイスにパッケージを展開することと、を含む方法。
節７．パッケージを生成することが、
少なくとも１つの被接続デバイスのハードウェアプラットフォームを決定することと、
少なくとも１つの被接続デバイスのハードウェアプラットフォームに基づいて機械学習モデルに修正を行うことと、を含み、修正された機械学習モデルが、ハードウェアプラットフォームでの走行のために最適化される、節６に記載の方法。
節８．機械学習モデルに修正を行うことが、機械学習モデルのサイズを低減することを含む、節７に記載の方法。
節９．機械学習モデルの少なくとも更新バージョンに基づいて、別のパッケージを生成することと、
他のパッケージを少なくとも１つの被接続デバイスに展開することと、をさらに含む、節６に記載の方法。
節１０．他のパッケージを生成することが、
少なくとも１つの被接続デバイスのハードウェアプラットフォームに基づいて、更新された機械学習モデルに修正を行うことをさらに含み、修正により、更新された機械学習モデルのサイズを低減する、節９に記載の方法。
節１１．少なくとも１つの被接続デバイスの１つ以上のハードウェアリソースが、推論アプリケーションによってアクセス可能であるという指標を受信することと、
１つ以上のハードウェアリソースを使用するように推論アプリケーションを構成することと、をさらに含む、節６に記載の方法。
節１２．１つ以上のハードウェアリソースが、機械学習モデルによる推論データの生成を加速するように構成されたプロセッサを含む、節１１に記載の方法。
節１３．プロバイダネットワークのストレージロケーションから推論アプリケーション、機械学習モデル、または機械学習フレームワークのうちの１つ以上を検索するここと、をさらに含む、節６に記載の方法。
節１４．推論アプリケーションの指標を受信することが、
プロバイダネットワークによって記憶された複数の推論アプリケーションの中から推論アプリケーションの選択を受信することを含み、推論アプリケーションのうちの異なるものが、異なる機械学習モデルによって生成されたデータを処理するように構成されている、節６に記載の方法。
節１５．プログラム命令を記憶する非一時的なコンピュータ可読ストレージ媒体であって、命令が、プロバイダネットワークの機械学習展開サービス用の１つ以上のコンピューティングデバイスによって実行されたときに、１つ以上のコンピューティングデバイスに、
機械学習モデルによって生成された推論データに基づいて１つ以上のアクションを行うように構成された１つ以上の機能を含む推論アプリケーション、
機械学習モデルの少なくとも一部分を走行させるように構成された機械学習フレームワーク、
推論データを生成するように構成された機械学習モデル、および
少なくとも１つの被接続デバイス、の指標を受信することと、
少なくとも推論アプリケーション、機械学習フレームワーク、および機械学習モデルに基づいてパッケージを生成することと、
少なくとも１つの被接続デバイスにパッケージを展開することと、を実施させる、非一時的なコンピュータ可読ストレージ媒体。
節１６．プログラム命令が、１つ以上のコンピューティングデバイスに、
少なくとも１つの被接続デバイスのハードウェアプラットフォームを決定することと、
少なくとも１つの被接続デバイスのハードウェアプラットフォームに基づいて機械学習モデルに修正を行うことと、を実施させ、修正された機械学習モデルが、ハードウェアプラットフォームでの走行のために最適化される、節１５に記載のコンピュータ可読ストレージ媒体。
節１７．プログラム命令が、１つ以上のコンピューティングデバイスに、
機械学習モデルの少なくとも更新バージョンに基づいて、別のパッケージを生成することと、
少なくとも１つの被接続デバイスのハードウェアプラットフォームに基づいて、更新された機械学習モデルに修正を行うことと、
他のパッケージを少なくとも１つの被接続デバイスに展開することと、を実施させる、節１５に記載のコンピュータ可読ストレージ媒体。
節１８．プログラム命令が、１つ以上のコンピューティングデバイスに、
少なくとも１つの被接続デバイスの１つ以上のハードウェアリソースが、推論アプリケーションによってアクセス可能であるという指標を受信することと、
１つ以上のハードウェアリソースを使用するように推論アプリケーションを構成することと、を実施させる、節１５に記載のコンピュータ可読ストレージ媒体。
節１９．パッケージを生成するために、プログラム命令が、１つ以上のコンピューティングデバイスに、
少なくとも１つの被接続デバイスのハードウェアプラットフォームに基づいて、異なるそれぞれのハードウェアプラットフォーム用に事前構成された機械学習フレームワークの複数のバージョンの中から１つのバージョンを選択することを実施させ、機械学習フレームワークの選択したバージョンが、少なくとも１つの被接続デバイスのハードウェアプラットフォーム用に事前構成されている、節１５に記載のコンピュータ可読ストレージ媒体。
節２０．プログラム命令が、１つ以上のコンピューティングデバイスに、
機械学習モデルの更新バージョンが利用可能であるという通知を、少なくとも１つの被接続デバイスに送信することと、
被接続デバイスからフィンガプリントを受信することと、
受信したフィンガプリントが、プロバイダネットワークに記憶されているフィンガプリントと一致するかどうかを判定することであって、記憶されているフィンガプリントが、被接続デバイスの以前の構成を記載する、記憶されている構成情報に関連付けられている、判定することと、
受信したフィンガプリントが、記憶されているフィンガプリントと一致しないとの判定に応じて、被接続デバイスの現在のソフトウェアおよび／またはハードウェア構成情報を記載する構成情報を提供するための要求を被接続デバイスに送信することと、を実施させる、節１５に記載のコンピュータ可読ストレージ媒体。
【００７７】
図面に示され、本明細書に記載されるような様々な方法は、方法の例示的な実施形態を表す。これらの方法は、手動で、ソフトウェアで、ハードウェアで、またはそれらの組み合わせで実施することができる。任意の方法の順序を変更することができ、様々な要素の追加、再順序付け、結合、省略、変更などをすることができる。例えば、一実施形態では、本方法は、プロセッサに結合されたコンピュータ可読ストレージ媒体に記憶されたプログラム命令を実行する、プロセッサを含むコンピュータシステムによって実施されてもよい。プログラム命令は、本明細書に記載される機能性（例えば、被接続デバイス、プロバイダネットワークの様々なサービスまたは構成要素、データベース、デバイスおよび／または他の通信デバイスなどの機能性）を実装するように構成され得る。
【００７８】
本開示の恩恵を受ける当業者に明らかであるように、様々な修正および変更がなされ得る。そのような修正および変更を全て包含し、したがって上記の説明を限定的な意味ではなく例示的な意味で見なすことを意図している。
【００７９】
様々な実施形態は、コンピュータアクセス可能媒体上で前述の説明に従って実装された命令および／またはデータを受信、送信、または記憶することをさらに含むことができる。一般的に言えば、コンピュータアクセス可能媒体は、磁気または光媒体（例えば、ディスクまたはＤＶＤ／ＣＤ−ＲＯＭ）、ＲＡＭ（例えば、ＳＤＲＡＭ、ＤＤＲ、ＲＤＲＡＭ、ＳＲＡＭなど）、ＲＯＭなどの揮発性または不揮発性媒体などのストレージ媒体またはメモリ媒体、ならびにネットワークおよび／または無線リンクなどの通信媒体を介して伝達される、電気信号、電磁気信号、もしくはデジタル信号などの伝送媒体または信号を含むことができる。
【図１】
2021503681.tif 000003
【図２】
2021503681.tif 000004
【図３】
2021503681.tif 000005
【図４】
2021503681.tif 000006
【図５】
2021503681.tif 000007
【図６】
2021503681.tif 000008
【図７】
2021503681.tif 000009
【国際調査報告】
2021503681.tif 000010
2021503681.tif 000011