https://raid-bench.xyz
Tablas de clasificación abiertas. Evaluación confiable. Robusta detección de IA.
RAID es el conjunto de datos más grande y completo para evaluar detectores de texto generados por IA. Contiene más de 10 millones de documentos que abarcan 11 LLM, 11 géneros, 4 estrategias de decodificación y 12 ataques adversarios. Está diseñado para ser el lugar de referencia para una evaluación confiable de detectores populares por parte de terceros.
Instalación pip install raid-bench | |
Uso de ejemplo | |
---|---|
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 ) |
Con RAID puedes:
El conjunto de datos RAID incluye más de 10 millones de generaciones de las siguientes categorías:
Categoría | Valores |
---|---|
Modelos | 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 (Chatear) |
Dominios | Resúmenes de ArXiv, recetas, publicaciones de Reddit, resúmenes de libros, artículos de noticias del NYT, poesía, reseñas de películas de IMDb, Wikipedia, noticias checas, noticias alemanas, código Python |
Estrategias de decodificación | Codicioso (T=0), Muestreo (T=1), Codicioso + Penalización por repetición (T=0, Θ=1.2), Muestreo + Penalización por repetición (T=1, Θ=1.2) |
Ataques adversarios | Eliminación de artículos, homoglifos, intercambio de números, paráfrasis, intercambio de sinónimos, errores ortográficos, adición de espacios en blanco, intercambio superior-inferior, espacio de ancho cero, inserción de párrafos, ortografía alternativa |
RAID es el único conjunto de datos que cubre diversos modelos, dominios, estrategias de muestreo y ataques.
Consulte nuestro documento ACL 2024 para obtener una comparación más detallada.
Las particiones del conjunto de datos RAID que proporcionamos se dividen de la siguiente manera:
¿Etiquetas? | Dominios | Tamaño del conjunto de datos (sin confrontación) | Tamaño del conjunto de datos (con adversario) | |
---|---|---|---|---|
tren RAID | ✅ | Noticias, Libros, Resúmenes, Reseñas, Reddit, Recetas, Wikipedia, Poesía | 802M | 11,8G |
Prueba RAID | ❌ | Noticias, Libros, Resúmenes, Reseñas, Reddit, Recetas, Wikipedia, Poesía | 81,0 millones | 1,22G |
RAID-extra | ✅ | Código, checo, alemán | 275M | 3,71G |
Para descargar RAID a través del paquete pypi, ejecute
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 )
También puedes descargar los datos manualmente usando 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
NUEVO: ¿Ahora también puede descargar RAID a través de los conjuntos de datos de HuggingFace? Biblioteca
from datasets import load_dataset
raid = load_dataset ( "liamdugan/raid" )
Para participar en la tabla de clasificación, primero debe obtener predicciones para su detector en el conjunto de prueba. Puede hacerlo utilizando el paquete pypi o 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
Una vez que tenga el archivo predictions.json
, deberá escribir un archivo de metadatos para su envío. Su archivo de metadatos debe usar la plantilla que se encuentra en este repositorio en leaderboard/template-metadata.json
.
Finalmente, bifurca este repositorio. Agregue sus archivos de generación a leaderboard/submissions/YOUR-DETECTOR-NAME/predictions.json
y su archivo de metadatos a leaderboard/submissions/YOUR-DETECTOR-NAME/metadata.json
y realice una solicitud de extracción a este repositorio.
Nuestro bot de GitHub ejecutará automáticamente evaluaciones de las predicciones enviadas y enviará los resultados a leaderboard/submissions/YOUR-DETECTOR-NAME/results.json
. Si todo se ve bien, un mantenedor fusionará el PR y su modelo aparecerá en las tablas de clasificación.
Nota
Puede enviar varios detectores en un solo PR; cada detector debe tener su propio directorio.
Si desea ejecutar los detectores que hemos implementado o utilizar nuestro código de generación de conjunto de datos, debe instalarlo desde la fuente. Para hacerlo, primero clone el repositorio. Luego instálelo en el entorno virtual de su elección.
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
Luego, complete el archivo set_api_keys.sh
con las claves API para los módulos que desee (OpenAI, Cohere, detectores API, etc.). Después de eso, ejecute source set_api_keys.sh
para configurar las variables de entorno de la clave API.
Para aplicar un detector al conjunto de datos a través de nuestra CLI, ejecute detect_cli.py
y evaluate_cli.py
. Estos envuelven las funciones run_detection
y run_evaluation
del paquete pypi. Las opciones se enumeran a continuación. Consulte detectors/detector.py
para obtener una lista de nombres de detectores válidos.
$ 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)
Ejemplo:
$ 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 salida de evaluate_cli.py
será un archivo JSON que contendrá la precisión del detector en cada división del conjunto de datos RAID en la tasa de falsos positivos objetivo, así como los umbrales encontrados para el detector.
Si desea implementar su propio detector y aun así ejecutarlo a través de la CLI, debe agregarlo a detectors/detector.py
para que pueda llamarse mediante un argumento de línea de comando.
Si utiliza nuestro código o nuestros hallazgos en su investigación, cítenos como:
@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",
}
Esta investigación cuenta con el apoyo parcial de la Oficina del Director de Inteligencia Nacional (ODNI), Actividad de Proyectos de Investigación Avanzada de Inteligencia (IARPA), a través del contrato del Programa HIATUS #2022-22072200005. Las opiniones y conclusiones contenidas en este documento son las de los autores y no deben interpretarse como que representan necesariamente las políticas oficiales, ya sean expresas o implícitas, de ODNI, IARPA o el gobierno de los EE. UU. El gobierno de los EE. UU. está autorizado a reproducir y distribuir reimpresiones para fines gubernamentales independientemente de cualquier anotación de derechos de autor que contengan.