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. Gradio を使って
    機械学習モデルを一瞬で Web アプリ化

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  7. Gradio の概要

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  14. まとめ

    View Slide

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

    View Slide