
Modello bidirezionale di token-classification per il rilevamento e la mascheratura di PII nel testo, con CLI per redazione, valutazione e finetuning on-premises.
OpenAI Privacy Filter è un modello bidirezionale di classificazione dei token per il rilevamento e la mascheratura di informazioni di identificazione personale (PII) nel testo. È pensato per flussi di lavoro di sanitizzazione dei dati ad alto throughput, in cui i team necessitano di un modello eseguibile on-premises che sia veloce, consapevole del contesto e regolabile.
OpenAI Privacy Filter è preaddestrato in modo autoregressivo per ottenere un checkpoint con un'architettura simile a gpt-oss, sebbene di dimensioni inferiori. Abbiamo poi convertito quel checkpoint in un classificatore bidirezionale di token su una tassonomia di etichette di privacy, e lo abbiamo post-addestrato con una loss di classificazione supervisionata. (Per i dettagli sull'architettura di gpt-oss, si veda la model card di gpt-oss.) Invece di generare testo token per token, questo modello etichetta una sequenza di input in un singolo forward pass, quindi decodifica span coerenti con una procedura Viterbi vincolata. Per ogni token di input, il modello predice una distribuzione di probabilità sulla tassonomia di etichette, che consiste di 8 categorie di output descritte di seguito.
Punti salienti:
Questo repository contiene il codice locale, la CLI e gli asset di esempio usati per eseguire, valutare ed effettuare il fine-tuning dei checkpoint di Privacy Filter. È pensato per i team che vogliono ispezionare direttamente l'implementazione e utilizzare il modello nel proprio ambiente.
Risorse del repository: License e Security Policy.
pip install -e .
Dopodiché, avrai uno script python opf che può essere eseguito direttamente o tramite python -m opf. Lo script può essere usato in 3 modi distinti, come descritto di seguito.
Per impostazione predefinita, opf cerca un modello nella directory indicata dalla variabile OPF_CHECKPOINT, oppure in ~/.opf/privacy_filter. Se un modello non viene trovato nella posizione ~/.opf/privacy_filter, verrà scaricato.
opf "Alice was born on 1990-01-02."
Il codice supporta l'esecuzione sia su GPU (per impostazione predefinita) sia su CPU. Per eseguire su CPU, usa il flag --device cpu:
opf --device cpu "Alice was born on 1990-01-02."
Per sovrascrivere il checkpoint predefinito, passa --checkpoint:
opf --checkpoint /path/to/checkpoint_dir "Alice was born on 1990-01-02."
La modalità di redazione supporta la redazione di un intero file in una sola volta
opf -f /path/to/file
La redazione può anche essere eseguita tramite pipe, per supportare one-liner complesse:
cat /path/to/file | grep -e 'some_pattern' | opf
Se non viene fornito alcun input, opf si avvierà in modalità interattiva. In questa modalità, per ogni esempio di input, la CLI stampa un output JSON strutturato, usando anteprime con codifica a colori ANSI se il terminale le supporta. Queste opzioni possono essere controllate tramite flag.
Consulta opf redact --help per ulteriori flag e informazioni sulla modalità di redazione.
opf eval examples/data/sample_eval_five_examples.jsonl
I fixture di valutazione di esempio sotto examples/data/sample_eval_five_examples*.jsonl sono solo dati di esempio sintetici e non descrivono persone reali o record sensibili reali. Vedi examples/data/README.md.
Consulta opf eval --help per ulteriori flag e informazioni sulla modalità di valutazione.
opf train /path/to/train.jsonl --output-dir /path/to/finetuned_checkpoint
Consulta opf train --help per ulteriori flag e informazioni sulla modalità di fine-tuning.
opf/__main__.py: entrypoint CLI unificato per le modalità redact, eval e train.opf/_api.py: API rivolta a Python sopra lo stack di runtime e decodifica.opf/_cli/: parsing degli argomenti da riga di comando e helper per il rendering nel terminale.opf/_core/: caricamento del runtime, conversione degli span e logica di decodifica condivisa.opf/_eval/: caricamento dei dataset, preprocessing, metriche e runner di valutazione.opf/_train/: parsing degli argomenti per il fine-tuning locale e runner di addestramento.opf/_model/: implementazione del transformer, configurazione del checkpoint e caricamento dei pesi.examples/data/: file di valutazione di esempio più dataset dimostrativi riproducibili per il fine-tuning.examples/scripts/finetuning/: harness dimostrativi eseguibili per il fine-tuning.FINETUNING.md: guida focalizzata sul flusso di lavoro di fine-tuning e sugli script dimostrativi.OUTPUT_SCHEMAS.md: formati dei payload di risposta JSON e di esportazione.EVAL_AND_OUTPUT_MODES.md: descrizione delle modalità di output per redazione e valutazione.Privacy Filter è un modello bidirezionale di classificazione dei token con decodifica degli span. È addestrato in fasi, iniziando con un preaddestramento autoregressivo. Il modello linguistico preaddestrato viene poi modificato e post-addestrato come classificatore bidirezionale di token con attenzione a bande di dimensione 128 (finestra di attenzione effettiva: 257 token incluso self). Ciò significa:
Architetturalmente, l'implementazione in questo repo è uno stack in stile transformer encoder con pre-norm, con:
d_model = 640.Rispetto agli approcci autoregressivi iterativi, questo design consente di etichettare tutti i token in un solo passaggio, il che migliora il throughput. Rispetto agli approcci classici di preaddestramento con masked-language-model, questa è una conversione post-addestramento di un modello autoregressivo anziché un setup nativo di masked-LM.
Privacy Filter può rilevare 8 categorie di span di privacy:
account_numberprivate_addressprivate_emailprivate_personprivate_phoneprivate_urlprivate_datesecret