https://raid-bench.xyz
Placares abertos. Avaliação confiável. Detecção robusta de IA.
RAID é o maior e mais abrangente conjunto de dados para avaliação de detectores de texto gerados por IA. Ele contém mais de 10 milhões de documentos abrangendo 11 LLMs, 11 gêneros, 4 estratégias de decodificação e 12 ataques adversários. Ele foi projetado para ser o local de referência para avaliação confiável de detectores populares por terceiros.
Instalação pip install raid-bench | |
Exemplo de uso | |
---|---|
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 ) |
Com RAID você pode:
O conjunto de dados RAID inclui mais de 10 milhões de gerações das seguintes categorias:
Categoria | Valores |
---|---|
Modelos | ChatGPT, GPT-4, GPT-3 (text-davinci-003), GPT-2 XL, Llama 2 70B (Bate-papo), Cohere, Cohere (Bate-papo), MPT-30B, MPT-30B (Bate-papo), Mistral 7B, Mistral 7B (bate-papo) |
Domínios | Resumos do ArXiv, receitas, postagens do Reddit, resumos de livros, artigos de notícias do NYT, poesia, resenhas de filmes da IMDb, Wikipedia, notícias tchecas, notícias alemãs, código Python |
Estratégias de decodificação | Ganancioso (T=0), Amostragem (T=1), Ganancioso + Penalidade de Repetição (T=0, Θ=1,2), Amostragem + Penalidade de Repetição (T=1, Θ=1,2) |
Ataques adversários | Exclusão de artigo, homóglifo, troca de número, paráfrase, troca de sinônimo, erro ortográfico, adição de espaço em branco, troca superior-inferior, espaço de largura zero, inserção de parágrafos, ortografia alternativa |
RAID é o único conjunto de dados que cobre diversos modelos, domínios, estratégias de amostragem e ataques
Consulte nosso artigo ACL 2024 para uma comparação mais detalhada
As partições do conjunto de dados RAID que fornecemos são divididas da seguinte forma:
Etiquetas? | Domínios | Tamanho do conjunto de dados (sem adversário) | Tamanho do conjunto de dados (com adversário) | |
---|---|---|---|---|
Trem RAID | ✅ | Notícias, livros, resumos, resenhas, Reddit, receitas, Wikipedia, poesia | 802M | 11,8G |
Teste RAID | ❌ | Notícias, livros, resumos, resenhas, Reddit, receitas, Wikipedia, poesia | 81,0 milhões | 1,22G |
RAID-extra | ✅ | Código, Tcheco, Alemão | 275 milhões | 3,71G |
Para baixar o RAID através do pacote pypi, execute
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 )
Você também pode baixar manualmente os dados 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
NOVO: Agora você também pode baixar o RAID por meio dos conjuntos de dados HuggingFace? Biblioteca
from datasets import load_dataset
raid = load_dataset ( "liamdugan/raid" )
Para enviar para a tabela de classificação, você deve primeiro obter previsões para o seu detector no conjunto de testes. Você pode fazer isso usando o pacote pypi ou a 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
Depois de obter o arquivo predictions.json
, você deverá escrever um arquivo de metadados para seu envio. Seu arquivo de metadados deve usar o modelo encontrado neste repositório em leaderboard/template-metadata.json
.
Finalmente, bifurque este repositório. Adicione seus arquivos de geração a leaderboard/submissions/YOUR-DETECTOR-NAME/predictions.json
e seu arquivo de metadados a leaderboard/submissions/YOUR-DETECTOR-NAME/metadata.json
e faça uma solicitação pull para este repositório.
Nosso bot GitHub executará avaliações automaticamente nas previsões enviadas e enviará os resultados para leaderboard/submissions/YOUR-DETECTOR-NAME/results.json
. Se tudo correr bem, um mantenedor fundirá o PR e seu modelo aparecerá nas tabelas de classificação!
Observação
Você pode enviar vários detectores em um único PR – cada detector deve ter seu próprio diretório.
Se você deseja executar os detectores que implementamos ou usar nosso código de geração de conjunto de dados, você deve instalar a partir do código-fonte. Para fazer isso, primeiro clone o repositório. Em seguida, instale no ambiente virtual de sua preferência
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
Em seguida, preencha o arquivo set_api_keys.sh
com as chaves de API dos módulos desejados (OpenAI, Cohere, detectores de API, etc.). Depois disso, execute source set_api_keys.sh
para definir as variáveis de ambiente da chave API.
Para aplicar um detector ao conjunto de dados por meio de nossa CLI, execute detect_cli.py
e evaluate_cli.py
. Eles envolvem as funções run_detection
e run_evaluation
do pacote pypi. As opções estão listadas abaixo. Consulte detectors/detector.py
para obter uma lista de nomes 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)
Exemplo:
$ 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
A saída evaluate_cli.py
será um arquivo JSON contendo a precisão do detector em cada divisão do conjunto de dados RAID na taxa alvo de falsos positivos, bem como os limites encontrados para o detector.
Se desejar implementar seu próprio detector e ainda executá-lo por meio da CLI, você deverá adicioná-lo a detectors/detector.py
para que possa ser chamado por meio de argumento de linha de comando.
Se você usar nosso código ou descobertas em sua pesquisa, cite-nos 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 pesquisa é apoiada em parte pelo Escritório do Diretor de Inteligência Nacional (ODNI), Atividade de Projetos de Pesquisa Avançada de Inteligência (IARPA), por meio do contrato do Programa HIATUS nº 2022-22072200005. As opiniões e conclusões aqui contidas são de responsabilidade dos autores e não devem ser interpretadas como representando necessariamente as políticas oficiais, expressas ou implícitas, da ODNI, da IARPA ou do governo dos EUA. O governo dos EUA está autorizado a reproduzir e distribuir reimpressões para fins governamentais, independentemente de qualquer anotação de direitos autorais nela contida.