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

Gradioを使って機械学習モデルを一瞬でWebアプリ化

os1ma
December 01, 2022

 Gradioを使って機械学習モデルを一瞬でWebアプリ化

最近は機械学習を学ぶ情報源が豊富で、ちょっとしたモデルを作ってみて手元で推論してみたことがある人は多いでしょう。

しかし、作成した機械学習モデルをアプリケーションにして共有するためには、機械学習以外の多くの知識が必要になります。

「Gradio」を使うと、機械学習モデルを使ったちょっとした Web アプリを簡単に実装できるようなので、さわってみました。

イベントページ
https://studyco.connpass.com/event/266203/

ソースコード
https://github.com/os1ma/gradio-mnist-sample

os1ma

December 01, 2022
Tweet

More Decks by os1ma

Other Decks in Programming

Transcript

  1. 自己紹介 • 名前:大嶋勇樹(Twitter:@oshima_123) • キャリア ◦ 都内の某 IT 企業 ->

    フリーランスエンジニア -> 会社設立 ◦ “ ” 現在は 実務につき始めたエンジニアのスキルアップをサポート ◦ 研修・勉強会の開催・Udemy 講座の作成など • データ分析・機械学習関連の業務経験 ◦ AWS 環境でのデータ分析基盤の構築 ◦ Docker、Kubernetes などを活用した機械学習アプリケーションの基盤構築
  2. 例えば • 何らかのデータをもとに学習するコードや推論を試すコードは、見慣れてい たり、実装してみることができる方も多いと思います 学習 推論 X_train, X_test, y_train, y_test

    \ = train_test_split(X, y) model = LogisticRegression() model.fit(X_train, y_train) : # save model image = Image.open('sample.png') input = preprocess(image) result = predict(input) print(result)
  3. しかし... • 作成した機械学習モデルをアプリケーションにして共有するためには、機械 学習以外の、たくさんの知識が必要になります • 例)推論を試せる Web アプリを実装して、社内で共有する場合 ◦ HTML、CSS、...

    ◦ FastAPI、Django、... ◦ JavaScript、React、... ◦ 他にも、様々な知識が必要 Gradio を使うと、機械学習モデルを使った、ちょっとした Web アプリを非常に簡単に実装できるようなのでさわってみました
  4. Gradio とは • 機械学習モデルを使った Web アプリを非常に簡単に実装できるツール import gradio as gr

    app = gr.Interface( fn=predict, inputs="sketchpad", outputs="label") app.launch() Gradio での最小限の実装は、 「推論する関数」と「入力形式」「出力形式」を指定するだけ
  5. Streamlit との違い • データ分析用の Web アプリを簡単に実装できるツールとしては、ここ数年 Streamlit もよく耳にします Streamlit データ分析用のダッシュボードを

    簡単に実装可能 Gradio 機械学習モデルを使った Web アプリを より簡単に実装可能 機械学習モデルを使った Web アプリであれば、 Streamlit よりも Gradio のほうが、より少ないコード量で実装可能
  6. 推論を試すコードの例 def preprocess(image): : def predict(image): : if __name__ ==

    '__main__': image = Image.open('img.png') input = preprocess(image) result = predict(input) print(result) $ python predict.py {0: 7.521442603319883e-05, 1: 3.361938283319432e-08, 2: 0.0035780637990683317, 3: 0.015945233404636383, 4: 0.000655908661428839, 5: 0.9408522248268127, 6: 0.004209722392261028, 7: 8.856286513037048e-06, 8: 0.024534041061997414, 9: 0.010140744037926197} predict.py 実行 このように、python コマンドで推論を試すコードは、 書いたことがある人も少なくないと思います
  7. Gradio の Hello World import gradio as gr def greet(name):

    return "Hello " + name + "!" app = gr.Interface( fn=greet, inputs="text", outputs="text") app.launch() app.py 実行 「関数」と「入力形式」「出力形式」を指定するだけで、 Web アプリケーションができあがります
  8. Gradio を使った手書き数字推論アプリケーション import gradio as gr from predict import predict

    app = gr.Interface( fn=predict, inputs="sketchpad", outputs="label") app.launch() predict.py 実行 「推論する関数 (predict) 」と「入力形式 (sketchpad)」 「出力形式 (label)」を指定すると、手書き数字推論アプリになります
  9. まとめ • Gradio を使って、機械学習モデルを使った推論を試す Web アプリを非常に 簡単に実装することができました • さらに、Hugging Face

    Spaces などを使って、Gradio で実装した Web アプ リを簡単に公開することもできるようです 個人的なモデルの公開や、チーム内での共有といった用途であれば、 Gradio は良い選択肢の 1 つになりそうです