NVIDIA garak è un framework potente per effettuare red-teaming su modelli linguistICI di grandi dimensioni (LLM), valutando il loro livello di sicurezza attraverso probe e detector personalizzati. In questo tutorial, esploreremo come implementare, testare e analizzare un flusso completo di red-teaming utilizzando garak. Seguendo un percorso pratico, passeremo attraverso diversi passaggi chiavi, come la configurazione iniziale, l’esplorazione dei plug-in, la generazione di dati simulati, l’esecuzione di test su modelli reali, la personalizzazione delle probe e l’analisi dettagliata con generazione di un report AVID.
Configurazione iniziale di NVIDIA garak
Per iniziare, installiamo garak e configuriamo l’ambiente necessario per il funzionamento. Utilizziamo una serie di librerie Python di base e installiamo garak con pip, avendo cura di disabilitare qualsiasi telemetry o parallelism per evitare conflitti:
Importiamo le librerie necessarie, creiamo una funzione per eseguire comandi nella shell e configuriamo l’ambiente.
Codice di configurazione
- Import library - Importiamo librerie come os, sys, subprocess, etc.
- Helper Functions - Definiamo una funzione per eseguire comandi shell e una per richiamare garak.
Elenco dei plug-in e Test su Modelli
Una volta configurato l’ambiente, possiamo esaminare l’ecosistema di plug-in di garak. Elenchiamo quindi tutti i probe, detector, generatori e “buffs” utili per i test. Procediamo in sequenza:
- Elenco plug-in: elenchiamo le funzionalità attuali.
- Test veloce (dry-run): usiamo il probe test.Repeat per verificare il funzionamento.
- Scansione modello reale: eseguiamo un test su un modello di Hugging Face, come gpt2.
- Scan multifase: usiamo diversi probe per generare un report avanzato.
Questi passaggi offrono una valutazione strutturata delle capacità di garak.
Analisi dei Report
Dopo l’esecuzione dei test, possiamo analizzare i risultati generati. Utilizziamo pandas e NumPy per processare il JSONL report ed estrarre le metriche chiave.
Il report include una serie di metriche come:
- Score medio di sicurezza
- Tasso di successo degli attacchi (ASR)
Esempio di analisi
Creiamo una tabella con i dati principali come ASR per diversi probe e detector. Un’immagine grafica (istogramma) rappresenta visualmente i risultati, evidenziando le particolari vulnerabilità di ogni combinazione probe/detector.
Costruire una Probe Personalizzata con garak
Una parte importante del framework garak è la capacità di estenderlo creando nuovi probe. Ad esempio, possiamo creare una classe di probe personalizzata chiamata HelloProbe.
Codice del probe personalizzato
from garak.probes.base import Probe
class HelloProbe(Probe):
"""Minimal custom probe: two fixed prompts, paired with a custom detector."""
lang = "en"
bcp47 = "en"
primary_detector = "mycustomdet.ContainsHello"
recommended_detector = ["mycustomdet.ContainsHello"]
tags = ["custom:demo"]
goal = "demonstrate authoring a garak probe"
doc_uri = ""
prompts = [
"Please reply with the single word: hello",
"Continue this sentence: The capital of France is",
]
Il codice genera due prompt fissi e li accoppia con un detector custom. Questa classe di probe è utile per valutare modelli rispetto a risposte specifiche.
Esportazione del Report in formato AVID
Garak supporta inoltre l’esportazione delle analisi in formato AVID, un formato standard per la condivisione di dati di valutazione. Questo passo permette di condividere i risultati in modo strutturato e compatibile con ulteriori strumenti di analisi e reporting.
Considerazioni finali
NVIDIA garak offre uno strumento completo e flessibile per eseguire red-teaming su modelli LLM. Con una combinazione di probe esistenti e probe personalizzati, si riesce a ottenere un livello di valutazione dettagliato ed estensibile. La possibilità di generare report in formato JSONL e AVID consente di integrare i risultati facilmente in sistemi di monitoring avanzati.