Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

自己紹介 ● 名前:大嶋勇樹(Twitter:@oshima_123) ● キャリア ○ 都内の某 IT 企業 -> フリーランスエンジニア -> 会社設立 ○ “ ” 現在は 実務につき始めたエンジニアのスキルアップをサポート ○ 研修・勉強会の開催・Udemy 講座の作成など ● データ分析・機械学習関連の業務経験 ○ AWS 環境でのデータ分析基盤の構築 ○ Docker、Kubernetes などを活用した機械学習アプリケーションの基盤構築

Slide 3

Slide 3 text

背景 個人でも、ちょっとしたモデルを作ってみて 手元で推論してみたことがある人は少なくない(はず) 最近は機械学習を学ぶための情報源が非常に多く、 試しに学習・推論してみるハードルはとても低くなっている

Slide 4

Slide 4 text

例えば ● 何らかのデータをもとに学習するコードや推論を試すコードは、見慣れてい たり、実装してみることができる方も多いと思います 学習 推論 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)

Slide 5

Slide 5 text

しかし... ● 作成した機械学習モデルをアプリケーションにして共有するためには、機械 学習以外の、たくさんの知識が必要になります ● 例)推論を試せる Web アプリを実装して、社内で共有する場合 ○ HTML、CSS、... ○ FastAPI、Django、... ○ JavaScript、React、... ○ 他にも、様々な知識が必要 Gradio を使うと、機械学習モデルを使った、ちょっとした Web アプリを非常に簡単に実装できるようなのでさわってみました

Slide 6

Slide 6 text

アジェンダ ● Gradio の概要 ● デモンストレーション(ライブコーディング) ● まとめ

Slide 7

Slide 7 text

Gradio の概要

Slide 8

Slide 8 text

Gradio とは ● 機械学習モデルを使った Web アプリを非常に簡単に実装できるツール import gradio as gr app = gr.Interface( fn=predict, inputs="sketchpad", outputs="label") app.launch() Gradio での最小限の実装は、 「推論する関数」と「入力形式」「出力形式」を指定するだけ

Slide 9

Slide 9 text

Streamlit との違い ● データ分析用の Web アプリを簡単に実装できるツールとしては、ここ数年 Streamlit もよく耳にします Streamlit データ分析用のダッシュボードを 簡単に実装可能 Gradio 機械学習モデルを使った Web アプリを より簡単に実装可能 機械学習モデルを使った Web アプリであれば、 Streamlit よりも Gradio のほうが、より少ないコード量で実装可能

Slide 10

Slide 10 text

デモンストレーション (ライブコーディング)

Slide 11

Slide 11 text

推論を試すコードの例 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 コマンドで推論を試すコードは、 書いたことがある人も少なくないと思います

Slide 12

Slide 12 text

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 アプリケーションができあがります

Slide 13

Slide 13 text

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)」を指定すると、手書き数字推論アプリになります

Slide 14

Slide 14 text

まとめ

Slide 15

Slide 15 text

まとめ ● Gradio を使って、機械学習モデルを使った推論を試す Web アプリを非常に 簡単に実装することができました ● さらに、Hugging Face Spaces などを使って、Gradio で実装した Web アプ リを簡単に公開することもできるようです 個人的なモデルの公開や、チーム内での共有といった用途であれば、 Gradio は良い選択肢の 1 つになりそうです