はじめに
機械学習モデルを本番環境に組み込む際には、大きく以下の3つの方式があります。
- REST API - サーバ・クラウド上で動かす
- オンデバイス - スマホや組み込み機器で動かす
- ブラウザ - Web上/Electronなどで動かす
それぞれ得意・不得意があるので、要件に合わせて最適な方式を選びましょう。
著者がTensorflowでのモデル開発をしていた関係でTensorflowの例になっていますが、
他の機械学習モデルでも考え方は応用できます。
フローチャート
まず記事の結論をまとめたフローチャートを添付しておきます。
多くの場合でREST APIを活用することになると思います。
余談ですがチャートはナプキンAIで作成しました。便利なのでぜひ。
各方式の詳細比較
方式 | レイテンシ | オフライン | セキュリティ | 運用コスト | 向いている例 |
---|---|---|---|---|---|
REST API | 中 (≈500ms) |
❌ | △ (通信はHTTPSでOK) |
サーバ管理が必要 | モバイル/Webアプリから都度予測したい |
オンデバイス | 低 (<100ms) |
✅ | ⭕ (データを外に出さない) |
モデルサイズ最適化が必要 | リアルタイム認識・接続がない環境・高機密データ |
ブラウザ | やや低 (≈100ms) |
✅ | △ (モデルが端末に公開される) |
サーバ負荷低減が可能 | Webアプリでオフライン対応・E2E暗号化必須 |
要件に合わせた選び方ガイド
1. ネット接続・オフライン要件
- 必ずオンライン → REST API
- オフラインでも動かしたい → オンデバイス or ブラウザ
2. レイテンシ要件
- 500ms以内で良い → REST API
- 100ms以下が必須 → オンデバイス
- 100ms程度でOK → ブラウザ
3. データ/モデルの機密性
- 入力データを外に出したくない → オンデバイス
- モデルそのものを秘匿したい → REST API
- 端末にモデルを公開しても問題ない → ブラウザ
4. 運用・コスト
- サーバ管理に慣れている or マネージド利用可 → REST API
- サーバコストをほぼゼロにしたい → ブラウザ
- モデル変換・軽量化の工数をかけられる → オンデバイス
初学者向けまとめ
-
まずは要件を整理
- ネット環境、応答速度、データ機密性、運用体制など
-
表に当てはめてみる
- 上記の比較表・ガイドを使い「できる/できない」をチェック
-
プロトタイプから試す
- まずはFlask+TensorFlow Serving(REST API)で動かし、
- 次にTensorFlow Lite(オンデバイス)、
- 最後にTensorFlow.js(ブラウザ)を試してみると理解が深まります
最後に
モデルのデプロイの部分は知識が浅いデータサイエンティストも多いと思います。
しかしデプロイ方法についても理解することで、
よりビジネス価値を発揮するモデル開発につながるはずです。
モデルを開発することはあくまで手段なのでデプロイまで見据えた開発をしましょ