https://raid-bench.xyz
リーダーボードを開きます。信頼できる評価。堅牢な AI 検出。
RAID は、AI によって生成されたテキスト検出器を評価するための最大かつ最も包括的なデータセットです。これには、11 の LLM、11 ジャンル、4 つのデコード戦略、および 12 の敵対的攻撃にわたる 1,000 万を超えるドキュメントが含まれています。これは、信頼できるサードパーティによる人気の検出器の評価を行うための頼りになる場所となるように設計されています。
インストール pip install raid-bench | |
使用例 | |
---|---|
from raid import run_detection , run_evaluation
from raid . utils import load_data
# Define your detector function
def my_detector ( texts : list [ str ]) -> list [ float ]:
pass
# Download & Load the RAID dataset
train_df = load_data ( split = "train" )
# Run your detector on the dataset
predictions = run_detection ( my_detector , train_df )
# Evaluate your detector predictions
evaluation_result = run_evaluation ( predictions , train_df ) |
RAID を使用すると、次のことが可能になります。
RAID データセットには、次のカテゴリからの 1,000 万を超える世代が含まれています。
カテゴリ | 価値観 |
---|---|
モデル | ChatGPT、GPT-4、GPT-3 (text-davinci-003)、GPT-2 XL、Llama 2 70B (チャット)、Cohere、Cohere (チャット)、MPT-30B、MPT-30B (チャット)、Mistral 7B、ミストラル 7B (チャット) |
ドメイン | ArXiv 要約、レシピ、Reddit 投稿、本の概要、NYT ニュース記事、詩、IMDb 映画レビュー、ウィキペディア、チェコ ニュース、ドイツ ニュース、Python コード |
デコード戦略 | 貪欲 (T=0)、サンプリング (T=1)、貪欲 + 反復ペナルティ (T=0、Θ=1.2)、サンプリング + 反復ペナルティ (T=1、Θ=1.2) |
敵対的攻撃 | 記事の削除、同形文字、数字の入れ替え、言い換え、同義語の入れ替え、スペルミス、空白の追加、上下入れ替え、ゼロ幅スペース、段落の挿入、代替スペル |
RAID は、多様なモデル、ドメイン、サンプリング戦略、攻撃をカバーする唯一のデータセットです
より詳細な比較については、ACL 2024 の論文を参照してください。
当社が提供する RAID データセットのパーティションは次のように分類されます。
ラベル? | ドメイン | データセットのサイズ (敵対なし) | データセットのサイズ (敵対者あり) | |
---|---|---|---|---|
RAIDトレイン | ✅ | ニュース、書籍、要約、レビュー、Reddit、レシピ、ウィキペディア、詩 | 802M | 11.8G |
RAIDテスト | ❌ | ニュース、書籍、要約、レビュー、Reddit、レシピ、ウィキペディア、詩 | 81.0M | 1.22G |
RAID エクストラ | ✅ | コード、チェコ語、ドイツ語 | 275M | 3.71G |
pypi パッケージ経由で RAID をダウンロードするには、次を実行します。
from raid . utils import load_data
# Download the RAID dataset with adversarial attacks included
train_df = load_data ( split = "train" )
test_df = load_data ( split = "test" )
extra_df = load_data ( split = "extra" )
# Download the RAID dataset without adversarial attacks
train_noadv_df = load_data ( split = "train" , include_adversarial = False )
test_noadv_df = load_data ( split = "test" , include_adversarial = False )
extra_noadv_df = load_data ( split = "extra" , include_adversarial = False )
wget
使用してデータを手動でダウンロードすることもできます
$ wget https://dataset.raid-bench.xyz/train.csv
$ wget https://dataset.raid-bench.xyz/test.csv
$ wget https://dataset.raid-bench.xyz/extra.csv
$ wget https://dataset.raid-bench.xyz/train_none.csv
$ wget https://dataset.raid-bench.xyz/test_none.csv
$ wget https://dataset.raid-bench.xyz/extra_none.csv
NEW: HuggingFace データセットを通じて RAID をダウンロードすることもできるようになりました。図書館
from datasets import load_dataset
raid = load_dataset ( "liamdugan/raid" )
リーダーボードに提出するには、まずテスト セットで検出器の予測を取得する必要があります。これは、pypi パッケージまたは CLI を使用して実行できます。
import json
from raid import run_detection , run_evaluation
from raid . utils import load_data
# Define your detector function
def my_detector ( texts : list [ str ]) -> list [ float ]:
pass
# Load the RAID test data
test_df = load_data ( split = "test" )
# Run your detector on the dataset
predictions = run_detection ( my_detector , test_df )
with open ( 'predictions.json' ) as f :
json . dump ( predictions , f )
$ python detect_cli.py -m my_detector -d test.csv -o predictions.json
predictions.json
ファイルを取得したら、送信用のメタデータ ファイルを作成する必要があります。メタデータ ファイルは、このリポジトリleaderboard/template-metadata.json
にあるテンプレートを使用する必要があります。
最後に、このリポジトリをフォークします。生成ファイルをleaderboard/submissions/YOUR-DETECTOR-NAME/predictions.json
に追加し、メタデータ ファイルをleaderboard/submissions/YOUR-DETECTOR-NAME/metadata.json
に追加し、このリポジトリにプル リクエストを作成します。
GitHub ボットは、送信された予測に対して自動的に評価を実行し、結果をleaderboard/submissions/YOUR-DETECTOR-NAME/results.json
にコミットします。すべて問題がなければ、メンテナが PR をマージし、あなたのモデルがリーダーボードに表示されます。
注記
単一の PR で複数のディテクタを送信できます。各ディテクタには独自のディレクトリが必要です。
私たちが実装したディテクタを実行したい場合、またはデータセット生成コードを使用したい場合は、ソースからインストールする必要があります。これを行うには、まずリポジトリのクローンを作成します。次に、選択した仮想環境にインストールします
コンダ:
conda create -n raid_env python=3.9.7
conda activate raid_env
pip install -r requirements.txt
ベンヴ:
python -m venv env
source env/bin/activate
pip install -r requirements.txt
次に、 set_api_keys.sh
ファイルに、目的のモジュール (OpenAI、Cohere、API ディテクタなど) の API キーを設定します。その後、 source set_api_keys.sh
を実行して API キーの環境変数を設定します。
CLI を通じてデータセットに検出器を適用するには、 detect_cli.py
およびevaluate_cli.py
実行します。これらは、pypi パッケージのrun_detection
とrun_evaluation
関数をラップアラウンドします。オプションは以下のとおりです。有効なディテクタ名のリストについては、 detectors/detector.py
参照してください。
$ python detect_cli.py -h
-m, --model The name of the detector model you wish to run
-d, --data_path The path to the csv file with the dataset
-o, --output_path The path to write the result JSON file
$ python evaluate_cli.py -h
-r, --results_path The path to the detection result JSON to evaluate
-d, --data_path The path to the csv file with the dataset
-o, --output_path The path to write the result JSON file
-t, --target_fpr The target FPR to evaluate at (Default: 0.05)
例:
$ python detect_cli.py -m gltr -d train.csv -o gltr_predictions.json
$ python evaluate_cli.py -i gltr_predictions.json -d train.csv -o gltr_result.json
evaluate_cli.py
の出力は、ターゲットの誤検知率での RAID データセットの各分割における検出器の精度と、検出器で見つかったしきい値を含む JSON ファイルになります。
独自のディテクタを実装し、CLI 経由で実行したい場合は、それをdetectors/detector.py
に追加して、コマンド ライン引数経由で呼び出せるようにする必要があります。
研究で当社のコードや調査結果を使用する場合は、次のように引用してください。
@inproceedings{dugan-etal-2024-raid,
title = "{RAID}: A Shared Benchmark for Robust Evaluation of Machine-Generated Text Detectors",
author = "Dugan, Liam and
Hwang, Alyssa and
Trhl{'i}k, Filip and
Zhu, Andrew and
Ludan, Josh Magnus and
Xu, Hainiu and
Ippolito, Daphne and
Callison-Burch, Chris",
booktitle = "Proceedings of the 62nd Annual Meeting of the Association for Computational Linguistics (Volume 1: Long Papers)",
month = aug,
year = "2024",
address = "Bangkok, Thailand",
publisher = "Association for Computational Linguistics",
url = "https://aclanthology.org/2024.acl-long.674",
pages = "12463--12492",
}
この研究は、HIATUS プログラム契約 #2022-22072200005 を通じて、国家情報長官室 (ODNI) の情報先端研究プロジェクト活動 (IARPA) によって一部支援されています。ここに含まれる見解と結論は著者のものであり、ODNI、IARPA、または米国政府の明示または黙示の公式政策を必ずしも表すものとして解釈されるべきではありません。米国政府は、著作権注釈にかかわらず、政府目的で再版を複製および配布する権限を有しています。