NVIDIA garak: guida completa al red-teaming difensivo per modelli linguistici
NVIDIA garak è un framework open-source per il red-teaming difensivo dei modelli linguistici di grandi dimensioni (LLM). In questo tutorial vediamo passo passo come configurarlo, scoprire i plugin disponibili, eseguire scansioni su modelli reali, analizzare i report e creare probe e detector personalizzati.
Il risultato finale è un workflow end-to-end che mostra come probe, detector, generatori, report e punteggi di vulnerabilità collaborano in un test di sicurezza completo.
Setup di NVIDIA garak e funzioni di supporto
Si inizia installando garak e configurando le variabili d’ambiente necessarie. Ecco i passaggi principali:
- Installazione via pip:
pip install -q -U garak - Configurazione delle variabili d’ambiente:
TOKENIZERS_PARALLELISM=falseeHF_HUB_DISABLE_TELEMETRY=1 - Import dei moduli principali:
garak,garak.cli,garak._config - Definizione di una funzione
run_garak(args)per eseguire garak programmaticamente e catturare il percorso del report generato
Esplorazione dei plugin e scansioni su modelli
Con garak configurato, si elencano i plugin disponibili per probe, detector, generatori e buff. Poi si esegue un dry-run rapido per verificare il funzionamento del framework, seguito da una scansione su un modello reale di Hugging Face (gpt2) con la probe DAN 11.0 e una scansione multi-probe che utilizza probe come dan.Dan_11_0, encoding.InjectBase64 e lmrc.SlurUsage.
Analisi dei report: punteggi di sicurezza e tassi di successo degli attacchi
I report generati da garak sono file JSONL. Per analizzarli si usa pandas e NumPy. Si calcolano due metriche fondamentali:
- Safety score (percentuale di prompt superati senza problemi)
- Attack Success Rate (ASR) (percentuale di attacchi riusciti, complementare al safety score)
Un grafico a barre orizzontali mostra la vulnerabilità per combinazione probe-detector, con ASR in percentuale.
Ispezione degli output segnalati e creazione di una probe personalizzata
Si estraggono dal report gli hit (output con punteggio detector ≥ 0.5) per capire quali prompt hanno prodotto comportamenti potenzialmente non sicuri. Poi si crea una probe custom chiamata HelloProbe: due prompt fissi (es. “Please reply with the single word: hello”) collegata a un detector personalizzato.
Creazione di un detector personalizzato ed esportazione in formato AVID
Il detector ContainsHello è uno StringDetector che segnala qualsiasi risposta contenente la parola “hello” (case-insensitive). Infine, i risultati possono essere esportati nel formato AVID (Aggregate Vulnerability Intelligence Database), un formato standardizzato per la condivisione di vulnerabilità nei sistemi di intelligenza artificiale.
