スマートフォン完結型 AIモデル運用のすすめ

こんにちは。AIトランスフォーメーションセンターの徳原です。

AI検査システムなど、AIによって業務をサポートするアプリケーションの開発を多く担当しています。

最近では、AIモデルの運用をスマートフォン上で完結させる形態のモバイルアプリ開発が増えており、AI運用の世界でもモバイル化が進んでいると感じています。

このような流れが生まれた理由としては、以下の3つが大きく寄与しています。

  1. 個人用のスマートフォンはもちろん、1人1台業務用のスマートフォンが普及した
  2. スマートフォンの性能が向上し、AIモデルの運用処理をスマートフォン1台で実施できるようになった
  3. AIモデル運用やデータサイエンスのためのモバイル向け要素技術が開発された

今後、AIモデル運用のモバイル化の流れは一層強まると考えているので、本コラムでは、AIモデルのモバイル運用のメリットと仕組みに関してご紹介したいと思います。

これまで主流だったサーバー上でのAIモデル運用との比較

冒頭の文章を読んで、今までスマートフォンでAI機能を利用していますが?と思われた方もいらっしゃるのではないでしょうか?

確かに、これまでもスマートフォンでAI機能を利用することはできました。しかし、一部の機能を除き、その多くはクライアント側のスマートフォンではなく、サーバー側のクラウド上で運用されているAIモデルの推論結果をスマートフォンで受信して表示するという構成がほとんどでした。

このような構成にしておけば、クラウド上で展開されたサーバーの強力な計算リソースを使用してAIモデルを運用できます。また、PythonやPandas、scikit-learn、TensorFlow、PyTorchといったAIモデル構築時によく使用されるツールも使用できるため、モデル構築のために実装したプログラムをそのまま運用時でも転用できるというメリットがあります。

一方で、モバイル端末上でAIモデルを運用するには、サーバー上での処理をすべてモバイル側で実装する必要があります。限られた計算リソースでAIモデルを動かす工夫が求められます。

スマートフォン上でAIモデルを動かせるようになると、以下のようなメリットが挙げられます。

  • ユーザーの端末の計算リソースだけでAIモデルを運用するのでクラウドのコストがかからない

  • 個人情報などの取扱が難しいデータを含むAIの入力データをクラウドにアップロードする必要がない

コスト面に関してですが、AIモデルの実行には通常、GPUの利用が前提となるため、通常のCPU処理よりも多くのコストがかかることが多いです。スマートフォン端末側で処理が行われることで、AI利用時にシステムの運用側のコストがかからなくなり、AIモデル運用の総コストを大幅に下げることができます。

データをクラウド上で管理することにはいくつかの問題があります。特に、個人情報を含むデータ、例えば人の画像などをクラウド上で管理する際には、セキュリティリスクが伴います。さらに、コンプライアンスの観点からアップロードが禁止されている情報も存在します。また、ユーザーがデータ提供を拒否する可能性も高くなります。

つまり、スマートフォン上でAIモデルを動かせるようになると、入力データをすべてアップロードしなくて済むというだけでも大きなメリットがあります。

さらに、スマートフォンで撮影した画像や動画をAIの入力データとして使用する場合、データ量が大きいため、アップロードに時間がかかるという問題があります。この問題は、AIモデルをスマートフォン上で運用することで解決できます。つまり、パフォーマンスの観点からも有利です。

AIモデルをスマートフォンで運用する仕組み

通常PythonとPython上で操作できる関連ライブラリを使用して構築、運用させるAIモデルをどのようにしてPythonの利用が難しいモバイル端末にで運用するかを説明するために、以下の技術調査のために作成したアプリの構成を紹介します。

通常、PythonとPython上で操作できる関連ライブラリを使用して構築・運用させるAIモデルを、Pythonの利用が難しいモバイル端末でどのように運用するかを説明するために、以下の技術調査のために作成したアプリケーションを事例としてご紹介します。

本事例アプリは、中古マンションの住所、最寄り駅、駅徒歩、間取りなどの情報から取引価格を予測するアプリです。 以下、その画面イメージになります。


GIF Image


画面上で中古マンションの諸情報を入力するだけで、AIが推測した取引価格を表示できるシンプルなアプリです。事前に、30万件の取引データを学習させたAIモデルを構築し、そのモデルをAndroidアプリ、iOSアプリで運用しています。

構成ですが、以下のような技術を使用したアーキテクチャをとることで、iOS環境とAndroid環境の両方で利用可能なアプリケーションになっています。

AIモデルの運用に関しては、Python上で作成したモデルをスマートフォンでも利用可能なモデルに変換し、スマートフォンでの運用環境を提供する、ONNX RuntimeやCoreMLを利用してAIモデルを動かしています。

データ処理はAndroid環境ではKotlin DataFrameを、iOS環境ではTabularDataを使用しました。データ処理ライブラリとしてはPythonではPandasが広く利用されていますが、これらのライブラリはPandasと同じ操作感でそれぞれの環境の開発言語である、SwiftとKotlinによるデータ処理を実装することができます。

UIとなるアプリの画面部分はFlutterを使用しています。Flutterの特徴として共通のコードでAndroidアプリとiOSアプリのUIを構築することができますが、AIモデル運用の処理だけをSwiftとKotlinで実装し、それ以外のUI部分はFlutterで実現することで両方のOSに対して少ない作業量で対応することができます。

AIモデルのパフォーマンス

肝心のスマートフォン上のAIモデルのパフォーマンスですが、実用に足るレベルでAIモデルを運用することができます。

Kaggleといったデータサイエンスのコンペティションでよく使用される、XGBoostやLightGBMといった決定木系のモデルはPCやサーバーでの運用と比較しても遜色なく使えますし、深層学習モデルも使用することができます。

しかし、重いモデルだと、最新のスマートフォンでもPCでの実行と比較して肌感で2倍から5倍ほど処理時間がかかる場合がありますし、一部のモデルはそもそもスマートフォンで運用可能なモデルに変換できないことがありますので、しっかりとした検証が必要です。

逆に重いモデルほどサーバーでの運用コストがかかるので、モバイル端末側で処理することによるコスト面メリットは大きくなります。

重いモデルをスマートフォンで動かす場合、UI上でAIモデルの実行結果をすぐに表示するのではなく、非同期的に処理し、実行が終わった後に結果をプッシュ通知するなどの工夫をすることで、ユーザーにとっての体感速度を改善することができます。

電通総研テックブログでは、今回紹介した技術についてより詳しく解説しています。実装に興味のある方は、ぜひ以下をご覧ください。

tech.dentsusoken.com

今回は、AIモデルをスマートフォン上で運用するメリットと方法をご紹介しました。

AITCでは、さまざまなAIモデルの社会実装を実現しています。ご興味のある方は、ぜひお気軽にご相談ください。

執筆
AIトランスフォーメーションセンター
徳原 光