🚀 distilroberta-base-rejection-v1模型卡片
本模型是distilroberta-base的微调版本,在多个不同大语言模型(LLM)的拒绝回复数据集以及基于基于人类反馈的强化学习(RLHF)数据集的正常回复数据集上进行了训练。
该模型旨在识别大语言模型中因提示未通过内容审核而产生的拒绝回复,将输入分为两类:0
表示正常输出,1
表示检测到拒绝回复。
该模型在评估集上取得了以下成绩:
- 损失值:0.0544
- 准确率:0.9887
- 召回率:0.9810
- 精确率:0.9279
- F1值:0.9537
📚 详细文档
模型详情
属性 |
详情 |
微调者 |
ProtectAI.com |
模型类型 |
distilroberta-base |
语言(NLP) |
英语 |
许可证 |
Apache license 2.0 |
微调基础模型 |
distilroberta-base |
预期用途与局限性
该模型旨在识别拒绝回复,将输入分为两类:0
表示正常输出,1
表示检测到拒绝回复。
模型的性能取决于训练数据的性质和质量。对于训练集中未涵盖的文本风格或主题,模型的表现可能不佳。
此外,distilroberta-base
是一个区分大小写的模型。
训练和评估数据
该模型在一个由多个开源数据集组合而成的自定义数据集上进行训练。其中,拒绝回复数据约占 10%,正常输出数据约占 90%。
在准备数据集时,参考了以下论文:
训练过程
训练超参数
训练过程中使用了以下超参数:
- 学习率:2e-05
- 训练批次大小:16
- 评估批次大小:8
- 随机种子:42
- 优化器:Adam,β=(0.9, 0.999),ε=1e-08
- 学习率调度器类型:线性
- 学习率调度器热身步数:500
- 训练轮数:3
训练结果
训练损失 |
轮数 |
步数 |
验证损失 |
准确率 |
召回率 |
精确率 |
F1值 |
0.0525 |
1.0 |
3536 |
0.0355 |
0.9912 |
0.9583 |
0.9675 |
0.9629 |
0.0219 |
2.0 |
7072 |
0.0312 |
0.9919 |
0.9917 |
0.9434 |
0.9669 |
0.0121 |
3.0 |
10608 |
0.0350 |
0.9939 |
0.9905 |
0.9596 |
0.9748 |
框架版本
- Transformers 4.36.2
- Pytorch 2.1.2+cu121
- Datasets 2.16.1
- Tokenizers 0.15.0
💻 使用示例
基础用法
使用Transformers库
from transformers import AutoTokenizer, AutoModelForSequenceClassification, pipeline
import torch
tokenizer = AutoTokenizer.from_pretrained("ProtectAI/distilroberta-base-rejection-v1")
model = AutoModelForSequenceClassification.from_pretrained("ProtectAI/distilroberta-base-rejection-v1")
classifier = pipeline(
"text-classification",
model=model,
tokenizer=tokenizer,
truncation=True,
max_length=512,
device=torch.device("cuda" if torch.cuda.is_available() else "cpu"),
)
print(classifier("Sorry, but I can't assist with that."))
使用Optimum与ONNX
加载模型需要安装 🤗 Optimum 库。
from optimum.onnxruntime import ORTModelForSequenceClassification
from transformers import AutoTokenizer, pipeline
tokenizer = AutoTokenizer.from_pretrained("ProtectAI/distilroberta-base-rejection-v1", subfolder="onnx")
model = ORTModelForSequenceClassification.from_pretrained("ProtectAI/distilroberta-base-rejection-v1", export=False, subfolder="onnx")
classifier = pipeline(
task="text-classification",
model=model,
tokenizer=tokenizer,
truncation=True,
max_length=512,
)
print(classifier("Sorry, but I can't assist with that."))
高级用法
在LLM Guard中使用
可以使用 NoRefusal Scanner 来检测输出是否被拒绝,这可以提示提示词可能存在问题。
👥 社区
加入我们的 Slack 社区,提供反馈、与维护者和其他用户交流、提问、获取包使用或贡献方面的帮助,或者参与有关大语言模型安全的讨论!

📄 许可证
本模型使用 Apache license 2.0 许可证。
📖 引用
@misc{distilroberta-base-rejection-v1,
author = {ProtectAI.com},
title = {Fine-Tuned DistilRoberta-Base for Rejection in the output Detection},
year = {2024},
publisher = {HuggingFace},
url = {https://huggingface.co/ProtectAI/distilroberta-base-rejection-v1},
}