GradioアプリのFlag(フラグする)って何?Flaggingを使う方法

公開日:
目次

Gradioでwebアプリを作成すると、「Flag(フラグする)」というボタンが表示されます。設定した覚えがないのになぜ表示されるのでしょうか?

今回はこの「Flag(フラグする)」ボタンを管理できるFlaggingについて説明します。

Flag(フラグする)とは

Flag(フラグする)とは、Gradioアプリの入出力データを保存する機能で正式にはFlaggingという名前です。入出力データを保存することで、アプリの挙動を確認することができます。例えばAIモデルを利用したアプリを作成したとき、入力画像と出力画像を保存することで、モデルの挙動を確認することができます。また、入力データと出力データを保存することで、モデルの精度を計測することもできます。

Flaggingを使う方法

Gradioアプリのインターフェースには、デフォルトで出力の下に表示される「フラグする」ボタンがあります。デフォルトでは、「フラグする」ボタンをクリックすると、入出力データがgradioデモを実行しているマシンに戻され、CSVログファイルとして保存されます。しかし、このデフォルトの動作は変更することができます。

Flagボタンをクリックしたときの動作を設定するには、FlaggingCallbackのサブクラスのインスタンスを、Interfaceコンストラクタのflagging_callbackパラメータに渡します。FlaggingCallbackのサブクラスは以下の通りですが、独自に作成することもできます。

SimpleCSVLogger

FlaggingCallback抽象クラスの簡略化された実装は、説明のために提供されます。各フラグ付きサンプル(入力データと出力データの両方)は、gradioアプリを実行しているマシン上でCSVファイルにログ記録されます。

CSVLogger

FlaggingCallback抽象クラスのデフォルトの実装です。フラグを立てたサンプル(入力データと出力データの両方)は、gradioアプリを実行しているマシンでヘッダー付きのCSVファイルにログ出力されます。

HuggingFaceDatasetSaver

各フラグ付きサンプル(入力データと出力データの両方)をHuggingFaceデータセットに保存するコールバックです。

「Flag(フラグする)」ボタンを表示しない方法

「Flag(フラグする)」ボタンを表示しないようにするには、Interfaceコンストラクタのallow_flaggingパラメータに'never'を渡します。

以下のサンプルコードでは、allow_flaggingパラメータに'never'を渡しているため、「Flag(フラグする)」ボタンが表示されません。

import gradio as gr

def greet(name):
  return 'hello' + name

demo = gr.Interface(fn=greet, inputs='text', outputs='text', allow_flagging='never')
demo.launch()

Image from Gyazo
「Flag(フラグする)」ボタンが表示されない