本项目收集大量的涉及政治、色情、辱骂、暴力违禁等敏感数据,在此基础上微调 roberta 模型,根据模型打分对文本内容进行二次审核。
针对业务场景下个性化的数据和需求,可自由定制审核模型的阈值参数,合适的策略配置将有效提升内容审核的召回率和精确率。
模型包含4个独立的子模型,分别针对不同敏感内容类别:
| 子模型 | 权重文件 | 检测类别 |
|---|---|---|
| politic | roberta_wwm_politic.ckpt | 政治敏感 |
| porn | roberta_wwm_porn.ckpt | 色情内容 |
| insult | roberta_wwm_insult.ckpt | 辱骂言论 |
| violence | roberta_wwm_violence.ckpt | 暴力内容 |
pip install torch transformers torch_npufrom transformers import BertModel, BertTokenizer, BertConfig
import torch
model_dir = "/path/to/model"
tokenizer = BertTokenizer.from_pretrained(model_dir)
model = BertModel.from_pretrained(model_dir)
# 推理代码详见 ascend_inference.pypython sensitive_models_filtering.py本模型已成功适配华为昇腾 Ascend910 NPU。详见适配代码:
NPU 推理结果与 CPU 推理结果的 cosine similarity >= 0.999999。
| 子模型 | Batch=1 延迟 | Batch=64 吞吐 |
|---|---|---|
| politic | 8.37ms | 2072 sent/s |
| porn | 8.50ms | 2075 sent/s |
| insult | 8.21ms | 2075 sent/s |
| violence | 8.38ms | 2083 sent/s |
本项目采用 Apache 2.0 许可证。
NPU vs CPU 精度对比(4 个子模型:政治/色情/辱骂/暴力,CPU 为基线):
| 指标 | 数值 |
|---|---|
| 测试样本/子模型 | 10 |
| 精度结论 | ✅ 通过 — 4 个子模型 NPU 与 CPU 输出高度一致,余弦相似度均 > 0.999999 |
逐子模型精度:
| 子模型 | 余弦相似度 | 最大绝对误差 | 平均绝对误差 | 状态 |
|---|---|---|---|---|
| politic(政治) | 0.99999973 | 3.78e-06 | 1.02e-06 | ✅ 通过 |
| porn(色情) | 0.99999988 | 1.75e-04 | 7.20e-05 | ✅ 通过 |
| insult(辱骂) | 0.99999910 | 8.60e-05 | 2.53e-05 | ✅ 通过 |
| violence(暴力) | 0.99999979 | 2.32e-04 | 7.27e-05 | ✅ 通过 |
分析: 4 个语义过滤子模型在 NPU 上的推理输出与 CPU 几乎完全一致,余弦相似度均超过 0.999999,最大绝对误差仅 2.32e-04。NPU 推理数值精度完全满足要求,不会影响安全过滤分类结果。