https://raid-bench.xyz
Classements ouverts. Évaluation digne de confiance. Détection IA robuste.
RAID est l'ensemble de données le plus vaste et le plus complet pour évaluer les détecteurs de texte générés par l'IA. Il contient plus de 10 millions de documents couvrant 11 LLM, 11 genres, 4 stratégies de décodage et 12 attaques contradictoires. Il est conçu pour être le lieu incontournable pour une évaluation tierce fiable des détecteurs populaires.
Installation pip install raid-bench | |
Exemple d'utilisation | |
---|---|
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 ) |
Avec RAID, vous pouvez :
L'ensemble de données RAID comprend plus de 10 millions de générations dans les catégories suivantes :
Catégorie | Valeurs |
---|---|
Modèles | 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) |
Domaines | Résumés ArXiv, recettes, articles Reddit, résumés de livres, articles d'actualités du New York Times, poésie, critiques de films IMDb, Wikipédia, actualités tchèques, actualités allemandes, code Python |
Stratégies de décodage | Gourmand (T=0), Échantillonnage (T=1), Gourmand + Pénalité de répétition (T=0, Θ=1,2), Échantillonnage + Pénalité de répétition (T=1, Θ=1,2) |
Attaques contradictoires | Suppression d'article, homoglyphe, échange de numéros, paraphrase, échange de synonymes, faute d'orthographe, ajout d'espaces, échange haut-bas, espace de largeur nulle, insertion de paragraphes, orthographe alternative |
RAID est le seul ensemble de données qui couvre divers modèles, domaines, stratégies d'échantillonnage et attaques
Consultez notre article ACL 2024 pour une comparaison plus détaillée
Les partitions de l'ensemble de données RAID que nous fournissons sont réparties comme suit :
Des étiquettes ? | Domaines | Taille de l'ensemble de données (sans confrontation) | Taille de l'ensemble de données (avec contradictoire) | |
---|---|---|---|---|
Train RAID | ✅ | Actualités, livres, résumés, critiques, Reddit, recettes, Wikipédia, poésie | 802M | 11,8G |
Test RAID | ❌ | Actualités, livres, résumés, critiques, Reddit, recettes, Wikipédia, poésie | 81,0M | 1,22G |
RAID-extra | ✅ | Code, tchèque, allemand | 275M | 3,71G |
Pour télécharger RAID via le package pypi, exécutez
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 )
Vous pouvez également télécharger manuellement les données en utilisant 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
NOUVEAU : Vous pouvez également désormais télécharger RAID via les ensembles de données HuggingFace ? Bibliothèque
from datasets import load_dataset
raid = load_dataset ( "liamdugan/raid" )
Pour vous soumettre au classement, vous devez d'abord obtenir des prédictions pour votre détecteur sur l'ensemble de test. Vous pouvez le faire en utilisant soit le package pypi, soit la 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
Après avoir obtenu le fichier predictions.json
, vous devez ensuite écrire un fichier de métadonnées pour votre soumission. Votre fichier de métadonnées doit utiliser le modèle trouvé dans ce référentiel à leaderboard/template-metadata.json
.
Enfin, forkez ce référentiel. Ajoutez vos fichiers de génération à leaderboard/submissions/YOUR-DETECTOR-NAME/predictions.json
et votre fichier de métadonnées à leaderboard/submissions/YOUR-DETECTOR-NAME/metadata.json
et faites une pull request vers ce référentiel.
Notre bot GitHub exécutera automatiquement des évaluations sur les prédictions soumises et validera les résultats dans leaderboard/submissions/YOUR-DETECTOR-NAME/results.json
. Si tout se passe bien, un responsable fusionnera le PR et votre modèle apparaîtra dans les classements !
Note
Vous pouvez soumettre plusieurs détecteurs dans un seul PR – chaque détecteur doit avoir son propre répertoire.
Si vous souhaitez exécuter les détecteurs que nous avons implémentés ou utiliser notre code de génération d'ensembles de données, vous devez l'installer à partir des sources. Pour ce faire, clonez d’abord le référentiel. Installez ensuite dans l'environnement virtuel de votre choix
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
Ensuite, remplissez le fichier set_api_keys.sh
avec les clés API des modules souhaités (OpenAI, Cohere, détecteurs API, etc.). Après cela, exécutez source set_api_keys.sh
pour définir les variables d'environnement de la clé API.
Pour appliquer un détecteur à l'ensemble de données via notre CLI, exécutez detect_cli.py
et evaluate_cli.py
. Celles-ci entourent les fonctions run_detection
et run_evaluation
du package pypi. Les options sont répertoriées ci-dessous. Voir detectors/detector.py
pour une liste des noms de détecteurs valides.
$ 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)
Exemple:
$ 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
La sortie evaluate_cli.py
sera un fichier JSON contenant la précision du détecteur sur chaque division de l'ensemble de données RAID au taux de faux positifs cible ainsi que les seuils trouvés pour le détecteur.
Si vous souhaitez implémenter votre propre détecteur tout en l'exécutant via la CLI, vous devez l'ajouter à detectors/detector.py
afin qu'il puisse être appelé via un argument de ligne de commande.
Si vous utilisez notre code ou nos résultats dans votre recherche, veuillez nous citer comme :
@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",
}
Cette recherche est soutenue en partie par le Bureau du directeur du renseignement national (ODNI), Intelligence Advanced Research Projects Activity (IARPA), via le contrat du programme HIATUS #2022-22072200005. Les points de vue et conclusions contenus dans ce document sont ceux des auteurs et ne doivent pas être interprétés comme représentant nécessairement les politiques officielles, expresses ou implicites, de l'ODNI, de l'IARPA ou du gouvernement américain. Le gouvernement américain est autorisé à reproduire et à distribuer des réimpressions à des fins gouvernementales, nonobstant toute annotation de droit d'auteur qui y figure.