
Modelo bidireccional de clasificación de tokens para la detección y enmascaramiento de PII en texto, con CLI para redacción, evaluación y ajuste fino on-premises.
OpenAI Privacy Filter es un modelo de clasificación de tokens bidireccional para la detección y el enmascaramiento de información de identificación personal (PII) en texto. Está pensado para flujos de trabajo de saneamiento de datos de alto rendimiento en los que los equipos necesitan un modelo que puedan ejecutar en sus propias instalaciones, que sea rápido, consciente del contexto y ajustable.
OpenAI Privacy Filter se preentrena de forma autorregresiva para llegar a un checkpoint con una arquitectura similar a la de gpt-oss, aunque de menor tamaño. Después convertimos ese checkpoint en un clasificador de tokens bidireccional sobre una taxonomía de etiquetas de privacidad y lo postentrenamos con una pérdida de clasificación supervisada. (Para obtener detalles sobre la arquitectura de gpt-oss, consulta la model card de gpt-oss). En lugar de generar texto token a token, este modelo etiqueta una secuencia de entrada en una única pasada hacia delante y luego decodifica spans coherentes con un procedimiento de Viterbi restringido. Para cada token de entrada, el modelo predice una distribución de probabilidad sobre la taxonomía de etiquetas, que consta de 8 categorías de salida descritas a continuación.
Aspectos destacados:
Este repositorio contiene el código local, la CLI y los recursos de ejemplo utilizados para ejecutar, evaluar y ajustar los checkpoints de Privacy Filter. Está pensado para equipos que quieran inspeccionar la implementación directamente y operar el modelo en su propio entorno.
Recursos del repositorio: Licencia y Política de seguridad.
pip install -e .
Después de esto, tendrás un script de Python opf que se puede ejecutar directamente o mediante python -m opf. El script se puede usar de 3 formas distintas, como se describe a continuación.
Por defecto, opf busca un modelo en el directorio al que apunta la variable OPF_CHECKPOINT, o en ~/.opf/privacy_filter. Si no se encuentra un modelo en la ubicación ~/.opf/privacy_filter, se descargará.
opf "Alice was born on 1990-01-02."
El código permite ejecutarse tanto en GPU (por defecto) como en CPU. Para ejecutarlo en CPU, usa el flag --device cpu:
opf --device cpu "Alice was born on 1990-01-02."
Para sobrescribir el checkpoint por defecto, pasa --checkpoint:
opf --checkpoint /path/to/checkpoint_dir "Alice was born on 1990-01-02."
El modo de redactado permite redactar un archivo completo de una vez
opf -f /path/to/file
El redactado también se puede realizar mediante pipes, para admitir one-liners complejos:
cat /path/to/file | grep -e 'some_pattern' | opf
Si no se proporciona ninguna entrada, opf se iniciará en modo interactivo. En este modo, para cada ejemplo de entrada, la CLI imprime una salida JSON estructurada, usando vistas previas con códigos de color ANSI si el terminal los admite. Estas opciones se pueden controlar mediante flags.
Consulta opf redact --help para obtener más flags e información sobre el modo de redactado.
opf eval examples/data/sample_eval_five_examples.jsonl
Los fixtures de evaluación de ejemplo bajo examples/data/sample_eval_five_examples*.jsonl son únicamente datos de ejemplo sintéticos y no describen personas reales ni registros sensibles reales. Consulta examples/data/README.md.
Consulta opf eval --help para obtener más flags e información sobre el modo de evaluación.
opf train /path/to/train.jsonl --output-dir /path/to/finetuned_checkpoint
Consulta opf train --help para obtener más flags e información sobre el modo de finetuning.
opf/__main__.py: punto de entrada unificado de la CLI para los modos redact, eval y train.opf/_api.py: API orientada a Python sobre la pila de runtime y decodificación.opf/_cli/: análisis de argumentos de línea de comandos y helpers de renderizado en terminal.opf/_core/: carga del runtime, conversión de spans y lógica de decodificación compartida.opf/_eval/: carga de conjuntos de datos, preprocesamiento, métricas y ejecutores de evaluación.opf/_train/: análisis de argumentos de finetuning local y ejecutores de entrenamiento.opf/_model/: implementación del transformer, configuración del checkpoint y carga de pesos.examples/data/: archivos de evaluación de ejemplo más conjuntos de datos de demostración de finetuning reproducibles.examples/scripts/finetuning/: harnesses ejecutables de demostración de finetuning.FINETUNING.md: guía centrada en el flujo de trabajo de finetuning y en los scripts de demostración.OUTPUT_SCHEMAS.md: formatos de respuesta JSON y de payload de exportación.EVAL_AND_OUTPUT_MODES.md: descripción de los modos de salida para redactado y evaluación.Privacy Filter es un modelo de clasificación de tokens bidireccional con decodificación de spans. Se entrena por fases, comenzando con un preentrenamiento autorregresivo. Después, el modelo de lenguaje preentrenado se modifica y se postentrena como un clasificador de tokens bidireccional con atención en bandas de tamaño 128 (ventana de atención efectiva: 257 tokens, incluido el propio token). Esto significa:
Arquitectónicamente, la implementación de este repositorio es una pila estilo encoder de transformer con pre-norm que incluye:
d_model = 640.En comparación con los enfoques autorregresivos iterativos, este diseño permite etiquetar todos los tokens en una sola pasada, lo que mejora el rendimiento. En comparación con los enfoques clásicos de preentrenamiento de modelos de lenguaje enmascarados, se trata de una conversión postentrenamiento de un modelo autorregresivo en lugar de una configuración nativa de masked-LM.
Privacy Filter puede detectar 8 categorías de spans de privacidad: