(57)【要約】  本開示は、たとえば、モバイルコンピューティングデバイスによって実行されるモバイルアプリケーションなどのコンピュータアプリケーションによって使われる機械学習済みモデルの生成、展開、および管理のための包括的サービスを提供する、アプリケーション開発プラットフォームおよび関連付けられたソフトウェア開発キット(「SDK」)を提供する。具体的には、アプリケーション開発プラットフォームおよびSDKは、アプリケーション内での完全機械学習機能性のために必要とされる、異なる機械学習サービスすべてへのアクセスを可能にする、統合された、クロスプラットフォームアプリケーションプログラミングインターフェース(「API」)を提供するか、またはそうでなければ活用し得る。そのようにして、開発者は、すべての機械学習サービス用の単一のSDKへのアクセスを有することができる。
2021521505.tif 000002
【特許請求の範囲】
【請求項１】
1つまたは複数のプロセッサと、
1つまたは複数の非一時的コンピュータ可読記録媒体と
を備えるモバイルコンピューティングデバイスであって、前記1つまたは複数の非一時的コンピュータ可読記録媒体は、
コンピュータアプリケーションと、
機械知能ソフトウェア開発キットと
をまとめて記憶し、前記機械知能ソフトウェア開発キットは、
1つまたは複数の機械学習済みモデルおよび機械学習ライブラリを記憶することと、
アプリケーションプログラミングインターフェースを使って前記コンピュータアプリケーションと通信して、前記コンピュータアプリケーションから入力データを受信することと、
前記入力データに少なくとも部分的に基づいて推論を生成するために、前記1つまたは複数の機械学習済みモデルおよび機械学習ライブラリオンデバイスを実装することと、
前記アプリケーションプログラミングインターフェースを使って前記コンピュータアプリケーションと通信して、前記コンピュータアプリケーションに前記推論を提供することと
を行うように構成される、モバイルコンピューティングデバイス。
【請求項２】
前記機械知能ソフトウェア開発キットは、前記コンピュータアプリケーションに含まれ、その一部を形成する、請求項1に記載のモバイルコンピューティングデバイス。
【請求項３】
前記1つまたは複数の機械学習済みモデルは、クラウドベースのモデルトレーニングおよび記憶システムから前記モバイルコンピューティングデバイスによって受信された1つまたは複数のカスタム機械学習済みモデルを含み、
前記1つまたは複数のカスタム機械学習済みモデルは、前記コンピュータアプリケーションに関連付けられたカスタムデータに少なくとも部分的に基づいて、前記クラウドベースのモデルトレーニングおよび記憶システムによってトレーニングされている、請求項2に記載のモバイルコンピューティングデバイス。
【請求項４】
前記機械知能ソフトウェア開発キットは、前記コンピュータアプリケーションに関連付けられたアプリケーションプロセス内で稼動する、請求項2に記載のモバイルコンピューティングデバイス。
【請求項５】
前記機械知能ソフトウェア開発キットは、
前記コンピュータアプリケーションの再インストールを要求することなく、
クラウドベースの記憶システムから、前記1つまたは複数の機械学習済みモデルのうちの少なくとも1つの、更新されたバージョンを受信することと、
前記1つまたは複数の機械学習済みモデルのうちの前記少なくとも1つの、既存のバージョンを、前記1つまたは複数の機械学習済みモデルのうちの前記少なくとも1つの、前記更新されたバージョンで置き換えることと、
前記既存のバージョンを前記更新されたバージョンで置き換えた後、前記1つまたは複数の機械学習済みモデルのうちの前記少なくとも1つの、前記更新されたバージョン、および前記機械学習ライブラリオンデバイスを実装して、追加入力データに少なくとも部分的に基づいて少なくとも1つの追加推論を生成することと
を行うようにさらに構成される、請求項2に記載のモバイルコンピューティングデバイス。
【請求項６】
前記機械知能ソフトウェア開発キットは、前記コンピュータアプリケーションのランタイムに、前記1つまたは複数の機械学習済みモデルをダウンロードするように構成される、請求項2に記載のモバイルコンピューティングデバイス。
【請求項７】
前記機械知能ソフトウェア開発キットは、前記コンピュータアプリケーションとは別個のファーストパーティサポートアプリケーションに含まれる、請求項1に記載のモバイルコンピューティングデバイス。
【請求項８】
前記機械知能ソフトウェア開発キットは、オンデバイスデータロギングおよびオンデバイスモデルトレーニングを実施するように構成される、請求項1に記載のモバイルコンピューティングデバイス。
【請求項９】
前記機械知能ソフトウェア開発キットは、前記コンピュータアプリケーションに関連付けられた、カスタマイズされたスケジューリング規則のセットに従って、前記オンデバイスモデルトレーニングを実施するように構成される、請求項8に記載のモバイルコンピューティングデバイス。
【請求項１０】
前記機械知能ソフトウェア開発キットは、前記1つまたは複数の機械学習済みモデルのオンデバイス性能監視を実施するように構成される、請求項1に記載のモバイルコンピューティングデバイス。
【請求項１１】
前記機械知能ソフトウェア開発キットは、
推論が、
前記機械知能ソフトウェア開発キットに記憶された前記1つまたは複数の機械学習済みモデルを使って発生するか、それとも
クラウドベースのコンピューティングシステムに記憶された前記1つまたは複数の機械学習済みモデルの1つまたは複数のクラウドベースのバージョンを使って発生するか
を指定する規則のセットを実装するように構成される、請求項1に記載のモバイルコンピューティングデバイス。
【請求項１２】
コンピュータアプリケーションをまとめて記憶する1つまたは複数の非一時的コンピュータ可読記録媒体であって、前記コンピュータアプリケーションは、前記コンピュータアプリケーション上に含まれ、その一部を形成する機械知能ソフトウェア開発キットを含み、前記機械知能ソフトウェア開発キットは、
アプリケーションプログラミングインターフェースを使って前記コンピュータアプリケーションと通信して、前記コンピュータアプリケーションから入力データを受信することと、
前記入力データに少なくとも部分的に基づいて推論を生成するために、1つまたは複数の機械学習済みモデルおよび機械学習ライブラリオンデバイスを実装することと、
前記アプリケーションプログラミングインターフェースを使って前記コンピュータアプリケーションと通信して、前記コンピュータアプリケーションに前記推論を提供することと
を行うように構成される、1つまたは複数の非一時的コンピュータ可読記録媒体。
【請求項１３】
前記1つまたは複数の機械学習済みモデルは、クラウドベースのモデルトレーニングおよび記憶システムからモバイルコンピューティングデバイスによって受信された1つまたは複数のカスタム機械学習済みモデルを含み、
前記1つまたは複数のカスタム機械学習済みモデルは、前記コンピュータアプリケーションに関連付けられたカスタムデータに少なくとも部分的に基づいて、前記クラウドベースのモデルトレーニングおよび記憶システムによってトレーニングされている、請求項12に記載の1つまたは複数の非一時的コンピュータ可読記録媒体。
【請求項１４】
前記1つまたは複数の機械学習済みモデルは、1つまたは複数のファーストパーティ機械学習済みモデルを含む、請求項12に記載の1つまたは複数の非一時的コンピュータ可読記録媒体。
【請求項１５】
前記機械知能ソフトウェア開発キットは、前記コンピュータアプリケーションに関連付けられたアプリケーションプロセス内で稼動する、請求項12に記載の1つまたは複数の非一時的コンピュータ可読記録媒体。
【請求項１６】
前記機械知能ソフトウェア開発キットは、
前記コンピュータアプリケーションの再インストールを要求することなく、
クラウドベースの記憶システムから、前記1つまたは複数の機械学習済みモデルのうちの少なくとも1つの、更新されたバージョンを受信することと、
前記1つまたは複数の機械学習済みモデルのうちの前記少なくとも1つの、既存のバージョンを、前記1つまたは複数の機械学習済みモデルのうちの前記少なくとも1つの、前記更新されたバージョンで置き換えることと、
前記既存のバージョンを前記更新されたバージョンで置き換えた後、前記1つまたは複数の機械学習済みモデルのうちの前記少なくとも1つの、前記更新されたバージョン、および前記機械学習ライブラリオンデバイスを実装して、追加入力データに少なくとも部分的に基づいて少なくとも1つの追加推論を生成することと
を行うようにさらに構成される、請求項12に記載の1つまたは複数の非一時的コンピュータ可読記録媒体。
【請求項１７】
前記機械知能ソフトウェア開発キットは、前記コンピュータアプリケーションのランタイムに、前記1つまたは複数の機械学習済みモデルをダウンロードするように構成される、請求項12に記載の1つまたは複数の非一時的コンピュータ可読記録媒体。
【請求項１８】
コンピュータ実装方法であって、
モバイルコンピューティングデバイスによって記憶されたコンピュータアプリケーション中に含まれる機械知能ソフトウェア開発キットによって、アプリケーションプログラミングインターフェースを介して前記コンピュータアプリケーションから入力データを受信するステップと、
前記入力データの受信に応答して、前記機械知能ソフトウェア開発キットによって、機械学習ライブラリを介して、前記モバイルコンピューティングデバイス上での1つまたは複数の機械学習済みモデルの実装を引き起こして、前記入力データに少なくとも部分的に基づいて推論を生成するステップと、
前記機械知能ソフトウェア開発キットによって、前記アプリケーションプログラミングインターフェースを介して前記推論を前記コンピュータアプリケーションに提供するステップと
を含むコンピュータ実装方法。
【請求項１９】
前記機械知能ソフトウェア開発キットによって、前記機械学習ライブラリを介して、前記モバイルコンピューティングデバイス上での、前記1つまたは複数の機械学習済みモデルの実装を引き起こすステップは、
前記機械知能ソフトウェア開発キットによって、前記機械学習ライブラリを使って前記1つまたは複数の機械学習済みモデルを実装するステップを含む、請求項18に記載のコンピュータ実装方法。
【請求項２０】
前記機械知能ソフトウェア開発キットによって、前記機械学習ライブラリを介して、前記モバイルコンピューティングデバイス上での、前記1つまたは複数の機械学習済みモデルの実装を引き起こすステップは、
ファーストパーティサポートアプリケーションが前記機械学習ライブラリを使って前記1つまたは複数の機械学習済みモデルを実装するように、前記機械知能ソフトウェア開発キットによって、前記コンピュータアプリケーションとは別個の前記ファーストパーティサポートアプリケーションへの呼出しを実施するステップを含む、請求項18に記載のコンピュータ実装方法。
【発明の詳細な説明】
【技術分野】
【０００１】
優先権主張
本出願は、参照によって全体が本明細書に組み込まれている、2018年5月7日の出願日を有する米国仮出願第62/667,959号に対する優先権およびその利益を主張する。
【０００２】
本開示は概して、コンピュータアプリケーションを開発し、管理するためのシステムに関する。より詳細には、本開示は、たとえば、モバイルコンピューティングデバイスによって実行されるモバイルアプリケーションなどのコンピュータアプリケーションによって使われる機械学習済みモデルの生成、展開、および管理のための包括的サービスを提供する、アプリケーション開発プラットフォームおよび関連付けられたソフトウェア開発キット(「SDK」)に関する。
【発明の概要】
【課題を解決するための手段】
【０００３】
本開示の実施形態の態様および利点が、以下の記述において部分的に説明され、または記述から知ることができ、または実施形態の実践を通して知ることができる。
【０００４】
本開示の1つの例示的態様は、モバイルコンピューティングデバイスを対象とする。このモバイルコンピューティングデバイスは、1つまたは複数のプロセッサと、コンピュータアプリケーション、および機械知能ソフトウェア開発キットをまとめて記憶する1つまたは複数の非一時的コンピュータ可読媒体とを含む。機械知能ソフトウェア開発キットは、1つまたは複数の機械学習済みモデルおよび機械学習ライブラリを記憶するように構成される。機械知能ソフトウェア開発キットは、アプリケーションプログラミングインターフェースを使ってコンピュータアプリケーションと通信して、コンピュータアプリケーションから入力データを受信するように構成される。機械知能ソフトウェア開発キットは、入力データに少なくとも部分的に基づいて推論を生成するために、1つまたは複数の機械学習済みモデルおよび機械学習ライブラリをオンデバイスで実装するように構成される。機械知能ソフトウェア開発キットは、アプリケーションプログラミングインターフェースを使ってコンピュータアプリケーションと通信して、コンピュータアプリケーションに推論を提供するように構成される。
【０００５】
本開示の他の態様は、様々なシステム、装置、非一時的コンピュータ可読媒体、ユーザインターフェース、および電子デバイスを対象とする。
【０００６】
本開示の様々な実施形態のこれらおよび他の特徴、態様、および利点が、以下の記述および添付の請求項を参照して、より良く理解されよう。添付の図面は、本明細書に組み込まれるとともにその一部を成し、本開示の例示的実施形態を示し、記述とともに、関連原理を説明するのに役立つ。
【背景技術】
【０００７】
コンピュータアプリケーションは概して、実行されると、コンピューティングデバイスにいくつかのタスクを実施させるコンピュータ可読命令の構造化された集合体を指す。コンピュータアプリケーションは、コンピューティングデバイスのメモリに記憶され、コンピューティングデバイスの1つまたは複数のプロセッサによって実行され得る。
【０００８】
例示的コンピュータアプリケーションは、モバイルアプリケーションおよびウェブアプリケーションを含む。モバイルアプリケーションは概して、スマートフォン、タブレット、腕時計などのような、主にモバイルコンピューティングデバイスによって実行されるように特に設計されたコンピュータアプリケーションを指す。ウェブアプリケーションは概して、ウェブサーバによって部分的に実行されるとともにインターネットを介してコンピューティングデバイス(たとえば、モバイルコンピューティングデバイス)とインターフェースするコンピュータアプリケーションを指す。たとえば、ユーザが、モバイルコンピューティングデバイスによって実行されるモバイルウェブブラウザを介して、ウェブアプリケーションとインターフェースすることができる。
【０００９】
コンピュータアプリケーション(たとえば、モバイルアプリケーションおよび/またはウェブアプリケーション)の開発者はしばしば、アプリケーションを開発するために、ソフトウェア開発キット(「SDK」)の使用に依拠する。SDKは、特定のソフトウェアパッケージ、ソフトウェアフレームワーク、ハードウェアプラットフォーム、コンピュータシステム、オペレーティングシステム、および/または他の検討事項のためのアプリケーションの作成をできるようにするソフトウェア開発ツールのセットを含み得る。
【００１０】
SDKはしばしば、アプリケーションが、アプリケーションに様々なサービスを提供する他のコンピューティングアプリケーションまたはシステムとインターフェースすることを可能にするオンデバイスライブラリの形での、1つまたは複数のアプリケーションプログラミングインターフェース(「API」)の実装を可能にし得る。さらに、機械学習における最近の進歩が、様々なアプリケーションと、より統合され、かつそれらによって共通して使われるようになると、機械学習サービスは、アプリケーション開発者が検討し、実装するべきさらに別の態様を加える。
【００１１】
ただし、モバイルアプリケーション用のツールおよびサービス(たとえば、機械学習サービス)は、高度に断片化される。たとえば、平均的には、典型的なモバイルアプリケーションが約16個の異なるSDKを使うことが、分析により示されている。このサービスの断片化性は、ランタイムにおいてコストがかかり、というのは、アプリケーション/デバイスは、多数の異なるライブラリをロードし、実行しなければならず、そうすることによって、多大な処理およびメモリリソースを費やすからである。さらに、アプリケーション開発者は、異なるドキュメント化を理解し、各SDKを別個にダウンロードし、統合し、各異なるSDKの異なる方法を呼び出し、各SDKのそれぞれのコンソール、および他のタスクを学習することが求められ、開発プロセスが大幅に複雑になる。
【００１２】
さらに、ディープニューラルネットワークおよび他の複雑な機械学習済みモデルが、今日、無数のアプリケーションにおいて使われている。ただし、それらの確度は、高い計算オーバーヘッドを招く多数のパラメータを有することに部分的に由来する。スマートデバイスなど、モバイルおよび他のリソース制約デバイス上で、これらのモデルが稼動され(かつそれらの確度利益が受けられ)れば、有益であろう。
【００１３】
これらのモデルをモバイルデバイス上で稼動することは複数の理由(たとえば、ユーザとアプリケーションとの間のより速い対話、インターネット接続性が必要ないこと、クラウドへデータが送られる必要がない、など)により重要であろうが、かなりの難題がある。具体的には、複雑なモデルはしばしば、送信するための多大なネットワーク帯域幅、記憶するためのメモリリソース、および稼動するための処理リソースを求める。したがって、いくつかのシナリオでは、複雑なモデルは、リソース制約デバイス上で稼動するには、あまりにも大きいか、またはリソース集約的であり得る。
【００１４】
当業者を対象とする、実施形態の詳細な考察が、本明細書において説明され、添付の図面への参照が行われる。
【図面の簡単な説明】
【００１５】
【図１】本開示の例示的実施形態による例示的コンピューティングシステムのブロック図である。
【図２】本開示の例示的実施形態による例示的コンピューティングシステムのスタック図である。
【図３】本開示の例示的実施形態による例示的コンソールの機能図である。
【図４】本開示の例示的実施形態による例示的コンピューティングシステムのワークフロー図である。
【図５】本開示の例示的実施形態による例示的コンピューティングシステムのワークフロー図である。
【図６】本開示の例示的実施形態による、機械学習済みモデルを生成し、展開するための例示的プロセスのフローチャート図である。
【図７】本開示の例示的実施形態による、機械学習済みモデルを生成し、展開するための例示的プロセスのワークフロー図である。
【図８】本開示の例示的実施形態による、分散のための機械学習済みモデルをアップロードするための例示的プロセスのスイムレーン図である。
【図９】本開示の例示的実施形態による、機械学習済みモデルをダウンロードするための例示的プロセスのスイムレーン図である。
【図１０】本開示の例示的実施形態による、ファットSDKを含む例示的コンピューティングシステムのブロック図である。
【図１１】本開示の例示的実施形態による、シンSDKを含む例示的コンピューティングシステムのブロック図である。
【図１２】本開示の例示的実施形態による、更新可能ファーストパーティサポートアプリケーションの一部としてモバイル視覚モデルを含む例示的コンピューティングシステムのブロック図である。
【図１３】本開示の例示的実施形態による、更新可能ファーストパーティサポートアプリケーションの一部としてモバイル視覚、テキスト、および音声モデルを含む例示的コンピューティングシステムのブロック図である。
【図１４】本開示の例示的実施形態による、ランタイムとトレーニングの両方を実施する更新可能ファーストパーティサポートアプリケーションを含む例示的コンピューティングシステムのブロック図である。
【図１５】本開示の例示的実施形態による例示的トレーニングパイプラインのためのワークフロー図である。
【図１６Ａ】本開示の例示的実施形態による例示的共同トレーニング方式のグラフ図である。
【図１６Ｂ】本開示の例示的態様による、複数の学生モデルをトレーニングするのに使われる例示的共同トレーニング方式のグラフ図である。
【図１７】本開示の例示的実施形態による例示的ユーザインターフェースを示す図である。
【図１８】本開示の例示的実施形態による例示的ユーザインターフェースを示す図である。
【発明を実施するための形態】
【００１６】
概要
概して、本開示は、たとえば、モバイルコンピューティングデバイスによって実行されるモバイルアプリケーションなどのコンピュータアプリケーションによって使われる機械学習済みモデルの生成、展開、および管理のための包括的サービスを提供する、アプリケーション開発プラットフォームおよび関連付けられたソフトウェア開発キット(「SDK」)を対象とする。具体的には、アプリケーション開発プラットフォームおよびSDKは、アプリケーション内での完全機械学習機能性のために必要とされる、異なる機械学習サービスすべてへのアクセスを可能にする、統合された、クロスプラットフォームアプリケーションプログラミングインターフェース(「API」)を提供するか、またはそうでなければ活用し得る。そのようにして、開発者は、すべての機械学習サービス用の単一のSDKへのアクセスを有することができる。したがって、開発者は、docの単一のセット、機械学習製品を入手する一般的なやり方、訪れるべき単一のコンソール、およびアプリケーションの異なる機械学習必要性すべてに役立つための単一の初期化呼出しを有することになる。
【００１７】
本開示の一態様によると、アプリケーション開発プラットフォームは、開発者が、自身のアプリケーション用のカスタムモデルを生成することを可能にし得る。一例では、開発者は、トレーニングデータへのアクセスをアップロードするか、またはそうでなければ提供することができ、次いで、アプリケーション開発プラットフォームを、自身のアプリケーションとともに使用するための機械学習済みモデルを作成し、トレーニングするのに使うことができる。別の例では、開発者は、事前トレーニング済みモデルをプラットフォームにアップロードすることができる。さらに別の例では、開発者は、プラットフォームのユーザに利用可能にされている、利用可能な事前トレーニング済みモデルのセットから、事前トレーニング済みモデルを選択することができる。開発者は、事前トレーニング済みモデルを現状のまま使ってもよく、モデルを追加トレーニングデータ上に保持してもよい。
【００１８】
さらに、モデルのトレーニングの後で、または、いくつかの実装形態では、トレーニングプロセス自体の一部として、アプリケーション開発プラットフォームは、開発者が、リソース制約デバイス(たとえば、モバイルもしくは組込みデバイス)による、またはリソース制約環境における使用のためにモデルを最適化するように、モデルを圧縮および/またはコンバートすることを可能にし得る。たとえば、モデルを圧縮することは、量子化(たとえば、スカラー量子化、ベクトル量子化/重み共有、直積量子化など)、刈り込み(たとえば、値による刈り込み、L1正則化など)、低ランク表現(たとえば、循環行列、クロネッカー構造、SVD分解など)、蒸留、ならびに/またはモバイルフォン、装着が可能なデバイス、およびモノのインターネットデバイスなどのエッジデバイス上での推論に直接使うことができるメモリおよび計算効率的(たとえば、小型および高速)機械学習済みモデルを直接学習する、本明細書にさらに記載する新規性のある学習技法を含む他の圧縮技法を実施することを含み得る。したがって、様々な圧縮ツールが、任意選択で、アクセスされ、学習またはアップロードされたモデルを圧縮するのに使われ得る。
【００１９】
より詳細には、本開示の態様は、入力モデルに基づいてコンパクトモデルが学習される学習プロセスを通して、入力モデル(たとえば、大きい事前トレーニング済みモデル)の圧縮をできるようにするエンドツーエンドの圧縮学習フレームワークを対象とする。コンパクトモデルは、サイズがより小さく、よりメモリ効率的であり、より電力効率的であり、確度の損失が最小で推論がより速い、すぐに使えるオンデバイスモデルであってよい。機械学習済みモデルを圧縮するための追加最新技法も、圧縮学習フレームワークとの組合せで使われてよい。
【００２０】
モデルをコンバートすることは、標準バージョンから、モバイルおよび組込みデバイス用に特に設計された軽量機械学習ライブラリと互換性のあるモバイル最適化バージョンへモデルをコンバートすることを含み得る。一例では、プラットフォームは、モデルの標準TensorFlowグラフをTensorFlow Liteグラフにコンバートするのに、TensorFlow Lite最適化コンバータ(「TOCO」)として知られるコンバージョンツールを使ってよく、TensorFlow Liteは、モバイルアプリケーション用に設計された軽量機械学習ライブラリである。したがって、様々なコンバージョンツールが、任意選択で、アクセスされ、学習またはアップロードされたモデルをモバイル最適化バージョンにコンバートするのに使われ得る。
【００２１】
圧縮/コンバージョンサービスは、開発者が圧縮オプションを調査し、制御することを可能にするための様々なツールおよびダッシュボードを提供することもできる。たとえば、ツールは、品質とのトレードオフを示し、パラメータ調整、および/または圧縮出力結果の細かい制御をできるようにする他の制御を可能にすることができる。たとえば、開発者は、異なるサイズおよび対応するトレードオフをもつ複数のモデルを生成するのに、圧縮サービスを使うことができる。これらの複数のモデルは、さらに以下で説明するように、モデル標的方式の一部として使うことができる。
【００２２】
本開示の別の態様によると、上述したように、本開示は、リソース制約デバイス上での推論に直接使うことができる、メモリおよび計算効率的(すなわち、小型および高速)機械学習済みモデルを学習するための、エンドツーエンドのフレームワークと、クラウドベースのソリューションと、APIとを提供する。具体的には、いくつかの実装形態では、エンドツーエンドの学習フレームワークは、本明細書に記載するアプリケーション開発プラットフォームの一部または特徴として提供され得る。したがって、アプリケーション開発プラットフォームは、より複雑な機械学習済みモデルが通常は使われる、異なる問題領域に有用なコンパクト機械学習済みモデルをトレーニングするのに、エンドツーエンドのフレームワークを利用することができる。
【００２３】
エンドツーエンドの学習フレームワークが、アプリケーション開発プラットフォームと組み合わされるか、またはその特徴として提供されると、結果は、開発者が、自身の高品質カスタムオンデバイスモデルを容易にトレーニングすることを可能にする、エンドツーエンドのクラウドパッケージ化ソリューションとなる。これは、開発者が、未加工トレーニングデータまたはそれらの事前トレーニング済みモデルチェックポイント(利用可能な場合)から始まる高度機械学習技術を使って、サイズおよび品質のために最適化されたモデルを直接学習することを可能にする。ただし、エンドツーエンドの学習フレームワークは、アプリケーション開発プラットフォームのコンテキストの外で、またはプラットフォームとは別個に使うこともできる。したがって、本開示は、アプリケーション開発プラットフォームのコンテキストにおけるエンドツーエンドのフレームワークの使用に焦点を当てるが、エンドツーエンドのフレームワークは、そのようなコンテキストにおける使用に限定されない。
【００２４】
したがって、エンドツーエンドのフレームワークは、コンパクトカスタムモデルの直接学習を可能にすることができ、これは、モデル重みをポストトレーニングで圧縮し、またはモデルフォーマットコンバージョン(たとえば、TOCO)を実施することを目指す他の技法(たとえば、量子化)とは異なる(ただし、任意選択で、補足的である)。トレーニング済みコンパクトモデルは、複雑なモデルのために高い計算能力および高いメモリを求める、異なる問題領域のための限られた計算能力および限られたメモリを伴う状況において実施し得る。したがって、トレーニング済みコンパクト機械学習済みモデルは、限られた計算能力および限られたメモリを伴う状況において、コンピューティングデバイス上で予測タスクを実施し得る。
【００２５】
エンドツーエンドのフレームワークは、様々な入力ソースから学習することと、広範な予測タスクをカバーすることと、複数の使用ケースをサポートすることと、学習可能な機械学習済みモデルおよび/またはサポートされるアーキテクチャという点で強力であることと、TensorFlow Lite統合、高速トレーニング(たとえば、分散技法の使用を通して)、内部および/または外部ユーザ(たとえば、開発者)によるアクセス、ならびにSDK用のプラットフォーム統合などのインフラストラクチャ要件と互換することと、容易に使われることとが可能である。
【００２６】
いくつかの実装形態では、コンパクト機械学習済みモデルが、メモリおよび計算効率的機械学習済みモデルなど、比較的限られた計算能力および限られたメモリのみ、または小さいサイズおよび高速計算時間をもつ任意の他の適切な機械学習済みモデルを使う機械学習済みモデルを記述する。複雑な機械学習済みモデルが、フィードフォワードニューラルネットワーク、長短期メモリ回帰型ニューラルネットワークなど、複雑なタスクを予測するための、比較的高い計算能力および比較的高いメモリを使う機械学習済みモデル、または計算コストが高い他の機械学習済みモデルを記述する。いくつかの特定のシナリオでは、複雑な機械学習済みモデルは、リソース制約コンピューティングデバイス上で効果的に稼動するのには大きすぎるか、または煩わしすぎる場合がある。
【００２７】
本開示の一態様によると、アプリケーション開発プラットフォームは、柔軟であってよく、様々な入力からの学習と、広範な予測タスクを予測するモデルの生成とを可能にし得る。つまり、プラットフォームによって提供されるエンドツーエンドのフレームワークは、開発者から様々な入力を受信することができ、そのような入力に基づいてコンパクトモデルをトレーニングし、かつ/またはそのような入力を満足するコンパクトモデルをトレーニングすることができる。
【００２８】
いくつかの実装形態では、コンパクト機械学習済みモデルをトレーニングするための入力は、コンパクト機械学習済みモデルをトレーニングするためにコンパクト機械学習済みモデルを定義する、データ、1つもしくは複数の入力機能、および/または1つもしくは複数のパラメータであってよい。入力の例は、教師あり機械学習済みコンパクトモデルについてのラベル付きデータ、コンパクトな半教師あり機械学習済みモデルについてのラベルなしデータ、事前トレーニング済み機械学習済みモデル(トレーナーモデルとして使われ得る)、所望の推論速度、および/または所望のモデルサイズを含み得る。
【００２９】
1つの例示的入力ソースが、ラベル付きデータである。たとえば、プラットフォームは、機械学習ライブラリ(たとえば、tensorflow.Example)に典型的なフォーマットで提供される未加工データから直接、コンパクトモデルをトレーニングすることができる。プラットフォームは、半教師あり設定において、ラベルなしデータと連携することもできる。別の例示的入力ソースは、事前トレーニング済みモデルである。たとえば、事前トレーニング済み機械学習済みモデルは、学習される予定であるコンパクト機械学習済みモデルよりもサイズが大きくてよい。一例では、事前トレーニング済みモデルは、クラウドベースの推論用に展開される生産モデルからのチェックポイントであり得る。
【００３０】
推論速度は、入力空間における柔軟なパラメータ(たとえば、開発者によって定義可能)であり得る。推論速度は、広範なコンピューティングデバイス(たとえば、モバイルデバイス、装着が可能なデバイス、組込みデバイスなど)上で稼動するための、コンパクト機械学習済みモデルの計算効率を記述する。推論速度は、コンパクト機械学習済みモデル用のアーキテクチャの選択をガイドするのに使われ得る。推論速度は、特定のデバイス上で利用可能な計算リソースに依存し得る。
【００３１】
モデルサイズは、入力空間における柔軟なパラメータ(たとえば、開発者によって定義可能)であり得る。モデルサイズは、トレーニングプロセスが完了した後のコンパクト機械学習済みモデルのサイズを記述する。いくつかの実装形態では、アプリケーション開発プラットフォームは、異なるサイズ(たとえば、小:<1〜2百万(M)、中:5〜10M、大:>10M)での複数のコンパクト機械学習済みモデルを共同トレーニングすることができ、トレーニング済みコンパクト機械学習済みモデルを、開発者/ユーザに対して利用可能にすることができ、そうすることによって、ユーザは、特定の使用ケース向けに、カスタムサイズのモデルを選択することができる。いくつかの実装形態では、アプリケーション開発プラットフォームは、モデル仕様をあらかじめ指定するのではなく、コンパクト機械学習済みモデルを、(たとえば、効率的アーキテクチャスケルトンのファミリー、または射影、深さ優先畳み込みなどのような効率的ソフトウェア演算(op)のセットのいずれかとの)差別化可能アーキテクチャを有するようにトレーニングすることができる。
【００３２】
いくつかの実装形態では、入力は、入力のタイプまたはクラスの指示をさらに含み得る。入力の例示的タイプは、テキスト、画像、ビデオ、マルチモーダル(画像と組み合わされたテキスト)、コンピューティングデバイス(たとえば、モデルが展開される予定のデバイス)からのセンサー信号、またはそれらの何らかの組合せを含む。
【００３３】
いくつかの実装形態では、入力は、トレーニング済みモデルによって実施される予定の予測タスクの指示をさらに含み得る。コンパクト機械学習済みモデルによって実施される(かつ、入力として提供される)例示的予測タスクは、分類(たとえば、クラスの数は、小さい(たとえば、バイナリもしくは10〜100個の)出力空間から、大きい出力空間(たとえば、10kもしくは1M個のカテゴリ)に渡り得る)、回帰、または構造化予測(たとえば、シーケンス)を含み得る。
【００３４】
本開示の別の態様によると、アプリケーション開発プラットフォームは、コンパクト機械学習済みモデルを、いくつかの事例では事前トレーニング済み機械学習済みモデルであってよいトレーナーモデルと共同トレーニングすることによって、コンパクト機械学習済みモデルの予測確度を向上することができる。事前トレーニング済み機械学習済みモデルは、アプリケーション開発プラットフォームによって、または外部システムによってあらかじめトレーニングされている機械学習済みモデルであってよい。事前トレーニング済み機械学習済みモデルは、クラウド上で展開される生産モデルからのチェックポイントなど、コンパクト機械学習済みモデルよりもサイズが大きくてよい。いくつかの実装形態では、事前トレーニング済み機械学習済みモデルは、コンパクト機械学習済みモデルよりも高い計算能力および高いメモリを必要とする複雑なモデルであり得る。
【００３５】
共同トレーニングは、コンパクト機械学習済みモデルが、トレーナーモデルから(および/またはトレーナーモデルと)学習することを可能にし、そうすることによって、コンパクト機械学習済みモデルの予測確度を向上する。したがって、共同トレーニングは、教師-学生共同トレーニングアーキテクチャに従い得る。
【００３６】
したがって、いくつかの実装形態では、アプリケーション開発プラットフォームは、コンパクト機械学習済みモデルをトレーニングするためのトレーニングパイプラインを含み、実装し得る。トレーニングパイプラインは、コンパクト機械学習済みモデルを個々にトレーニングし、かつ/またはコンパクト機械学習済みモデルをトレーナーモデル(たとえば、事前トレーニング済みモデル)と共同トレーニングすることができる。したがって、トレーナーまたは教師モデルは、固定されてよく、または学生モデルと同時最適化されてよい。
【００３７】
トレーナーまたは教師モデルは、例として、フィードフォワードニューラルネットワーク、回帰型ニューラルネットワーク(たとえば、長短期メモリネットワーク)、擬似RNN、畳み込みニューラルネットワーク、ProjectionNet(たとえば、密および疎バージョン)、BiLSTM(双方向LSTM)、深さ分離可能ConvNet、MobileNet、ProjectionCNN、NASNet、Inception(たとえば、Inception v3)、ResNet、ならびに/または他のタイプの機械学習済みモデルを含む、どのタイプのモデルであってもよい。コンパクトまたは学生モデルは、どのタイプのモデルであってもよいが、通常、重みがトレーナーモデルよりも軽い。例示的学生モデルは、フィードフォワードニューラルネットワーク、回帰型ニューラルネットワーク(たとえば、長短期メモリネットワーク)、擬似RNN、畳み込みニューラルネットワーク、ProjectionNet(たとえば、密および疎バージョン)、BiLSTM(双方向LSTM)、深さ分離可能ConvNet、MobileNet、ProjectionCNN、NASNet、Inception(たとえば、Inception v3)、ResNet、ならびに/または他のタイプの機械学習済みモデルを含む。
【００３８】
いくつかの実装形態では、トレーニングパイプラインは、ユーザから1つまたは複数の入力を受信し得る。たとえば、トレーニングパイプラインは、トレーニングデータを、トレーニング用の対応する入力機能および評価用の入力機能とともに受信し得る。トレーニングパイプラインは、コンパクト機械学習済みモデルのための1つまたは複数のトレーニングがどのように進むかを指定するためのスキーマを作成することができる。トレーニングパイプラインは、ネットワークを構築するための実験(たとえば、tf.Experiment)ベースのAPIをさらに提供し得る。トレーニングパイプラインは、トレーニングを起動することができる(たとえば、ラッパーコード中でのトレーニングの開始および/または後でのトレーニング)。
【００３９】
トレーニングパイプラインは、所望の数のステップが遂行されるまで、コンパクトモデルをトレーニングしてよい。トレーニングパイプラインは、トレーニング済みコンパクト機械学習済みモデルを特定のフォーマット(たとえば、TF-Liteフォーマット)でエクスポートし得る。いくつかの実装形態では、トレーニング済みコンパクト機械学習済みモデルは次いで、コンピューティングデバイス上で(たとえば、オンデバイスで)稼動するのに使われ得る。
【００４０】
いくつかの実装形態では、作成されたスキーマは、実験名、特徴(たとえば、フィールドの名称、特徴のタイプ、特徴の1つまたは複数の寸法など)、ハイパーパラメータ(たとえば、学習レート、ステップの数、オプティマイザ、活性化レイヤ、事前トレーニング済みモデルについての損失重み、コンパクトモデルについての損失重み、クロス損失重みなど)、コンパクトモデルを構築するための複数のフィールドを含むコンパクトモデルのモデル仕様、事前トレーニング済みモデルを構築するための複数のフィールドを含む事前トレーニング済みモデルのモデル仕様など、いくつかのフィールドを含み得る。
【００４１】
いくつかの実装形態では、トレーニングパイプラインは、進行中の開発、および/または新たな使用ケースに基づいて、フィールドを削除し、またはモデル仕様の中に追加し得る。いくつかの実装形態では、トレーニングパイプラインは、トレーニングパイプラインが期待通りに振る舞うことを確実にするために、スキーマを検証することができる。パイプラインを始める前に、スキーマ中のフィールドの各々が検証される。モデル仕様中のフィールドは、それぞれのモデルクラスの検証方法によって検証されてもよい。
【００４２】
いくつかの実装形態では、トレーニングパイプラインは、コンパクト機械学習済みモデルを事前トレーニング済み機械学習済みモデルと共同トレーニングすることができる。たとえば、トレーニングパイプラインは、事前トレーニング済み機械学習済みモデル、コンパクト機械学習済みモデル、トレーニングデータ、および/または対応する入力機能を受信し得る。トレーニングパイプラインは、トレーニングがどのように進むかを指定するためのスキーマを作成し得る。トレーニングパイプラインは、共同トレーニングを指定するための、実験ベースのAPIを提供し得る。トレーニングパイプラインは、共同トレーニングを起動することができる。
【００４３】
トレーニングパイプラインは、共同トレーニング損失関数が、コンパクト機械学習済みモデルの出力と期待される出力との間の差が閾値未満であることを示すまで、コンパクト機械学習済みモデルを事前トレーニング済み機械学習済みモデルと共同トレーニングすることができる。トレーニングパイプラインは、トレーニング済みコンパクト機械学習済みモデルを特定のフォーマットで抽出し、エクスポートすることができる。
【００４４】
いくつかの実装形態では、トレーニングパイプラインは、1つまたは複数の共通機械学習済みモデル(たとえば、フィードフォワードネットワーク、射影ネットワーク、擬似回帰型ニューラルネットワーク、畳み込みニューラルネットワーク、長短期メモリネットワークなど)を、共同トレーニングのために実装および/または記憶し得る。したがって、事前トレーニング済み機械学習済みモデルまたはカスタムコンパクトモデル仕様を入力するのではなく、ユーザは、トレーニングパイプライン中に記憶および/または実装されるモデルを選択すればよく、選択をトレーニングパイプライン中に入力すればよい。ユーザの選択に応答して、トレーニングパイプラインは、トレーニングが、選択されたモデルとともにどのように進むかを指定するためのスキーマを作成し得る。
【００４５】
いくつかの実装形態では、トレーニングパイプラインは、事前トレーニング済み機械学習済みモデルおよびコンパクト機械学習済みモデルについての様々な損失、確度、混同行列など、1つまたは複数のデバッグ用メトリックを含み得る。いくつかの実装形態では、これらの追加されるメトリックは、他のメトリック(たとえば、Tensorboard統合に伴うメトリック)とは別個である。いくつかの実装形態では、トレーニングパイプラインは、tf.Estimator APIおよび他のプラグインを使うためのラッパーの例示的実装を含み得る。いくつかの実装形態では、トレーニングパイプラインは、トレーニング済みコンパクト機械学習済みモデルをTF-Liteフォーマットにエクスポートするための、TOCOとの統合を含み得る。
【００４６】
エンドツーエンドのフレームワークにより生成されるコンパクトモデルの例示的使用は、テストアプリケーション(たとえば、MNIST、CIFAR10/CIFAR100)、スマートリプライ、手書き文字認識、wear health(たとえば、心拍予測)、wear notification(たとえば、コンテンツベースの分類)、テキスト分類/順位づけ、感情検出、要注意コンテンツ検出、ジェスチャー認識、画像分類、および/またはマルチモーダル学習(たとえば、写真リプライ)を含む。
【００４７】
本開示の別の態様によると、アプリケーション開発プラットフォームは、機械学習済みモデル管理を可能にし、実施し得る。たとえば、モデルのトレーニング、圧縮、および/またはコンバージョンの後、開発者は、プラットフォームを、モデルをクラウド記憶データベースに記憶するのに使うことができる。クラウド記憶データベースから、開発者は、プラットフォームを使って、開発者のアプリケーションがすでに記憶されているデバイスにモデルをダウンロードさせることができる。プラットフォームは、開発者が、たとえば、バージョニング、互換性、A/B試験、ダウンロード管理などを含む、他の様々な管理機能を実施することを可能にすることもできる。
【００４８】
したがって、プラットフォームは、完全な、一貫モデル生成ワークフローを提供し、実施することができ、このワークフローは、プラットフォームが、アップロードされたモデルを受信し、またはアップロードされたトレーニングデータに基づいて新規モデルを学習すること、ベンチマークでモデルを自動的に圧縮すること、モデルをモバイル最適化フォーマットにコンバートすること、ならびにオンデバイスダウンロードおよび使用のためにモデルをホストすることを含み得る。
【００４９】
本開示の別の態様によると、いくつかの実装形態では、カスタムなサードパーティモデルは、アプリケーションの一部分を形成するとともにプラットフォームAPIを使ってアプリケーションと通信する機械知能SDKに含められ得る。たとえば、機械知能SDKは、アプリケーションマーケットプレイスからダウンロードされるアプリケーションのパッケージに含めることができる。したがって、カスタムモデルは、デバイスによってダウンロードすることができ、アプリケーションに推論を提供するために、オンデバイスで稼動し得る。
【００５０】
したがって、いくつかの実装形態では、アプリケーション開発プラットフォームは、いわゆる「ファット」SDKをサポートすることができ、ここで、サービスはアプリケーションプロセス中で稼動する。このアーキテクチャは、サードパーティデータおよびモデルのためのセキュリティおよびプライバシー利益を提供し得る。代替として、以下でさらに記載するように、プラットフォームは、アプリケーションに含まれない既存オンデバイスモデルを、APIを介して公開できるようにする。
【００５１】
本開示の態様は、帯域外モデル更新も可能にし、ここで、モデルの更新バージョンは、全体としてアプリケーションの再インストールを要求することなく、デバイス上の機械知能SDKにダウンロードされ得る。他の実装形態では、モデルは、ランタイムにダウンロードされ、機械知能SDKへ挿入され得る。モデルのダウンロードを、全体としてアプリケーションのダウンロードと、またはより一般的なアプリケーション更新のダウンロードと分離すると、アプリケーションパッケージダウンロードまたはアプリケーション更新ダウンロードのサイズを低減するのを支援することができ、そうすることによって、待ち時間およびアプリケーションダウン時間が削減される。
【００５２】
別の態様によると、アプリケーション開発プラットフォームは、アプリケーションが、プラットフォームの特徴として提供されるファーストパーティモデルを活用することを可能にし得る。いくつかの実装形態では、ファーストパーティモデルは、上述したように、機械知能SDKに含めることができる。代替または追加として、ファーストパーティモデルは、開発者のアプリケーションとは別個のファーストパーティサポートアプリケーションに含めることができる。さらに他の実装形態では、ファーストおよび/またはサードパーティモデルはクラウド中で維持することができ、推論は、APIによりネットワークを介してモデルから取得することができる。
【００５３】
したがって、アプリケーション開発プラットフォームは、アプリケーションが、ファーストパーティモデル(たとえば、プラットフォームオペレータによって提供/維持される汎用モデル)とカスタムなサードパーティモデル(たとえば、特定のアプリケーション開発者に関連付けられたアプリケーション固有モデル)の両方にアクセスすること(たとえば、APIを介して推論を呼び出すこと)を可能にし得る。具体的には、これらのモデルは、モデルがオンデバイス推論を提供するように、アプリケーション内に含まれる機械知能SDK内に含められ、動的に更新され得る。たとえば、ファーストパーティモデルは、ベースAPIの使用を通してアクセスされてよく、サードパーティモデルは、カスタムAPIを介してアクセスされてよい。
【００５４】
より詳細には、本明細書で使用する限り、「ファーストパーティ」という呼称は、一般としてのプラットフォームを操作する同じエンティティによって概して生成され、維持され、かつ/または制御されるシステム構成要素(たとえば、機械学習済みモデル)を指す。したがって、アプリケーション開発プラットフォームの特徴として、エンティティは、1つまたは複数のファーストパーティモデルへのアクセスを提供することもできる。これらのファーストパーティモデルは、音声分析(たとえば、自然言語処理、音声認識など)、テキスト分析、画像分析(たとえば、オブジェクト検出、バーコード/QRコード(登録商標)読取り、光学式文字認識、および/または「モバイル視覚」としてカテゴリ化され得る他のタスク)などのような、共通して求められるタスクにおいて高品質性能を提供する汎用機械学習済みモデルであってよい。別の例示的ファーストパーティ機械学習済みモデルは、テキストの入力セットに応答して、ユーザが応答することを望み得る可能テキストリプライを予測するスマートリプライモデル(たとえば、APIを介してアクセスされる)であってよい。
【００５５】
対照的に、「サードパーティ」という呼称は、一般としてのプラットフォームを操作するエンティティ以外のエンティティによって生成されるシステム構成要素(たとえば、機械学習済みモデル)を指す。一例では、サードパーティモデルは、アプリケーション開発者によって生成および/または制御され得る。たとえば、アプリケーション開発者は、自身のカスタム機械学習済みモデルを生成し、展開するのにプラットフォームの態様を使うことができる。別の例では、サードパーティモデルは、アプリケーション開発者以外の追加エンティティによって生成および/または制御され得る。たとえば、アプリケーション開発者は、そのような追加エンティティからモデルを受信するのに、アプリケーション開発プラットフォームを使うことができる。
【００５６】
本開示の別の態様によると、機械知能SDKは、機械知能SDKに含まれるモデルをオンデバイスで稼動および/またはトレーニングするためにアプリケーションによって実装され得る専用機械学習ライブラリをさらに含み得る。いくつかの実装形態では、この機械学習ライブラリは、モバイルアプリケーション用に設計された軽量ライブラリ(たとえば、TensorFlow Lite)であってよい。代替または追加として、同じまたは異なる機械学習ライブラリのコピーも、ファーストパーティサポートアプリケーションに含まれ得る。ファーストパーティサポートアプリケーション内に含まれるモデルは、機械学習ライブラリのそのようなコピーを使って、ファーストパーティサポートアプリケーションによってオンデバイスで稼動および/またはトレーニングされ得る。
【００５７】
いくつかの実装形態では、開発者のアプリケーションおよび/またはファーストパーティアプリケーション内に含まれる機械知能SDKは、オンデバイスデータロギングを実施し得る。このオンデバイスロギングは、オンデバイス推論および/またはトレーニングをサポートし得る。オンデバイストレーニングに関して、いくつかの実装形態では、機械知能SDKは、ロギングプロセスの一部として、オンデバイスでのトレーニングデータの検証を実施し得る。たとえば、SDKは、異常を検出し、トレーニングデータにロギングされるのを排除してよい。オンデバイストレーニングは、ユーザ固有データに基づいて、モデルの個別化を可能にし得る。さらなる実装形態では、オンデバイストレーニングは、連合学習方式へのデバイスの関与を可能にし得る。
【００５８】
したがって、本開示の態様は、デバイス規模のモデルトレーニング管理(たとえばスケジューリング、記憶など)を対象とする。いくつかの実装形態では、バッチトレーニングが、スケジューリング規則に従って実施され得る。スケジューリング規則は、デフォルトであるか、かつ/または開発者指定構成に従ってカスタマイズされてよい。一例として、トレーニングは、一日に一度、夜間に、およびデバイスがアクティブに使用中でなく、アクティブに充電中であり、ネットワークに接続されているときに起こり得る。
【００５９】
ロギングは、オンデバイス性能監視も可能にし得る。たとえば、いくつかの実装形態では、機械知能SDKは、オンデバイストレーニング済みモデル品質検証(たとえば、性能監視)をさらに実施することができる。これらの品質統計は、アプリケーション開発プラットフォームによって提供されたダッシュボードを介して、開発者に中継されてよい。
【００６０】
オンデバイス推論および/またはトレーニングに対する追加または代替として、プラットフォームは、アプリケーションが、クラウドを介して推論および/またはトレーニングサービスを受信することも可能にし得る。一例では、開発者は、推論および/またはトレーニングが、オンデバイスで、それともクラウドサービスを介して起こるかを、(たとえば、デバイスおよび/またはモデルのサブセットについて)指定することを可能にされ得る。これらのオプションは両方とも、単一の機械知能SDKによってサポートすることができ、推論/トレーニングのロケーション周りで、動的に制御可能な柔軟性をもたらす。いくつかの実装形態では、異なるAPIまたはパラメータが、2つのオプションの各々をサポートするのに使われ得る。いくつかの実装形態では、開発者は、推論および/またはトレーニングがオンデバイスで、またはクラウド中でいつ起こるべきであるかを扱う規則を指定することができ、機械知能SDKは、これらの規則を実装すればよい。たとえば、規則の使用により、プラットフォームは、オンデバイスサービスとクラウドサービスとの間の遷移/平衡を(たとえば、作業負荷最適配分方式を実装するために)自動的に扱うことが可能になり得る。いくつかの実装形態では、推論および/またはトレーニングがオンデバイスで、それともクラウド中で起こるかは、デバイスユーザにとって透明であってよい。
【００６１】
動的モデルダウンロードおよび展開に加え、アプリケーション開発プラットフォームは、たとえば、バージョニング、互換性、A/B試験、ダウンロード管理、および/または他の様々な管理機能を含む、さらなる高度機械学習サービスを可能にし得る。一例として、アプリケーション開発プラットフォームは、開発者が、自動モデル標的を実施または許可することを可能にし得る。たとえば、機械学習済みモデルの異なるバージョンが、異なるタイプのデバイスに分散されてよい。一例では、より大きい、より複雑なモデルが、より高度な計算能力(たとえば、より大きいメモリサイズ、より速いプロセッサなど)をもつデバイスに分散されてよく、より小さい、より複雑でないモデルが、より高度でない計算能力をもつデバイスに分散されてよい。他の例では、異なるモデルバージョンが、デバイスのジオロケーション(たとえば、英国向けの英語モデル対フランス向けのフランス語モデル)、デバイスのユーザの特性(たとえば、有料会員対無料トライアル)、ならびに/または他のデバイスおよび/もしくはユーザ属性に依存して、異なるデバイスにダウンロードされてよい。たとえば、開発者は、モデル標的を支配するための規則を指定することができ、プラットフォームは規則を実装すればよい。したがって、プラットフォームは、モデルの最適バージョンが各異なるデバイスへ送られる(たとえば、動的にダウンロードされる)ことを可能にし得る。
【００６２】
別の例として、アプリケーション開発プラットフォームは、モデルおよびシステム健全性の評価を表示するダッシュボードの監視を提供し得る(すなわち、モデル評価サービス)。たとえば、プラットフォームは、モデル使用、性能、ダウンロード状況、および/または他の測度に対する分析を提供し得る。性能の統計は、確度、曲線下の確度、精度対再現率、混同行列、速度(たとえば、#FLOP、推論当たりのミリ秒)、ならびにモデルサイズ(たとえば、圧縮の前および後)の記述を含み得る。分析は、開発者によって、モデル再トレーニングおよび圧縮に関する決定を行うのに使うことができる。
【００６３】
プラットフォームは、開発者が、モデル互換性、記憶されたモデルの可用性、ダウンロード状況などのようなシステム状況および健全性を調査できるようにするダッシュボードも提供し得る。さらに、プラットフォームは、開発者およびデバイスが、モデル更新の後方および前方互換性を保証する(かつ、必要とされる場合は解決する)ことを可能にし得る。
【００６４】
別の例として、アプリケーション開発プラットフォームは、開発者が、A/B実験を実施することを可能にし得る。たとえば、開発者は、異なるトラフィックまたはデバイスの異なるセット用に、2つのモデルが使われることを可能にすることができる。プラットフォームは、得られたデータを収集することができ、開発者が性能統計および成果を調査することを可能にする分析を提供することができる。
【００６５】
本開示のシステムおよび方法は、いくつかの技術的効果および利益を提供する。1つの例示的な技術的効果として、アプリケーション開発プラットフォームおよび関連付けられたSDKは、モバイル最適化機械学習済みモデルのオンデバイス使用を可能にする。これらのモバイル最適化モデルは、より小さいモデルサイズ、より少ないメモリ使用、より速い計算およびより効率的な電力使用という利益を提供し、これらはすべて、競争力のあるモデル性能を伴う。さらに、容易なモバイル最適化モデル生成および展開を可能にする、本明細書に記載するプラットフォームツールなしでは、アプリケーション開発者は、クラウド中で推論を実施することを選び得る。したがって、オンデバイス使用を可能にすることによって、本開示のシステムおよび方法は、クラウド推論呼出しの必要をなくし、そうすることによって、ネットワークトラフィックを削減する。さらに、オンデバイストレーニングを可能にすることによって、本開示のシステムおよび方法は、たとえば、個別化モデルおよび/または連合学習を通して生成されたモデルを含む、向上したモデル性能につながり得る。
【００６６】
別の例示的な技術的効果および利益として、本開示のシステムおよび方法は帯域外モデル更新を可能にし、ここで、モデルの更新されたバージョンは、全体としてアプリケーションの再インストールを要求することなく、デバイス上の機械知能SDKに動的にダウンロードされ得る。モデルのダウンロードを、全体としてアプリケーションのダウンロードと、またはより一般的なアプリケーション更新のダウンロードと分離すると、アプリケーションパッケージダウンロードまたはアプリケーション更新ダウンロードのサイズを低減するのを支援することができ、そうすることによって、待ち時間およびアプリケーションダウン時間が削減される。さらに、更新されたモデルは、比較的邪魔をしないように、および比較的小さいダウンロードサイズで分散されてよい。
【００６７】
ここで図面を参照して、本開示の例示的実施形態についてさらに詳しく論じる。
【００６８】
例示的コンピューティングシステム
図1は、本開示の例示的実施形態による例示的コンピューティングシステムのブロック図を示す。例示的コンピューティングシステムは、1つまたは複数のネットワークを介して通信する、開発者コンピューティングデバイス130、アプリケーション開発コンピューティングシステム102、およびユーザコンピューティングデバイス140を含む。
【００６９】
開発者コンピューティングデバイス130は、例として、ラップトップ、スマートフォン、デスクトップ、サーバコンピューティングデバイスなどを含む、どのタイプのコンピューティングデバイスであってもよい。開発者コンピューティングデバイス130は、1つまたは複数のプロセッサおよびメモリを含み得る。開発者コンピューティングデバイス130は、アプリケーション開発者によって、アプリケーション開発コンピューティングシステム102によって実装されるアプリケーション開発プラットフォーム116と通信し、かつ/またはプラットフォーム116を制御するのに使われ得る。一例として、開発者コンピューティングデバイス130は、アプリケーション開発プラットフォーム116と通信し、かつ/またはプラットフォーム116を制御するように設計されている専用コンピュータプログラムまたはアプリケーションを含み得る。別の例として、開発者コンピューティングデバイス130は、アプリケーション開発プラットフォーム116と通信するブラウザアプリケーションを含み得る。たとえば、アプリケーション開発プラットフォーム116は、ブラウザアプリケーションを介して、開発者コンピューティングデバイス130にサービスを提供することができる。
【００７０】
アプリケーション開発コンピューティングシステム102は、1つまたは複数のプロセッサ112およびメモリ114を含み得る。1つまたは複数のプロセッサ112は、どの適切な処理デバイス(たとえば、プロセッサコア、マイクロプロセッサ、ASIC、FPGA、コントローラ、マイクロコントローラなど)であってもよく、1つのプロセッサまたは動作可能に接続されている複数のプロセッサであってよい。メモリ114は、RAM、ROM、EEPROM、EPROM、フラッシュメモリデバイス、磁気ディスクなど、およびそれらの組合せのような、1つまたは複数の非一時的コンピュータ可読記憶媒体を含み得る。メモリ114は、データ116と、ユーザコンピューティングデバイス102に動作を実施させるためにプロセッサ112によって実行される命令118とを記憶することができる。
【００７１】
いくつかの実装形態では、アプリケーション開発コンピューティングシステム102は、1つもしくは複数のサーバコンピューティングデバイスを含むか、またはそうでなければそれらのデバイスによって実装される。アプリケーション開発コンピューティングシステム102が複数のサーバコンピューティングデバイスを含む事例では、そのようなサーバコンピューティングデバイスは、逐次コンピューティングアーキテクチャ、並列コンピューティングアーキテクチャ、またはそれらの何らかの組合せに従って動作し得る。
【００７２】
アプリケーション開発コンピューティングシステム102は、アプリケーション開発プラットフォーム116を提供する。アプリケーション開発プラットフォーム116は、機械学習済みモデルの生成、展開、および管理のための包括的サービスを提供することができる。アプリケーション開発プラットフォームは、コンソールマネージャ118、モデルマネージャ120、および機械学習マネージャ122を含み得る。
【００７３】
コンソールマネージャ118は、たとえば、コンソールインターフェースを提示し、コンソールインターフェースを修正し、コンソールインターフェースに向けられたユーザ入力を受信するようなタスクなどを含む、開発者コンピューティングデバイス130におけるコンソールの提示を制御および/または管理することができる。いくつかの実装形態では、コンソールマネージャ118は、開発者コンピューティングデバイス130において記憶されたアプリケーションに含まれてよく、または開発者コンピューティングデバイス130とアプリケーション開発コンピューティングシステム102の両方におけるいくつかの部分を含み得る。
【００７４】
モデルマネージャ120は、例として、モデル圧縮サービス、モデルコンバージョンサービス、モデル評価サービス、モデルホスティング/ダウンロード管理サービス、ならびに/または、たとえば、バージョニング、互換性、および/もしくはA/B試験サービスを含む、他のモデル管理サービスを含む、様々なモデル管理サービスを提供し得る。
【００７５】
機械学習マネージャ122は、たとえば、モデルトレーニングサービスおよび/またはトレーニングデータ管理サービスなど、いくつかの機械学習サービスを提供し得る。機械学習マネージャ122は、モデルをトレーニングするための機械学習ライブラリを含み、使うことができる。例示的機械学習ライブラリは、TensorFlowおよびTensorFlow Liteライブラリを含む。
【００７６】
コンソールマネージャ118、モデルマネージャ120、および機械学習マネージャ122の各々は、所望の機能性を提供するのに使用されるコンピュータ論理を含む。コンソールマネージャ118、モデルマネージャ120、および機械学習マネージャ122の各々は、汎用プロセッサを制御する、ハードウェア、ファームウェア、および/またはソフトウェアで実装され得る。たとえば、いくつかの実装形態では、コンソールマネージャ118、モデルマネージャ120、および機械学習マネージャ122の各々は、記憶デバイス上に記憶され、メモリ中にロードされ、1つまたは複数のプロセッサによって実行されるプログラムファイルを含む。他の実装形態では、コンソールマネージャ118、モデルマネージャ120、および機械学習マネージャ122の各々は、RAMハードディスクまたは光学もしくは磁気媒体などの有形コンピュータ可読記憶媒体に記憶されるコンピュータ実行可能命令の1つまたは複数のセットを含む。
【００７７】
アプリケーション開発プラットフォーム116は、たとえば、クラウド記憶データベース124および/またはアプリケーションデータデータベース126を含む、1つまたは複数のデータベースに通信可能に結合され得る。アプリケーションデータデータベース126は、地球規模分散リレーショナルおよび/または非リレーショナルデータベースであってよい。データベース124および126は、1つのデータベースであってよく、または複数の分散型データベースであってよい。
【００７８】
アプリケーション開発プラットフォーム116は、1つまたは複数のユーザコンピューティングデバイス140と通信することもできる。各ユーザコンピューティングデバイス140は、デスクトップコンピューティングデバイス、サーバコンピューティングデバイス、モバイルコンピューティングデバイス(たとえば、スマートフォン、ラップトップ、タブレット、装着が可能なデバイスなど)、組込みデバイス、スマートデバイス、モノのインターネットデバイス、ゲーム機、車両中のコンピューティングデバイス、および/またはどの他の形のコンピューティングデバイスを含む、どのタイプのコンピューティングデバイスであってもよい。各ユーザコンピューティングデバイス140は、1つまたは複数のプロセッサ(たとえば、112において記述する)およびメモリ(たとえば、114において記述する)を含み得る。
【００７９】
いくつかの実装形態では、ユーザコンピューティングデバイス140は、アプリケーション142を含み得る。たとえば、アプリケーション142は、開発者コンピューティングデバイスに関連付けられた開発者によって(たとえば、アプリケーション開発プラットフォーム116の使用を通して)開発されている。アプリケーション142は、アプリケーション開発プラットフォームに関連付けられた機械知能SDK144を含み得る。機械知能SDK144は、アプリケーション142がアプリケーション開発プラットフォーム116および/または他のシステム構成要素と(たとえば、1つまたは複数のプラットフォームAPIの使用により)インターフェースすることを可能にするコンピュータ可読命令を含み得る。
【００８０】
本開示の態様によると、いくつかの実装形態では、機械知能SDK144は、1つまたは複数の機械学習済みモデル146および機械学習ライブラリ148を含み得る。たとえば、モデル146は、(たとえば、モデルマネージャ120から受信された命令に従って)クラウドストレージ124から(たとえば、動的に、および帯域外で)ダウンロードされている。機械知能SDK144は、機械学習済みモデル146を稼動するのに機械学習ライブラリ148を使って、ユーザコンピューティングデバイス140上のアプリケーション142についての推論を生成することができる。
【００８１】
いくつかの実装形態では、ユーザコンピューティングデバイス140は、ファーストパーティサポートアプリケーション152も含み得る。ファーストパーティサポートアプリケーション152は、スタンドアロンアプリケーションであってよく、またはユーザコンピューティングデバイス140のオペレーティングシステムの一部分として提供されてよい。
【００８２】
ファーストパーティサポートアプリケーション152は、アプリケーション開発プラットフォームに関連付けられた機械知能SDK154も含み得る。機械知能SDK144は、アプリケーション152が、アプリケーション142(たとえば、機械知能SDK144)、アプリケーション開発プラットフォーム116および/または他のシステム構成要素と(たとえば、1つまたは複数のプラットフォームAPIの使用により)インターフェースすることを可能にするコンピュータ可読命令を含み得る。
【００８３】
本開示の態様によると、いくつかの実装形態では、機械知能SDK154は、1つまたは複数の機械学習済みモデル156および機械学習ライブラリ158を含み得る。たとえば、モデル158は、(たとえば、モデルマネージャ120から受信された命令に従って)クラウドストレージ124から(たとえば、動的に、および帯域外で)ダウンロードされている。機械知能SDK154は、機械学習済みモデル156を稼動するのに機械学習ライブラリ158を使って、ユーザコンピューティングデバイス140上のアプリケーション142についての推論を生成することができる。
【００８４】
図2は、本開示の例示的実施形態による例示的コンピューティングシステムのスタック図を示す。具体的には、図2は、モデルマネージャ120、機械学習マネージャ122、クラウド記憶データベース124、およびアプリケーションデータデータベース126と、1つまたは複数のプラットフォームAPIを介して通信/対話するコンソールインターフェースを示す。
【００８５】
示されるように、モデルマネージャ120は、モデル圧縮サービス、モデルコンバージョンサービス、モデル評価サービスおよびモデルホスティングサービスを提供し得る。モデル圧縮サービスおよび/またはモデルコンバージョンサービスは、開発者が、モバイルデバイスによる、またはモバイル環境における使用のためにモデルを最適化するようにモデルを圧縮および/またはコンバートすることを可能にし得る。たとえば、モデルを圧縮することは、量子化(たとえば、スカラー量子化、ベクトル量子化/重み共有、直積量子化など)、刈り込み(たとえば、値による刈り込み、L1正則化など)、低ランク表現(たとえば、循環行列、クロネッカー構造、SVD分解など)、蒸留、および/または他の圧縮技法を実施することを含み得る。
【００８６】
刈り込みは、たとえば、低配点重みを含む、予測にとって最も有用でない重みまたは動作を、モデルから取り除くことによって、モデルサイズを削減する。これは、特に、疎入力を伴うオンデバイスモデルにとって非常に効果的であり得る。たとえば、いくつかのオンデバイス会話モデルは、元の予測品質の97%を保持しながら、わずか25%低いトリガリングレートで最大2倍のサイズ削減を達成するように、さらに刈り込まれ得る。
【００８７】
量子化技法は、モデル重みおよび活性化に使われるビットの数を削減することによって、推論速度を向上し得る。たとえば、浮動ではなく8ビットの固定点表現を使うことにより、モデル推論を高速化し、電力を削減し、サイズを4倍削減することができる。
【００８８】
したがって、様々な圧縮ツールが、任意選択で、アクセスされ、学習またはアップロードされたモデルを圧縮するのに使われ得る。
【００８９】
モデルをコンバートすることは、標準バージョンから、モバイルおよび組込みデバイス用に特に設計された軽量機械学習ライブラリと互換性のあるモバイル最適化バージョンへモデルをコンバートすることを含み得る。一例では、プラットフォームは、モデルの標準TensorFlowグラフをTensorFlow Liteグラフにコンバートするのに、TensorFlow Lite最適化コンバータ(「TOCO」)として知られるコンバージョンツールを使ってよく、TensorFlow Liteは、モバイルアプリケーション用に設計された軽量機械学習ライブラリである。したがって、様々なコンバージョンツールが、任意選択で、アクセスされ、学習またはアップロードされたモデルをモバイル最適化バージョンにコンバートするのに使われ得る。
【００９０】
モデル評価サービスは、モデル使用、性能(たとえば、確度、速度、およびモデルサイズ)、ダウンロード状況、ならびに/または他の測度に対する分析を提供し得る。分析は、開発者によって、モデル再トレーニングおよび圧縮に関する決定を行うのに使うことができる。モデル評価サービスは、開発者が、モデル互換性、記憶されたモデルの可用性、ダウンロード状況などのようなシステム状況および健全性を調査できるようにするダッシュボードも提供し得る。さらに、モデル評価サービスは、開発者およびデバイスが、モデル更新の後方および前方互換性を保証する(かつ、必要とされる場合は解決する)ことを可能にし得る。
【００９１】
別の例として、モデル評価サービスは、開発者が、A/B実験を実施することを可能にし得る。たとえば、開発者は、異なるトラフィックまたはデバイスの異なるセット用に、2つのモデルが使われることを可能にすることができる。プラットフォームは、得られたデータを収集することができ、開発者が性能統計および成果を調査することを可能にする分析を提供することができる。
【００９２】
モデルホスティングサービスは、モデルがデバイス(たとえば、開発者のアプリケーションが記憶されているデバイス)にダウンロードされることを可能にし得る。モデルホスティングサービスは、開発者が、たとえば、バージョニング、互換性、ダウンロード管理、モデル標的などを含む、他の様々な管理機能を実施することも可能にし得る。
【００９３】
機械学習マネージャ122は、トレーニングデータ管理サービスを提供し得る。このサービスは、包括的サービスがデータ増補、データ視覚化、データラベルクラウドソーシングなどを含むトレーニングデータフローを含み得る。トレーニングデータ増補は、データ循環、摂動、補足(たとえば、画像探索による)などを含み得る。
【００９４】
機械学習マネージャ122は、モデルトレーニングサービスを提供し得る。モデルトレーニングサービスは、モデルのトレーニングおよび/または再トレーニングを実施することができる。たとえば、標準トレーニング技法が、トレーニングデータに基づいてモデルをトレーニングするのに使われ得る。
【００９５】
いくつかの実装形態では、モデルトレーニングサービスは、計算またはメモリ効率的モデルの学習をもたらす、本開示によって提供されるトレーニング技法を実施し得る。具体的には、いくつかの実装形態では、モデルトレーニングサービスは、コンパクト機械学習済みモデルの直接学習を可能にする、新規性のあるトレーニング方式を実施し得る。たとえば、モデルトレーニングサービスは、コンパクト機械学習済みモデルを、コンパクト機械学習済みモデルが、より複雑な機械学習済みモデルから学習し、近似することを可能にする教師-学生トレーニング構造の、より大きい、より複雑なモデルと共同トレーニングすることができる。
【００９６】
コンパクトモデルの直接学習を可能にする、本明細書に記載する方式を利用するいくつかの実装形態では、トレーニング中に量子化が適用され得る。つまり、モデル(たとえば、ネットワーク)は、逆伝搬により計算された勾配を使って、量子化空間中で重みおよび活性化を最適化することを学習する。これは、この方法をトレーニング後に適用する(たとえば、推論のためだけに事前トレーニング済み重みを量子化する)よりも効果的であり得る。
【００９７】
本開示によって提供される共同トレーニングおよび蒸留手法のうちのいくつかは、教師-学生セットアップに従い、ここで、トレーナーモデルの知識は、確度の損失を最小にして、等価なコンパクト学生モデルを学習するのに使用される。トレーニング中、教師またはトレーナーモデルパラメータは、(たとえば、蒸留でのように)固定されたままにされ、または両方のモデルを一斉に向上するように、同時最適化され得る。
【００９８】
いくつかの実装形態では、トレーナーモデルは、異なるサイズの複数の学生モデルと共同トレーニングされてもよい。したがって、単一の圧縮されたモデルを提供するのではなく、機械学習マネージャ122は、異なるサイズおよび推論速度で、複数のオンデバイスモデルを生成すればよく、開発者は、自身のアプリケーション必要性に最もふさわしい(たとえば、サイズと性能との間の最も適切なトレードオフを提供する)モデルを選択すればよい。さらに、複数のコンパクトモデルを共有パラメータと共同トレーニングするのは通常、単一の大きいモデルをトレーニングするよりもわずかな時間しか余計にかからないが、より複雑なモデルに相対して、サイズがより小さく、より速く、より低いコストを有する複数の圧縮された/コンパクトモデルを、一度の試みでもたらし、依然として、良好な予測確度をもたらす。これらの技法は、学習/圧縮プロセスをより効率的にし、大規模データセットまでスケーリング可能にするために、転移学習のような他の技法と組み合わせることができる。
【００９９】
より一般的には、機械学習マネージャ122は、コンパクト機械学習済みモデルをトレーニングするためのトレーニングパイプラインを含み、実装し得る。トレーニングパイプラインは、コンパクト機械学習済みモデルを個々にトレーニングし、かつ/またはコンパクト機械学習済みモデルを事前トレーニング済み機械学習済みモデルと共同トレーニングすることができる。
【０１００】
いくつかの実装形態では、トレーニングパイプラインは、ユーザから1つまたは複数の入力を受信し得る。たとえば、トレーニングパイプラインは、トレーニングデータを、トレーニング用の対応する入力機能および評価用の入力機能とともに受信し得る。トレーニングパイプラインは、コンパクト機械学習済みモデルのための1つまたは複数のトレーニングがどのように進むかを指定するためのスキーマを作成することができる。トレーニングパイプラインは、ネットワークを構築するための実験(たとえば、tf.Experiment)ベースのAPIをさらに提供し得る。トレーニングパイプラインは、トレーニングを起動することができる(たとえば、ラッパーコード中でのトレーニングの開始および/または後でのトレーニング)。
【０１０１】
トレーニングパイプラインは、所望の数のステップが遂行されるまで、コンパクトモデルをトレーニングしてよい。トレーニングパイプラインは、トレーニング済みコンパクト機械学習済みモデルを特定のフォーマット(たとえば、TF-Liteフォーマット)でエクスポートし得る。いくつかの実装形態では、トレーニング済みコンパクト機械学習済みモデルは次いで、コンピューティングデバイス上で(たとえば、オンデバイスで)稼動するのに使われ得る。
【０１０２】
いくつかの実装形態では、作成されたスキーマは、実験名、特徴(たとえば、フィールドの名称、特徴のタイプ、特徴の1つまたは複数の寸法など)、ハイパーパラメータ(たとえば、学習レート、ステップの数、オプティマイザ、活性化レイヤ、事前トレーニング済みモデルについての損失重み、コンパクトモデルについての損失重み、クロス損失重みなど)、コンパクトモデルを構築するための複数のフィールドを含むコンパクトモデルのモデル仕様など、いくつかのフィールドを含み得る。
【０１０３】
いくつかの実装形態では、モデル仕様は、以下の例示的情報のうちの一部または全部を含み得る。
【０１０４】
id:このモデルインスタンス用の一意の識別子。
【０１０５】
model_type:(たとえば、「feed_forward」、「projection」)。
【０１０６】
params:モデルタイプに固有のパラメータの汎用辞書。たとえば、projection_sizeは、フィードフォワードネット用ではなく、射影ネット用の関連パラメータとなる。
【０１０７】
load_checkpoint:このパラメータがセットされている場合、モデルは、このパラメータの値であるパスからロードされることになる。
【０１０８】
freeze_model_from_checkpoint:このパラメータは、load_checkpointがセットされている場合にのみ、真にセットされるべきである。このパラメータの値が真である場合、勾配は、このモデルを通しては逆伝搬されない。このパラメータは、pod_model_spec用には真にセットされるべきでない(というのは、PoDモデルを凍結し、トレーナーモデルをトレーニングすることは意味をなさないからである)。
【０１０９】
tflite_output_path:このパラメータがセットされている場合、パイプラインは、このモデルをTFLiteモデルとして(モデル中のopすべてがTFLiteによってサポートされると仮定する)所与のパスに出力する。
【０１１０】
pod_model_specとtrainer_model_specの両方が定義されている場合、共同トレーニングは進むことになる。pod_model_specのみが指定されている場合、パイプラインは、個々のモデルをトレーニングすることになる。trainer_model_specのみを指定することは、エラーとなる。
【０１１１】
いくつかの実装形態では、トレーニングパイプラインは、進行中の開発、および/または新たな使用ケースに基づいて、フィールドを削除し、またはモデル仕様の中に追加し得る。いくつかの実装形態では、トレーニングパイプラインは、トレーニングパイプラインが期待通りに振る舞うことを確実にするために、スキーマを検証することができる。パイプラインを始める前に、スキーマ中のフィールドの各々が検証され得る。モデル仕様中のフィールドは、それぞれのモデルクラスの検証方法によって検証されてもよい。
【０１１２】
いくつかの実装形態では、トレーニングパイプラインは、1つまたは複数の共通機械学習済みモデル(たとえば、フィードフォワードネットワーク、射影ネットワーク、擬似回帰型ニューラルネットワーク、畳み込みニューラルネットワーク、長短期メモリネットワークなど)を、共同トレーニングのために実装および/または記憶し得る。したがって、事前トレーニング済み機械学習済みモデルまたはカスタムコンパクトモデル仕様を入力するのではなく、ユーザは、トレーニングパイプライン中に記憶および/または実装されるモデルを選択すればよく、選択をトレーニングパイプライン中に入力すればよい。ユーザの選択に応答して、トレーニングパイプラインは、トレーニングが、選択されたモデルとともにどのように進むかを指定するためのスキーマを作成し得る。
【０１１３】
いくつかの実装形態では、トレーニングパイプラインは、事前トレーニング済み機械学習済みモデルおよびコンパクト機械学習済みモデルについての様々な損失、確度、混同行列など、1つまたは複数のデバッグ用メトリックを含み得る。いくつかの実装形態では、これらの追加されるメトリックは、他のメトリック(たとえば、Tensorboard統合に伴うメトリック)とは別個である。いくつかの実装形態では、トレーニングパイプラインは、tf.Estimator APIおよび他のプラグインを使うためのラッパーの例示的実装を含み得る。いくつかの実装形態では、トレーニングパイプラインは、トレーニング済みコンパクト機械学習済みモデルをTF-Liteフォーマットにエクスポートするための、TOCOとの統合を含み得る。
【０１１４】
一例として、図15は、本開示の例示的実施形態による例示的トレーニングパイプラインのためのワークフロー図を示す。トレーニングパイプラインは、モデル(たとえば、コンパクトモデルと事前トレーニング済みモデル)の間の共有フィールド用のDeepPodSpecを検証する。いくつかの実装形態では、トレーニングパイプラインは、対応するモデルのモデル仕様を検証するための検証方法(たとえば、それぞれのモデルタイプの検証方法)を起動することができ、トレーニングパイプラインは、この検証が成功しない場合はエラーを出せばよい。
【０１１５】
トレーニングパイプラインは、tf.Estimatorオブジェクトによって使われるべきmodel_fnを作成することができ、これは、1)モデルがブックキーピングおよびサニティチェックを実施するように、それぞれのモデルクラスを各モデル用にインスタンス化すること、2)各モデルのforward_pass方法(たとえば、create_graph)を起動すること、3)各モデルおよび対応する仕様からの予測ごとに損失関数およびトレーニング動作を構築し、調整し直すことを行う。トレーニングパイプラインは、model_fnからの出力および/または仕様における入力に関連した他のフラグに基づいて、tf.Estimatorを構築する。
【０１１６】
トレーニングパイプラインは、各モデル用にpersistを呼び出すためのフックで、tf.Experimentオブジェクトを構築する。トレーニングパイプラインは、tf.Experimentオブジェクトを戻す。
【０１１７】
トレーニングパイプラインは、トレーナーGraphDefを推論GraphDefにさらにコンバートし得る。トレーニングパイプラインは、PoDモデルを(共同でトレーニングされる場合)、推論用の別個のネットワークへ抽出することができる。トレーニングパイプラインは、凍結推論グラフをTF-Liteフォーマットにコンバートし得る。
【０１１８】
図16Aは、本開示の例示的実施形態による例示的共同トレーニング方式のグラフ図を示す。図16Aにおいて、射影ネットワークが、はるかに多くのパラメータと、したがってより予測できる容量とを有するトレーナーネットワークによって行われる予測を模倣することを学習するためのトレーナーネットワーク(たとえば、フィードフォワードネットワーク、擬似回帰型ニューラルネットワーク、畳み込みニューラルネットワーク、長短期メモリネットワークなど)と共同トレーニングされる。射影ネットワークは、学生モデルとしてコンパクトに学習され得る1つの例示的タイプのモデルとして提供される。他のタイプのコンパクトモデルが、例として、フィードフォワードニューラルネットワーク、回帰型ニューラルネットワーク(たとえば、長短期メモリネットワーク)、擬似RNN、畳み込みニューラルネットワーク、ProjectionNet(たとえば、密および疎バージョン)、BiLSTM(双方向LSTM)、深さ分離可能ConvNet、MobileNet、ProjectionCNN、NASNet、Inception(たとえば、Inception v3)、ResNet、および/または他のタイプの機械学習済みモデルを含む、示されるトレーニング方式に従って共同で学習され得る。
【０１１９】
共同トレーニング方式の1つの中心的態様は、2つの異なるモデル、すなわち、より単純な学生モデルと組み合わされた完全トレーナーモデル(たとえば、フィードフォワードNNまたはLSTM RNNのような既存アーキテクチャを使う)を共同トレーニングする、新規性のある目的である。たとえば、学生モデルは、入力または中間表現をビットに変換するのに、ランダム射影を活用する射影ネットワークであってよい。したがって、いくつかの実装形態では、より単純なモデルは、メモリフットプリントが低いビット空間中で、軽量であり計算効率的な演算を符号化することができる。
【０１２０】
いくつかの実装形態では、2つのモデルは、逆伝搬を使って共同でトレーニングされてよく、ここで、学生ネットワークは、見習い学習と同様の教師ネットワークから学習する。トレーニングされると、より小さいネットワークは、低いメモリおよび計算コストでの推論に直接使われ得る。
【０１２１】
学生モデルは任意選択で、逆伝搬を使ってエンドツーエンドでトレーニングされる同時最適化セットアップで軽量モデル(たとえば、射影されたモデル)を教えるのに、フィードフォワードまたは再帰的ニューラルネットワークのような、どの既存ディープネットワークも活用することができる。いくつかの実装形態では、局所性鋭敏型ハッシュに基づく射影が、推論中に計算するのに極度に効率的である演算を符号化する軽量ネットワークのための隠れユニットを表すのに使われ得る。
【０１２２】
フレームワークは、効率的分散トレーニングを許可するが、低計算コストで、デバイス上で稼動し得る、メモリフットプリントが低いニューラルネットワークモデルを生成するように最適化されてよい。
【０１２３】
モデルサイズは、パラメータ化され、タスクまたはデバイス容量に基づいて構成可能であってよい。フレームワークは、モデルサイズの多大な削減を達成する際に効果的であると同時に、複数の視覚および言語分類タスクに対する競争力のある性能をもたらす。
【０１２４】
図16Aは、射影ネットワークをトレーニングするために適用されるフレームワークを示し、そのフレームワークを参照して論じられる。ただし、射影ネットワーク以外の他のモデルタイプが学生モデルとして使われてもよい。
【０１２５】
いくつかの実装形態では、トレーナーネットワークは、
【０１２６】
【数１】
2021521505.tif 000003
【０１２７】
を、予測結果yiを予測するための入力特徴ベクトルとして使う。射影ネットワークは、射影関数
【０１２８】
【数２】
2021521505.tif 000004
【０１２９】
を、入力特徴ベクトル
【０１３０】
【数３】
2021521505.tif 000005
【０１３１】
を射影済み特徴ベクトル
【０１３２】
【数４】
2021521505.tif 000006
【０１３３】
に変換するのに使う。射影ネットワークは、射影済み特徴ベクトルを、予測結果
【０１３４】
【数５】
2021521505.tif 000007
【０１３５】
を予測するのに使う。
【０１３６】
共同トレーニング中、トレーナーネットワークの損失関数Lθ(.)と射影損失関数LP(.)の組合せは、射影ネットワークがトレーニング済みネットワークを模倣し、そこから学習し得るように最適化され得る。図16に示すように、ラベル付き損失
【０１３７】
【数６】
2021521505.tif 000008
【０１３８】
もトレーニングに使われる。ラベル付き損失
【０１３９】
【数７】
2021521505.tif 000009
【０１４０】
は、予測結果
【０１４１】
【数８】
2021521505.tif 000010
【０１４２】
とグランドトゥルース
【０１４３】
【数９】
2021521505.tif 000011
【０１４４】
との間の比較に基づき得る。
【０１４５】
学習が完了されると、変換関数P(.)および対応する、射影ネットワークからのトレーニング済みの重みWp、Bpが、デバイスにプッシュされ得るコンパクトモデルを作成するために抽出される。推論時、コンパクトモデルおよび対応する演算は次いで、所与の入力
【０１４６】
【数１０】
2021521505.tif 000012
【０１４７】
に適用されて、予測
【０１４８】
【数１１】
2021521505.tif 000013
【０１４９】
を生成し得る。
【０１５０】
より詳細には、ニューラルネットワークは、入力
【０１５１】
【数１２】
2021521505.tif 000014
【０１５２】
から出力yiへのマッピングを学習する非線形モデルのクラスであり、ここで、
【０１５３】
【数１３】
2021521505.tif 000015
【０１５４】
は、(再帰的ニューラルネットワークのケースでは)入力特徴ベクトルまたはシーケンスを表し、yiは、分類タスク、予測されるシーケンス、回帰値などのための出力カテゴリである。通常、これらのネットワークは、レイヤのペアの間の接続をもつ、隠れユニットまたはニューロンの複数のレイヤからなる。たとえば、完全接続されたフィードフォワードニューラルネットワークでは、トレーニングされる、重み付き接続またはネットワークパラメータの数はO(n2)であり、ここで、nは、レイヤごとの隠れユニットの数である。他のモデルが、同様に入力を受信し、出力を生成し得る。
【０１５５】
本開示は、コンパクトオンデバイスモデルを推論用にトレーニングするための新たな目的および同時最適化フレームワークを提供する。図16Aは、トレーナーネットワーク用のフィードフォワードNNを使うニューラル射影ネットワークアーキテクチャを示す。結合されたネットワークは、組み合わされた損失関数
【０１５６】
【数１４】
2021521505.tif 000016
【０１５７】
を最適化するように共同トレーニングされ、ここで、Lθ(.)、Lp(.)および
【０１５８】
【数１５】
2021521505.tif 000017
【０１５９】
は、以下で定義される2つのモデルに対応する損失関数である。
【０１６０】
【数１６】
2021521505.tif 000018
【０１６１】
Nは、データセット中のトレーニングインスタンスの数を示し、
【０１６２】
【数１７】
2021521505.tif 000019
【０１６３】
は、フィードフォワードネットワーク中の入力特徴ベクトルまたはRNN中のシーケンス入力を表し、
【０１６４】
【数１８】
2021521505.tif 000020
【０１６５】
は、ネットワークトレーニングに使われるグランドトゥルース出力クラスを指す。
【０１６６】
【数１９】
2021521505.tif 000021
【０１６７】
は、
【０１６８】
【数２０】
2021521505.tif 000022
【０１６９】
を出力予測yiに変換する、トレーナーネットワーク中の隠れユニットのパラメータ化表現を表す。同様に、
【０１７０】
【数２１】
2021521505.tif 000023
【０１７１】
は、入力を、対応する予測
【０１７２】
【数２２】
2021521505.tif 000024
【０１７３】
に変換する射影ネットワークパラメータを表す。Softmax活性化が、両方のネットワークの最終レイヤにおいて適用されて、予測yiおよび
【０１７４】
【数２３】
2021521505.tif 000025
【０１７５】
を計算することができる。Dは、損失関数において使われる予測誤差を測定する距離関数を示す。これは、3つの部分、すなわち、トレーナー予測誤差、射影シミュレーション誤差および射影予測誤差に分解することができる。第1のものを削減すると、より良好なトレーナーネットワークにつながり、後者を減少すると、より単純であるが、ほぼ等価な予測できる容量をもつ、より良好な射影ネットワークが学習される。実際には、クロスエントロピーがD(.)に対して使われ得る。式2中の射影Lpに対して、D(.)を最適化するために、蒸留手法に従えばよく、というのは、ラベル
【０１７６】
【数２４】
2021521505.tif 000026
【０１７７】
に対してのみトレーニング済みのモデルよりも良好な一般化能力をもたらすことが示されているからである。λ1、λ2、およびλ3は、これらの異なるタイプの誤差の間のトレードオフに影響するハイパーパラメータである。これらは、小さいheldout開発セットに対して調整され、一例として、実験では、λ1=1.0、λ2=0.1、λ3=1.0に設定された。
【０１７８】
トレーナーネットワーク(θ)。トレーナーモデルは、その選択が柔軟であってよく、タスクに依存する完全ニューラルネットワーク(フィードフォワード、RNNまたはCNN)であってよい。図16Aは、フィードフォワードネットワークを使うトレーナーを示すが、これは、LSTM RNNまたはディープニューラルネットワークなどの他のモデルと交換されてよい。図に示すネットワークに対して、レイヤlk+1中のhθ(.)のための活性化は、以下のように計算することができ、
【０１７９】
【数２５】
2021521505.tif 000027
【０１８０】
上式で、σは、最後を除く各レイヤにおいて適用されるReLU活性化関数であり、Aは、隠れユニットについての計算された活性化値を示す。
【０１８１】
このネットワークにおける重み/バイアスパラメータWθ、Bθの数は、任意に大きくてよく、というのは、CPUまたはGPUとの高性能分散コンピューティングを使って効果的に行われ得るトレーニング段階中に使われるだけだからである。
【０１８２】
射影ネットワーク(p)。射影モデルは、推論のためにデバイス上で直接実施される、計算効率的な演算のセットを符号化する単純なネットワークである。モデル自体が、効率的「射影」関数
【０１８３】
【数２６】
2021521505.tif 000028
【０１８４】
のセットを定義し、この関数セットは、各入力インスタンス
【０１８５】
【数２７】
2021521505.tif 000029
【０１８６】
を、異なる空間
【０１８７】
【数２８】
2021521505.tif 000030
【０１８８】
に射影し、モデル自体が次いで、この空間中で学習を実施して、対応する出力
【０１８９】
【数２９】
2021521505.tif 000031
【０１９０】
にマップする。いくつかの演算を用いる単純化射影ネットワークが、図16Aに示すように使われる。1つの例示的射影ネットワークが示されている。他の構造が使われてもよい(たとえば、追加レイヤなど)。入力
【０１９１】
【数３０】
2021521505.tif 000032
【０１９２】
は、一連のT個の射影関数
【０１９３】
【数３１】
2021521505.tif 000033
【０１９４】
、...、
【０１９５】
【数３２】
2021521505.tif 000034
【０１９６】
を使って変換され、これらには次いで、活性化の単一のレイヤが続き得る。
【０１９７】
【数３３】
2021521505.tif 000035
【０１９８】
射影変換は、あらかじめ計算されたパラメータ化関数を使い、すなわち、それらは、学習プロセス中にトレーニングされるのではなく、それらの出力は、後続演算のための隠れユニットを形成するように連結される。トレーニング中、より単純な射影ネットワークは、所与のタスク用に、より予測できる特定の射影演算
【０１９９】
【数３４】
2021521505.tif 000036
【０２００】
を(活性化により)選び、適用することを学習する。射影の非線形結合を遂行するために、このネットワーク中のビットレイヤに接続された追加レイヤをスタックすることが可能である。
【０２０１】
射影モデルは、トレーナーと共同トレーニングされてよく、はるかに多くのパラメータを、したがってより予測できる容量を有する完全トレーナーネットワークによって行われる予測を模倣することを学習する。学習が完了されると、変換関数
【０２０２】
【数３５】
2021521505.tif 000037
【０２０３】
および対応する、射影ネットワークからのトレーニング済み重みWp、Bpが、抽出されて、デバイスにプッシュされ得る軽量モデルを作成する。推論時、軽量モデルおよび対応する演算は次いで、所与の入力
【０２０４】
【数３６】
2021521505.tif 000038
【０２０５】
に適用されて、予測
【０２０６】
【数３７】
2021521505.tif 000039
【０２０７】
を生成することができる。
【０２０８】
射影行列
【０２０９】
【数３８】
2021521505.tif 000040
【０２１０】
のタイプの選択ならびにセットアップ中の射影された空間
【０２１１】
【数３９】
2021521505.tif 000041
【０２１２】
の表現は、計算コストおよびモデルサイズに対して直接的な効果を有する。効率的なランダム化射影方法が、局所性鋭敏型ハッシュ(LSH)の修正バージョンを使って活用されて、
【０２１３】
【数４０】
2021521505.tif 000042
【０２１４】
を定義する。併せて、ビット表現1dが、
【０２１５】
【数４１】
2021521505.tif 000043
【０２１６】
のために使われ、すなわち、ネットワークの隠れユニット自体が、射影されたビットベクトルを使って表される。これは、パラメータの数とサイズの両方において、完全ネットワークと比較して、極端により低いメモリフットプリントをもたらす。この手法のいくつかのキープロパティは、以下を含む。
【０２１７】
スケーリング機構として、より小さい語彙サイズに頼る、典型的な機械学習方法とは異なり、プリセット語彙または特徴空間に同意するための要件はない。たとえば、LSTM RNNモデルが通常、刈り込みを適用し、より小さい、固定サイズの語彙を入力符号化ステップにおいて使って、モデルの複雑さを削減する。
【０２１８】
提案された学習方法は、大きいデータサイズおよび高い次元空間へ効率的にスケーリングする。これは、疎な高次元特徴空間を伴う自然言語アプリケーションに特に有用である。密な特徴空間(たとえば、画像ピクセル)に対して、完全接続されたレイヤ(または畳み込みさえも)のような既存演算が、多数のパラメータに依拠せずに、予測のために効率的に近似され得る。そのような演算は、メモリ要件を制約しながら、より複雑な射影ネットワークをもたらすように、射影関数とともに適用されてもよい。
【０２１９】
【数４２】
2021521505.tif 000044
【０２２０】
の計算は、トレーニングデータサイズに依存しなくてよい。
【０２２１】
【数４３】
2021521505.tif 000045
【０２２２】
が、デバイスにおける推論のためにオンザフライで計算するのに効率的であり得ることが保証され得る。
【０２２３】
次に、本開示は、射影方法および関連付けられた演算についてより詳しく記載する。
【０２２４】
局所性鋭敏射影ネットワーク:前述した射影ネットワークは、変換関数のセット
【０２２５】
【数４４】
2021521505.tif 000046
【０２２６】
に依拠し、この関数セットは、入力
【０２２７】
【数４５】
2021521505.tif 000047
【０２２８】
を、隠れユニット表現
【０２２９】
【数４６】
2021521505.tif 000048
【０２３０】
の中に射影する。式4において概説した射影演算は、異なるタイプの関数を使って実施され得る。1つの可能性は、word2vecまたは同様の技法およびモデル
【０２３１】
【数４７】
2021521505.tif 000049
【０２３２】
を、ベクトル平均化などの集約演算が続く、
【０２３３】
【数４８】
2021521505.tif 000050
【０２３４】
の中の特徴のための埋め込みルックアップとして使って事前トレーニングされた特徴埋め込み行列を使うことである。ただし、これは、埋め込み行列を記憶することを求め、これにより、メモリがさらに複雑になる。
【０２３５】
そうではなく、効率的なランダム化射影方法が、このステップに利用されてよい。局所性鋭敏型ハッシュ(LSH)が、基底射影演算をモデル化するのに使われ得る。LSHは通常、クラスタ化のようなアプリケーションのための次元性削減技法として使われる。射影ネット内でLSHを使うための動機づけは、それによって、同様の入力
【０２３６】
【数４９】
2021521505.tif 000051
【０２３７】
または中間ネットワークレイヤを、メトリック空間中で近くにある隠れユニットベクトルの中に射影できるようになることである。これにより、入力の変換ならびにインスタンスの数または実際のデータベクトルの次元性(すなわち、全体的特徴もしくは語彙サイズ)ではなく、データの固有次元性(すなわち、観察される特徴)のみに依存する、効率的およびコンパクトネットワーク表現の学習が可能になる。これは、
【０２３８】
【数５０】
2021521505.tif 000052
【０２３９】
についてのバイナリハッシュ関数を用いて遂行され得る。
【０２４０】
定理1:
【０２４１】
【数５１】
2021521505.tif 000053
【０２４２】
に対する球対称分散から引き出される
【０２４３】
【数５２】
2021521505.tif 000054
【０２４４】
、
【０２４５】
【数５３】
2021521505.tif 000055
【０２４６】
およびベクトル
【０２４７】
【数５４】
2021521505.tif 000056
【０２４８】
について、ベクトルの間の
【０２４９】
【数５５】
2021521505.tif 000057
【０２５０】
の内積と角度の符号の間の関係は、以下のように表すことができる。
【０２５１】
【数５６】
2021521505.tif 000058
【０２５２】
このプロパティは、単純なジオメトリから成り立ち、すなわち、射影行列
【０２５３】
【数５７】
2021521505.tif 000059
【０２５４】
からの行ベクトルが、
【０２５５】
【数５８】
2021521505.tif 000060
【０２５６】
および
【０２５７】
【数５９】
2021521505.tif 000061
【０２５８】
の方向のユニットベクトルの間の角の内側にあるときはいつでも、それらは、逆符号をもつことになる。
【０２５９】
【数６０】
2021521505.tif 000062
【０２６０】
を含む面に直交するどの射影ベクトルにも、効果はない。内積は、近くにあるパラメータ表現、すなわち
【０２６１】
【数６１】
2021521505.tif 000063
【０２６２】
を判断するのに使うことができるので、したがって、ネットワーク隠れ活性化ユニットベクトルは、その符号に関してベクトルの署名を使うことによって効率的にモデル化され、記憶され得る。
【０２６３】
射影の計算:上記プロパティに続いて、バイナリハッシュ化が繰り返し使われてよく、
【０２６４】
【数６２】
2021521505.tif 000064
【０２６５】
の中の射影ベクトルが、入力
【０２６６】
【数６３】
2021521505.tif 000065
【０２６７】
を、
【０２６８】
【数６４】
2021521505.tif 000066
【０２６９】
によって示されるバイナリハッシュ表現に変換するために適用されてよく、ここで、
【０２７０】
【数６５】
2021521505.tif 000067
【０２７１】
である。この結果、dビットのベクトル表現が生じ、1ビットが、各射影行
【０２７２】
【数６６】
2021521505.tif 000068
【０２７３】
に対応する。
【０２７４】
射影行列
【０２７５】
【数６７】
2021521505.tif 000069
【０２７６】
は、トレーニングおよび推論に先立って固定されてよい。ランダム射影ベクトル
【０２７７】
【数６８】
2021521505.tif 000070
【０２７８】
の明示的記憶は、ベクトルが、乱数ジェネレータを起動するよりも、ハッシュ関数を使ってオンザフライで計算され得るので、必要とされないことに留意されたい。さらに、これは、高次元データに対して法外に大きい場合がある全体的特徴サイズではなく、観察される特徴サイズが線形である射影演算の実施もできるようにし、そうすることによって、メモリと計算コストの両方を節約する。バイナリ表現は、射影ネットワークパラメータのための大幅にコンパクトな表現をもたらし、そのことが、トレーナーネットワークと比較して、モデルサイズをかなり削減することになるので、重要であり得る。
【０２７９】
量子化および重み共有のような他の技法が、メモリ削減においてさらなる利得を提供するために、この方法の上にスタックされてよいことに留意されたい。
【０２８０】
射影パラメータ:実際には、T個の異なる射影関数
【０２８１】
【数６９】
2021521505.tif 000071
【０２８２】
が、図16Aに示すように利用されてよく、各々が、射影された活性化ユニット
【０２８３】
【数７０】
2021521505.tif 000072
【０２８４】
を式4において形成するように連結され得るdビットのベクトルを生じる。Tおよびdは、
【０２８５】
【数７１】
2021521505.tif 000073
【０２８６】
について指定される射影ネットワークパラメータ構成に依存して変わり、予測品質とモデルサイズとの間でトレードオフするように調整され得る。
【０２８７】
トレーニングおよび推論:コンパクトビット単位は、前述した射影ネットワークを表すのに使われ得る。トレーニング中、このネットワークは、同じ方向の射影されたビット空間
【０２８８】
【数７２】
2021521505.tif 000074
【０２８９】
中で互いに近くにある点についての勾配を動かすことを学習する。勾配の方向および規模は、パラメータのより大きいセットおよびより複雑なアーキテクチャへのアクセスを有するトレーナーネットワークによって判断され得る。
【０２９０】
2つのネットワークは、逆伝搬を使って共同でトレーニングされる。同時最適化目的にかかわらず、トレーニングは、高性能CPUまたはGPUにおける分散コンピューティングを用いて、確率的勾配降下とともに効率的に進行し得る。
【０２９１】
トレーニングされると、2つのネットワークは、減結合され、異なる目的に役立つ。トレーナーモデルは、標準モデルが使われ得るところであればどこでも展開することができる。変換関数
【０２９２】
【数７３】
2021521505.tif 000075
【０２９３】
に伴う、より単純な射影ネットワークモデル重みが、デバイスにプッシュされ得る軽量モデルを作成するために抽出される。このモデルは、式4、5における同じ演算を新規入力
【０２９４】
【数７４】
2021521505.tif 000076
【０２９５】
に適用することによって、推論時に、直接「オン」デバイスで使われ、予測
【０２９６】
【数７５】
2021521505.tif 000077
【０２９７】
を生成する。
【０２９８】
ビットベクトル表現
【０２９９】
【数７６】
2021521505.tif 000078
【０３００】
に対する代替として、射影行列
【０３０１】
【数７７】
2021521505.tif 000079
【０３０２】
が代わりに、射影ネットワーク中の隠れユニットの疎表現を生成するのに使われてよい。各dビットのブロックは、ビットベクトルではなく整数として符号化され得る。これは結果として、より大きい全体パラメータ空間O(T・2d)が生じるが、依然として、学習されたパラメータの実際の数が小さい場合があるとともに効率的な疎なルックアップ動作により推論が実施され得るアプリケーションにとって有益であり得る。
【０３０３】
どのコンパクト機械学習済みモデルも、たとえば、事前トレーニング済み機械学習済みモデルを含む、どのトレーナーモデルとも共同トレーニングされてよい。
【０３０４】
いくつかの実装形態では、トレーナーモデルは、異なるサイズの複数の学生モデルと共同トレーニングされてもよい。一例として、図16Bは、本開示の例示的態様による、複数の学生モデルをトレーニングするのに使われる例示的共同トレーニング方式のグラフ図を示す。複数の学生モデルは、であり得る。
【０３０５】
本明細書に記載する圧縮学習フレームワークは、モバイルアプリケーションに適した良好な予測確度での、小さい高速モデルの生成に成功するために、例示的な実験的テストにおいて使われている。たとえば、ImageNetタスクにおいて、確度がわずか4.6〜7%低下して、圧縮学習フレームワークは、Inception v3ベースラインよりも22倍小さく、MobileNet v1ベースラインよりも4倍小さいモデルを生成することができた。別の例として、CIFAR-10において、本明細書に記載するように、複数のモデルを共有パラメータと共同トレーニングするのは、単一の大きいモデルをトレーニングするよりも10%だけ多くの時間がかかるが、サイズが最大で94倍小さく、最大で27倍速く、最大で36倍低いコストおよび良好な予測品質(90〜95% top-1確度)を有する、3つの圧縮されたモデルをもたらす。
【０３０６】
図17は、本開示の例示的実施形態による例示的ユーザインターフェースを示す。このユーザインターフェースは、Tensorboardと呼ばれ得る。トレーニングが始まると、ユーザは、Tensorboard上でトレーニング進行を監視することができる。Tensorboardは、トレーニング進行を提示するためのいくつかのオプション(たとえば、スカラー、グラフ、分布、ヒストグラム、およびプロジェクタ)を有する。
【０３０７】
図17に示すように、「スカラー」オプションが、コンパクトモデル(PoDモデルとも呼ばれる)確度およびトレーナーモデル確度を提示するために選択され得る。PoDモデルおよび/またはトレーナーモデルに関連付けられたデータのダウンロードリンクを示すための「データダウンロードリンクを示す」、ユーザインターフェースの右側の図表中の線外値を削除するための「図表スケーリングにおける線外値を無視する」、ユーザがソートのための方法を選択できるようにするための「ツールチップソート方法」、ユーザが、ユーザインターフェースの右側で確度曲線を平滑化するための平滑化レベルを選択できるようにするための「平滑化」、ユーザが、確度曲線の水平のタイプを選択できるようにする(たとえば、ステップの稼動、相対、および側面)ための「水平軸」、ならびにフィルタ稼動に対するregexを書くための「稼動」など、ユーザインターフェースの右側で図表を処理するためのいくつかのツールが、ユーザインターフェースの左側に示されている。
【０３０８】
図18は、本開示の例示的実施形態による例示的ユーザインターフェースを示す。図18に示すように、「グラフ」オプションが選択される。ユーザインターフェースの右側のグラフは、トレーニングの例示的構造を示す。構造は、PoDモデルとトレーナーの共同トレーニングがどのように実施され得るかを示す。構造は、下から上へのデータフローを示し、PoDモデルとトレーナーを共同トレーニングするのに使われ得る各機能を示す。いくつかのツールが、ユーザインターフェースの左側に列挙されている。ユーザは、ユーザインターフェースの右側で、グラフを処理するためのツールを選択することができる。たとえば、入力は、「入力を追跡」をアクティブ化することによって追跡され得る。
【０３０９】
再度図2を参照すると、アプリケーションデータデータベース126はモデルメタデータを記憶することができる。クラウド記憶データベース124は、機械学習済みモデル(サードパーティモデルとファーストパーティモデルの両方を含む)およびトレーニングデータを記憶することができる。トレーニングデータは、開発者によってアップロードすることができ、検証データを含み得る。代替または追加として、トレーニングデータは、大きいパブリックトレーニングデータセットから導出することができる。
【０３１０】
示されるように、コンソールインターフェースは、モデルマネージャ120、機械学習マネージャ122、クラウド記憶データベース124、およびアプリケーションデータデータベース126と、1つまたは複数のプラットフォームAPIを介して通信/対話することができる。例示的APIが、添付の付表に挙げられている。これらのAPIは、例としてのみ挙げられる。例示的APIに対する追加または代替として、異なるAPIが使われてもよい。
【０３１１】
付表Aは、例示的カスタムモデルAPIを提供する。付表Aは、本明細書に組み込まれ、その一部を形成する。
【０３１２】
付表Bは、例示的視覚モデルAPIを提供する。付表Bは、本明細書に組み込まれ、その一部を形成する。
【０３１３】
付表Cは、例示的視覚モデルAPIを提供する。付表Cは、本明細書に組み込まれ、その一部を形成する。
【０３１４】
ここで図3を参照すると、図3は、本開示の例示的実施形態による、例示的コンソールインターフェースモード/状態の機能図を示す。示されるように、あるワークフローでは、開発者が、様々なコンソールインターフェースの中を進むことができ、インターフェースはそれぞれ、開発者が、モデルをアップロードし、互換性をチェックし、モデルを展開し、次いで、モデルの性能を監視することを可能にする。別のワークフローでは、コンソールは、それぞれトレーニングデータを(たとえば、クラウド記憶バケットに)アップロードし、任意選択でトレーニングデータを増補し、モデルをトレーニングおよび/または圧縮し、次いで、モデルを展開し、性能を監視するインターフェースを提供することができる。
【０３１５】
いくつかの実装形態では、コンソールは、開発者が正しい機械学習済みモデルを生成するのを支援する、いくつかのツールまたはユーザインターフェースを提供することができる。一例として、コンソールは、目標モデルアーキテクチャを判断する、開発者が選ぶための使用ケースのセットを提供することができる。別の例では、コンソールは、開発者が、確度対モデルサイズトレードオフの要件を選択または探求することを可能にし得る。
【０３１６】
図4は、本開示の例示的実施形態による例示的コンピューティングシステムのワークフロー図を示す。より詳細には、いくつかの実装形態では、モデル圧縮および/またはコンバージョンは、長く続くタスクであるので、フロントエンドサーバ内では直接扱われない。そのようなケースでは、処理を行うのに、専用バックエンドジョブが使われる。図4は、フロントエンドとバックエンドとの間のジョブスケジューリングを扱うためのデータベースキューをもつジョブスケジューラを含む、そのようなシステムの1つの例示的配置を示す。
【０３１７】
バックエンドジョブにおいて、開発者提供モデルは稼動される必要があり得る。その結果、サービスを稼動するプロセスは、プライバシーおよびセキュリティを提供するようにサンドボックス化され得る。たとえば、クラウド機械学習エンジンが使われてよい。
【０３１８】
いくつかの実装形態では、高レベルにおいて、プラットフォームは、モデル圧縮とコンバージョンの両方をジョブとして取り扱うことができる。したがって、いくつかの実装形態では、開発者がモデルを圧縮またはコンバートさせたいとき、プラットフォームフロントエンドサーバは、ジョブを作成し、データベースキューに挿入すればよい。スケジューラは、実際のジョブスケジューリングを扱うことができ、プラットフォームフロントエンドサーバは、ジョブの状況をポーリングし続け、ジョブが終端状態に入ると、開発者に戻して報告する。開発者は、自身のジョブの状況をチェックするためのクエリを開始してもよい。
【０３１９】
図5は、本開示の例示的実施形態による例示的コンピューティングシステムのワークフロー図を示す。具体的には、図5は、基本的なデバイス側フローの例を示す。具体的には、アプリケーション開発プラットフォームおよび機械知能SDKは、開発者が、デバイス上でカスタムモデルを使うことができるようにする。APIにより、アプリケーションは、すでにデバイス上にあるカスタムモデルを使って推論を実施できるようになり、ここで、開発者は、モデルファイルを、どこかから手作業でダウンロードするか、またはアプリケーション自体の中でパッケージ化するかのいずれかを行う。
【０３２０】
プラットフォームは、クライアント側SDKと密統合されるモデルファイルホスティングソリューションも提供し、これは、開発者が自身のモデルを管理することができるプラットフォームコンソールのユーザインターフェース部、開発者がアクティブ(もしくは生産)モデルを指定し、かつ/またはロールバックを容易に実施できるようにするモデルバージョニング、異なる機械学習ライブラリバージョンをもつ、アップロードされたモデル互換性を自動的に判断すること、および互換デバイスに互換モデルのみを供給すること、ならびに/あるいは開発者が、自身のモデルの異なるバージョンに対して実験を稼動できるようにするファーストクラスA/B試験サポートという特徴を提供する。
【０３２１】
例示的モデル生成および展開ワークフロー
図6は、本開示の例示的実施形態による、機械学習済みモデルを生成し、展開するための例示的プロセスのフローチャート図を示し、図7は、本開示の例示的実施形態による、機械学習済みモデルを生成し、展開するための例示的プロセスの例示的実装形態のワークフロー図を示す。
【０３２２】
具体的には、本開示の態様は、APIを介して動作するクロスプラットフォームサードパーティモバイル機械学習プラットフォームの一部を形成するオンデバイス機械知能SDKを対象とする。オンデバイス機械学習特徴をビルドするモバイル開発者の場合、モバイルアプリケーション用にモデルをトレーニングすることは、依然としてほとんどの開発者にとって大きい痛点である。さらに、たくさんのモバイル使用ケースの場合、トレーニングワークフローはとても類似している。したがって、本開示は、クラウド上のモデルトレーニングワークフロー全体を容易にするためのツールを提供する。
【０３２３】
ステップ1:モデル選択および設計:使用ケース(たとえば、モバイル使用ケース)の大部分に対して、トレーニングフローは、事前トレーニング済みモデル(たとえば、Inception v3、MobileNetなど)で始まる。プラットフォームは、いくつかの典型的なコンピュータ視覚使用ケースをカバーする事前トレーニング済みモデルのセットへのアクセスを提供することができ、モバイル最適化フォーマットにコンバートされることを保証することができる。選択可能なモデルのセットは、他の領域またはカスタムモデルをカバーしてもよい。
【０３２４】
ステップ2:トレーニングデータ作成:プラットフォームは、開発者が、自身のトレーニングデータを増補し、管理するのを支援し得る。データ増補は、より多くのトレーニングサンプルを(たとえば、画像探索により)追加すること、ラベルを提供するためにクラウドソーシングプラットフォームを活用すること、および/または既存サンプルの変換を導入する(たとえば、ノイズ、循環、摂動などを加える)ことを含み得る。プラットフォームは、データクリーニングおよび視覚化ツールも提供し得る。
【０３２５】
プラットフォームは、例として、ラベル付き未加工データおよび/またはTF.exampleを含む、いくつかのデータフォーマットオプションを提供する。プラットフォームは、例として、SavedModelおよび/またはCheckpointを含む、いくつかのモデルフォーマットオプションを提供する。
【０３２６】
ステップ3:モデルトレーニング:トレーニングは、事前トレーニング済みモデル(たとえば、最上位レイヤのみまたは最上位を超えるレイヤのみ)を精製することを含み得る。トレーニングは、最初からの完全自動化トレーニングも含み得る。トレーニングは、任意選択で、本明細書に記載する共同トレーニング技法に従って行われてもよい。
【０３２７】
ステップ4:モバイル向けのモデル最適化:モデルサイズは、モバイルアプリケーションにとって重大なので、プラットフォームは、性能および確度の評価でモデルを自動的に圧縮するためのツールを提供し得る。自動モデル最適化は、モデルを再トレーニングすることを含んでよく、ここで、トレーニングデータが求められ得る。
【０３２８】
ステップ5:モバイル向けのモデルコンバージョン:求められる性能および確度を満たすモデルが取得されると、プラットフォームは、モデルを、すぐに展開できるモバイル最適化フォーマットにコンバートしてよい。コンバージョンは、コマンドラインツールを用いるいくつかのステップ(たとえば、モデル凍結、TOCOコンバージョンなど)を含み得る。これらのステップは合理化されてよく、誤差についての情報が、プラットフォームコンソールを介して提供されてよい。いくつかの実装形態では、圧縮ステップからの出力モデルは、モバイルフォーマットに自動的にコンバートされてよい。TOCOツール準備状態に依存して、モデルは、たとえば、POD圧縮(たとえば、指定された出力モデルアーキテクチャ)を通すなど、何らかの標準アーキテクチャの中にあることを強制され得る。
【０３２９】
ステップ6:モデル展開および管理:アプリケーション開発プラットフォームは、どのアプリケーションバージョン、デバイスタイプ、および/またはユーザセグメントにどのモデルが適用されるべきかを開発者が指定するための標的機構を提供し得る。プラットフォームは、モデルが標的化機械学習ライブラリランタイムとの互換性があることを確実にするための互換性チェックも提供し得る。最後に、プラットフォームは、開発者用のモデルをすべてホストすることができ、アプリケーションは、モデルをオンザフライでダウンロード/アップグレードすることができる。
【０３３０】
プラットフォームは、完全なトレーニングフローを助けるためのツールを提供するが、開発者は、フローのいくつかの部分を活用することを選んでもよい。たとえば、開発者は、すでにモデルを展開できるようにしている場合、自身のモデルをアップロードし、ステップ6のみを利用すればよい。開発者は、クラウド推論のためのTensorflowモデルをすでに有している場合、自身のTensorflowモデルをアップロードし、ステップ4および/または5も利用してよい。
【０３３１】
図8は、本開示の例示的実施形態による、分散のための機械学習済みモデルをアップロードするための例示的プロセスのスイムレーン図を示す。示されるように、ユーザ(開発者)は(たとえば、自身のブラウザを介して)モデルファイルアップロードを開始することができる。プラットフォームバックエンドAPIは、クラウドストレージをもつ新規オブジェクトを作成することができ、クラウド記憶アップロードURLをユーザに戻せばよい。ユーザは、ファイルをクラウドストレージにアップロードし、次いで、アップロードが完了したとき、プラットフォームAPIに知らせればよい。バックエンドAPIは、モデル互換性チェック要求をキューに入れることができる。
【０３３２】
モデル互換性サービスは、モデル互換性チェック要求をキューから出すことができ、バックエンドAPIからモデル情報を入手することができる。APIは、クラウド記憶ダウンロードURLを戻し得る。モデル互換性サービスは、クラウドストレージからモデルファイルをダウンロードすることができ、互換性をチェックし、モデルメタデータを抽出することができる。モデル互換性サービスは、モデルメタデータを互換性情報で更新することができる。
【０３３３】
したがって、いくつかの実装形態では、モデル互換性は、別個の、非同期サービスとして実装されてよい。モデルファイルがアップロードされると、互換性チェック要求がデータベースキューに追加される。互換性チェックサービスは次いで、非同期にチェックを実施する。いくつかの実装形態では、モデルファイルは、互換性チェックが完了するまで、ダウンロードに利用可能でない場合がある。
【０３３４】
図9は、本開示の例示的実施形態による、機械学習済みモデルをダウンロードするための例示的プロセスのスイムレーン図を示す。示されるように、初期ロード時に、機械知能SDKが、APIに対してモデルを要求し得る。APIは、互換バージョンをルックアップし、認可し、次いで、ダウンロードURLをクラウドストレージから得ることができる。APIは、モデル情報(たとえば、ダウンロードURL)を機械知能SDKに戻せばよい。機械知能SDKは、クラウドストレージからモデルをダウンロードするのにURLを使ってよく、ダウンロードされたモデルをキャッシュすればよい。
【０３３５】
後続ロード時に、SDKは、APIからモデル情報を入手することができる。APIは、モデル情報(適切な場合はダウンロードURLを含む)を戻すことができる。SDKは、必要な場合、新規モデルをダウンロードすることができる。
【０３３６】
例示的機械知能SDK
図10〜図14は、機械知能SDKの異なる様々な例示的実装形態を含む例示的コンピューティングシステムを示す。機械知能SDKは、「ファット」、「部分的にファット」、または「シン」であってよい。
【０３３７】
アプリケーション開発プラットフォームにより、開発者は、モデルをSDKとともにバンドルするか、またはモデルをSDKに動的にダウンロードするかのいずれかができるようになる。一例では、開発者は、プラットフォームコンソール上で自身のモデルをアップロードすることができ、それらは、デバイスに同期され、デバイス上でキャッシュされる。デバイス上に置かれると、モデルは、単純なAPI呼出しにより、オンデバイスサービスにとって容易にアクセス可能である。
【０３３８】
SDK自体について詳しく述べると、SDKは、これらのうちのいくつか、すなわち他のモジュール(たとえば、ファーストパーティモジュール)またはその実装の一部としてのアプリケーション(図11〜図14に示すように)への呼出しのために「オンデバイスバックエンド」を有し得る。代替として、図10に示すように、すべてのモデルおよびサービスを単一の機械知能モジュール内に含めると、機械学習ライブラリランタイムを倍にすることが避けられ、実装を最適化し、単一のスタック(たとえば、C/C++スタック)がクロスプラットフォーム使用のために維持される。
【０３３９】
具体的には、図10は、本開示の例示的実施形態による、ファットSDKを含む例示的コンピューティングシステムのブロック図を示す。具体的には、ファットSDKでは、機械知能モデルおよびサービスすべて(たとえば、視覚、音声、テキスト、カスタムなど)が、1つのSDKに統合される。より詳細には、モデルすべておよび機械学習ライブラリ/ランタイム(たとえば、TFLite)は、図10に示すように、単一の機械知能モジュール内に含まれ得る。
【０３４０】
概して、「ファット」SDKは、すべての依存が1つのファットバイナリに入れられ、そのバイナリがアプリケーションに静的にリンクされることを意味する。通常、ファットSDKは、更新により、どの一部も動的に更新しない。ファットSDKは、ただし、ファーストパーティモジュールまたはアプリケーションと対話することができる。ファットSDKは、どの機械学習ライブラリ互換性問題も回避する。
【０３４１】
「ファット更新可能」SDKは、SDKの態様が、完全アプリケーション更新なしで動的に更新され得ることを除いて、ファットSDKと同様である(たとえば、1つのファットバイナリがアプリケーションに静的にリンクされる)。いくつかの実装形態では、デバイス上で利用可能なファーストパーティモデルのより新しいバージョンがあるときはいつでも、それらのモデルは、アプリケーションのプロセスにおいて動的にロードされ、稼動される。これにより、機械学習ランタイムおよびモデルの素早い更新が可能になるが、機械学習ライブラリ互換性問題の可能性ももち込まれる。
【０３４２】
「シン」SDKは、SDKが、クライアントライブラリのみを含み、ファーストパーティサポートモジュールまたはアプリケーションの内側で稼動されるモデルに依存することを意味する。これらは任意選択で、依然としてアプリケーションのプロセス内で稼動されてよい。シンSDKの利益は、アプリケーションパッケージが比較的小さいサイズであり、モジュールの実装が複数のアプリケーションによって共有され得ることである。
【０３４３】
一例として、図11は、本開示の例示的実施形態による、シンSDKを含む例示的コンピューティングシステムのブロック図を示す。図11に示すように、機械知能モジュールは、クライアントの間でコストを分担するために適用可能な場合、他のファーストパーティモジュールに呼びかけ得る。SDKのそれらの部分のうちのいくつかのために、クライアントライブラリはSDK中にあってよく、実装はファーストパーティモジュールまたはアプリケーション中である。
【０３４４】
したがって、様々な可能配置が、バンドル化対動的ダウンロードに関する決定を含むモデル管理も可能にし得る。具体的には、いくつかの事例では、モデル(さらに、推論に必要とされる任意のデータベース)はかなり大きい(約MB)場合があるので、開発者は、モデルをバンドルし、またはそれらを動的にダウンロードすることの容易さを追及するかどうかを決めることが可能になり得る。サードパーティモデル用に、開発者は適切な選択を選択すればよい。
【０３４５】
ファーストパーティモデルの場合、モデルは、すべてSDK内でバンドルされるか、または動的にダウンロードされてもよく、これは、ファーストパーティによって制御され得る。SDK内でモデルをバンドルすると、モデルがアプリケーションインストール時から利用可能、ダウンロードが起こるのを待つ必要がない、比較的少ないネットワークおよび電力使用、ならびにより高い安定性、動的にダウンロードされたモデルから、互換性が破損する機会が比較的少ない、という利益がもたらされる。
【０３４６】
いくつかの実装形態では、大きいファーストパーティモデルは、2つ以上のアプリケーションの間で共有されてよい。アプリケーションの間でのモデルの共有は、一例では、ファーストパーティモジュールのモデル部分を作る(すなわち、別個の更新可能モジュールを有し、それにモデル/ダウンロードを扱わせるようにして遂行され得る。ファーストパーティモジュールは、「ファット」または「ファット更新可能」SDKの一部ではなく、むしろ、SDKの「シン」部分である(すなわち、SDKは、モジュールのクライアントライブラリのみを取り込む)のように達成され得る。ファーストパーティモジュールは、ファーストパーティAPIを介して、SDKの他の部分に公開されてよい。
【０３４７】
いくつかの実装形態では、ファーストパーティモデルを用いて更新するとともに開発者所有モデル用には使われない別個の機械学習ライブラリランタイムがファーストパーティモデル用に存在し得る。これは、互換性問題を削減するのを支援し得る。
【０３４８】
アプリケーションの間でモデルを共有すると、記憶利益/節約が与えられる。つまり、共有がないと、モデルの冗長バージョンが、デバイスのストレージ(および、バンドルされる場合はアプリケーションパッケージサイズまたはダウンロードされる場合は電力/データ)に対する大きい打撃となる。
【０３４９】
いくつかの実装形態では、アプリケーション開発プラットフォームは、静的フレームワークを介してSDKを分散し得る。静的フレームワークは、ヘッダ(Objective CとSwiftの両方において使われる)およびいくつかの余剰メタデータ(たとえば、モジュールマップ)と結合された、単一の静的にリンクされたライブラリであってよい。SDKを、動的にロードされたライブラリとして分散することも可能である。
【０３５０】
いくつかの実装形態では、分散はCocoaPodを介して起こる場合があり、CocoaPodとは、フレームワークをどのようにしてフェッチするかを指定するjsonファイルである。ポッド仕様は、ダウンロード可能バイナリブロブまたは、代替として、たとえば、外部的にホストされるソースコードを指し得る。
【０３５１】
CocoaPodは1つまたは複数のフレームワークを含み得るが、これは、ポッドにおける唯一のパッケージ、1つのフレームワークに典型的である。プラットフォームは、ビルド、試験および展開パイプラインのほとんどを自動化し得る。
【０３５２】
いくつかの実装形態では、SDK中に存在するモジュール(たとえば、モバイル視覚)がすでにある場合、その依存を現状のままにする(たとえば、より固い統合を行うのとは反対に)新規SDKを形成することが容易である。
【０３５３】
いくつかの実装形態では、参照は、他のライブラリのシンボルに対して行われるだけでよく、ライブラリのユーザが両方を入手することが保証され得る。CocoaPodを用いると、達成するのが容易である。いくつかの例が、Protobufなど、いくつかの依存を使い得る。プラットフォームのビルドインフラストラクチャは、依存がビルド時に静的にリンクされないことを保証するための取り決めを有してよく、二重シンボル破損を防止する。
【０３５４】
図12は、本開示の例示的実施形態による、更新可能ファーストパーティサポートアプリケーションの一部としてモバイル視覚モデルを含む例示的コンピューティングシステムのブロック図を示す。具体的には、図12は、モバイル視覚モデルのみがAPIを介してファーストパーティサポートアプリケーションに提供され、サードパーティモデルが機械知能SDKに含まれるアーキテクチャを示す。
【０３５５】
したがって、図12は、「ファット」部分および「更新可能」部分SDKの例を示し、ここで、カスタムモデルおよびTFLiteランタイムはファット部分にあり、モバイル視覚モジュールは(そのtfminiランタイムとともに)更新可能部分にある。
【０３５６】
モバイル視覚モジュールをシン更新可能(ファット更新可能とは反対に)として有する、1つの例示的理由は、すべてのモデルの記憶空間およびデータのダウンロードを、SDKを使うすべてのアプリの間で共有するためである。カスタムサードパーティモデルは、プラットフォームコンソールおよびクラウドストレージを通して更新され得る。プラットフォームは、起こり得る互換性問題を軽減するのを助けるために、プラットフォームコンソールから稼動され得る互換性テストを提供し得る。
【０３５７】
モデルのバンドルに関して、モバイル視覚APIの場合、モデルは、そのサイズによりダウンロードされ得る。いくつかのサードパーティカスタムモデルに対して、開発者は、モデルへのバンドル化または動的ダウンロードによりモデルを後で更新することの選択を行うことができる。
【０３５８】
図13は、本開示の例示的実施形態による、更新可能ファーストパーティサポートアプリケーションの一部としてモバイル視覚、テキスト、および音声モデルを含む例示的コンピューティングシステムのブロック図を示す。つまり、図12に相対して、図13では、より多くのベースAPI(たとえば、テキスト、音声)がサポートアプリケーションに含まれ、可能性としては各々が、その中に独自のモジュール構造を有する。冗長共通ランタイムは任意選択でなくされ得る。
【０３５９】
図14は、本開示の例示的実施形態による、ランタイムとトレーニングの両方をさらに実施する更新可能ファーストパーティサポートアプリケーションを含む例示的コンピューティングシステムのブロック図を示す。つまり、サポートアプリケーションの中のすべてのファーストパーティモデルおよびモジュールが、ファーストパーティサポートアプリケーションにおいて同じランタイムを使い、そうすることによって、ライブラリの冗長ランタイム、ロギング、およびダウンロードをなくす。
【０３６０】
ファーストパーティサポートアプリケーションは、トレーニングを実施することもできる。他の実装形態では、トレーニングは、アプリケーション固有データ記憶のためのプライバシー利益を与えるように、ファット更新可能SDKの一部であってよい(シン更新可能、およびすべてのアプリの間で共有されるのとは反対に)。
【０３６１】
本明細書において論じる技術は、サーバ、データベース、ソフトウェアアプリケーション、および他のコンピュータベースのシステム、ならびにとられるアクションおよびそのようなシステムとの間で送られる情報への参照を行う。コンピュータベースのシステムの固有柔軟性により、構成要素の間でのタスクおよび機能性の非常に様々な可能構成、組合せ、および分割ができるようになる。たとえば、本明細書において論じるプロセスは、組合せで動く、単一のデバイスもしくは構成要素または複数のデバイスもしくは構成要素を使って実装することができる。データベースおよびアプリケーションは、単一のシステム上で実装されるか、または複数のシステムに分散されてよい。分散構成要素は、逐次的にまたは並列に動作し得る。
【０３６２】
図10〜図14に示される例示的SDKおよびアプリケーション配置は、例としてのみ挙げられている。これらの例示的配置の多くの異なる変形および組合せが、本開示の態様に従って行われてよい。
【０３６３】
本主題を、様々な具体例示的実施形態に関して詳しく記載したが、各例は、本開示の限定ではなく、説明として挙げられている。当業者は、上記内容を理解すると、そのような実施形態に対する改変、変形、および等価物を容易に生じることができる。したがって、本開示は、当業者には容易に明らかであろうように、本主題へのそのような修正、変形および/または追加を含めることを排除しない。たとえば、一実施形態の一部として示され、または記載される特徴は、またさらなる実施形態をもたらすために、別の実施形態とともに使われてよい。したがって、本開示は、そのような改変、変形、および等価物をカバーすることが意図される。
【符号の説明】
【０３６４】
102  アプリケーション開発コンピューティングシステム、ユーザコンピューティングデバイス
112  プロセッサ
114  メモリ
116  アプリケーション開発プラットフォーム
118  命令、コンソールマネージャ
120  モデルマネージャ
122  機械学習マネージャ
124  クラウド記憶データベース、データベース、クラウドストレージ
126  アプリケーションデータデータベース、データベース
130  開発者コンピューティングデバイス
140  ユーザコンピューティングデバイス
142  アプリケーション
144  機械知能SDK
146  機械学習済みモデル、モデル
148  機械学習ライブラリ
152  ファーストパーティサポートアプリケーション、アプリケーション
154  機械知能SDK
156  機械学習済みモデル、モデル
158  機械学習ライブラリ
【０３６５】
【表１】
2021521505.tif 000080
2021521505.tif 000081
2021521505.tif 000082
2021521505.tif 000083
2021521505.tif 000084
2021521505.tif 000085
2021521505.tif 000086
2021521505.tif 000087
2021521505.tif 000088
2021521505.tif 000089
2021521505.tif 000090
2021521505.tif 000091
2021521505.tif 000092
2021521505.tif 000093
2021521505.tif 000094
2021521505.tif 000095
2021521505.tif 000096
2021521505.tif 000097
2021521505.tif 000098
2021521505.tif 000099
2021521505.tif 000100
2021521505.tif 000101
2021521505.tif 000102
2021521505.tif 000103
2021521505.tif 000104
2021521505.tif 000105
2021521505.tif 000106
2021521505.tif 000107
2021521505.tif 000108
2021521505.tif 000109
2021521505.tif 000110
2021521505.tif 000111
2021521505.tif 000112
2021521505.tif 000113
2021521505.tif 000114
2021521505.tif 000115
2021521505.tif 000116
2021521505.tif 000117
2021521505.tif 000118
2021521505.tif 000119
2021521505.tif 000120
2021521505.tif 000121
2021521505.tif 000122
2021521505.tif 000123
2021521505.tif 000124
2021521505.tif 000125
2021521505.tif 000126
2021521505.tif 000127
2021521505.tif 000128
2021521505.tif 000129
2021521505.tif 000130
2021521505.tif 000131
【図１】
2021521505.tif 000132
【図２】
2021521505.tif 000133
【図３】
2021521505.tif 000134
【図４】
2021521505.tif 000135
【図５】
2021521505.tif 000136
【図６】
2021521505.tif 000137
【図７】
2021521505.tif 000138
【図８】
2021521505.tif 000139
【図９】
2021521505.tif 000140
【図１０】
2021521505.tif 000141
【図１１】
2021521505.tif 000142
【図１２】
2021521505.tif 000143
【図１３】
2021521505.tif 000144
【図１４】
2021521505.tif 000145
【図１５】
2021521505.tif 000146
【図１６Ａ】
2021521505.tif 000147
【図１６Ｂ】
2021521505.tif 000148
【図１７】
2021521505.tif 000149
【図１８】
2021521505.tif 000150
【国際調査報告】
2021521505.tif 000151
2021521505.tif 000152
2021521505.tif 000153