こんにちは!メルカリのセラーエンゲージメントチームのRakeshです。最近、インターン生のメンターを担当していました。インターン生の名前はPriyanshです。彼がメルカリで担当した仕事の一部である、Firebaseを使用したクライアントサイドでの機械学習モデル構築に関してまとめたテックブログとなります。
はじめに
現代では、大規模データの利用が可能となったほか、処理能力やストレージ機能の進歩、自動化・データドリブンな意思決定の需要の高まりを受け、機械学習の人気が高まっています。
多くの企業が機械学習を取り入れたいと考えていますが、機械学習のコストは非常に高額になり得ます。開発、トレーニング、デプロイにかかるコストや、GPU、クラウドコンピューティングリソース、ストレージ、ネットワークなどの特化型のハードウェアを使用する際のコストがかさむ可能性があるためです。
これまで機械学習モデルは、サーバーサイドでデプロイされてきましたが、クライアントサイドでデプロイを可能にしようとする試みも増えてきました。事実、AIをエッジ上で使用するメリットは数多くあります。
- インターネット接続が必要ない
- データをサーバーに送信する必要がない
- レイテンシーが極めて短いリアルタイムの推論が可能
- サーバーコストが少額、あるいはゼロ
クライアントサイドで機械学習を使用しようと考えた経緯
メルカリでは常に革新的な機能を開発し、マーケットプレイスとしての価値を高めようとしています。「バーコード出品機能」もそのための強力な機能のひとつです。販売者は、特定カテゴリの商品のバーコードをスキャンするだけで、簡単に出品を行うことができます。
メルカリのお客さま、とりわけ新規のお客さまがメルカリの機能のすべてを理解していないというのはよくあることで、バーコード出品もそのような機能のひとつです。
この問題に対し、Edge AIを利用してお客さまの体験を向上させることができないか考えました。そこで、出品者によって出品されようとしている商品カテゴリがバーコード出品に対応しているかどうかを、その商品の1番目の写真を用いて、クライアントサイドで機械学習モデルを使用することで予測する「listing dispatcher」という新機能を構築しました
クライアントデバイスで機械学習を使用する方法
クライアントサイドの機械学習推論として利用できるものに、人気のオープンソースモバイルライブラリのひとつである TensorFlow Liteがあります。TFLiteには、下記のような特徴があります。
- オンデバイス機械学習向けに最適化
- 複数のプラットフォームをサポート
- Java・Swiftなどの多くの言語に対応
- 優れたパフォーマンス
- 画像分類や物体検出といった数多くの機械学習タスクに対応
TFLiteモデルは、apkやipaにパッケージングした状態で、AndroidアプリやiOSアプリに埋め込むことも可能です。これは、クライアントサイドで機械学習を使用するための最も簡単な方法のひとつですが、いくつかの制限があります。
- 機械学習モデルはサイズが大きく、パッケージングしてアプリに埋め込むとアプリ自体のサイズも大きくなるため、App StoreやGoogle Playストアでのインストール数が少なくなる可能性がある
- 圧縮のために機械学習モデルを最適化する追加のオーバーヘッドが発生するため、モデルの精度については妥協する必要がある場合がある
- クライアントサイドの開発フローにも影響する可能性がある
tfliteモデルをアプリアセットに追加することでAndroidに埋め込む、より優れた手法はあるのでしょうか?
Firebase Machine Learning Custom Model
上記はFirebase のサービスのひとつで、独自のカスタム機械学習モデルをエッジデバイス上でデプロイできます。機械学習モデルをアプリにパッケージングする必要はありません。その代わりに、アプリをインストール済みのクライアントが、バックグラウンドで必要に応じてリモートから機械学習モデルをダウンロードします。この機械学習モデルのダウンロードは一度だけ発生するもので、以降の推論で繰り返し利用されます。
この方法を使用するメリットは数多くあります。
- 機械学習モデルがFirebaseでホストされる
- 機械学習モデルのバージョン管理と機械学習モデルの管理できる
- クライアントサイドの開発フローと機械学習開発フローを分離できる
- 常に最新バージョンの機械学習モデルがアプリで使用される
- 最新のモデルをダウンロードするタイミングに関して条件を設定できる
- A/B test two versions of a model
Firebaseの動的モデル読み込みを使用することには多くの利点があるものの、以下の点には注意する必要があります。
- エラー処理 : 機械学習モデルの新しいバージョンにエラーが発生した場合、デフォルトモデルへのフォールバックや機械学習機能の無効化を実行する
- モデルをダウンロードするタイミング : たとえば、ユーザーがWi-Fiに接続されている場合のみダウンロードするなど
まとめ
機械学習は、物体検出やバーコードスキャンなど、幅広いユースケースで非常に有用です。機械学習をクライアントサイドで使用するにあたってはさまざまな課題がありますが、Firebaseのカスタムモデルであれば、APIによるリモートからの機械学習モデルのフェッチ、モデル管理を簡単に行えます。また、テストの迅速化にも貢献し、デベロッパーによる構成のカスタマイズも可能になります。