Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

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

Slide 3

Slide 3 text

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

Slide 4

Slide 4 text

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

Slide 5

Slide 5 text

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

Slide 6

Slide 6 text

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

Slide 7

Slide 7 text

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

Slide 8

Slide 8 text

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

Slide 9

Slide 9 text

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

Slide 10

Slide 10 text

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

Slide 11

Slide 11 text

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

Slide 12

Slide 12 text

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

Slide 13

Slide 13 text

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

Slide 14

Slide 14 text

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

Slide 15

Slide 15 text

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

Slide 16

Slide 16 text

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