自動化された研究アーティファクト — 上流プロジェクトではありません。
このリポジトリは、Université Laval の修士論文のために、公開されている GitHub Actions ワークフローの脆弱性を再現する目的で自動化ハーネスによって構築された使い捨てのラボです。これは
gradio-app/gradioのコミットa81e36967c0973012e90ec7cf03b99cf3fea88ec(2024-04-30)時点の逐語的なスナップショットであり、そのプロジェクト自身のライセンスの下で再配布されています。ライセンスファイルはこのスナップショットに変更なしで含まれています。上流プロジェクトは関与しておらず、決して標的にはなりません。ここで研究されている脆弱性はすでに公開されています。このリポジトリ内のすべてのシークレットと変数はランダムに生成されたダミー値であり、実際の認証情報は含まれていません。アクションの参照とランナーイメージは、2024-04-30 時点で解決されたものに固定されています。スナップショットに加えられたすべての変更については、ハーネス出力内の
pinning.mdを参照してください。質問や異議がある場合: [email protected]
Website | Documentation | Guides | Getting Started | Examples | 中文
Gradio はオープンソースの Python パッケージで、機械学習モデル、API、または任意の Python 関数のデモや Web アプリケーションをすばやく構築できます。Gradio の組み込み共有機能を使えば、デモや Web アプリケーションへのリンクを数秒で共有できます。JavaScript、CSS、Web ホスティングの経験は不要です!

上記のような美しいデモを作成するには、ほんの数行の Python コードが必要です。さっそく始めましょう 💫
前提条件: Gradio には Python 3.8 以降が必要です。
Python にデフォルトで含まれている pip を使用して Gradio をインストールすることをお勧めします。ターミナルまたはコマンドプロンプトで次を実行してください:
pip install gradio
[!TIP] Gradio は仮想環境にインストールするのが最適です。すべての一般的なオペレーティングシステム向けの詳細なインストール手順はこちらに記載されています。
Gradio は、お気に入りのコードエディタ、Jupyter ノートブック、Google Colab、その他 Python を書くあらゆる場所で実行できます。最初の Gradio アプリを作成しましょう:
import gradio as gr
def greet(name, intensity):
return "Hello " * intensity + name + "!"
demo = gr.Interface(
fn=greet,
inputs=["text", "slider"],
outputs=["text"],
)
demo.launch()
[!TIP] コードの可読性を高めるため、インポート名を
gradioからgrに短縮しています。これは広く採用されている慣例であり、あなたのコードを扱う誰もが簡単に理解できるように、この慣例に従うべきです。
次に、コードを実行します。Python コードを例えば app.py というファイルに書いた場合、ターミナルで python app.py を実行します。
ファイルから実行する場合、以下のデモはブラウザで http://localhost:7860 に開きます。ノートブック内で実行している場合、デモはノートブック内に埋め込まれて表示されます。

左側のテキストボックスに名前を入力し、スライダーをドラッグして、Submit ボタンを押します。右側にフレンドリーな挨拶が表示されるはずです。
[!TIP] ローカルで開発する場合、ホットリロードモードで Gradio アプリを実行できます。これにより、ファイルに変更を加えるたびに Gradio アプリが自動的にリロードされます。これを行うには、
pythonの代わりにファイル名の前にgradioと入力するだけです。上記の例では、ターミナルでgradio app.pyと入力します。ホットリロードの詳細については、ホットリロードガイドをご覧ください。
Interface クラスを理解する
最初のデモを作成するために、gr.Interface クラスのインスタンスを作成したことに気づくでしょう。Interface クラスは、1 つ以上の入力を受け取り、1 つ以上の出力を返す機械学習モデルのデモを作成するように設計されています。
Interface クラスには 3 つの主要な引数があります:
fn: ユーザーインターフェース (UI) でラップする関数inputs: 入力に使用する Gradio コンポーネント。コンポーネントの数は関数の引数の数と一致する必要があります。outputs: 出力に使用する Gradio コンポーネント。コンポーネントの数は関数の戻り値の数と一致する必要があります。fn 引数は非常に柔軟です — UI でラップしたい任意の Python 関数を渡すことができます。上記の例では比較的単純な関数を見ましたが、関数は音楽ジェネレーターから税計算機、事前学習済み機械学習モデルの予測関数まで、何でもかまいません。
input と output 引数は、1 つ以上の Gradio コンポーネントを受け取ります。これから見ていくように、Gradio には機械学習アプリケーション向けに設計された 30 以上の組み込みコンポーネント(gr.Textbox()、gr.Image()、gr.HTML() コンポーネントなど)が含まれています。
[!TIP]
inputsとoutputs引数には、これらのコンポーネントの名前を文字列("textbox")として渡すか、クラスのインスタンス(gr.Textbox())として渡すことができます。
関数が上記のように複数の引数を受け取る場合、入力コンポーネントのリストを inputs に渡します。各入力コンポーネントは関数の引数の 1 つに順番に対応します。関数が複数の値を返す場合も同様です。コンポーネントのリストを outputs に渡すだけです。この柔軟性により、Interface クラスはデモを作成するための非常に強力な方法となっています。
gr.Interface については、Interfaces の構築に関するシリーズでさらに詳しく説明します。
美しいデモも共有できなければ意味がありません。Gradio を使用すると、Web サーバーでのホスティングの手間を心配することなく、機械学習デモを簡単に共有できます。launch() で share=True を設定するだけで、デモ用の公開 URL が作成されます。サンプルデモをもう一度見て、最後の行を次のように変更してみましょう:
import gradio as gr
def greet(name):
return "Hello " + name + "!"
demo = gr.Interface(fn=greet, inputs="textbox", outputs="textbox")
demo.launch(share=True) # Share your demo with just 1 extra parameter 🚀
このコードを実行すると、数秒でデモ用の公開 URL が生成されます。次のようなものです:
👉 https://a23dsf231adb.gradio.live
これで、世界中の誰もがブラウザから Gradio デモを試すことができ、機械学習モデルとすべての計算は引き続きお使いのコンピューター上でローカルに実行されます。
デモの共有について詳しくは、Gradio アプリケーションの共有に関する専用ガイドをご覧ください。
これまで、Gradio でデモをすばやく構築できる高レベルクラスである Interface クラスについて説明してきました。しかし、Gradio には他に何ができるのでしょうか?
gr.ChatInterface によるチャットボットGradio には、チャットボット UI の作成に特化して設計されたもう 1 つの高レベルクラス gr.ChatInterface が含まれています。Interface と同様に、関数を指定すると Gradio が完全に機能するチャットボット UI を作成します。チャットボットの作成に興味がある場合は、gr.ChatInterface に関する専用ガイドに直接進んでください。
gr.Blocks によるカスタムデモGradio は、より柔軟なレイアウトとデータフローで Web アプリを設計するための低レベルアプローチも、gr.Blocks クラスで提供しています。Blocks を使用すると、コンポーネントがページ上のどこに表示されるかを制御したり、複雑なデータフロー(出力が他の関数への入力として機能するなど)を処理したり、ユーザーの操作に基づいてコンポーネントのプロパティ/可視性を更新したりできます — これらすべてを Python で行えます。
gr.Blocks() を使用すると、非常にカスタムで複雑なアプリケーションを構築できます。例えば、人気の画像生成 Automatic1111 Web UI は Gradio Blocks を使用して構築されています。gr.Blocks については、Blocks での構築に関するシリーズでさらに詳しく説明します。
これがコアの gradio Python ライブラリの要点ですが、Gradio は実際にはそれ以上のものです! これは、Python または JavaScript で機械学習アプリケーションを構築したり、プログラムでクエリしたりできる Python および JavaScript ライブラリのエコシステム全体です。Gradio エコシステムの他の関連部分は次のとおりです:
gradio_client): Python で任意の Gradio アプリをプログラム的にクエリします。@gradio/client): JavaScript で任意の Gradio アプリをプログラム的にクエリします。@gradio/lite): Pyodide のおかげで、ブラウザ内で完全に実行される Gradio アプリを Python で記述できます(サーバー不要!)。Gradio Guides を使用して Gradio を順番に学習し続けてください。説明、サンプルコード、埋め込みのインタラクティブデモが含まれています。次は: Gradio デモの主要機能です。
または、基本をすでに理解していて特定のものを探している場合は、より技術的な API ドキュメントを検索できます。
バグを報告したい場合や機能リクエストがある場合は、GitHub に issue を作成してください。使用方法に関する一般的な質問については、Discord サーバーで対応していますので、お気軽にご相談ください。
Gradio が気に入ったら、GitHub で ⭐ を残してください!
Gradio は、多くの素晴らしいオープンソースライブラリの上に構築されています!
Gradio は、このリポジトリのルートディレクトリにある LICENSE ファイルに記載されている Apache License 2.0 の下でライセンスされています。
論文 Gradio: Hassle-Free Sharing and Testing of ML Models in the Wild, ICML HILL 2019 もご覧ください。Gradio を研究で使用する場合は、引用してください。
@article{abid2019gradio,
title = {Gradio: Hassle-Free Sharing and Testing of ML Models in the Wild},
author = {Abid, Abubakar and Abdalla, Ali and Abid, Ali and Khan, Dawood and Alfozan, Abdulrahman and Zou, James},
journal = {arXiv preprint arXiv:1906.02569},
year = {2019},
}