Gradioとは?
主な特徴
- わずか数行のPythonコードでWebアプリが作れる
- HTMLやJavaScriptを書く必要がない
- テキスト、画像、音声など様々な形式の入出力に対応
- Hugging Faceとの連携が容易
- Jupyterノートブックとの親和性が高い
Gradioの基本的な使い方
インストール方法
pip install gradio
シンプルなアプリの作成
import gradio as gr def greet(name): return "Hello " + name + "!" demo = gr.Interface(fn=greet, inputs="text", outputs="text") demo.launch()
様々な入出力形式に対応
豊富な入出力コンポーネント
- Textbox(テキスト入力)
- Number(数値入力)
- Dropdown(選択肢)
- Checkbox(チェックボックス)
- Image(画像)
- Audio(オーディオ)
- Video(ビデオ)
- File(ファイルアップロード)
- Dataframe(表形式データ)
画像分類アプリの例
import gradio as gr from tensorflow.keras.applications.mobilenet_v2 import MobileNetV2, preprocess_input, decode_predictions import numpy as np model = MobileNetV2() def predict(img): img = preprocess_input(img) pred = model.predict(np.expand_dims(img, 0)) return decode_predictions(pred, top=3)[0] gr.Interface(fn=predict, inputs=gr.Image(shape=(224, 224)), outputs=gr.Label(num_top_classes=3)).launch()
Hugging Faceとの連携
文章生成アプリの例
import gradio as gr from transformers import GPT2LMHeadModel, GPT2Tokenizer model = GPT2LMHeadModel.from_pretrained("gpt2-large") tokenizer = GPT2Tokenizer.from_pretrained("gpt2-large") def generate_text(input_text, num_return_sequences, num_beams): input_ids = tokenizer.encode(input_text, return_tensors='pt') output = model.generate(input_ids, num_return_sequences=num_return_sequences, num_beams=num_beams, early_stopping=True) return tokenizer.batch_decode(output) gr.Interface( generate_text, [gr.inputs.Textbox(lines=2, placeholder="Enter a prompt to generate text..."), gr.inputs.Slider(1, 5, value=1, step=1, label="Number of outputs"), gr.inputs.Slider(2, 10, value=5, step=1, label="Number of beams")], gr.outputs.Textbox(), examples=[ ["The quick brown fox", 1, 1], ["The quick brown fox", 2, 1], ["The quick brown fox", 2, 5], ] ).launch();
ノートブック環境との親和性
ノートブック上でのアプリ起動例
import gradio as gr def greet(name): return "Hello " + name + "!" gr.Interface(fn=greet, inputs="text", outputs="text").launch()
Gradioのその他の使い方
- Webスクレイピングしたデータを可視化するアプリ
- オープンデータを使った分析アプリ
- 外部APIを組み合わせたマッシュアップアプリ
Gradioのインタラクティブ性を支える技術
- コンポーネントの入力と出力の自動バインディング
- イベントリスナーによる動的な振る舞い
- ステートを持つコンポーネント
- Svelteを使ったフロントエンドの実装
- FastAPIを使ったバックエンドの実装
まとめ
Gradioのおかげで、機械学習モデルのデモアプリが簡単に作れるようになりました。Hugging Faceで公開されているモデルも、数行のコードでアプリに組み込めるのは本当に便利です。UIのカスタマイズ性も高いので、ユーザーに使いやすいアプリが作れています。Gradioは機械学習エンジニアの強力な味方ですね。
Gradioインストール方法
1. pipを使ったインストール(推奨)
pip install gradio
2. Condaを使ったインストール
conda install -c conda-forge gradio
3. ソースコードからのインストール
git clone https://github.com/gradio-app/gradio.git cd gradio pip install -e .