3分クッキング的にMLアプリを作れるよという話です。
3分でMLアプリを作る〜 推論コードにちょっとのStreamlitを添えて 〜atma株式会社 山口貴大@nyk510
View Slide
自己紹介山口貴大atma(アートマ)株式会社 取締役学生時代に数理最適化の応用としての機械学習に興味をもち新卒でatma入社。データ分析領域から、エンジニアとしてフロントエンド・バックエンドの開発を行っています。twitter: @nyker_goto
突然ですが、こんなことは無いですか?● 画像認識のモデルを作った!● 次はノンエンジニアに推論結果を共有したい!
意外とめんどくさい.py だと、推論できる人が実装者に限られる● 画像渡すので推論して!の要望に都度答える必要がある● 依頼が何度も来ると大変
めんどくさいならWEBアプリにして直接使ってもらえばよいのでは!
でも作るのは大変じゃない?● バックエンドわからん● フロントエンドわからん
わからんくても3分でできるよ!
3分は言い過ぎでは?→ 基本の推論コードがあったらすぐできます
前提条件推論用のコードは書いている● 画像を受け取ってモデルに入れてその予測値を返すコードがある。Streamlit が install 済み● python のパッケージ。● 必要最小限の記述量でサーバーと入力・出力ができる
💡 利用のステップ● 普通に推論のコードを書く● 入出力部分を streamlit に直す● streamlit server を立ち上げる> 紹介するコードは https://github.com/nyk510/3-min-ml-app にあります
推論用のコードを書くよくある推論コードです。● 学習済みのモデルを読み込んで● 推論したい画像を読み込み● 推論して結果を保存(今回は pytorch を利用しています)基本はこれで完成している。
入出力部分を Streamlit に直す予測結果の出力(st.pyploy/dataframe)画像の受け取り(st.file_upload)Streamlit を10行ほど添えます。先程の推論コード違うのは次の2点● 画像の受け取り● 予測結果の出力上記2つを Streamlit の関数で記述するとブラウザのUI上で画像の選択結果の可視化が行えるようになります。
Streamlit server を立ち上げるhttps://github.com/nyk510/3-min-ml-app`streamlit run your/application/path.py` を実行します。
アプリを公開するStreamlit が提供しているクラウドhttps://streamlit.io/cloud を使うとそのまま公開することもできます!(時間がないので割愛…)もちろん自分でマシンを借りて起動してもOK!
もちろんこれで全部OKとなることは少ない…より強い要求が来ると大変😣● ログイン認証つけたい○ 認証系の処理を追加する必要がある● 細かいデザインのカスタマイズをしたい○ 場合によっては streamlit でなく自前で実装したほうが楽○ フロントエンドの知識が必要がある● 推論の処理は別のサーバーに用意したい (たくさん推論する場合でも動かしたい)○ 推論サーバを実装する必要がある○ バックエンドの知識が必要とはいえ、手軽にできる技があると何かと便利です。
まとめ● Streamlitを使うとサクッとMLアプリを作ることができます。● 3分は盛りすぎてるかもしれませんが一度やったことがあれば短時間でアプリ化できます。● ささっとデモを試してもらうには十分な機能があるのでとても便利です! 技としてとても優秀。