https://raid-bench.xyz
Öffnen Sie Bestenlisten. Vertrauenswürdige Bewertung. Robuste KI-Erkennung.
RAID ist der größte und umfassendste Datensatz zur Bewertung von KI-generierten Textdetektoren. Es enthält über 10 Millionen Dokumente aus 11 LLMs, 11 Genres, 4 Dekodierungsstrategien und 12 gegnerischen Angriffen. Es ist als Anlaufstelle für die vertrauenswürdige Bewertung gängiger Detektoren durch Dritte konzipiert.
Installation pip install raid-bench | |
Beispielverwendung | |
---|---|
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 ) |
Mit RAID können Sie:
Der RAID-Datensatz umfasst über 10 Millionen Generationen aus den folgenden Kategorien:
Kategorie | Werte |
---|---|
Modelle | ChatGPT, GPT-4, GPT-3 (text-davinci-003), GPT-2 XL, Llama 2 70B (Chat), Cohere, Cohere (Chat), MPT-30B, MPT-30B (Chat), Mistral 7B, Mistral 7B (Chat) |
Domänen | ArXiv-Abstracts, Rezepte, Reddit-Beiträge, Buchzusammenfassungen, NYT-Nachrichtenartikel, Gedichte, IMDb-Filmrezensionen, Wikipedia, tschechische Nachrichten, deutsche Nachrichten, Python-Code |
Dekodierungsstrategien | Gierig (T=0), Stichprobe (T=1), Gierig + Wiederholungsstrafe (T=0, Θ=1,2), Stichprobe + Wiederholungsstrafe (T=1, Θ=1,2) |
Gegnerische Angriffe | Artikellöschung, Homoglyphe, Zahlentausch, Paraphrase, Synonymtausch, Rechtschreibfehler, Hinzufügung von Leerzeichen, Vertauschen von oben nach unten, Leerzeichen mit Nullbreite, Absätze einfügen, alternative Schreibweise |
RAID ist der einzige Datensatz, der verschiedene Modelle, Domänen, Sampling-Strategien und Angriffe abdeckt
Einen detaillierteren Vergleich finden Sie in unserem ACL 2024-Papier
Die Partitionen des von uns bereitgestellten RAID-Datensatzes sind wie folgt unterteilt:
Etiketten? | Domänen | Datensatzgröße (ohne Gegner) | Datensatzgröße (mit kontradiktorischem Wert) | |
---|---|---|---|---|
RAID-Zug | ✅ | Nachrichten, Bücher, Abstracts, Rezensionen, Reddit, Rezepte, Wikipedia, Poesie | 802M | 11,8G |
RAID-Test | ❌ | Nachrichten, Bücher, Abstracts, Rezensionen, Reddit, Rezepte, Wikipedia, Poesie | 81,0 Mio | 1,22G |
RAID-extra | ✅ | Code, Tschechisch, Deutsch | 275M | 3,71G |
Um RAID über das Pypi-Paket herunterzuladen, führen Sie Folgendes aus:
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 )
Sie können die Daten auch manuell mit wget
herunterladen
$ 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
NEU: Sie können RAID jetzt auch über die HuggingFace-Datensätze herunterladen? Bibliothek
from datasets import load_dataset
raid = load_dataset ( "liamdugan/raid" )
Um in die Bestenliste aufgenommen zu werden, müssen Sie zunächst Vorhersagen für Ihren Detektor im Testset erhalten. Sie können dies entweder mit dem Pypi-Paket oder der CLI tun:
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
Nachdem Sie die Datei predictions.json
erhalten haben, müssen Sie eine Metadatendatei für Ihre Übermittlung schreiben. Ihre Metadatendatei sollte die Vorlage verwenden, die Sie in diesem Repository unter leaderboard/template-metadata.json
finden.
Zum Schluss forken Sie dieses Repository. Fügen Sie Ihre Generierungsdateien zu leaderboard/submissions/YOUR-DETECTOR-NAME/predictions.json
und Ihre Metadatendatei zu leaderboard/submissions/YOUR-DETECTOR-NAME/metadata.json
hinzu und stellen Sie eine Pull-Anfrage an dieses Repository.
Unser GitHub-Bot führt automatisch Auswertungen der übermittelten Vorhersagen durch und übergibt die Ergebnisse an leaderboard/submissions/YOUR-DETECTOR-NAME/results.json
. Wenn alles gut aussieht, wird ein Betreuer die PR zusammenführen und Ihr Modell erscheint in den Bestenlisten!
Notiz
Sie können mehrere Detektoren in einem einzigen PR einreichen – jeder Detektor sollte über ein eigenes Verzeichnis verfügen.
Wenn Sie die von uns implementierten Detektoren ausführen oder unseren Datensatzgenerierungscode verwenden möchten, sollten Sie ihn von der Quelle installieren. Klonen Sie dazu zunächst das Repository. Anschließend installieren Sie es in der virtuellen Umgebung Ihrer Wahl
Conda:
conda create -n raid_env python=3.9.7
conda activate raid_env
pip install -r requirements.txt
venv:
python -m venv env
source env/bin/activate
pip install -r requirements.txt
Füllen Sie dann die Datei set_api_keys.sh
mit den API-Schlüsseln für Ihre gewünschten Module (OpenAI, Cohere, API-Detektoren usw.). Führen Sie anschließend source set_api_keys.sh
aus, um die API-Schlüsselumgebungsvariablen festzulegen.
Um über unsere CLI einen Detektor auf den Datensatz anzuwenden, führen Sie detect_cli.py
und evaluate_cli.py
aus. Diese umschließen die Funktionen run_detection
und run_evaluation
aus dem Pypi-Paket. Die Optionen sind unten aufgeführt. Eine Liste gültiger Detektornamen finden Sie unter 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)
Beispiel:
$ 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
Die Ausgabe von evaluate_cli.py
ist eine JSON-Datei, die die Genauigkeit des Detektors bei jeder Aufteilung des RAID-Datensatzes bei der angestrebten Falsch-Positiv-Rate sowie die für den Detektor gefundenen Schwellenwerte enthält.
Wenn Sie Ihren eigenen Detektor implementieren und ihn dennoch über die CLI ausführen möchten, müssen Sie ihn zu detectors/detector.py
hinzufügen, damit er per Befehlszeilenargument aufgerufen werden kann.
Wenn Sie unseren Code oder unsere Ergebnisse in Ihrer Forschung verwenden, zitieren Sie uns bitte wie folgt:
@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",
}
Diese Forschung wird teilweise vom Office of the Director of National Intelligence (ODNI), Intelligence Advanced Research Projects Activity (IARPA), über den HIATUS-Programmvertrag Nr. 2022-22072200005 unterstützt. Die hierin enthaltenen Ansichten und Schlussfolgerungen sind die der Autoren und sollten nicht unbedingt als Ausdruck der offiziellen Richtlinien, weder ausdrücklich noch stillschweigend, von ODNI, IARPA oder der US-Regierung interpretiert werden. Die US-Regierung ist berechtigt, Nachdrucke für Regierungszwecke zu vervielfältigen und zu verbreiten, ungeachtet etwaiger Urheberrechtsvermerke darin.