Token Classification 用法¶
摘要¶
- 模型用法:token classification
- Pooling 任务:
token_classify - 离线 API
LLM.encode(..., pooling_task="token_classify")
- 在线 API
- 池化 API (
/pooling)
- 池化 API (
(序列)分类和令牌(token)分类之间的关键区别在于输出粒度:(序列)分类为整个输入序列生成单个结果,而令牌分类则为序列中的每个单独令牌生成结果。
许多分类模型同时支持(序列)分类和 token 分类。关于(序列)分类的更多详细信息,请参阅此页面。
注意
Pooling 多任务支持已被弃用,并将在 v0.20 中移除。当默认的 Pooling 任务(classify)不是您所需时,您需要通过离线设置 PoolerConfig(task="token_classify") 或在线设置 --pooler-config.task token_classify 来手动指定它。
典型用例¶
命名实体识别 (NER)¶
实现示例请见:
离线: examples/pooling/token_classify/ner_offline.py
在线: examples/pooling/token_classify/ner_online.py
强制对齐¶
强制对齐以音频和参考文本作为输入,并生成单词级别的时间戳。
离线: examples/pooling/token_classify/forced_alignment_offline.py
稀疏检索(词汇匹配)¶
BAAI/bge-m3 模型利用 token 分类进行稀疏检索。更多信息,请参阅此页面。
支持的模型¶
| 架构 | 模型 | 示例 HF 模型 | LoRA | PP |
|---|---|---|---|---|
BertForTokenClassification | 基于 BERT | boltuix/NeuroBERT-NER(见备注)等。 | ||
ErnieForTokenClassification | 基于 BERT 的中文 ERNIE | gyr66/Ernie-3.0-base-chinese-finetuned-ner | ||
ModernBertForTokenClassification | 基于 ModernBERT | disham993/electrical-ner-ModernBERT-base | ||
Qwen3ForTokenClassificationC | 基于 Qwen3 | bd2lcco/Qwen3-0.6B-finetuned | ||
*ModelC, *ForCausalLMC 等 | 生成式模型 | 不适用 | * | * |
C 通过 --convert classify 自动转换为分类模型。(详情)* 特性支持与原始模型相同。
如果您的模型不在上述列表中,我们将尝试使用 as_seq_cls_model 自动转换该模型。默认情况下,类概率是从对应于最后一个令牌的 softmax 后的隐藏状态中提取的。
多模态模型¶
注意
有关多模态模型输入的更多信息,请参阅此页面。
| 架构 | 模型 | 输入 | 示例 HF 模型 | LoRA | PP |
|---|---|---|---|---|---|
Qwen3ASRForcedAlignerForTokenClassification | Qwen3-ForcedAligner | T + A+ | Qwen/Qwen3-ForcedAligner-0.6B(见备注) | ✅︎ |
注意
强制对齐的使用需要 --hf-overrides '{"architectures": ["Qwen3ASRForcedAlignerForTokenClassification"]}'。请参阅 examples/pooling/token_classify/forced_alignment_offline.py。
作为奖励模型¶
使用 token 分类模型作为奖励模型。关于奖励模型的详细信息,请参阅 奖励模型 (Reward Models)。
| 架构 | 模型 | 示例 HF 模型 | LoRA | PP |
|---|---|---|---|---|
InternLM2ForRewardModel | 基于 InternLM2 | internlm/internlm2-1_8b-reward, internlm/internlm2-7b-reward 等。 | ✅︎ | ✅︎ |
Qwen2ForRewardModel | 基于 Qwen2 | Qwen/Qwen2.5-Math-RM-72B 等。 | ✅︎ | ✅︎ |
*ModelC, *ForCausalLMC 等 | 生成式模型 | 不适用 | * | * |
C 通过 --convert classify 自动转换为分类模型。(详情)
如果您的模型不在上述列表中,我们将尝试使用 as_seq_cls_model 自动转换模型。
离线推理¶
池化参数¶
支持以下池化参数。
LLM.encode¶
encode 方法适用于 vLLM 中的所有池化模型。
使用 LLM.encode 进行 token 分类模型处理时,请设置 pooling_task="token_classify"
from vllm import LLM
llm = LLM(model="boltuix/NeuroBERT-NER", runner="pooling")
(output,) = llm.encode("Hello, my name is", pooling_task="token_classify")
data = output.outputs.data
print(f"Data: {data!r}")
在线服务¶
请参阅 Pooling API 并使用 "task":"token_classify"。
更多示例¶
更多示例可在此处找到: examples/pooling/token_classify
支持的功能¶
Token 分类的特性应与(序列)分类保持一致。更多信息,请参阅此页面。