Upgrade to Pro — share decks privately, control downloads, hide ads and more …

SansanにおけるエッジAIの実用例とMLOps

Sansan
December 14, 2022

 SansanにおけるエッジAIの実用例とMLOps

■イベント


第26回 MLOps 勉強会

https://mlops.connpass.com/event/265554/

■登壇概要

タイトル:SansanにおけるエッジAIの実用例とMLOps

登壇者:Sansan株式会社 技術本部 研究開発部 Architectグループ 堤 修一



■Sansan 技術本部 採用情報

https://media.sansan-engineering.com/

Sansan

December 14, 2022
Tweet

More Decks by Sansan

Other Decks in Technology

Transcript

  1. SansanにおけるエッジAI
    の実⽤例とMLOps
    第26回MLOps勉強会
    Sansan 研究開発部 Architectグループ
    堤修一 @shu223

    View Slide

  2. ⾃⼰紹介
    堤修⼀
    - 12年間iOSエンジニア(主にフリーランス)
    - ID: shu223
    - GitHub・・・25.1k Stars
    - Twitter, Qiita, Zenn, note, etc.
    - YouTube, Podcast
    - 著書:

    View Slide

  3. ⾃⼰紹介
    - 2022年4月より、Sansan株式会社 研究開発部 マネージャー
    - 12年間iOSだけやってきたエンジニアのキャリアチェンジ
    - MLのプロではない & 現職での現場経験なし

    View Slide

  4. アジェンダ
    - SansanにおけるエッジAIの実例
    - エッジAI × MLOps

    View Slide

  5. SansanにおけるエッジAIの実例

    View Slide

  6. - 名刺のデータ化
    - NineOCR: 名刺に特化した独自開発のOCRエンジン(記事)
    - Smart Captured(スマキャプ)
    - etc...
    - 請求書・契約書etc.のデータ化
    - 名刺同様に多々ある
    - メール署名取り込み
    - ニュース配信
    - 名寄せ
    - etc...
    Sansan研究開発部におけるML

    View Slide

  7. スマキャプについて 1/2
    - 名刺データ化システム「GEES」は人力+AI
    - 読み取り直後にデータ化できるわけではない

    View Slide

  8. スマキャプについて 2/2
    - モバイルアプリから直接
    OCRサーバを叩いて結果を
    即時に返す
    - ユーザーはすぐに名刺の
    認識結果を確認できる
    - GEESのデータ化が終わっ
    たら差分更新
    - 速度と精度を両立

    View Slide

  9. デモ
    ※動画内の名刺はダミー名刺です。

    View Slide

  10. スマキャプの処理フロー
    - モバイル上で
    名刺の検出・切り取り
    - 名刺画像をサーバーに転送して
    OCR結果を受け取る

    View Slide

  11. エッジ側のML処理は2段構成
    以下の推論処理をオンデバイスで実行
    - Detection: 名刺矩形検出
    - Segmentation: 名刺切り出し
    ※使用している名刺画像はダミー名刺です
    ● 同時に4枚までの切り出しが可能
    ● プレビュー時はリアルタイムに名刺を検出
    ● 影や複雑背景等に対応

    View Slide

  12. エッジ側のモデル
    - Detection: 名刺矩形検出
    - SSD
    - Segmentation: 名刺切り出し
    - U-Netベース
    - 一工夫して軽量化している
    - 両モデルともTensorFlowで学習

    View Slide

  13. 学習データの⼯夫
    軽量化の必要があるため、モデルの表現力はどうしても落ちてしまう
    ➔ エッジケースがどうしても弱い
    ➔ Data Augmentationのバリエーションで工夫

    View Slide

  14. Core ML化によるパフォーマンス向上
    - before: TensorFlowから出力したProtocol Buffers
    形式のモデル(.pb)
    - after: Core MLモデル(.mlmodel)
    ➔ 結果
    - 名刺検出は300%高速化
    - 3年前の端末で18 fps → 55 fps
    - セグメンテーションも推論時間は0.01~0.02[s]に

    View Slide

  15. ➔ UIの描画やユーザーインタラクションのレスポンスも改善
    CPU負荷も激減
    旧モデル使⽤時
    新モデル(Core ML)使⽤時

    View Slide

  16. 機械学習モデルをアプリ(iOS, macOS, watchOS, …)に組み込むための
    フレームワーク, モデルフォーマット
    Core MLとは
    Core ML model Core ML Your app

    View Slide

  17. デバイスの性能を最も活かせるのはCore ML
    - Tensor Flow for iOS → CPU・・・変換前バージョン
    - Tensor Flow Lite → CPU, GPU
    - PyTorch Mobile / LibTorch → CPU
    - Core ML → CPU, GPU, Neural Engine
    なぜCore ML化すると速くなるのか

    View Slide

  18. - ニューラルネットワークの演算を高速処理するプロセッサ
    - ANE (Apple Neural Engine) とも略される
    - NPU (Neural Processing Unit) の一種
    - GoogleのTPUみたいなもの
    Neural Engineとは

    View Slide

  19. - 2017発売のiPhone 8, iPhone X以降のiPhone / iPadに搭載
    - 搭載端末(非搭載端末)一覧
    - Core MLによって利用されるANEはA12 Bionic (2018) 以降
    - ANE自体の性能も毎年上がっている
    > The A14 has a 16-core Neural Engine that is twice as fast as
    the previous generation, and can perform 11 trillion operations per
    second.
    > The A15 has a 16-core Neural Engine, with the same amount of
    cores it can perform 15.8 trillion operations per second (43% faster
    than the previous generation).
    Neural Engine搭載端末

    View Slide

  20. Core ML化する⽅法
    coremltoolsというApple製OSSツールを利用する
    - https://github.com/apple/coremltools
    - 変換がうまくいかない場合の考え方
    - coremltoolsを用いたCore MLモデルへの変換 - Sansan Tech Blog

    View Slide

  21. エッジAI × MLOps

    View Slide


  22. - ここからは弊社での実運用の例ではなく、
    私個人のアイデアレベルのものになります。
    - 実運用はしていないものの、一応実際に使ったことがある要素を
    組み合わせて考えています。
    - 一部実現性不明なものはその旨明示しています。
    - Sansanで行っているMLOpsの例
    - Data Version Control による実験管理の実務での適用事例
    - 自社OCRエンジン「NineOCR」の学習効率化のためFeature Storeを導
    入した話 - Sansan Tech Blog

    View Slide

  23. Core ML × MLOpsのアイデア
    - パターン1: Core ML × 実験管理
    - パターン2: 実機での新モデルの検証
    - テスターにだけ新モデルを配布する
    - クラウド経由でモデルを更新

    View Slide

  24. 評価
    Core MLモデル変換
    パターン1: Core ML × 実験管理
    既存の学習パイプラインにcoremltoolsによる変換を組み込めばOK
    前処理
    学習
    PyTorch,
    TensorFlow, etc…
    coremltools
    詳しくはこちらの資料へ:MLOps for Core ML #iOSDC 2022
    データ取得

    View Slide

  25. パターン2: 実機での新モデルの検証
    検証⽤にテスターにだけ新モデルを配布する
    新モデル
    一般ユーザーには
    配布しない
    テスターだけに配布
    Core ML
    model
    本番
    アプリ
    ステージング版
    アプリ

    View Slide

  26. クラウド(iCloud)経由でモデルを更新
    ➔ アプリ側の更新不要でモデルを更新できる
    Core ML Model Deployment

    View Slide

  27. ステージング用とリリー
    ス用で別々のModel
    Collectionを用意しておく
    事前準備(iCloud)
    FooModelCollectionStaging
    FooModel
    BarModel

    View Slide

  28. - ステージング/リリースビルドで利用するModel Collectionを分けるよ
    う実装
    - 更新されたら通知が届くようにしておく
    - テスターにステージング版をTestFlightで配布
    事前準備(アプリ)

    View Slide

  29. ステージング用のModel Collectionに新モデルを登録
    新モデル検証時
    ➔ ステージング版アプリに通知が届く
    ➔ アプリを起動するとモデルが更新される
    FooModel.mlarchive
    FooModel

    View Slide

  30. - 量子化やスパース化も可能
    - https://apple.github.io/coremltools/source/coremltools.models.html#com
    pression-utils
    - アプリのバイナリには含めず、あとからダウンロードさせる方法もある
    - Core ML Models - iCloud - Apple Developer
    - iOSビルトインの特徴抽出器を利用すれば劇的に小さくなる
    - Core MLモデルを連結してひとつのモデルにするパイプライン機能
    - Create MLのモデルはなぜ小さいのか 〜coremltoolsでパイプラインモデ
    ルの中身をのぞいてみる
    - Sound Analysisのビルトイン音声分類器
    補⾜資料: Core MLモデルサイズに関するTips

    View Slide

  31. - 育児関連サービス:アルバムから子供が写っている写真だけを抽出
    - 超解像ライブラリ
    - 動画へのエフェクト(姿勢検出、Style Transfer, …)
    - 動画の4コマ漫画化
    - Core MLモデルへの変換(YOLOv5, etc.)
    - LiDARデータ収集(エッジAIではない)
    etc…
    補⾜資料: 経験したiOS × MLの実案件

    View Slide

  32. - R&D MLOps/DevOpsエンジニア | Sansan株
    式会社
    - R&D MLOps/DevOpsエンジニア(中部) |
    Sansan株式会社
    MLOpsエンジニア絶賛募集中です!

    View Slide

  33. View Slide