☢️

業務で機械学習に特化したプロトタイピングツール「Gradio」を使ってみた

2024/04/14に公開

初めまして。技術記事を書くのが久々(2年前くらいに某技術記事投稿サイトに投稿して以来)ということで、書く前から緊張してますがよろしくお願いします。

さて、業務で「Gradio」というお手軽にwebアプリケーションを作れる、しかも機械学習ライブラリも簡単に使えるツールを使用したので、使い方や使ってみての考察について書いていこうかなと思います。

Gradio とは

公式のドキュメントによると、 Gradio とは「機械学習モデルをデモする最速の方法であり、フレンドリーな Web interface を備えているため、誰でもどこでも使用することができます!」とのことです。

ローカル環境での始め方

Gradioは簡単に始められます。Python3.7以上が環境にインストールされている前提として、下記に手順を示します。

  1. ターミナルを起動してGradioのインストール
$ pip install gradio
  1. 適当にPythonファイル(ここではapp.pyという名前を作ります)を作ってその中に以下のコードを記述
import gradio as gr

def greet(name):
    return "Hello " + name + "!"

demo = gr.Interface(fn=greet, inputs="text", outputs="text")
demo.launch()   

軽くコードを解説すると、

  • 変数demoでテキストを入力できるコンポーネントを作成
  • 関数greetで入力されたテキストを"Hello " + 入力されたテキスト + "!"の形式で返す
  • 変数demoで出力として返ってきたテキストのコンポーネントを作成する
    というプログラムとなっています。
  1. ターミナルで2で作ったファイルを実行
$ python app.py
  1. 表示されているローカルホストのURL(http://127.0.0.1:7860)を表示する
Running on local URL:  http://127.0.0.1:7860

To create a public link, set `share=True` in `launch()`.

すると、以下のような画面が表示されます。

こんな感じでフロントエンドとバックエンドをいい感じに繋いでくれてお手軽にwebアプリが作れます!

使ってみての考察

このアプリの応用例としては以下みたいな感じで使うのが想定されるかなと思います。

  • 画像入力コンポーネントを使用して、セピア色に画像処理を施す関数を通して画像出力コンポーネントに画像処理の結果を出力する。
  • Pythonの機械学習・深層学習フレームワークであるPyTorchのモデルを利用して、入力画像の画像分類を行なってテキスト出力コンポーネントに分類結果を示す。
  • OpenなLLMのAPIを叩いて入力したテキストに応じてLLMの出力結果を出力テキストコンポーネントに反映する。

業務では、GCPに接続してBQからとってきたデータと入力データを比較して類似度を測る的なことをやってました。業務をやってて結構いいなと感じた部分が3つあって、

  • PythonベースなのでPyTorchモデルをすぐに導入できる
  • 普通のwebアプリだと、HTMLとかCSSとか色々書かないといけないが、Gradioがいい感じにフロントエンドをやってくれるので、サクッとwebで動かしたい時にめちゃくちゃ便利
  • 複数人でwebアプリに接続する場合、Stateというセッションの状態を保持する機構があり、勝手に考慮してくれる

という点が良かったかなと思います。ただ、UIを自由にいじれないという問題もあるので、デザインにこだわりたい人には向いてないのかなと思います。

最後まで見ていただきありがとうございます!文章がかなり拙く見にくい部分があったと思います。エンジニアとしての力だけでなく、文章力もこうやってアウトプットすることで成長していきたいです!

参考

Discussion