最近は機械学習を学ぶ情報源が豊富で、ちょっとしたモデルを作ってみて手元で推論してみたことがある人は多いでしょう。
しかし、作成した機械学習モデルをアプリケーションにして共有するためには、機械学習以外の多くの知識が必要になります。
「Gradio」を使うと、機械学習モデルを使ったちょっとした Web アプリを簡単に実装できるようなので、さわってみました。
イベントページ https://studyco.connpass.com/event/266203/
ソースコード https://github.com/os1ma/gradio-mnist-sample
Gradio を使って機械学習モデルを一瞬で Web アプリ化
View Slide
自己紹介● 名前:大嶋勇樹(Twitter:@oshima_123)● キャリア○ 都内の某 IT 企業 -> フリーランスエンジニア -> 会社設立○ “ ”現在は 実務につき始めたエンジニアのスキルアップをサポート○ 研修・勉強会の開催・Udemy 講座の作成など● データ分析・機械学習関連の業務経験○ AWS 環境でのデータ分析基盤の構築○ Docker、Kubernetes などを活用した機械学習アプリケーションの基盤構築
背景個人でも、ちょっとしたモデルを作ってみて手元で推論してみたことがある人は少なくない(はず)最近は機械学習を学ぶための情報源が非常に多く、試しに学習・推論してみるハードルはとても低くなっている
例えば● 何らかのデータをもとに学習するコードや推論を試すコードは、見慣れていたり、実装してみることができる方も多いと思います学習 推論X_train, X_test, y_train, y_test \= train_test_split(X, y)model = LogisticRegression()model.fit(X_train, y_train):# save modelimage = Image.open('sample.png')input = preprocess(image)result = predict(input)print(result)
しかし...● 作成した機械学習モデルをアプリケーションにして共有するためには、機械学習以外の、たくさんの知識が必要になります● 例)推論を試せる Web アプリを実装して、社内で共有する場合○ HTML、CSS、...○ FastAPI、Django、...○ JavaScript、React、...○ 他にも、様々な知識が必要Gradio を使うと、機械学習モデルを使った、ちょっとしたWeb アプリを非常に簡単に実装できるようなのでさわってみました
アジェンダ● Gradio の概要● デモンストレーション(ライブコーディング)● まとめ
Gradio の概要
Gradio とは● 機械学習モデルを使った Web アプリを非常に簡単に実装できるツールimport gradio as grapp = gr.Interface(fn=predict,inputs="sketchpad",outputs="label")app.launch()Gradio での最小限の実装は、「推論する関数」と「入力形式」「出力形式」を指定するだけ
Streamlit との違い● データ分析用の Web アプリを簡単に実装できるツールとしては、ここ数年Streamlit もよく耳にしますStreamlitデータ分析用のダッシュボードを簡単に実装可能Gradio機械学習モデルを使った Web アプリをより簡単に実装可能機械学習モデルを使った Web アプリであれば、Streamlit よりも Gradio のほうが、より少ないコード量で実装可能
デモンストレーション(ライブコーディング)
推論を試すコードの例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 コマンドで推論を試すコードは、書いたことがある人も少なくないと思います
Gradio の Hello Worldimport gradio as grdef greet(name):return "Hello " + name + "!"app = gr.Interface(fn=greet,inputs="text",outputs="text")app.launch()app.py 実行「関数」と「入力形式」「出力形式」を指定するだけで、Web アプリケーションができあがります
Gradio を使った手書き数字推論アプリケーションimport gradio as grfrom predict import predictapp = gr.Interface(fn=predict,inputs="sketchpad",outputs="label")app.launch()predict.py 実行「推論する関数 (predict) 」と「入力形式 (sketchpad)」「出力形式 (label)」を指定すると、手書き数字推論アプリになります
まとめ
まとめ● Gradio を使って、機械学習モデルを使った推論を試す Web アプリを非常に簡単に実装することができました● さらに、Hugging Face Spaces などを使って、Gradio で実装した Web アプリを簡単に公開することもできるようです個人的なモデルの公開や、チーム内での共有といった用途であれば、Gradio は良い選択肢の 1 つになりそうです