
Двунаправленная модель классификации токенов для обнаружения и маскирования PII в тексте, с CLI для редактирования, оценки и дообучения на локальных серверах.
OpenAI Privacy Filter — это двунаправленная модель классификации токенов для обнаружения и маскирования персональных данных (PII) в тексте. Она предназначена для высокопроизводительных рабочих процессов очистки данных, где командам нужна модель, которую можно запускать локально, и которая является быстрой, контекстно-зависимой и настраиваемой.
OpenAI Privacy Filter предварительно обучен авторегрессивно, чтобы получить контрольную точку с архитектурой, аналогичной gpt-oss, albeit меньшего размера. Затем мы преобразовали эту контрольную точку в двунаправленный классификатор токенов по таксономии меток приватности и дообучили с использованием контролируемой функции потерь классификации. (Подробности архитектуры gpt-oss см. в карточке модели gpt-oss.) Вместо генерации текста токен за токеном эта модель размечает входную последовательность за один прямой проход, а затем декодирует связные спаны с помощью ограниченной процедуры Витерби. Для каждого входного токена модель предсказывает распределение вероятностей по таксономии меток, которая состоит из 8 выходных категорий, описанных ниже.
Ключевые особенности:
Этот репозиторий содержит локальный код, CLI и примеры ресурсов, используемых для запуска, оценки и дообучения контрольных точек Privacy Filter. Он предназначен для команд, которые хотят напрямую изучить реализацию и эксплуатировать модель в своей собственной среде.
Ресурсы репозитория: Лицензия и Политика безопасности.
pip install -e .
После этого у вас появится python-скрипт opf, который можно запускать напрямую или через python -m opf. Скрипт можно использовать 3 отдельными способами, как описано ниже.
По умолчанию opf ищет модель в каталоге, указанном переменной OPF_CHECKPOINT, или в ~/.opf/privacy_filter. Если модель не найдена в расположении ~/.opf/privacy_filter, она будет загружена.
opf "Alice was born on 1990-01-02."
Код поддерживает работу как на GPU (по умолчанию), так и на CPU. Для запуска на CPU используйте флаг --device cpu:
opf --device cpu "Alice was born on 1990-01-02."
Чтобы переопределить контрольную точку по умолчанию, передайте --checkpoint:
opf --checkpoint /path/to/checkpoint_dir "Alice was born on 1990-01-02."
Режим редактирования поддерживает редактирование целого файла сразу
opf -f /path/to/file
Редактирование также можно выполнять через каналы, что поддерживает сложные однострочники:
cat /path/to/file | grep -e 'some_pattern' | opf
Если входные данные не предоставлены, opf запустится в интерактивном режиме. В этом режиме для каждого входного примера CLI выводит структурированный JSON, используя предварительный просмотр с ANSI-цветовой кодировкой, если терминал это поддерживает. Эти параметры можно контролировать с помощью флагов.
Обратитесь к opf redact --help для получения дополнительных флагов и информации о режиме редактирования.
opf eval examples/data/sample_eval_five_examples.jsonl
Примеры оценочных фикстур в examples/data/sample_eval_five_examples*.jsonl являются только синтетическими примерами данных и не описывают реальных людей или реальные конфиденциальные записи. См. examples/data/README.md.
Обратитесь к opf eval --help для получения дополнительных флагов и информации о режиме оценки.
opf train /path/to/train.jsonl --output-dir /path/to/finetuned_checkpoint
Обратитесь к opf train --help для получения дополнительных флагов и информации о режиме дообучения.
opf/__main__.py: единая точка входа CLI для режимов redact, eval и train.opf/_api.py: API для Python поверх стека выполнения и декодирования.opf/_cli/: разбор аргументов командной строки и вспомогательные средства отрисовки в терминале.opf/_core/: загрузка среды выполнения, преобразование спанов и общая логика декодирования.opf/_eval/: загрузка наборов данных, предобработка, метрики и средства запуска оценки.opf/_train/: разбор аргументов локального дообучения и средства запуска обучения.opf/_model/: реализация трансформера, конфигурация контрольной точки и загрузка весов.examples/data/: примеры оценочных файлов, а также воспроизводимые демонстрационные наборы данных для дообучения.examples/scripts/finetuning/: запускаемые демонстрационные обвязки для дообучения.FINETUNING.md: сфокусированное руководство по рабочему процессу дообучения и демонстрационным скриптам.OUTPUT_SCHEMAS.md: форматы JSON-ответов и экспортируемых полезных нагрузок.EVAL_AND_OUTPUT_MODES.md: описание режимов вывода для редактирования и оценки.Privacy Filter — это модель двунаправленной классификации токенов с декодированием спанов. Она обучается поэтапно, начиная с авторегрессивного предварительного обучения. Затем предварительно обученная языковая модель модифицируется и дообучается как двунаправленный классификатор токенов с полосным вниманием (banded attention) с размером полосы 128 (эффективное окно внимания: 257 токенов, включая сам токен). Это означает:
С архитектурной точки зрения реализация в этом репозитории представляет собой стек в стиле pre-norm трансформерного энкодера с:
d_model = 640.По сравнению с итеративными авторегрессивными подходами, эта конструкция позволяет размечать все токены за один проход, что повышает пропускную способность. По сравнению с классическими подходами предварительного обучения на основе маскированных языковых моделей, это пост-обучающее преобразование авторегрессивной модели, а не нативная настройка masked-LM.
Privacy Filter может обнаруживать 8 категорий спанов приватности:
account_numberprivate_addressprivate_emailprivate_personprivate_phoneprivate_urlprivate_datesecret