Transformers 文档

OpenAI Privacy Filter

Hugging Face's logo
加入 Hugging Face 社区

并获得增强的文档体验

开始使用

此模型于 2026 年 4 月 22 日贡献给 Hugging Face Transformers。

OpenAI 隐私过滤器

OpenAI 隐私过滤器 (OpenAI Privacy Filter) 是一种用于文本中个人身份信息 (PII) 检测和遮蔽的双向令牌分类模型。它专为高吞吐量的数据清洗工作流而设计,适用于团队需要在本地运行、且要求模型具有快速、上下文感知及可调优特性的场景。

OpenAI 隐私过滤器通过自回归预训练获得,其检查点 (checkpoint) 架构与 gpt-oss 相似,但规模较小。随后,我们将该检查点转换为基于隐私标签分类法的双向令牌分类器,并使用监督分类损失进行后训练。(有关 gpt-oss 的架构详细信息,请参阅 gpt-oss 模型卡。)该模型不采用逐个令牌生成文本的方式,而是通过单次前向传递对输入序列进行标注,然后使用受限的维特比 (Viterbi) 程序解码连贯的跨度。对于每个输入令牌,模型会针对包含下述 8 个输出类别的标签分类法预测概率分布。

亮点

  • 宽松的 Apache 2.0 许可证:非常适合实验、定制和商业部署。
  • 小巧体量:可在网页浏览器或笔记本电脑上运行——总参数量 1.5B,活跃参数量 50M。
  • 可微调:通过简便且高效的数据微调,使模型适应特定的数据分布。
  • 长上下文:128,000 个令牌的上下文窗口支持高吞吐量处理长文本,无需进行分块。
  • 运行时控制:通过预设的操作点配置精度/召回率权衡以及检测到的跨度长度。

以下示例演示了如何使用 PipelineAutoModelForTokenClassification 类来检测隐私敏感令牌。

流水线
AutoModelForTokenClassification
from transformers import pipeline


classifier = pipeline(
    task="token-classification",
    model="openai/privacy-filter",
)
classifier("My name is Alice Smith")

资源

OpenAIPrivacyFilterConfig

class transformers.OpenAIPrivacyFilterConfig

< >

( transformers_version: str | None = None architectures: list[str] | None = None output_hidden_states: bool | None = False return_dict: bool | None = True dtype: typing.Union[str, ForwardRef('torch.dtype'), NoneType] = None chunk_size_feed_forward: int = 0 is_encoder_decoder: bool = False id2label: dict[int, str] | dict[str, str] | None = None label2id: dict[str, int] | dict[str, str] | None = None problem_type: typing.Optional[typing.Literal['regression', 'single_label_classification', 'multi_label_classification']] = None num_hidden_layers: int = 8 num_local_experts: int = 128 vocab_size: int = 200064 hidden_size: int = 640 intermediate_size: int = 640 head_dim: int = 64 num_attention_heads: int = 14 num_key_value_heads: int = 2 sliding_window: int = 128 tie_word_embeddings: bool = False initializer_range: float = 0.02 max_position_embeddings: int = 131072 rms_norm_eps: float = 1e-05 rope_parameters: dict | None = None attention_dropout: float | int = 0.0 num_experts_per_tok: int = 4 router_aux_loss_coef: float = 0.001 output_router_logits: bool = False use_cache: bool = True pad_token_id: int | None = 199999 bos_token_id: int | None = None eos_token_id: int | list[int] | None = 199999 attention_bias: bool = True classifier_dropout: float = 0.0 )

参数

  • num_hidden_layers (int, 可选, 默认值为 8) — Transformer 解码器中的隐藏层数量。
  • num_local_experts (int, 可选, 默认值为 128) — 每个设备上的局部专家数量。num_experts 应能被 num_local_experts 整除。
  • vocab_size (int, 可选, 默认值为 200064) — 模型词汇表大小。定义了 input_ids 可表示的不同令牌数量。
  • hidden_size (int, 可选, 默认值为 640) — 隐藏表示的维度。
  • intermediate_size (int, 可选, 默认值为 640) — MLP 表示的维度。
  • head_dim (int, 可选, 默认值为 64) — 注意力头维度。如果为 None,默认值为 hidden_size // num_attention_heads。
  • num_attention_heads (int, 可选, 默认值为 14) — Transformer 解码器中每个注意力层的注意力头数量。
  • num_key_value_heads (int, 可选, 默认值为 2) — 这是用于实现分组查询注意力 (Grouped Query Attention) 的键值头数量。如果 num_key_value_heads=num_attention_heads,模型将使用多头注意力 (MHA);如果 num_key_value_heads=1,模型将使用多查询注意力 (MQA);否则将使用 GQA。在将多头检查点转换为 GQA 检查点时,应通过对组内的所有原始头进行平均池化来构建每个组的键和值头。更多详细信息,请查看这篇论文。如果未指定,默认值为 num_attention_heads
  • sliding_window (int, 可选, 默认值为 128) — 滑动窗口注意力的窗口大小。如果为 None,则不应用滑动窗口。
  • tie_word_embeddings (bool, 可选, 默认值为 False) — 是否根据模型的 tied_weights_keys 映射来绑定权重嵌入。
  • initializer_range (float, 可选, 默认值为 0.02) — 用于初始化所有权重矩阵的 truncated_normal_initializer 的标准差。
  • max_position_embeddings (int, 可选, 默认值为 131072) — 该模型可能使用的最大序列长度。
  • rms_norm_eps (float, 可选, 默认值为 1e-05) — RMS 标准化层使用的 epsilon 值。
  • rope_parameters (dict, 可选) — 包含 RoPE 嵌入配置参数的字典。字典应包含 rope_theta 的值,以及在需要将 RoPE 与更长的 max_position_embeddings 一起使用时可选的缩放参数。
  • attention_dropout (Union[float, int], 可选, 默认值为 0.0) — 注意力概率的丢弃率 (dropout ratio)。
  • num_experts_per_tok (int, 可选, 默认值为 4) — 每个令牌路由到的专家数量。这是令牌选择路由的 top-k 值。
  • router_aux_loss_coef (float, 可选, 默认值为 0.001) — 辅助负载均衡损失系数。用于惩罚 MoE 模型中不均匀的专家路由。
  • output_router_logits (bool, 可选, 默认值为 False) — 模型是否应返回路由器的逻辑值 (logits)。启用此功能还将允许模型输出辅助损失,包括负载均衡损失和路由器 z-loss。
  • use_cache (bool, 可选, 默认值为 True) — 模型是否应返回最后的键/值注意力(并非所有模型都使用)。仅当 config.is_decoder=True 或模型为仅解码器生成模型时相关。
  • pad_token_id (int, 可选, 默认值为 199999) — 词汇表中用于填充的令牌 ID。
  • bos_token_id (int, 可选) — 词表中用于表示流开始(beginning-of-stream)的 Token ID。
  • eos_token_id (Union[int, list[int]], 可选, 默认值为 199999) — 词表中用于表示流结束(end-of-stream)的 Token ID。
  • attention_bias (bool, 可选, 默认值为 True) — 是否在自注意力机制(self-attention)的查询(query)、键(key)、值(value)和输出投影层中使用偏置(bias)。
  • classifier_dropout (float, 可选, 默认值为 0.0) — 分类器的 dropout 比率。

这是用于存储 OpenAIPrivacyFilterModel 配置的配置类。它用于根据指定的参数实例化 OpenAI 隐私过滤器模型,定义模型架构。使用默认值实例化配置将生成与 openai/privacy-filter 类似的配置。

配置对象继承自 PreTrainedConfig,可用于控制模型输出。阅读 PreTrainedConfig 的文档以获取更多信息。

OpenAIPrivacyFilterModel

class transformers.OpenAIPrivacyFilterModel

< >

( config: OpenAIPrivacyFilterConfig )

参数

  • config (OpenAIPrivacyFilterConfig) — 包含模型所有参数的模型配置类。使用配置文件初始化不会加载与模型相关的权重,仅加载配置。请查看 from_pretrained() 方法以加载模型权重。

基础的 OpenAI 隐私过滤器模型,输出原始隐藏状态,顶部没有任何特定的层(head)。

该模型继承自 PreTrainedModel。请查看超类文档以了解该库为所有模型实现的通用方法(例如下载或保存、调整输入嵌入大小、剪枝头部等)。

此模型也是一个 PyTorch torch.nn.Module 子类。像普通的 PyTorch Module 一样使用它,并参考 PyTorch 文档了解一般用法和行为的所有相关信息。

forward

< >

( input_ids: torch.LongTensor | None = None attention_mask: torch.Tensor | None = None position_ids: torch.LongTensor | None = None inputs_embeds: torch.FloatTensor | None = None **kwargs: typing_extensions.Unpack[transformers.utils.generic.TransformersKwargs] ) BaseModelOutputtuple(torch.FloatTensor)

参数

  • input_ids (torch.LongTensor,形状为 (batch_size, sequence_length)可选) — 词表中输入序列 Token 的索引。默认情况下将忽略填充(padding)。

    索引可以使用 AutoTokenizer 获取。详细信息请参阅 PreTrainedTokenizer.encode()PreTrainedTokenizer.call()

    什么是输入 ID?

  • attention_mask (torch.Tensor,形状为 (batch_size, sequence_length)可选) — 用于避免对填充 Token 索引执行注意力机制的掩码。掩码值选自 [0, 1]

    • 1 表示 未掩码 的 Token,
    • 0 表示 已掩码 的 Token。

    什么是注意力掩码?

  • position_ids (torch.LongTensor,形状为 (batch_size, sequence_length)可选) — 每个输入序列 Token 在位置嵌入中的位置索引。选自范围 [0, config.n_positions - 1]

    什么是位置 ID?

  • inputs_embeds (torch.FloatTensor,形状为 (batch_size, sequence_length, hidden_size)可选) — 可选地,你可以选择直接传入嵌入表示,而不是传入 input_ids。如果你想比模型内部的嵌入查找矩阵更精细地控制如何将 input_ids 索引转换为关联向量,这将非常有用。

返回

BaseModelOutput 或 tuple(torch.FloatTensor)

一个 BaseModelOutputtorch.FloatTensor 的元组(如果传入了 return_dict=False 或当 config.return_dict=False 时),根据配置(OpenAIPrivacyFilterConfig)和输入,包含各种元素。

OpenAIPrivacyFilterModel 的 forward 方法,重写了 __call__ 特殊方法。

虽然 forward pass 的实现需要在此函数中定义,但你应该在之后调用 Module 实例而不是这个,因为前者负责运行预处理和后处理步骤,而后者会静默地忽略它们。

  • last_hidden_state (torch.FloatTensor, 形状为 (batch_size, sequence_length, hidden_size)) — 模型最后一层输出的隐藏状态序列。

  • hidden_states (tuple(torch.FloatTensor), optional, 当传递 output_hidden_states=True 或当 config.output_hidden_states=True 时返回) — torch.FloatTensor 的元组(一个用于嵌入层的输出,如果模型有嵌入层;+一个用于每个层的输出),形状为 (batch_size, sequence_length, hidden_size)

    模型在每个层输出的隐藏状态以及可选的初始嵌入输出。

  • attentions (tuple(torch.FloatTensor), optional, 当传递 output_attentions=True 或当 config.output_attentions=True 时返回) — torch.FloatTensor 的元组(每个层一个),形状为 (batch_size, num_heads, sequence_length, sequence_length)

    注意力 softmax 后的注意力权重,用于计算自注意力头中的加权平均值。

OpenAIPrivacyFilterForTokenClassification

class transformers.OpenAIPrivacyFilterForTokenClassification

< >

( config )

forward

< >

( input_ids: torch.LongTensor | None = None attention_mask: torch.Tensor | None = None position_ids: torch.LongTensor | None = None past_key_values: transformers.cache_utils.Cache | None = None inputs_embeds: torch.FloatTensor | None = None labels: torch.LongTensor | None = None use_cache: bool | None = None **kwargs: typing_extensions.Unpack[transformers.utils.generic.TransformersKwargs] ) TokenClassifierOutputtuple(torch.FloatTensor)

参数

  • input_ids (torch.LongTensor,形状为 (batch_size, sequence_length)可选) — 词表中输入序列 Token 的索引。默认情况下将忽略填充。详细信息请参阅 transformers.OpenAIPrivacyFilterModel.forward 中关于 input_ids 的说明。
  • attention_mask (torch.Tensor,形状为 (batch_size, sequence_length)可选) — 用于避免对填充 Token 索引执行注意力机制的掩码。详细信息请参阅 transformers.OpenAIPrivacyFilterModel.forward 中关于 attention_mask 的说明。
  • position_ids (torch.LongTensor,形状为 (batch_size, sequence_length)可选) — 每个输入序列 Token 在位置嵌入中的位置索引。详细信息请参阅 transformers.OpenAIPrivacyFilterModel.forward 中关于 position_ids 的说明。
  • past_key_values (~cache_utils.Cache可选) — 预计算的隐藏状态(自注意力块和交叉注意力块中的键和值),可用于加速顺序解码。这通常由模型在解码的先前阶段返回,当 use_cache=Trueconfig.use_cache=True 时使用。

    输入仅允许 Cache 实例,请参阅我们的 kv 缓存指南。如果未传入 past_key_values,则默认初始化 DynamicCache

    模型将输出与输入相同格式的缓存。

    如果使用了 past_key_values,用户预期仅传入未处理的 input_ids(那些其过去键值状态未提供给此模型的 input_ids),形状为 (batch_size, unprocessed_length),而不是所有 input_ids(形状为 (batch_size, sequence_length))。

  • inputs_embeds (torch.FloatTensor,形状为 (batch_size, sequence_length, hidden_size)可选) — 可选地,你可以选择直接传入嵌入表示,而不是传入 input_ids。详细信息请参阅 transformers.OpenAIPrivacyFilterModel.forward 中关于 inputs_embeds 的说明。
  • labels (torch.LongTensor,形状为 (batch_size, sequence_length)可选) — 用于计算掩码语言建模损失的标签。索引应在 [0, ..., config.vocab_size] 范围内,或为 -100(请参阅 input_ids 文档字符串)。索引设置为 -100 的 Token 将被忽略(掩码),损失仅针对标签在 [0, ..., config.vocab_size] 范围内的 Token 计算。
  • use_cache (bool可选) — 如果设置为 True,则返回 past_key_values 键值状态,并可用于加速解码(请参阅 past_key_values)。

返回

TokenClassifierOutputtuple(torch.FloatTensor)

一个 TokenClassifierOutputtorch.FloatTensor 元组(如果传递了 return_dict=Falseconfig.return_dict=False),包含取决于配置 (None) 和输入的各种元素。

The GenericForTokenClassification forward method, overrides the __call__ special method.

虽然 forward pass 的实现需要在此函数中定义,但你应该在之后调用 Module 实例而不是这个,因为前者负责运行预处理和后处理步骤,而后者会静默地忽略它们。

  • loss (形状为 (1,)torch.FloatTensor可选,当提供 labels 时返回) — 分类损失。

  • logits (形状为 (batch_size, sequence_length, config.num_labels)torch.FloatTensor) — 分类分数(SoftMax 之前)。

  • hidden_states (tuple(torch.FloatTensor), optional, 当传递 output_hidden_states=True 或当 config.output_hidden_states=True 时返回) — torch.FloatTensor 的元组(一个用于嵌入层的输出,如果模型有嵌入层;+一个用于每个层的输出),形状为 (batch_size, sequence_length, hidden_size)

    模型在每个层输出的隐藏状态以及可选的初始嵌入输出。

  • attentions (tuple(torch.FloatTensor), optional, 当传递 output_attentions=True 或当 config.output_attentions=True 时返回) — torch.FloatTensor 的元组(每个层一个),形状为 (batch_size, num_heads, sequence_length, sequence_length)

    注意力 softmax 后的注意力权重,用于计算自注意力头中的加权平均值。

在 GitHub 上更新

© . This site is unofficial and not affiliated with Hugging Face, Inc.