🐰

gradio 使ってみた(1)

2023/07/04に公開

gradio の調査(1)

調査した趣旨

Twitter 終了説の時に流れてきたツイートで、
Streamlit VS gradio

というツイートがありました。

Streamlit は

  • デザイン、シンプルでイケてる
  • 初学者にも優しい
  • ほしい機能は一通りある(気がする)
  • とにかく簡単なのでサクッとアプリ作成できる

など、メリットがあります。
しかし、データのアップロード制限(50 MB)という、
機械学習に向いていそうで大容量データが扱えないというデメリットが大きいと感じました。
画像系の処理はたまに処理が遅く感じることもあります。

そこで、Streamlit に対抗できるか、gradio?!を調べていきます。

gradio 企画、第一弾

まずは使ってみる、をやります。

第二弾は、画像処理系のアプリを作成予定です。
Streamlit との戦いをお披露目したいと思います。

About gradio

公式ページからまとめました。僕なりに日本語バージョン作りました。

  1. 躊躇するな、使おう
  2. シェアしよう、簡単だ
  3. Hugging Face Spaces でリンクを共有できるゾ

上記の 3 つを実際に体験します。
お手元に Google Colab のご準備を。

これが本当の Quick Strart

Hello World レシピ(公式サイト Getting Started より

手順

  1. Google Colab の Notebook を準備

  2. gradio をインストール

!pip install gradio
  1. Python コードをコピペ
# demo
import gradio as gr

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

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

demo.launch()  
  1. セル実行

完成イメージはこちら。
Google Colab で完結したものを体感せよ。


localhost へのアクセスで、より web アプリ感を体感せよ。

手順

  1. 躊躇するな、使おう で用意したコードを変更
# 変更点はこれだけ
demo.launch(share=True)
# demo
import gradio as gr

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

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

# share=True と指定すると 72 時間リンクをシェアできる
demo.launch(share=True)  
  1. セル実行

完成イメージはこちら。
Google Colab で完結したものを体感せよ。
先ほどと違うのは、localhost ではなくなったことを体感せよ。


Google Colab のリンクをクリックして、共有せよ。
なお、僕にはこの実験を手伝ってくれるお友達がいないので、多分共有できているはず、という体で進めます。


手順

  1. Hugging Face アカウントを作成


  1. Hugging Face 画面上の SpaceCreate New Space をクリック


  1. Space 作成
    今回はデモなので、かしこまった設定はなしで進めます。

こんな感じに設定しました。


  1. Hugging Face にコードを push

Google Colab で作成したコードを .py としてダウンロードして、Hugging Face の手順に沿って
以下のコマンドを実行しました。
重要なスクショ(エビデンス)をキャプチャ撮るのを忘れたので、この手順で再現できるかを試していただけると幸いです。

git init
git add . 
git commit -m "first commit"
git push

初回はユーザー名とパスワードを入力します。

pip install gradio

は、requirements.txt を作成しました。

また以下のコードはビルドエラーが出るため、変更しました。

# 変更前 share=True を削除
demo.launch(share=True)
# 変更後
demo.launch()

使ったコードもこちらに添付します。
このままコピーすれば、デプロイ一発でいけるかと思います。

# -*- coding: utf-8 -*-
"""sample_gradio.ipynb

Automatically generated by Colaboratory.

Original file is located at
    https://colab.research.google.com/drive/12UbmNo8dhYLpIZzAySjm8tcPXlyp8Z0M
"""


# demo
import gradio as gr

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

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

demo.launch()

  1. Hugging Face のページでデプロイを確認

こちらでみなさま、アプリ使えますでしょうか?
僕の 私用 PC と 社用 PC で確認したところ、うまく使用できました!

https://huggingface.co/spaces/hisui-and-len/gradio_sample


念のため、スクショを添付します。


そして、エラーなく正常に動作したコードはこちらで確認できると思います。
https://huggingface.co/spaces/hisui-and-len/gradio_sample/tree/main


さいごに

がっつり画像処理アプリを作成したかったのですが、平日にできる限界というものがありました。

第一弾は、「まずは使ってみよう」。

第二弾は、「画像処理アプリ」を Streamlit と gradio で作成して比較しようと思います。
その過程で、web スクレイピングなども紹介できればと思います!!

参考

おまけ

Streamlit VS gradio は続く。。。

Discussion