
Um benchmark de ciclo de vida para ataques de extração de LLM de caixa preta, defesas e ataques adaptativos.
Este repositório fornece um benchmark unificado para ataques de extração de modelos, defesas, ataques adaptativos e avaliação. A interface pública está organizada em torno de um pequeno número de comandos portáveis. Módulos Python específicos de métodos e scripts de execução legados são detalhes de implementação, e não pontos de entrada voltados ao usuário.
Os quatro pontos de entrada portáveis abaixo validam seus argumentos públicos e então encaminham para as implementações dos métodos. Wrappers de recursos do Slurm são intencionalmente excluídos. Manifestos de propriedade dos métodos permanecem autoritativos para o comportamento de retomada e proveniência de artefatos.
Do Defenses Against LLM Extraction Work Across Attacks? A Lifecycle Benchmark of Black-Box Model Extraction
Shuze Liu (Florida State University), Kaixiang Zhao (Brigham Young University), Runyang Xu (University of Michigan, Ann Arbor), Jingzhi Chen (State University of New York at Buffalo), Nathan Wu (Wake Forest University), Yu Wang (University of Georgia), e Yushun Dong (Florida State University).
Fonte do artigo: https://github.com/sliu11-byte/MEA_benchmark_arXiv
Este repositório fornece as implementações e a interface de reprodução para o artigo. Os pools de consultas estão hospedados no projeto Hugging Face dos autores: https://huggingface.co/datasets/watermarkproject/lord-mea-benchmark
attacks/ attack implementations and shared attack pipeline defenses/ defense implementations and detector adapters countermeasures/ adaptive-attack pipeline evaluation/ shared tasks, rollout code, and metrics infra/ portable model-serving helpers runs/ canonical public entry points
## Interface Pública Canônica
O benchmark expõe quatro comandos de nível superior:
| Experimento | Ponto de entrada | Argumentos de experimento obrigatórios |
|---|---|---|
| Ataque | `runs/run_attack.sh` | `--attack`, `--budget` |
| Defesa | `runs/run_defense.sh` | extração defendida: `--defense`, `--attack`, `--budget`; defesa baseada em resultados: `--defense`, `--attack-run` |
| Ataque adaptativo | `runs/run_adaptive_attack.sh` | `--adaptive-attack`, `--defense`, `--attack`, `--budget` |
| Avaliação | `runs/run_evaluation.sh` | `--manifest` |
Todos os quatro comandos:
- funcionam como comandos shell comuns sem Slurm;
- aceitam `--help` e `--dry-run`;
- validam o experimento solicitado antes de iniciar;
- criam, descobrem, validam e reutilizam automaticamente todos os artefatos de pré-requisito;
- usam padrões determinísticos do benchmark sob `--profile paper`;
- preservam o comportamento existente de retomada e reutilização de artefatos de cada método;
- gravam ou preservam metadados de execução legíveis por máquina e proveniência de entrada;
- evitam nomes de usuário incorporados, contas de cluster, endereços de e-mail ou caminhos específicos do site.
Os executores coordenam a lógica do experimento no processo shell atual. Eles não
submetem jobs de cluster nem escolhem uma partição de agendador. O chamador é responsável
por alocar CPU, memória e GPUs suficientes antes de invocar um executor. Um usuário
pode fornecer endpoints de professor e aluno compatíveis com OpenAI já em execução; o
dispatcher de ataque também pode iniciar seus serviços vLLM locais ao método existentes.
Os comandos mostrados abaixo são a interface pública completa de reprodução. Um
leitor não deve precisar preparar transcrições, checkpoints de warmup, linhas de base
adaptativas, saídas de professor reservadas ou pacotes de checkpoint manualmente.
Esses são dependências internas de propriedade dos executores. A configuração manual é
limitada a recursos ou credenciais que não podem ser inferidos, como alocação de GPU,
acesso a modelos restritos do Hugging Face e endpoints opcionais de modelos externos.
## Métodos Suportados
### Ataques
O registro de ataques contém seis métodos:```text
seqkd
lord
soda
qedks
model_leeching
gad
O protocolo do artigo usa orçamentos de ataque 100, 1000 e 10000. O conjunto de dados de consultas publicado também contém pools de 50.000 e 100.000 registros para subconjuntos determinísticos e construção de conjuntos de validação, mas estes não são divulgados como orçamentos de ataque primários.
As defesas são separadas pelos artefatos que exigem.
Defesas de extração defendida modificam respostas, treinamento ou o processo de extração e, portanto, executam um ataque selecionado sob a defesa:```text ads doge trace_rewriting adfp ginsew radioactivity
**Defesas e detetores baseados em resultados** consomem artefactos de uma execução de ataque concluída:```text
duffin
mmd
prada
seat
MMD, PRADA e SEAT consomem principalmente tráfego de consultas de ataque. O DuFFin consome os artefatos de ataque concluídos exigidos pelo seu detector. O registro de defesa, não o wrapper do shell, define os requisitos exatos de artefatos para cada método.
O registro de ataques adaptativos contém:```text dipper translation
`translation` denota o ataque adaptativo de retro-tradução do benchmark. O
registro rejeita combinações de adaptação ataque-defesa que não estão
implementadas ou não fazem parte do protocolo do benchmark.
## Configuração
Use Python 3.10 e um ambiente CUDA/PyTorch compatível com as versões
registradas no artigo. O ambiente unificado do benchmark é:```bash
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
Execute os comandos abaixo a partir da raiz do repositório. Os scripts localizam suas implementações de método relativas a essa raiz e gravam todos os artefatos padrão lá.
O único arquivo de requisitos de nível superior cobre ataques, defesas, ataques adaptativos, serviço local do vLLM e avaliação. Ele usa o índice de wheels do PyTorch com CUDA 12.8 registrado pelo ambiente do artigo. Em uma máquina com uma pilha CUDA diferente, instale primeiro a build correspondente do PyTorch e depois instale os requisitos restantes. Ative o ambiente desejado antes de invocar um runner; os scripts portáveis não carregam módulos de ambiente nem ativam o Conda automaticamente.
Verifique a instalação antes de uma execução completa:```bash
python3 attacks/scripts/check_attack_env.py
--require-trl --require-vllm --strict-versions
Os modelos Llama usados pelos ataques, ataques adaptativos e sua avaliação estão
restritos no Hugging Face. Solicite acesso a ambos os repositórios de modelos Llama e, em seguida,
autentique-se uma vez antes de executar o benchmark:```bash
hf auth login
Em uma máquina não interativa, defina HF_TOKEN em vez disso. O token é lido pelas
bibliotecas do Hugging Face e nunca deve ser gravado em um manifesto, script ou
repositório publicado. O próprio conjunto de dados do pool de consultas é público.
| Experimento | Papel | ID do modelo no Hugging Face |
|---|---|---|
| Ataques limpos | vítima/professor | meta-llama/Llama-3.3-70B-Instruct |
| Ataques limpos | substituto/estudante | meta-llama/Llama-3.1-8B-Instruct |
| Defesas | vítima/professor | Qwen/Qwen2.5-72B-Instruct |
| Defesas | substituto/estudante base | Qwen/Qwen2.5-7B |
| Ataques adaptativos | vítima/professor | meta-llama/Llama-3.3-70B-Instruct |
| Ataques adaptativos | substituto/estudante | meta-llama/Llama-3.1-8B-Instruct |
| Ataque adaptativo DIPPER | reescritor de resposta | kalpeshk2011/dipper-paraphraser-xxl |
| Ataque adaptativo DIPPER | tokenizador | google/t5-v1_1-xxl |
| Ataque adaptativo de retro-tradução | modelo de tradução | facebook/seamless-m4t-v2-large |