openai/privacy-filter
摘要
OpenAI 发布了 Privacy Filter,这是一个包含 15 亿参数的双向令牌分类模型,用于检测和处理个人身份信息(PII)。该模型采用 Apache 2.0 许可证,并支持长上下文,以实现高通量的数据清理。
查看缓存全文
缓存时间: 2026/05/08 08:52
openai/privacy-filter · Hugging Face 来源: https://huggingface.co/openai/privacy-filter
OpenAI 隐私过滤器(Privacy Filter)是一个用于文本中个人可识别信息(PII)检测和掩码的双向 token 分类模型。它旨在用于高吞吐量的数据清理工作流,在这些工作流中,团队需要一个可以在本地运行、速度快、具有上下文感知能力且可微调的模型。OpenAI 隐私过滤器经过自回归预训练,以生成一个与 gpt-oss 架构相似但规模较小的检查点。随后,我们将该检查点转换为基于隐私标签分类体系的双向 token 分类器,并通过监督分类损失进行了后训练。(有关 gpt-oss 的架构详情,请参阅 gpt-oss 模型卡片。)与逐个生成文本 token 不同,此模型在单次前向传递中标记输入序列,然后通过约束维特比(Viterbi)过程解码连贯的跨度。对于每个输入 token,模型预测标签分类体系上的概率分布,该体系由以下描述的 8 个输出类别组成。
亮点:
- 宽松的 Apache 2.0 许可证:非常适合实验、定制和商业部署。
- 体积小:可在网络浏览器或笔记本电脑上运行——总计 15 亿参数,活跃参数仅 5000 万。
- 可微调:通过简便且数据高效的微调,将模型适应特定的数据分布。
- 长上下文:128,000 个 token 的上下文窗口支持高吞吐量处理长文本,无需分块。
- 运行时控制:通过预设的操作点配置精确率/召回率权衡及检测到的跨度长度。
用法
Transformers
- 使用
pipelineAPI:
from transformers import pipeline
classifier = pipeline(
task="token-classification",
model="openai/privacy-filter",
)
classifier("My name is Alice Smith")
- 作为
AutoModelForTokenClassification模型使用:
import torch
from transformers import AutoModelForTokenClassification, AutoTokenizer
tokenizer = AutoTokenizer.from_pretrained("openai/privacy-filter")
model = AutoModelForTokenClassification.from_pretrained("openai/privacy-filter", device_map="auto")
inputs = tokenizer("My name is Alice Smith", return_tensors="pt").to(model.device)
with torch.no_grad():
outputs = model(**inputs)
predicted_token_class_ids = outputs.logits.argmax(dim=-1)
predicted_token_classes = [model.config.id2label[token_id.item()] for token_id in predicted_token_class_ids[0]]
print(predicted_token_classes)
Transformers.js
- 使用
pipelineAPI:
import { pipeline } from "@huggingface/transformers";
const classifier = await pipeline(
"token-classification",
"openai/privacy-filter",
{ device: "webgpu", dtype: "q4" },
);
const input = "My name is Harry Potter and my email is [email protected].";
const output = await classifier(input, { aggregation_strategy: "simple" });
console.dir(output, { depth: null });
示例输出:
[
{
entity_group: 'private_person',
score: 0.9999957978725433,
word: ' Harry Potter'
},
{
entity_group: 'private_email',
score: 0.9999990728166368,
word: ' [email protected]'
}
]
模型详情
模型描述
Privacy Filter 是一个具有跨度解码功能的双向 token 分类模型。它分阶段训练,始于自回归预训练。然后修改预训练语言模型,并作为带宽为 128 的双向带状注意力 token 分类器进行后训练(有效注意力窗口:包括自注意力在内的 257 个 token)。这意味着:
- 基础模型是一个自回归预训练检查点。
- 语言模型输出头被替换为针对隐私标签的 token 分类头。
- 后训练是监督式的 token 级分类,而不是下一个 token 预测。
- 推理应用约束序列解码以产生连贯的 BIOES(Begin, Inside, Outside, End, Single,即开始、内部、外部、结束、单 token)跨度标签。
在架构上,此仓库中的实现是一个预标准化 transformer 编码器风格的堆栈,包含:
- token 嵌入
- 8 个重复的 transformer 块
- 带有旋转位置嵌入的分组查询注意力,包含 14 个查询头和 2 个 KV 头(每组大小 = 每个 KV 头 7 个查询)
- 稀疏混合专家前馈块,总共 128 个专家(每个 token 前 4 路由)
- 针对隐私标签的最终 token 分类头(而非自然语言词汇 token),残差流宽度为
d_model = 640。
与迭代的自回归方法相比,这种设计允许在一次传递中标记所有 token,从而提高吞吐量。与经典的掩码语言模型预训练方法相比,这是自回归模型的后训练转换,而不是原生的掩码 LM 设置。
输出形状
Privacy Filter 可以检测 8 类隐私跨度:
account_numberprivate_addressprivate_emailprivate_personprivate_phoneprivate_urlprivate_datesecret
为了进行 token 分类,每个非背景跨度类别被扩展为带有边界标记的 token 类:B-、I-、E-、S-,加上背景类 O。因此,token 级输出类的总数为 33:1 个背景类 + 8 个跨度标签 * 4 个边界标记 = 33 个类。这意味着输出头为每个 token 发射 33 个 logits。对于长度为 T 的序列,输出形状为 [T, 33];对于大小为 B 的批次,形状为 [B, T, 33]。
Token 标签词汇由背景标签 O 以及每个隐私类别的 BIOES 标记变体组成:account_number、private_address、private_email、private_person、private_phone、private_url、private_date 和 secret。换句话说,对于每个类别,模型预测 B-、I-、E- 和 S- 形式,分别对应开始、内部、结束和单 token 跨度。在推理时,这些每个 token 的 logits 通过约束序列解码被解码为连贯的 BIOES 跨度标签。
序列解码原理与校准
原理
在 token 分类器生成每个 token 的 logits 后,我们使用具有线性链过渡评分的约束维特比解码器来解码标签,而不是对每个 token 取独立的 argmax。解码器强制执行允许的 BIOES 边界过渡,并使用起始、过渡和结束项以及对完整标签路径进行评分,再加上六个过渡偏差参数,用于控制背景持久性、跨度进入、跨度延续、跨度闭合以及边界到边界的交接。这种全局路径优化旨在通过使每个 token 决策依赖于序列级结构(而不仅仅是局部 logits)来提高跨度连贯性和边界稳定性,特别是在局部 token 决策本身可能导致边界碎片化或不一致的多噪声或混合格式文本中。
操作点校准
序列解码参数可以 discourge 停留在背景中,同时鼓励跨度进入和延续,从而产生更广泛且更连续的掩码以提高召回率,或者反之以提高精确率。在运行时,用户可以调整控制此权衡的参数。
模型元数据
- 开发者:OpenAI
- 资助者:OpenAI
- 分享者:OpenAI
- 模型类型:用于隐私跨度检测的双向 token 分类模型
- 语言:主要为英语;报告了选定的多语言鲁棒性评估
- 许可证:Apache 2.0 (https://huggingface.co/openai/privacy-filter/blob/main/LICENSE)
- 来源仓库:https://github.com/openai/privacy-filter
- 演示:https://huggingface.co/spaces/openai/privacy-filter
- 模型卡片:OpenAI Privacy Filter Model Card (https://cdn.openai.com/pdf/c66281ed-b638-456a-8ce1-97e9f5264a90/OpenAI-Privacy-Filter-Model-Card.pdf)
偏见、风险与局限性
风险:过度依赖
Privacy Filter 是一种脱敏和数据最小化辅助工具,而非匿名化、合规性或安全保证。将工具作为通用的匿名化声明而过度依赖,可能会导致错过预期的隐私目标。Privacy Filter 最好作为整体端到端“隐私设计”方法中的多层措施之一来使用。
局限性:静态标签策略
该模型仅识别与训练标签分类体系和定义匹配的个人数据跨度。现实生活中的隐私用例多样且复杂,适当的标签策略和决策边界的定义可能各不相同。因此,模型默认值可能无法满足组织特定的治理要求,除非进行校准/微调。Privacy Filter 不支持在运行时动态配置标签策略;相反,更改策略需要进一步微调模型。原生标签集及其相关的决策边界可能不适用于每种用例。例如,模型的训练策略旨在优先考虑个人标识符,通常通过设计保留那些不强与人相关的上下文;一些用户可能希望调整此选择。在非英语文本、非拉丁字母脚本、受保护群体命名模式或与模型训练相比分布外的领域,性能可能会下降。
故障模式
像所有模型一样,Privacy Filter 可能会出错,例如:
- 对不常见的个人姓名、地区命名惯例、首字母、充满尊称的引用或特定领域标识符检测不足;
- 当局部上下文模糊时,过度删减公共实体、组织、地点或普通名词;
- 在混合格式文本、长文档或带有大量标点和布局伪影的文本中,跨度边界碎片化或偏移;
- 遗漏新颖凭证格式、特定于项目的 token 模式或拆分到周围语法中的秘密;
- 过度删减良性的低熵字符串、占位符、哈希、示例凭证或类似于秘密的合成示例。
这些局限性可能与人口统计、地区和领域变化相互作用。例如,在训练数据中代表性不足的姓名和标识符,或遵循与主要训练分布不同的惯例的姓名和标识符,更有可能被遗漏或不一致地界定。
高风险部署警告
在医疗、法律、金融、人力资源、教育和政府工作流等高敏感环境中需要格外谨慎。在这些环境中,假阴性和假阳性都可能导致高昂代价:遗漏的跨度可能会暴露敏感信息,而过度的掩码可能会移除审查、审计或下游决策所需的重要上下文。
建议
- 将 Privacy Filter 作为整体“隐私设计”方法的一部分使用,而不是作为通用的匿名化声明。
- 在生产环境使用前,结合本地政策参考进行领域内评估。
- 当策略与基础边界不同时,使用特定任务微调。
- 为高敏感工作流保留人工审查路径。
相似文章
介绍 OpenAI Privacy Filter
OpenAI 发布了 Privacy Filter,这是一个开放权重模型,旨在高效且具有上下文感知地检测和编辑文本中的个人身份信息(PII)。
OpenAI 隐私过滤模型
OpenAI 悄悄在 Hugging Face 发布了一款 Apache-2.0 授权的隐私过滤模型,权重完全开放,旨在帮用户在本地运行隐私保护过滤器的同时,仍享受大实验室级别的质量。
@altryne:OpenAI 刚在 HuggingFace 开源了一个 15 亿参数(5000 万活跃)的 Apache 2.0 模型!不是新 LLM,而是……
OpenAI 在 HuggingFace 以 Apache 2.0 协议发布 15 亿参数 PII 检测模型 Privacy Filter。
@hank_aibtc: 卧槽 OpenAI 终于干了件人事!!! 2026 年第一个开源模型来了——Privacy Filter, Apache 2.0 直接放出! 1.5B 参数的 PII(个人信息) 检测神器, 专门把文本里的姓名、地址、电话、邮箱、身份证这…
OpenAI 开源了 Privacy Filter 模型(1.5B 参数,Apache 2.0),用于在浏览器本地通过 WebGPU 检测个人信息,无需上传数据,保护隐私。
@iotcoi:OpenAI 训练了完美 LLM,让 OpenAI 自己都看不到数据 openai/privacy-filter Apache 2.0,1B 参数 MoE,本地运行 我的……
OpenAI 发布 10 亿参数 Apache-2.0 MoE 模型,可在任何 LLM 接收前自动脱敏,实现完全本地、零泄露的工作流。