$30 off During Our Annual Pro Sale. View Details »

3分でMLアプリを作る 〜推論コードにちょっとのStreamlitを添えて〜

3分でMLアプリを作る 〜推論コードにちょっとのStreamlitを添えて〜

3分クッキング的にMLアプリを作れるよという話です。

Yamaguchi Takahiro

April 14, 2022
Tweet

More Decks by Yamaguchi Takahiro

Other Decks in Technology

Transcript

  1. 3分でMLアプリを作る
    〜 推論コードにちょっとのStreamlitを添えて 〜
    atma株式会社 山口貴大@nyk510

    View Slide

  2. 自己紹介
    山口貴大
    atma(アートマ)株式会社 取締役
    学生時代に数理最適化の応用としての機械学習に興味をもち
    新卒でatma入社。データ分析領域から、エンジニアとして
    フロントエンド・バックエンドの開発を行っています。
    twitter: @nyker_goto

    View Slide

  3. 突然ですが、こんなことは無いですか?
    ● 画像認識のモデルを作った!
    ● 次はノンエンジニアに推論結果を共有したい!

    View Slide

  4. 意外とめんどくさい
    .py だと、推論できる人が実装者に限られる
    ● 画像渡すので推論して!の要望に都度答える必要がある
    ● 依頼が何度も来ると大変

    View Slide

  5. めんどくさいなら
    WEBアプリにして
    直接使ってもらえばよいのでは!

    View Slide

  6. でも作るのは大変じゃない?
    ● バックエンドわからん
    ● フロントエンドわからん

    View Slide

  7. わからんくても3分でできるよ!

    View Slide

  8. 3分は言い過ぎでは?
    → 基本の推論コードがあったら
    すぐできます

    View Slide

  9. 前提条件
    推論用のコードは書いている
    ● 画像を受け取ってモデルに入れてその予測値を返すコードがある。
    Streamlit が install 済み
    ● python のパッケージ。
    ● 必要最小限の記述量でサーバーと入力・出力ができる

    View Slide

  10. 💡 利用のステップ
    ● 普通に推論のコードを書く
    ● 入出力部分を streamlit に直す
    ● streamlit server を立ち上げる
    > 紹介するコードは https://github.com/nyk510/3-min-ml-app にあります

    View Slide

  11. 推論用のコードを書く
    よくある推論コードです。
    ● 学習済みのモデルを読み込んで
    ● 推論したい画像を読み込み
    ● 推論して結果を保存
    (今回は pytorch を利用しています)
    基本はこれで完成している。

    View Slide

  12. 入出力部分を Streamlit に直す
    予測結果の出力
    (st.pyploy/dataframe)
    画像の受け取り
    (st.file_upload)
    Streamlit を10行ほど添えます。
    先程の推論コード違うのは次の2点
    ● 画像の受け取り
    ● 予測結果の出力
    上記2つを Streamlit の関数で記述すると
    ブラウザのUI上で画像の選択
    結果の可視化が行えるようになります。

    View Slide

  13. Streamlit server を立ち上げる
    https://github.com/nyk510/3-min-ml-app
    `streamlit run your/application/path.py` を実行します。

    View Slide

  14. アプリを公開する
    Streamlit が提供しているクラウド
    https://streamlit.io/cloud を使うとそ
    のまま公開することもできます!
    (時間がないので割愛…)
    もちろん自分でマシンを借りて起動して
    もOK!

    View Slide

  15. もちろんこれで全部OKとなることは少ない…
    より強い要求が来ると大変😣
    ● ログイン認証つけたい
    ○ 認証系の処理を追加する必要がある
    ● 細かいデザインのカスタマイズをしたい
    ○ 場合によっては streamlit でなく自前で実装したほうが楽
    ○ フロントエンドの知識が必要がある
    ● 推論の処理は別のサーバーに用意したい (たくさん推論する場合でも動かしたい)
    ○ 推論サーバを実装する必要がある
    ○ バックエンドの知識が必要
    とはいえ、手軽にできる技があると何かと便利です。

    View Slide

  16. まとめ
    ● Streamlitを使うとサクッとMLアプリを作ることができます。
    ● 3分は盛りすぎてるかもしれませんが一度やったことがあれば短時
    間でアプリ化できます。
    ● ささっとデモを試してもらうには十分な機能があるのでとても便利
    です! 技としてとても優秀。

    View Slide