アプリケーションでのモデル・アップデートの使用

improve this page | report issue

概説

CoreML や TensorFlow Lite などのデバイス上の機械学習 (ML) モデルの導入により、モバイル・アプリはデバイスがオフラインの場合でも、画像認識、テキスト読み上げなどの ML 操作をデバイス上で実行できるようになりました。 機械学習モデルの重要な特性は、継続的に進化することです。 より新しいバージョンでデバイス上のこれらのモデルを更新することは、モバイル・アプリの成功に非常に重要になります。

この要件を支援するために、IBM Mobile Foundation はモデル・アップデート・フィーチャーを導入しました。 Mobile Foundation アプリケーションは ML モデルを埋め込むことができるようになり、その ML モデルは、「無線通信で」より新しいバージョンに更新できます。 これにより、組織は、常に更新された AI モデルをエンド・ユーザーが使用できるようにできます。

モデル・バージョンをアプリケーションに送信するために、最新のモデルを zip 形式に圧縮します。 この .zip は、MobileFirst Operations Console の「機械学習」タブの下にアップロードする必要があります。 その結果、アプリケーションが downloadModelUpdate API を呼び出すたびに、モデル・アップデートがアクティブ化されます。

サポートされているプラットフォーム: 現在、モデル・アップデートは iOS でのみサポートされています。

注意点

  • モデル・アップデートでは、Apple の CoreML Model や Google の TensorFlow Model のような人工知能モデルのみが更新されます。

ジャンプ先:

モデル・アップデートの機能

まずはオフラインで使用できるように、モデルは、当初からアプリケーションと一緒にパッケージされています。 その後は、アプリケーションは、downloadModelUpdate API が呼び出されるたびに、更新があるかどうか MobileFirst Server をチェックします。

モデル・アップデートの後、downloadModelUpdate API はダウンロードしたモデルの場所を返し、更新が実行されるたびにこの場所が更新されます。

バージョン管理

モデル・アップデートは、特定のアプリケーション・バージョンにのみ適用されます。 言い換えると、アプリケーション・バージョン 2.0 用に生成された更新を、同じアプリケーションの別のバージョンに適用することはできません。

モデル・パッケージの作成およびデプロイ

モデルのより新しいバージョンまたは更新されたバージョンが入手可能になったら、次の手順に従って、モデル・ファイルを MobileFirst Server にアップロードします。

手順:

  1. 1 つ以上の機械学習モデル・ファイル (例えば .mlmodel) の .zip アーカイブを作成します。
  2. MobileFirst Operations Console を開き、左側のパネルでアプリケーション・エントリーをクリックします。
  3. 「機械学習」タブにナビゲートし、「モデルのアーカイブのアップロード」をクリックしてパッケージ・モデルをアップロードします。

アップデートの呼び出し

アプリケーションのモデル・アップデートは、次の API を呼び出すことで確認できます。

iOS

 WLClient.sharedInstance().downloadModelUpdate(completionHandler: CompletionHandler, showProgressBar: Boolean);

注: この API は、ObtainAccessToken API または WLResourceRequest API と同時に呼び出すべきではありません。

通常、アプリケーション開発者は、アプリケーションの起動時にこの API を呼び出す必要があります。

downloadModelUpdate API は、ダウンロードが成功した場合、または以前にダウンロードしたパッケージへのパスが返された場合、次のいずれかの状況コードとダウンロードされたパッケージへのリンクを返します。

最終状況は次のコードのいずれかになります。

状況コード 説明
SUCCESS モデル・アップデートがエラーなしで終了しました。
CANCELED モデル・アップデートが取り消されました。
FAILURE_NETWORK_PROBLEM 更新時にネットワーク接続に関する問題がありました。
FAILURE_DOWNLOADING ファイルが完全にダウンロードされませんでした。
FAILURE_NOT_ENOUGH_SPACE 更新ファイルをダウンロードして解凍するだけの十分なスペースがデバイスにありません。
FAILURE_UNZIPPING 更新ファイルの解凍中に問題がありました。
FAILURE_ALREADY_IN_PROGRESS 既にアップデートが進行中に、アップデートが要求されました。
FAILURE_INTEGRITY 更新ファイルの認証性を検証できません。
FAILURE_UNKNOWN 予期しない内部エラー。

セキュアなモデル・アップデート

セキュアなモデル・アップデートは、デフォルトでは無効になっていますが、MobileFirst Serverから (またはコンテンツ配信ネットワーク (CDN) から) クライアント・アプリケーションに送信されるモデルが第三者のアタッカーによって変更されるのを防止します。

モデル・アップデートの認証性を有効にするには、以下のようにします。

お好きなツールを使用して、MobileFirst Server 鍵ストアから公開鍵を取り出し、それを base64 に変換します。
その後、生成された値を次のように使用してください。

  1. クライアント・アプリケーションで、MobileFirst 構成ファイル (すなわち、iOS の場合は mfpclient.plist、Android の場合は mfpclient.properties) を開きます。
  2. wlSecureModelUpdatePublicKey という新しいキー値を追加します。
  3. 対応するキー値の公開鍵を指定し、保存します。

これ以降のクライアント・アプリケーションへのモデル・アップデートの配信は、モデル・アップデート認証性によって保護されます。

更新された鍵ストア・ファイルを使用してアプリケーション・サーバーを構成するには、セキュアなモデル・アップデートの実装を参照してください。

開発、テスト、実動でのモデル・アップデート

開発とテストの目的で、開発者は通常、単にアーカイブを開発サーバーにアップロードすることにより、モデル・アップデートを使用します。 このプロセスは簡単に実装できる一方で、転送中またはデバイスにダウンロードされた後にモデルが改ざんされる可能性があるため、あまり安全ではありません。

実動または実動前のテスト・フェーズでは、アプリケーションをアプリ・ストアに公開する前に、セキュアなモデル・アップデートを実装することを強くお勧めします。 セキュアなモデル・アップデートでは、CA 署名サーバー証明書から抽出される RSA 鍵ペアが必要です。

注: アプリケーションがパブリッシュされた後に鍵ストア構成を変更しないように注意してください。ダウンロードされたアップデートは、アプリケーションを新規の公開鍵で再構成して再パブリッシュしない限り、認証されなくなります。 これらのステップを実行しない場合、モデル・アップデートはクライアントで失敗します。

詳しくは、セキュアなモデル・アップデートを参照してください。

モデル・アップデートのデータ転送速度

最適な状態で、1 つの MobileFirst Server は 1 秒あたり 250 MB の速度でデータをクライアントにプッシュできます。 さらに高速なデータ・プッシュが必要な場合は、クラスターまたは CDN サービスを考慮してください。

Inclusive terminology note: The Mobile First Platform team is making changes to support the IBM® initiative to replace racially biased and other discriminatory language in our code and content with more inclusive language. While IBM values the use of inclusive language, terms that are outside of IBM's direct influence are sometimes required for the sake of maintaining user understanding. As other industry leaders join IBM in embracing the use of inclusive language, IBM will continue to update the documentation to reflect those changes.
Last modified on February 28, 2020