🚀 distilroberta-base-rejection-v1
このモデルは、異なる大規模言語モデル(LLM)からの拒否応答と強化学習による人間のフィードバック(RLHF)データセットからの通常の応答を組み合わせた複数のデータセットで、distilroberta-base をファインチューニングしたものです。プロンプトがコンテンツモデレーションを通過しない場合のLLMの拒否を識別し、入力を2つのカテゴリに分類します:通常の出力は 0
、拒否が検出された場合は 1
です。
🚀 クイックスタート
このモデルは、異なるLLMからの拒否応答とRLHFデータセットからの通常の応答を組み合わせた複数のデータセットで、distilroberta-base をファインチューニングしたものです。評価セットでは以下の結果を達成しています。
- 損失: 0.0544
- 正解率: 0.9887
- 再現率: 0.9810
- 適合率: 0.9279
- F1値: 0.9537
✨ 主な機能
- プロンプトがコンテンツモデレーションを通過しない場合のLLMの拒否を識別します。
- 入力を2つのカテゴリに分類します:通常の出力は
0
、拒否が検出された場合は 1
。
📚 ドキュメント
モデルの詳細
属性 |
詳情 |
ファインチューニングを行った組織 |
ProtectAI.com |
モデルタイプ |
distilroberta-base |
言語 (NLP) |
英語 |
ライセンス |
Apache license 2.0 |
ファインチューニング元のモデル |
distilroberta-base |
想定される用途と制限
このモデルは拒否を識別することを目的としており、入力を2つのカテゴリに分類します:通常の出力は 0
、拒否が検出された場合は 1
。モデルの性能は学習データの性質と品質に依存します。学習セットに表されていないテキストスタイルやトピックに対しては、うまく機能しない可能性があります。また、distilroberta-base
は大文字と小文字を区別するモデルです。
モデルの使い方
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 with 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 を使用して、出力が拒否されたかどうかを検出できます。これは、プロンプトに何か問題があることを示す可能性があります。
学習と評価データ
このモデルは、複数のオープンソースデータセットを組み合わせたカスタムデータセットで学習されました。約10%の拒否応答と約90%の通常の出力を使用しました。データセットを準備する際には、以下の論文を参考にしました。
学習手順
学習ハイパーパラメータ
学習中には以下のハイパーパラメータが使用されました。
- 学習率: 2e-05
- 学習バッチサイズ: 16
- 評価バッチサイズ: 8
- 乱数シード: 42
- オプティマイザ: Adam (betas=(0.9,0.999), epsilon=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
👥 コミュニティ
フィードバックを提供したり、メンテナーや他のユーザーと交流したり、質問をしたり、パッケージの使用方法や貢献に関するヘルプを得たり、LLMセキュリティに関する議論に参加したりするために、私たちの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},
}