サービス料金導入事例開発ブログ会社案内 お問い合わせ
Dev Blog

データを外に出せない案件のために、機械学習をブラウザの中で動かす

「やりたいことは分かるが、そのデータは外に出せない」

画像診断、人事評価、顧客の問い合わせ履歴、図面。相談の途中でこう言われて止まる案件があります。クラウドのAPIに投げる構成だと、判定してもらうために、判定してほしいデータを渡さなければならないからです。

回避策として「送らない」構成があります。判定そのものを利用者のブラウザの中で動かす方法です。自社デモ7件をこの構成に寄せたので、実測値と、向き不向きをまとめます。

■何が変わるのか

通常の構成では、こうなります。

ブラウザ ──(画像を送信)──> サーバー ──> 推論 ──> 結果を返す

ブラウザ内で動かすと、こうなります。

ブラウザ ──(モデルを受信)──> ブラウザ内で推論 ──> 結果を表示

向きが逆になります。 データが出ていくのではなく、モデルが降りてくる。

結果として、

  • 画像や音声はサーバーに届かない。届かないものは漏れませんし、保存もされません
  • 推論のための常駐プロセスが不要になる。静的ファイルを返すだけ
  • ネットワーク往復が無いので速い。連続で試しても待たされない

■実際に動かしているもの

自社のデモサイトで公開している7件です。すべて判定はブラウザ内で、サーバーへの送信処理は1か所もありません(公開しているJavaScriptを検索して確認済み)。

デモ扱うもの実行環境モデル
花の判定写真ONNX Runtime Web8.8MB
髪の色を変える写真MediaPipe Tasks17.2MB
外観検査(オートエンコーダ)画像ONNX Runtime Web1.9MB
胸部X線 肺炎検出画像ONNX Runtime Web9.0MB
音の判定音・マイク録音ONNX Runtime Web1.0MB
全文検索PDF・Word・ExcelONNX Runtime Web37.1MB
来客数予測日付・天気なし(JSだけ)0.19MB

⇒ デモ一覧を見る

■推論エンジンすら要らない場合がある

表の一番下、来客数予測だけ扱いが違います。

これは LightGBM(決定木)で学習したもので、学習済みの木の構造をJSONで配り、JavaScriptでたどっているだけです。木124本・節3,596個、全部で192KB。ONNX Runtime も読み込んでいません。

ニューラルネットワークでなければ、こういう手が使えます。表形式のデータ(売上、在庫、来客数、故障予測)は決定木系の方が精度が出ることも多いので、「AIだから重い」と決めつける前に、何のモデルが要るのかを先に決める価値があります。

■向かない場合

正直に書くと、この構成には明確な弱点があります。

1. モデルが誰でも落とせる

ブラウザに渡す以上、利用者はモデルファイルをそのまま保存できます。公開モデルを使っている分には問題ありませんが、自社データで学習させた独自モデルが資産である場合、渡してはいけません。

うちの花判定デモには、実はサーバー側で推論するAPIのコードも残してあります。使っていませんが消していません。モデルを配りたくない案件ではそちらになるからです。

2. 初回のダウンロードが大きい

全文検索デモは初回49MB(うちモデルが44MB)です。社内システムで、業務中に一度読み込めば済むなら許容範囲ですが、不特定多数向けの公開サイトには向きません。

3. 端末の性能に依存する

古いスマートフォンでは遅くなります。サーバー側なら性能を揃えられますが、こちらは利用者の端末次第です。

4. 学習はできない

ブラウザでできるのは推論だけです。モデルを作る工程は別途必要で、これはサーバーか手元のマシンで行います。

■どちらを選ぶかの目安

ブラウザ内サーバー側
データを外に出せない△(自社サーバーなら可)
モデルを見せたくない
不特定多数が使う公開サイト△(初回が重い)
社内の限られた人が使う
運用費を抑えたい(常駐なし)△(動かし続ける)
端末の性能がまちまち

「データを外に出せない」と「モデルを見せたくない」が同時に来る場合は、自社サーバー(オンプレミスまたは自社VPC内)に推論APIを立てるのが答えになります。ブラウザ内が万能なわけではありません。

■まとめ

  • 「そのデータは外に出せない」で止まる案件は、判定をブラウザ側に持ってくると成立することがある
  • 公開モデルを使う・社内利用が中心、ならこの構成が有利。運用費もほぼかからない
  • 独自モデルが資産なら選べない。 渡すことになるため
  • 表形式のデータなら、推論エンジンすら不要なこともある

当社では、外に出せないデータを扱う案件について、どこまでブラウザ側に寄せられるかの検討からご相談を承っています。上の7件はすべて実際に動かせるので、お手元で試してから話を始めていただけます。

→ お問い合わせ