はじめに
GradioはオープンソースのPythonライブラリであり、機械学習モデル、API、または任意のPython関数のためのデモやWebアプリケーションを素早く構築することができます。Gradioの組み込み共有機能を使用すると、数秒でデモやWebアプリケーションへのリンクを共有することが可能です。JavaScript、CSS、Webホスティングの経験は不要です!
Gradioの最大の特長は、その手軽さと便利성에あります。短短数行のコードで大規模言語モデルのWebアプリケーションを構築でき、多くのAIデモで使用されています。
環境設定とインストール
前提条件:GradioはPython 3.8以上が必要です。Pythonがインストールされていれば、Windows、Linux、macOSのいずれでも同様に動作します。
インストールは以下のコマンドで実施します:
pip install gradio
# 中国のミラーサイトを使用する場合
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple gradio
Gradioは、お好みのコードエディタ、Jupyterノートブック、Google Colabなどで実行できますでは、最初のGradioアプリケーションを作成してみましょう。
最初のアプリケーション作成
公式 示例をベースにして、コメントを追加したコードを示します:
import gradio as gr
# 関数名を greet から calculate_message に変更
# 変数名もより具体的に変更
def calculate_message(user_name, emphasis_level):
"""ユーザー名と強調レベルでメッセージを構築する関数"""
return "こんにちは、" + user_name + "さん!" * int(emphasis_level)
# Interfaceクラスの使用
demo = gr.Interface(
fn=calculate_message,
inputs=["text", "slider"],
outputs=["text"],
)
demo.launch()
上記のコードを実行すると、シンプルなWebアプリケーションが構築されます。app.pyというファイル名で保存した場合、ターミナルで以下を実行します:
python app.py
デモページはブラウザで http://localhost:7860 に表示されます。Jupyterノートブックで実行した場合は、ノートブック内にデモが埋め込まれます。
これで最初のアプリケーション 完成です。次にHot Reload機能について説明します。
Hot Reload(ホットリロード)機能
Gradioデモを構築する際、特にBlocks外部で作業している場合、毎回コードを再実行して変更を確認するするのは面倒です。
より効率的に開発を行うために、VS Code、Sublime Text、PyCharmなどのPython IDEやターミナルから開発を行う場合、Gradioアプリケーションを即座に「リロード」する機能が提供されています。JupyterノートブックやColabなどの環境でも、同様の「マジックコマンド」でセルを素早く再実行できます。
ホットリロードを使うと、Webページでリアルタイムに 修改内容を確認でき、python xxx.py を繰り返し実行する必要がありません。方法はとてもシンプルです:
gradio app.py
ターミナルには以下が表示されます:
Watching: '/Users/freddy/sources/gradio/gradio', '/Users/freddy/sources/gradio/demo/'
Running on local URL: http://127.0.0.1:7860
ファイルを保存すると、自動的に再実行されます。コーディングに集中でき демоも自動更新されるため、開発効率が向上します。
Interfaceクラスの詳細
最初のデモを作成したとき、Interfaceクラスのインスタンスを生成しました。このクラスは、1つ以上の入力を受け取り、1つ以上の出力を返す機械学習モデルのデモ構築に特化しています。gr.Interfaceは繰り返し使用する重要なクラスなので、理解を深めておきましょう。
Interfaceクラスの三大パラメータ:
fn:UIでラップするPython関数
inputs:入力用のGradioコンポーネント(関数パラメータ数と一致させる)
outputs:出力用のGradioコンポーネント(関数の戻り値数と一致させる)
fnパラメータは非常に柔軟です。音楽生成器、税計算器、事前学習済みMLモデルの予測関数など、あらゆるPython関数をUIでラップできます。
以下の図は、入力データが関数にどのように送られ、どのように処理されるかを示しています。