JP7440420B2 - 包括的機械学習サービスを提供するアプリケーション開発プラットフォームおよびソフトウェア開発キット - Google Patents

包括的機械学習サービスを提供するアプリケーション開発プラットフォームおよびソフトウェア開発キット Download PDF

Info

Publication number
JP7440420B2
JP7440420B2 JP2020549622A JP2020549622A JP7440420B2 JP 7440420 B2 JP7440420 B2 JP 7440420B2 JP 2020549622 A JP2020549622 A JP 2020549622A JP 2020549622 A JP2020549622 A JP 2020549622A JP 7440420 B2 JP7440420 B2 JP 7440420B2
Authority
JP
Japan
Prior art keywords
model
machine
models
application
learned models
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2020549622A
Other languages
English (en)
Other versions
JP2021521505A (ja
Inventor
ウェイ・チャイ
パンナグ・サンケッティ
イブラヒム・エルボウチキ
サチン・コトワニ
ウェズリー・ロバート・タルレ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Google LLC
Original Assignee
Google LLC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Google LLC filed Critical Google LLC
Publication of JP2021521505A publication Critical patent/JP2021521505A/ja
Application granted granted Critical
Publication of JP7440420B2 publication Critical patent/JP7440420B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/36Software reuse

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Evolutionary Computation (AREA)
  • Medical Informatics (AREA)
  • Data Mining & Analysis (AREA)
  • Computing Systems (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Mathematical Physics (AREA)
  • Artificial Intelligence (AREA)
  • Computer Security & Cryptography (AREA)
  • Stored Programmes (AREA)

Description

優先権主張
本出願は、参照によって全体が本明細書に組み込まれている、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は、射影ネットワークをトレーニングするために適用されるフレームワークを示し、そのフレームワークを参照して論じられる。ただし、射影ネットワーク以外の他のモデルタイプが学生モデルとして使われてもよい。
いくつかの実装形態では、トレーナーネットワークは、
Figure 0007440420000001
を、予測結果yiを予測するための入力特徴ベクトルとして使う。射影ネットワークは、射影関数
Figure 0007440420000002
を、入力特徴ベクトル
Figure 0007440420000003
を射影済み特徴ベクトル
Figure 0007440420000004
に変換するのに使う。射影ネットワークは、射影済み特徴ベクトルを、予測結果
Figure 0007440420000005
を予測するのに使う。
共同トレーニング中、トレーナーネットワークの損失関数Lθ(.)と射影損失関数LP(.)の組合せは、射影ネットワークがトレーニング済みネットワークを模倣し、そこから学習し得るように最適化され得る。図16に示すように、ラベル付き損失
Figure 0007440420000006
もトレーニングに使われる。ラベル付き損失
Figure 0007440420000007
は、予測結果
Figure 0007440420000008
とグランドトゥルース
Figure 0007440420000009
との間の比較に基づき得る。
学習が完了されると、変換関数P(.)および対応する、射影ネットワークからのトレーニング済みの重みWp、Bpが、デバイスにプッシュされ得るコンパクトモデルを作成するために抽出される。推論時、コンパクトモデルおよび対応する演算は次いで、所与の入力
Figure 0007440420000010
に適用されて、予測
Figure 0007440420000011
を生成し得る。
より詳細には、ニューラルネットワークは、入力
Figure 0007440420000012
から出力yiへのマッピングを学習する非線形モデルのクラスであり、ここで、
Figure 0007440420000013
は、(再帰的ニューラルネットワークのケースでは)入力特徴ベクトルまたはシーケンスを表し、yiは、分類タスク、予測されるシーケンス、回帰値などのための出力カテゴリである。通常、これらのネットワークは、レイヤのペアの間の接続をもつ、隠れユニットまたはニューロンの複数のレイヤからなる。たとえば、完全接続されたフィードフォワードニューラルネットワークでは、トレーニングされる、重み付き接続またはネットワークパラメータの数はO(n2)であり、ここで、nは、レイヤごとの隠れユニットの数である。他のモデルが、同様に入力を受信し、出力を生成し得る。
本開示は、コンパクトオンデバイスモデルを推論用にトレーニングするための新たな目的および同時最適化フレームワークを提供する。図16Aは、トレーナーネットワーク用のフィードフォワードNNを使うニューラル射影ネットワークアーキテクチャを示す。結合されたネットワークは、組み合わされた損失関数
Figure 0007440420000014
を最適化するように共同トレーニングされ、ここで、Lθ(.)、Lp(.)および
Figure 0007440420000015
は、以下で定義される2つのモデルに対応する損失関数である。
Figure 0007440420000016
Nは、データセット中のトレーニングインスタンスの数を示し、
Figure 0007440420000017
は、フィードフォワードネットワーク中の入力特徴ベクトルまたはRNN中のシーケンス入力を表し、
Figure 0007440420000018
は、ネットワークトレーニングに使われるグランドトゥルース出力クラスを指す。
Figure 0007440420000019
は、
Figure 0007440420000020
を出力予測yiに変換する、トレーナーネットワーク中の隠れユニットのパラメータ化表現を表す。同様に、
Figure 0007440420000021
は、入力を、対応する予測
Figure 0007440420000022
に変換する射影ネットワークパラメータを表す。Softmax活性化が、両方のネットワークの最終レイヤにおいて適用されて、予測yiおよび
Figure 0007440420000023
を計算することができる。Dは、損失関数において使われる予測誤差を測定する距離関数を示す。これは、3つの部分、すなわち、トレーナー予測誤差、射影シミュレーション誤差および射影予測誤差に分解することができる。第1のものを削減すると、より良好なトレーナーネットワークにつながり、後者を減少すると、より単純であるが、ほぼ等価な予測できる容量をもつ、より良好な射影ネットワークが学習される。実際には、クロスエントロピーがD(.)に対して使われ得る。式2中の射影Lpに対して、D(.)を最適化するために、蒸留手法に従えばよく、というのは、ラベル
Figure 0007440420000024
に対してのみトレーニング済みのモデルよりも良好な一般化能力をもたらすことが示されているからである。λ1、λ2、およびλ3は、これらの異なるタイプの誤差の間のトレードオフに影響するハイパーパラメータである。これらは、小さいheldout開発セットに対して調整され、一例として、実験では、λ1=1.0、λ2=0.1、λ3=1.0に設定された。
トレーナーネットワーク(θ)。トレーナーモデルは、その選択が柔軟であってよく、タスクに依存する完全ニューラルネットワーク(フィードフォワード、RNNまたはCNN)であってよい。図16Aは、フィードフォワードネットワークを使うトレーナーを示すが、これは、LSTM RNNまたはディープニューラルネットワークなどの他のモデルと交換されてよい。図に示すネットワークに対して、レイヤlk+1中のhθ(.)のための活性化は、以下のように計算することができ、
Figure 0007440420000025
上式で、σは、最後を除く各レイヤにおいて適用されるReLU活性化関数であり、Aは、隠れユニットについての計算された活性化値を示す。
このネットワークにおける重み/バイアスパラメータWθ、Bθの数は、任意に大きくてよく、というのは、CPUまたはGPUとの高性能分散コンピューティングを使って効果的に行われ得るトレーニング段階中に使われるだけだからである。
射影ネットワーク(p)。射影モデルは、推論のためにデバイス上で直接実施される、計算効率的な演算のセットを符号化する単純なネットワークである。モデル自体が、効率的「射影」関数
Figure 0007440420000026
のセットを定義し、この関数セットは、各入力インスタンス
Figure 0007440420000027
を、異なる空間
Figure 0007440420000028
に射影し、モデル自体が次いで、この空間中で学習を実施して、対応する出力
Figure 0007440420000029
にマップする。いくつかの演算を用いる単純化射影ネットワークが、図16Aに示すように使われる。1つの例示的射影ネットワークが示されている。他の構造が使われてもよい(たとえば、追加レイヤなど)。入力
Figure 0007440420000030
は、一連のT個の射影関数
Figure 0007440420000031
、...、
Figure 0007440420000032
を使って変換され、これらには次いで、活性化の単一のレイヤが続き得る。
Figure 0007440420000033
射影変換は、あらかじめ計算されたパラメータ化関数を使い、すなわち、それらは、学習プロセス中にトレーニングされるのではなく、それらの出力は、後続演算のための隠れユニットを形成するように連結される。トレーニング中、より単純な射影ネットワークは、所与のタスク用に、より予測できる特定の射影演算
Figure 0007440420000034
を(活性化により)選び、適用することを学習する。射影の非線形結合を遂行するために、このネットワーク中のビットレイヤに接続された追加レイヤをスタックすることが可能である。
射影モデルは、トレーナーと共同トレーニングされてよく、はるかに多くのパラメータを、したがってより予測できる容量を有する完全トレーナーネットワークによって行われる予測を模倣することを学習する。学習が完了されると、変換関数
Figure 0007440420000035
および対応する、射影ネットワークからのトレーニング済み重みWp、Bpが、抽出されて、デバイスにプッシュされ得る軽量モデルを作成する。推論時、軽量モデルおよび対応する演算は次いで、所与の入力
Figure 0007440420000036
に適用されて、予測
Figure 0007440420000037
を生成することができる。
射影行列
Figure 0007440420000038
のタイプの選択ならびにセットアップ中の射影された空間
Figure 0007440420000039
の表現は、計算コストおよびモデルサイズに対して直接的な効果を有する。効率的なランダム化射影方法が、局所性鋭敏型ハッシュ(LSH)の修正バージョンを使って活用されて、
Figure 0007440420000040
を定義する。併せて、ビット表現1dが、
Figure 0007440420000041
のために使われ、すなわち、ネットワークの隠れユニット自体が、射影されたビットベクトルを使って表される。これは、パラメータの数とサイズの両方において、完全ネットワークと比較して、極端により低いメモリフットプリントをもたらす。この手法のいくつかのキープロパティは、以下を含む。
スケーリング機構として、より小さい語彙サイズに頼る、典型的な機械学習方法とは異なり、プリセット語彙または特徴空間に同意するための要件はない。たとえば、LSTM RNNモデルが通常、刈り込みを適用し、より小さい、固定サイズの語彙を入力符号化ステップにおいて使って、モデルの複雑さを削減する。
提案された学習方法は、大きいデータサイズおよび高い次元空間へ効率的にスケーリングする。これは、疎な高次元特徴空間を伴う自然言語アプリケーションに特に有用である。密な特徴空間(たとえば、画像ピクセル)に対して、完全接続されたレイヤ(または畳み込みさえも)のような既存演算が、多数のパラメータに依拠せずに、予測のために効率的に近似され得る。そのような演算は、メモリ要件を制約しながら、より複雑な射影ネットワークをもたらすように、射影関数とともに適用されてもよい。
Figure 0007440420000042
の計算は、トレーニングデータサイズに依存しなくてよい。
Figure 0007440420000043
が、デバイスにおける推論のためにオンザフライで計算するのに効率的であり得ることが保証され得る。
次に、本開示は、射影方法および関連付けられた演算についてより詳しく記載する。
局所性鋭敏射影ネットワーク:前述した射影ネットワークは、変換関数のセット
Figure 0007440420000044
に依拠し、この関数セットは、入力
Figure 0007440420000045
を、隠れユニット表現
Figure 0007440420000046
の中に射影する。式4において概説した射影演算は、異なるタイプの関数を使って実施され得る。1つの可能性は、word2vecまたは同様の技法およびモデル
Figure 0007440420000047
を、ベクトル平均化などの集約演算が続く、
Figure 0007440420000048
の中の特徴のための埋め込みルックアップとして使って事前トレーニングされた特徴埋め込み行列を使うことである。ただし、これは、埋め込み行列を記憶することを求め、これにより、メモリがさらに複雑になる。
そうではなく、効率的なランダム化射影方法が、このステップに利用されてよい。局所性鋭敏型ハッシュ(LSH)が、基底射影演算をモデル化するのに使われ得る。LSHは通常、クラスタ化のようなアプリケーションのための次元性削減技法として使われる。射影ネット内でLSHを使うための動機づけは、それによって、同様の入力
Figure 0007440420000049
または中間ネットワークレイヤを、メトリック空間中で近くにある隠れユニットベクトルの中に射影できるようになることである。これにより、入力の変換ならびにインスタンスの数または実際のデータベクトルの次元性(すなわち、全体的特徴もしくは語彙サイズ)ではなく、データの固有次元性(すなわち、観察される特徴)のみに依存する、効率的およびコンパクトネットワーク表現の学習が可能になる。これは、
Figure 0007440420000050
についてのバイナリハッシュ関数を用いて遂行され得る。
定理1:
Figure 0007440420000051
に対する球対称分散から引き出される
Figure 0007440420000052
Figure 0007440420000053
およびベクトル
Figure 0007440420000054
について、ベクトルの間の
Figure 0007440420000055
の内積と角度の符号の間の関係は、以下のように表すことができる。
Figure 0007440420000056
このプロパティは、単純なジオメトリから成り立ち、すなわち、射影行列
Figure 0007440420000057
からの行ベクトルが、
Figure 0007440420000058
および
Figure 0007440420000059
の方向のユニットベクトルの間の角の内側にあるときはいつでも、それらは、逆符号をもつことになる。
Figure 0007440420000060
を含む面に直交するどの射影ベクトルにも、効果はない。内積は、近くにあるパラメータ表現、すなわち
Figure 0007440420000061
を判断するのに使うことができるので、したがって、ネットワーク隠れ活性化ユニットベクトルは、その符号に関してベクトルの署名を使うことによって効率的にモデル化され、記憶され得る。
射影の計算:上記プロパティに続いて、バイナリハッシュ化が繰り返し使われてよく、
Figure 0007440420000062
の中の射影ベクトルが、入力
Figure 0007440420000063
を、
Figure 0007440420000064
によって示されるバイナリハッシュ表現に変換するために適用されてよく、ここで、
Figure 0007440420000065
である。この結果、dビットのベクトル表現が生じ、1ビットが、各射影行
Figure 0007440420000066
に対応する。
射影行列
Figure 0007440420000067
は、トレーニングおよび推論に先立って固定されてよい。ランダム射影ベクトル
Figure 0007440420000068
の明示的記憶は、ベクトルが、乱数ジェネレータを起動するよりも、ハッシュ関数を使ってオンザフライで計算され得るので、必要とされないことに留意されたい。さらに、これは、高次元データに対して法外に大きい場合がある全体的特徴サイズではなく、観察される特徴サイズが線形である射影演算の実施もできるようにし、そうすることによって、メモリと計算コストの両方を節約する。バイナリ表現は、射影ネットワークパラメータのための大幅にコンパクトな表現をもたらし、そのことが、トレーナーネットワークと比較して、モデルサイズをかなり削減することになるので、重要であり得る。
量子化および重み共有のような他の技法が、メモリ削減においてさらなる利得を提供するために、この方法の上にスタックされてよいことに留意されたい。
射影パラメータ:実際には、T個の異なる射影関数
Figure 0007440420000069
が、図16Aに示すように利用されてよく、各々が、射影された活性化ユニット
Figure 0007440420000070
を式4において形成するように連結され得るdビットのベクトルを生じる。Tおよびdは、
Figure 0007440420000071
について指定される射影ネットワークパラメータ構成に依存して変わり、予測品質とモデルサイズとの間でトレードオフするように調整され得る。
トレーニングおよび推論:コンパクトビット単位は、前述した射影ネットワークを表すのに使われ得る。トレーニング中、このネットワークは、同じ方向の射影されたビット空間
Figure 0007440420000072
中で互いに近くにある点についての勾配を動かすことを学習する。勾配の方向および規模は、パラメータのより大きいセットおよびより複雑なアーキテクチャへのアクセスを有するトレーナーネットワークによって判断され得る。
2つのネットワークは、逆伝搬を使って共同でトレーニングされる。同時最適化目的にかかわらず、トレーニングは、高性能CPUまたはGPUにおける分散コンピューティングを用いて、確率的勾配降下とともに効率的に進行し得る。
トレーニングされると、2つのネットワークは、減結合され、異なる目的に役立つ。トレーナーモデルは、標準モデルが使われ得るところであればどこでも展開することができる。変換関数
Figure 0007440420000073
に伴う、より単純な射影ネットワークモデル重みが、デバイスにプッシュされ得る軽量モデルを作成するために抽出される。このモデルは、式4、5における同じ演算を新規入力
Figure 0007440420000074
に適用することによって、推論時に、直接「オン」デバイスで使われ、予測
Figure 0007440420000075
を生成する。
ビットベクトル表現
Figure 0007440420000076
に対する代替として、射影行列
Figure 0007440420000077
が代わりに、射影ネットワーク中の隠れユニットの疎表現を生成するのに使われてよい。各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 機械学習ライブラリ
Figure 0007440420000078
Figure 0007440420000079
Figure 0007440420000080
Figure 0007440420000081
Figure 0007440420000082
Figure 0007440420000083
Figure 0007440420000084
Figure 0007440420000085
Figure 0007440420000086
Figure 0007440420000087
Figure 0007440420000088
Figure 0007440420000089
Figure 0007440420000090
Figure 0007440420000091
Figure 0007440420000092
Figure 0007440420000093
Figure 0007440420000094
Figure 0007440420000095
Figure 0007440420000096
Figure 0007440420000097
Figure 0007440420000098
Figure 0007440420000099
Figure 0007440420000100
Figure 0007440420000101
Figure 0007440420000102
Figure 0007440420000103
Figure 0007440420000104
Figure 0007440420000105
Figure 0007440420000106
Figure 0007440420000107
Figure 0007440420000108
Figure 0007440420000109
Figure 0007440420000110
Figure 0007440420000111
Figure 0007440420000112
Figure 0007440420000113
Figure 0007440420000114
Figure 0007440420000115
Figure 0007440420000116
Figure 0007440420000117
Figure 0007440420000118
Figure 0007440420000119
Figure 0007440420000120
Figure 0007440420000121
Figure 0007440420000122
Figure 0007440420000123
Figure 0007440420000124
Figure 0007440420000125
Figure 0007440420000126
Figure 0007440420000127
Figure 0007440420000128
Figure 0007440420000129

Claims (16)

1つまたは複数のプロセッサと、
1つまたは複数の非一時的コンピュータ可読記録媒体と
を備えるモバイルコンピューティングデバイスであって、前記1つまたは複数の非一時的コンピュータ可読記録媒体は、
コンピュータアプリケーションと、
機械知能ソフトウェア開発キットと
を記憶し、前記機械知能ソフトウェア開発キットは、
1つまたは複数の機械学習済みモデルおよび機械学習ライブラリを記憶することと、
アプリケーションプログラミングインターフェースを使って前記コンピュータアプリケーションと通信して、前記コンピュータアプリケーションから入力データを受信することと、
前記1つまたは複数の機械学習済みモデルをオンデバイスで稼働させるのに前記機械学習ライブラリを使って、前記入力データに少なくとも部分的に基づいて推論を生成することであって、
前記機械学習ライブラリは、前記モバイルコンピューティングデバイス上で稼働させるために設計された軽量機械学習ライブラリを含む、生成することと、
前記アプリケーションプログラミングインターフェースを使って前記コンピュータアプリケーションと通信して、前記コンピュータアプリケーションに前記推論を提供することと
を行うように構成され、
前記機械知能ソフトウェア開発キットは、
オンデバイスデータロギングおよびオンデバイスモデルトレーニングを実施するようにさらに構成される、モバイルコンピューティングデバイス。
前記機械知能ソフトウェア開発キットは、前記コンピュータアプリケーションに含まれ、その一部を形成する、請求項1に記載のモバイルコンピューティングデバイス。
前記1つまたは複数の機械学習済みモデルは、クラウドベースの記憶システムから前記モバイルコンピューティングデバイスによって受信された1つまたは複数のカスタム機械学習済みモデルを含み、
前記1つまたは複数のカスタム機械学習済みモデルは、前記コンピュータアプリケーションに関連付けられたカスタムデータに少なくとも部分的に基づいて、クラウドベースのモデルトレーニングによってトレーニングされている、請求項2に記載のモバイルコンピューティングデバイス。
前記機械知能ソフトウェア開発キットは、前記コンピュータアプリケーションに関連付けられたアプリケーションプロセス内で稼動する、請求項2に記載のモバイルコンピューティングデバイス。
前記機械知能ソフトウェア開発キットは、
前記コンピュータアプリケーションの再インストールを要求することなく、
クラウドベースの記憶システムから、前記1つまたは複数の機械学習済みモデルのうちの少なくとも1つの、更新されたバージョンを受信することと、
前記1つまたは複数の機械学習済みモデルのうちの前記少なくとも1つの、既存のバージョンを、前記1つまたは複数の機械学習済みモデルのうちの前記少なくとも1つの、前記更新されたバージョンで置き換えることと、
前記既存のバージョンを前記更新されたバージョンで置き換えた後、前記1つまたは複数の機械学習済みモデルのうちの前記少なくとも1つの、前記更新されたバージョンをオンデバイスで稼働させるのに前記機械学習ライブラリを使って、追加入力データに少なくとも部分的に基づいて少なくとも1つの追加推論を生成することと
を行うようにさらに構成される、請求項2に記載のモバイルコンピューティングデバイス。
前記機械知能ソフトウェア開発キットは、前記コンピュータアプリケーションとは別個のファーストパーティサポートアプリケーションに含まれる、請求項1に記載のモバイルコンピューティングデバイス。
前記機械知能ソフトウェア開発キットは、前記コンピュータアプリケーションに関連付けられた、カスタマイズされたスケジューリング規則のセットに従って、前記オンデバイスモデルトレーニングを実施するように構成される、請求項1に記載のモバイルコンピューティングデバイス。
前記機械知能ソフトウェア開発キットは、前記1つまたは複数の機械学習済みモデルのオンデバイス性能監視を実施するように構成される、請求項1に記載のモバイルコンピューティングデバイス。
前記機械知能ソフトウェア開発キットは、
推論が、
前記機械知能ソフトウェア開発キットに記憶された前記1つまたは複数の機械学習済みモデルを使って発生するか、それとも
クラウドベースのコンピューティングシステムに記憶された前記1つまたは複数の機械学習済みモデルの1つまたは複数のクラウドベースのバージョンを使って発生するか
を指定する規則のセットを実装するように構成される、請求項1に記載のモバイルコンピューティングデバイス。
コンピュータアプリケーションを記憶する1つまたは複数の非一時的コンピュータ可読記録媒体であって、前記コンピュータアプリケーションは、前記コンピュータアプリケーション上に含まれ、その一部を形成する機械知能ソフトウェア開発キットを含み、前記機械知能ソフトウェア開発キットは、
アプリケーションプログラミングインターフェースを使って前記コンピュータアプリケーションと通信して、前記コンピュータアプリケーションから入力データを受信することと、
1つまたは複数の機械学習済みモデルをオンデバイスで稼働させるのに機械学習ライブラリを使って、前記入力データに少なくとも部分的に基づいて推論を生成することであって、
前記機械学習ライブラリは、モバイルコンピューティングデバイス上で稼働させるために設計された軽量機械学習ライブラリを含む、生成することと、
前記アプリケーションプログラミングインターフェースを使って前記コンピュータアプリケーションと通信して、前記コンピュータアプリケーションに前記推論を提供することと
を行うように構成され、
前記機械知能ソフトウェア開発キットは、
オンデバイスデータロギングおよびオンデバイスモデルトレーニングを実施するようにさらに構成される、1つまたは複数の非一時的コンピュータ可読記録媒体。
前記1つまたは複数の機械学習済みモデルは、クラウドベースの記憶システムから前記モバイルコンピューティングデバイスによって受信された1つまたは複数のカスタム機械学習済みモデルを含み、
前記1つまたは複数のカスタム機械学習済みモデルは、前記コンピュータアプリケーションに関連付けられたカスタムデータに少なくとも部分的に基づいて、クラウドベースのモデルトレーニングによってトレーニングされている、請求項10に記載の1つまたは複数の非一時的コンピュータ可読記録媒体。
前記1つまたは複数の機械学習済みモデルは、1つまたは複数のファーストパーティ機械学習済みモデルを含む、請求項10に記載の1つまたは複数の非一時的コンピュータ可読記録媒体。
前記機械知能ソフトウェア開発キットは、前記コンピュータアプリケーションに関連付けられたアプリケーションプロセス内で稼動する、請求項10に記載の1つまたは複数の非一時的コンピュータ可読記録媒体。
前記機械知能ソフトウェア開発キットは、
前記コンピュータアプリケーションの再インストールを要求することなく、
クラウドベースの記憶システムから、前記1つまたは複数の機械学習済みモデルのうちの少なくとも1つの、更新されたバージョンを受信することと、
前記1つまたは複数の機械学習済みモデルのうちの前記少なくとも1つの、既存のバージョンを、前記1つまたは複数の機械学習済みモデルのうちの前記少なくとも1つの、前記更新されたバージョンで置き換えることと、
前記既存のバージョンを前記更新されたバージョンで置き換えた後、前記1つまたは複数の機械学習済みモデルのうちの前記少なくとも1つの、前記更新されたバージョンをオンデバイスで稼働させるのに前記機械学習ライブラリを使って、追加入力データに少なくとも部分的に基づいて少なくとも1つの追加推論を生成することと
を行うようにさらに構成される、請求項10に記載の1つまたは複数の非一時的コンピュータ可読記録媒体。
コンピュータ実装方法であって、
モバイルコンピューティングデバイスによって記憶されたコンピュータアプリケーション中に含まれる機械知能ソフトウェア開発キットによって、アプリケーションプログラミングインターフェースを介して前記コンピュータアプリケーションから入力データを受信するステップと、
前記入力データの受信に応答して、前記機械知能ソフトウェア開発キットによって、機械学習ライブラリを介して、1つまたは複数の機械学習済みモデルを前記モバイルコンピューティングデバイス上で稼働させて、前記入力データに少なくとも部分的に基づいて推論を生成するステップであって、
前記機械学習ライブラリは、前記モバイルコンピューティングデバイス上で稼働させるために設計された軽量機械学習ライブラリを含む、ステップと、
前記機械知能ソフトウェア開発キットによって、前記アプリケーションプログラミングインターフェースを介して前記推論を前記コンピュータアプリケーションに提供するステップと
を含み、
前記機械知能ソフトウェア開発キットによって、オンデバイスデータロギングおよびオンデバイスモデルトレーニングを実施するステップをさらに含む、コンピュータ実装方法。
前記機械知能ソフトウェア開発キットによって、前記機械学習ライブラリを介して、前記1つまたは複数の機械学習済みモデルを前記モバイルコンピューティングデバイス上で稼働させるステップは、
ファーストパーティサポートアプリケーションが前記機械学習ライブラリを使って前記1つまたは複数の機械学習済みモデルを稼働させるように、前記機械知能ソフトウェア開発キットによって、前記コンピュータアプリケーションとは別個の前記ファーストパーティサポートアプリケーションへの呼出しを実施するステップを含む、請求項15に記載のコンピュータ実装方法。
JP2020549622A 2018-05-07 2018-08-21 包括的機械学習サービスを提供するアプリケーション開発プラットフォームおよびソフトウェア開発キット Active JP7440420B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201862667959P 2018-05-07 2018-05-07
US62/667,959 2018-05-07
PCT/US2018/047249 WO2019216938A1 (en) 2018-05-07 2018-08-21 Application development platform and software development kits that provide comprehensive machine learning services

Publications (2)

Publication Number Publication Date
JP2021521505A JP2021521505A (ja) 2021-08-26
JP7440420B2 true JP7440420B2 (ja) 2024-02-28

Family

ID=63638345

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2020549622A Active JP7440420B2 (ja) 2018-05-07 2018-08-21 包括的機械学習サービスを提供するアプリケーション開発プラットフォームおよびソフトウェア開発キット

Country Status (5)

Country Link
US (1) US20220091837A1 (ja)
EP (1) EP3752962A1 (ja)
JP (1) JP7440420B2 (ja)
CN (1) CN112106081A (ja)
WO (1) WO2019216938A1 (ja)

Families Citing this family (55)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10678244B2 (en) 2017-03-23 2020-06-09 Tesla, Inc. Data synthesis for autonomous control systems
US11409692B2 (en) 2017-07-24 2022-08-09 Tesla, Inc. Vector computational unit
US10671349B2 (en) 2017-07-24 2020-06-02 Tesla, Inc. Accelerated mathematical engine
US11893393B2 (en) 2017-07-24 2024-02-06 Tesla, Inc. Computational array microprocessor system with hardware arbiter managing memory requests
US11157441B2 (en) 2017-07-24 2021-10-26 Tesla, Inc. Computational array microprocessor system using non-consecutive data formatting
US11561791B2 (en) 2018-02-01 2023-01-24 Tesla, Inc. Vector computational unit receiving data elements in parallel from a last row of a computational array
US11215999B2 (en) 2018-06-20 2022-01-04 Tesla, Inc. Data pipeline and deep learning system for autonomous driving
US11361457B2 (en) 2018-07-20 2022-06-14 Tesla, Inc. Annotation cross-labeling for autonomous control systems
US11636333B2 (en) 2018-07-26 2023-04-25 Tesla, Inc. Optimizing neural network structures for embedded systems
CN110826721A (zh) * 2018-08-09 2020-02-21 松下电器(美国)知识产权公司 信息处理方法及信息处理***
CN111309486B (zh) * 2018-08-10 2024-01-12 中科寒武纪科技股份有限公司 转换方法、装置、计算机设备和存储介质
US11562231B2 (en) 2018-09-03 2023-01-24 Tesla, Inc. Neural networks for embedded devices
SG11202103493QA (en) 2018-10-11 2021-05-28 Tesla Inc Systems and methods for training machine models with augmented data
US11196678B2 (en) 2018-10-25 2021-12-07 Tesla, Inc. QOS manager for system on a chip communications
US11816585B2 (en) 2018-12-03 2023-11-14 Tesla, Inc. Machine learning models operating at different frequencies for autonomous vehicles
US11537811B2 (en) 2018-12-04 2022-12-27 Tesla, Inc. Enhanced object detection for autonomous vehicles based on field view
US11610117B2 (en) 2018-12-27 2023-03-21 Tesla, Inc. System and method for adapting a neural network model on a hardware platform
US10997461B2 (en) 2019-02-01 2021-05-04 Tesla, Inc. Generating ground truth for machine learning from time series elements
US11150664B2 (en) 2019-02-01 2021-10-19 Tesla, Inc. Predicting three-dimensional features for autonomous driving
US11567514B2 (en) 2019-02-11 2023-01-31 Tesla, Inc. Autonomous and user controlled vehicle summon to a target
US10956755B2 (en) 2019-02-19 2021-03-23 Tesla, Inc. Estimating object properties using visual image data
US11443132B2 (en) * 2019-03-06 2022-09-13 International Business Machines Corporation Continuously improve recognition or prediction accuracy using a machine learning model to train and manage an edge application
WO2020242047A1 (en) * 2019-05-30 2020-12-03 Samsung Electronics Co., Ltd. Method and apparatus for acquiring virtual object data in augmented reality
JP2020203546A (ja) * 2019-06-14 2020-12-24 株式会社シマノ 検出装置、検出方法、生成方法、コンピュータプログラム、および記憶媒体
US11829850B2 (en) * 2019-07-30 2023-11-28 RedCritter Corp. Reducing complexity of implementing machine learning models in software systems
KR20190103090A (ko) * 2019-08-15 2019-09-04 엘지전자 주식회사 연합학습(Federated learning)을 통한 단말의 POI 데이터를 생성하는 모델의 학습방법 및 이를 위한 장치
US11599813B1 (en) * 2019-09-26 2023-03-07 Amazon Technologies, Inc. Interactive workflow generation for machine learning lifecycle management
US11704571B2 (en) * 2019-10-11 2023-07-18 Qualcomm Incorporated Learned threshold pruning for deep neural networks
WO2021072713A1 (en) * 2019-10-17 2021-04-22 Shanghai United Imaging Healthcare Co., Ltd. System and method for radiation therapy and immobilizing device thereof
US11373106B2 (en) * 2019-11-21 2022-06-28 Fractal Analytics Private Limited System and method for detecting friction in websites
US11551083B2 (en) 2019-12-17 2023-01-10 Soundhound, Inc. Neural network training from private data
US11822913B2 (en) 2019-12-20 2023-11-21 UiPath, Inc. Dynamic artificial intelligence / machine learning model update, or retrain and update, in digital processes at runtime
CN111491018B (zh) * 2020-04-07 2022-06-10 中国建设银行股份有限公司 模型下载方法及***
US11455237B2 (en) * 2020-06-01 2022-09-27 Agora Lab, Inc. Highly scalable system and method for automated SDK testing
CN111901294A (zh) * 2020-06-09 2020-11-06 北京迈格威科技有限公司 一种构建在线机器学习项目的方法及机器学习***
JP7041374B2 (ja) 2020-09-04 2022-03-24 ダイキン工業株式会社 生成方法、プログラム、情報処理装置、情報処理方法、及び学習済みモデル
JP6997401B1 (ja) 2020-09-04 2022-01-17 ダイキン工業株式会社 生成方法、プログラム、情報処理装置、情報処理方法、及び学習済みモデル
CN112015470B (zh) * 2020-09-09 2022-02-01 平安科技(深圳)有限公司 模型部署方法、装置、设备及存储介质
US20220076079A1 (en) * 2020-09-09 2022-03-10 International Business Machines Corporation Distributed machine learning scoring
JP7423484B2 (ja) * 2020-09-16 2024-01-29 株式会社東芝 学習装置、方法及びプログラム
CN112132676B (zh) * 2020-09-16 2021-07-09 建信金融科技有限责任公司 联合训练目标模型的贡献度的确定方法、装置和终端设备
CN114372586A (zh) * 2020-10-14 2022-04-19 新智数字科技有限公司 基于联合学习的物联网数据服务方法、装置、设备和介质
JP7453895B2 (ja) * 2020-11-11 2024-03-21 株式会社日立製作所 探索条件提示装置、探索条件提示方法、及び探索条件提示プログラム
CN112698848A (zh) * 2020-12-31 2021-04-23 Oppo广东移动通信有限公司 机器学习模型的下载方法、装置、终端及存储介质
CN114844915A (zh) * 2021-01-14 2022-08-02 新智数字科技有限公司 一种基于联合训练全流程框架的模型训练方法
CN112925528B (zh) * 2021-01-28 2024-06-04 北京达佳互联信息技术有限公司 数据传输方法、装置、电子设备及存储介质
US11811604B2 (en) 2021-03-17 2023-11-07 Stripe, Inc. Cross-platform contract validation
KR102461998B1 (ko) * 2021-11-15 2022-11-04 주식회사 에너자이(ENERZAi) 신경망 모델의 경량화 방법, 신경망 모델의 경량화 장치, 및 신경망 모델의 경량화 시스템
KR102461997B1 (ko) * 2021-11-15 2022-11-04 주식회사 에너자이(ENERZAi) 신경망 모델의 경량화 방법, 신경망 모델의 경량화 장치, 및 신경망 모델의 경량화 시스템
KR102644593B1 (ko) * 2021-11-23 2024-03-07 한국기술교육대학교 산학협력단 지능형 디바이스 개발을 위한 ai 분화 기반의 하드웨어 정보에 최적의 지능형 소프트웨어 개발도구
JP7112802B1 (ja) * 2022-04-27 2022-08-04 望 窪田 学習モデルの軽量化
CN114911492B (zh) * 2022-05-17 2024-03-08 北京百度网讯科技有限公司 推理服务部署方法、装置、设备以及存储介质
US11776227B1 (en) * 2022-09-13 2023-10-03 Katmai Tech Inc. Avatar background alteration
KR102556334B1 (ko) 2023-02-27 2023-07-17 주식회사 노타 인공지능 기반의 모델의 벤치마크 결과를 제공하기 위한 방법 및 디바이스
CN116483328B (zh) * 2023-06-19 2023-09-12 广州信位通讯科技有限公司 在ThreadX嵌入式软件平台上运行鸿蒙APP的***及方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2017524182A (ja) 2014-08-26 2017-08-24 グーグル インコーポレイテッド グローバルモデルからの局所化された学習
WO2017219991A1 (zh) 2016-06-23 2017-12-28 华为技术有限公司 适用于模式识别的模型的优化方法、装置及终端设备

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002091477A (ja) * 2000-09-14 2002-03-27 Mitsubishi Electric Corp 音声認識システム、音声認識装置、音響モデル管理サーバ、言語モデル管理サーバ、音声認識方法及び音声認識プログラムを記録したコンピュータ読み取り可能な記録媒体
EP2759093A4 (en) * 2011-09-19 2015-07-15 Tata Consultancy Services Ltd CALCULATION PLATFORM FOR DEVELOPMENT AND USE OF SENSOR-BASED APPLICATIONS AND SERVICES
US8510238B1 (en) * 2012-06-22 2013-08-13 Google, Inc. Method to predict session duration on mobile devices using native machine learning
CN103473562B (zh) * 2013-09-18 2017-01-11 王碧春 特定人体动作的自动训练和识别***
CA2953969C (en) * 2014-06-30 2023-08-01 Amazon Technologies, Inc. Interactive interfaces for machine learning model evaluations
US10713594B2 (en) * 2015-03-20 2020-07-14 Salesforce.Com, Inc. Systems, methods, and apparatuses for implementing machine learning model training and deployment with a rollback mechanism
US9923779B2 (en) * 2015-07-20 2018-03-20 Schweitzer Engineering Laboratories, Inc. Configuration of a software defined network
US10332028B2 (en) * 2015-08-25 2019-06-25 Qualcomm Incorporated Method for improving performance of a trained machine learning model
WO2017059012A1 (en) * 2015-09-29 2017-04-06 Skytree, Inc. Exporting a transformation chain including endpoint of model for prediction
CN106706677B (zh) * 2015-11-18 2019-09-03 同方威视技术股份有限公司 检查货物的方法和***
CN105975861A (zh) * 2016-05-27 2016-09-28 百度在线网络技术(北京)有限公司 应用检测方法和装置
CN106548210B (zh) * 2016-10-31 2021-02-05 腾讯科技(深圳)有限公司 基于机器学习模型训练的信贷用户分类方法及装置
US20180137219A1 (en) * 2016-11-14 2018-05-17 General Electric Company Feature selection and feature synthesis methods for predictive modeling in a twinned physical system
US11544743B2 (en) * 2017-10-16 2023-01-03 Adobe Inc. Digital content control based on shared machine learning properties
US10448267B2 (en) * 2017-11-03 2019-10-15 Salesforce.Com, Inc. Incorporation of expert knowledge into machine learning based wireless optimization framework
US10831519B2 (en) * 2017-11-22 2020-11-10 Amazon Technologies, Inc. Packaging and deploying algorithms for flexible machine learning
US11170309B1 (en) * 2017-11-22 2021-11-09 Amazon Technologies, Inc. System for routing machine learning model inferences
US10338913B2 (en) * 2017-12-05 2019-07-02 Archemy, Inc. Active adaptation of networked compute devices using vetted reusable software components
US10402731B1 (en) * 2017-12-15 2019-09-03 Jasmin Cosic Machine learning for computer generated objects and/or applications
US10769056B2 (en) * 2018-02-26 2020-09-08 The Ultimate Software Group, Inc. System for autonomously testing a computer system

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2017524182A (ja) 2014-08-26 2017-08-24 グーグル インコーポレイテッド グローバルモデルからの局所化された学習
WO2017219991A1 (zh) 2016-06-23 2017-12-28 华为技术有限公司 适用于模式识别的模型的优化方法、装置及终端设备

Non-Patent Citations (11)

* Cited by examiner, † Cited by third party
Title
かわさきしんじ,AIをサポートする「Windows ML」APIと新しい「WebView」の登場で見えてくるもの(1/2ページ),@IT[オンライン],アイティメディア株式会社,2018年3月13日[検索日2022年1月28日],インターネット<URL:https://atmarkit.itmedia.co.jp/ait/articles/1803/13/news033.html>
中田 敦,シリコンバレーNextレポート「AIファースト」に突き進む米グーグル,日経コンピュータ、日経BP社,2017年6月8日,2017年6月8日,No.940,第8頁
佐藤 聖,特集 もくもく自習人工知能 第1部第3章 使えそうなAIライブラリを知る,Interface,CQ出版株式会社,2018年5月1日,Vol.44,No.5,第56~58頁
北原 武(外3名),ニューラルネットワークを用いた日次トラヒック変動の上限値予測 - 手法提案及びその評価 -,電子情報通信学会技術研究報告,社団法人電子情報通信学会,2006年2月23日,Vol.105,No.628,第271~274頁
友近 圭汰、TensorFlow Lite スマートフォンで「AI」活用,I/O(アイオー),株式会社工学社,2018年2月1日,Vol.43,No.2,第97~99頁
月刊CAT&CGマガジン,株式会社エクスナレッジ,2006年10月1日,Vol.8,No.10,第22~25頁
月本 洋(外1名),やさしい確率・情報・データマイニング,森北出版株式会社,2013年11月22日,第2版,第84~86頁
深川 岳志,キホンからオンラインソフト 第3回 ブイビーなんとかにドットネットほにゃらら,日経パソコン,日経BP社,2009年2月9日,No.571,第105~108頁
石川 洋資(外1名),Swift実践入門,株式会社技術評論社,2017年2月21日,初版,第393~395頁
蒲生 睦男,改訂2版 中学生でもわかる Androidアプリ開発講座,株式会社シーアンドアール研究所、2015年3月2日,第15~18頁
金城 俊哉,Visual C# 2013 パーフェクトマスター,株式会社秀和システム,2013年12月23日,第1版,第34~39頁

Also Published As

Publication number Publication date
WO2019216938A1 (en) 2019-11-14
EP3752962A1 (en) 2020-12-23
US20220091837A1 (en) 2022-03-24
CN112106081A (zh) 2020-12-18
JP2021521505A (ja) 2021-08-26

Similar Documents

Publication Publication Date Title
JP7440420B2 (ja) 包括的機械学習サービスを提供するアプリケーション開発プラットフォームおよびソフトウェア開発キット
US20220374719A1 (en) Application Development Platform and Software Development Kits that Provide Comprehensive Machine Learning Services
US11669744B2 (en) Regularized neural network architecture search
US11893483B2 (en) Attention-based sequence transduction neural networks
JP6790286B2 (ja) 強化学習を用いたデバイス配置最適化
US11886998B2 (en) Attention-based decoder-only sequence transduction neural networks
US20200410365A1 (en) Unsupervised neural network training using learned optimizers
US20200311613A1 (en) Connecting machine learning methods through trainable tensor transformers
US20240127058A1 (en) Training neural networks using priority queues
WO2018201151A1 (en) Neural network optimizer search
US11900263B2 (en) Augmenting neural networks
US20220383119A1 (en) Granular neural network architecture search over low-level primitives
CN113850362A (zh) 一种模型蒸馏方法及相关设备
WO2023050143A1 (zh) 一种推荐模型训练方法及装置
CN115795025A (zh) 一种摘要生成方法及其相关设备
US20240152809A1 (en) Efficient machine learning model architecture selection
JP2024519265A (ja) フィードフォワード空間変換ユニットを備えたニューラルネットワーク
WO2020234299A1 (en) Energy-based associative memory neural networks

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20201028

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20201112

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20220207

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220506

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20220815

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20221207

C60 Trial request (containing other claim documents, opposition documents)

Free format text: JAPANESE INTERMEDIATE CODE: C60

Effective date: 20221207

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20221216

C21 Notice of transfer of a case for reconsideration by examiners before appeal proceedings

Free format text: JAPANESE INTERMEDIATE CODE: C21

Effective date: 20221219

A912 Re-examination (zenchi) completed and case transferred to appeal board

Free format text: JAPANESE INTERMEDIATE CODE: A912

Effective date: 20230210

C211 Notice of termination of reconsideration by examiners before appeal proceedings

Free format text: JAPANESE INTERMEDIATE CODE: C211

Effective date: 20230220

C22 Notice of designation (change) of administrative judge

Free format text: JAPANESE INTERMEDIATE CODE: C22

Effective date: 20230327

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20231129

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20240215

R150 Certificate of patent or registration of utility model

Ref document number: 7440420

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150