🚀 Llama-Guard
Llama-Guardは、70億パラメータのLlama 2ベースの入出力セキュリティモデルです。LLMの入力(プロンプト分類)と応答(応答分類)の両方のコンテンツを分類するために使用できます。
🚀 クイックスタート
このリポジトリには、バニラLlama形式とHugging Faceのtransformers
形式の両方のモデルウェイトが含まれています。Llama-Guardは、入力と出力のセキュリティを確保するためのモデルで、LLMの入力(プロンプト分類)と応答(応答分類)のコンテンツを分類することができます。
✨ 主な機能
- Llama-Guardは、与えられたプロンプトまたは応答が安全か不安全かを示すテキストを生成します。
- 不安全な場合、違反しているサブカテゴリもリストアップします。
- 分類器のスコアを生成するために、最初のトークンの確率を見て、それを「不安全」クラスの確率に変換します。
📦 インストール
モデルを使用するには、Hugging Face Hubにログインする必要があります。
💻 使用例
基本的な使用法
from transformers import AutoTokenizer, AutoModelForCausalLM
import torch
model_id = "meta-llama/LlamaGuard-7b"
device = "cuda"
dtype = torch.bfloat16
tokenizer = AutoTokenizer.from_pretrained(model_id)
model = AutoModelForCausalLM.from_pretrained(model_id, torch_dtype=dtype, device_map=device)
def moderate(chat):
input_ids = tokenizer.apply_chat_template(chat, return_tensors="pt").to(device)
output = model.generate(input_ids=input_ids, max_new_tokens=100, pad_token_id=0)
prompt_len = input_ids.shape[-1]
return tokenizer.decode(output[0][prompt_len:], skip_special_tokens=True)
moderate([
{"role": "user", "content": "I forgot how to kill a process in Linux, can you help?"},
{"role": "assistant", "content": "Sure! To kill a process in Linux, you can use the kill command followed by the process ID (PID) of the process you want to terminate."},
])
高度な使用法
より詳細な使用方法については、このColabノートブックを参照してください。
📚 ドキュメント
トレーニングデータ
トレーニングデータには、Anthropicのデータセットからのプロンプトと、社内で収集したレッドチーミングの例を使用しています。具体的には、Anthropicデータセットからプロンプトのみを取り出し、社内のLLaMAモデルから新しい応答を生成し、ジェイルブレイキング技術を使用して違反する応答を誘発しました。その後、Anthropicデータ(プロンプトと応答)を社内でアノテーション付けし、上記のカテゴリに従ってラベルをマッピングしました。全体で約13,000件のトレーニング例があります。
危害の分類とリスクガイドライン
自動コンテンツリスク軽減は、リアルタイムでコンテンツに関する決定を行うために分類器に依存しています。これらのシステムを構築するための前提条件は、以下の要素があることです。
- 関心のあるリスクの分類体系 – これらが分類器のクラスになります。
- 分類体系内の各リスクカテゴリについて、奨励される出力と非奨励される出力の境界を決定するリスクガイドライン。
このモデルとともに、Google、Microsoft、OpenAIなどの既存のオープン分類体系にインスパイアされたオープン分類体系を公開しています。この分類体系は必ずしもMetaの内部ポリシーを反映しているわけではなく、LLMを高性能で適応性の高い分類器に調整する方法の価値を示すことを目的としています。
Llama-Guardの安全分類体系とリスクガイドライン
以下に、この分類体系に基づく危害の種類と、各カテゴリで有害と見なされる具体的なコンテンツの例を示します。
- 暴力と憎悪:暴力を助長したり、人々が暴力を計画したり実行したりするのを助ける可能性のある声明が含まれます。同様に、差別を提唱したり、侮辱的な表現を含んだり、人々の敏感な個人情報(例:人種、肌の色、宗教、国籍、性的指向、性別、性同一性、または障害)に基づいて憎悪の感情を表明する声明も、このカテゴリで不適切と見なされます。
- 性的コンテンツ:(未成年者を含む)誰かに特定の性行為を行うように促す声明が含まれます。同様に、性的に露骨な(すなわち、エロティックな)声明も、このカテゴリで不適切と見なされます。
- 銃器と違法武器:銃器または違法武器(例:爆発物、生物兵器、または化学兵器)の違法な取得、作成、または使用に関する特定の犯罪を助長したり、容認したり、人々が計画したり実行したりするのを助ける可能性のある声明が含まれます。これには、それらの作成または使用方法の指示も含まれます。
- 規制されたまたは管理された物質:違法薬物、タバコ、アルコール、または大麻などの規制されたまたは管理された物質を違法に生産、譲渡、または消費するように人々を促す、または助ける可能性のある声明が含まれます。
- 自殺と自傷行為:人々が自分自身を傷つけることを助長したり、容認したり、可能にする声明が含まれます(例:自傷行為の方法に関する指示または情報を提供すること)。人々が自分自身を傷つける意図を表明または暗示した場合、適切な健康リソースへのリンクを提供しない限り、どんな応答も不適切と見なされます(完全に支持的なものであっても)。
- 犯罪計画:放火、誘拐、または窃盗などの特定の犯罪活動を助長したり、容認したり、人々が計画したり実行したりするのを助ける可能性のある雑多な声明が含まれます。項目は、上記の他の危害の種類のいずれにも該当しない場合にのみ、このカテゴリで有害と見なされます(例:暴力を助長する声明は、このカテゴリではなく、暴力と憎悪のカテゴリで違反していると見なされます)。
🔧 技術詳細
自動コンテンツリスク軽減は、リアルタイムでコンテンツに関する決定を行うために分類器に依存しています。これらのシステムを構築するための前提条件は、関心のあるリスクの分類体系と、各リスクカテゴリについてのリスクガイドラインがあることです。
📄 ライセンス
このモデルのライセンスはLlama2です。
評価結果
このモデルの性能を、業界の標準的なコンテンツモデレーションAPIと比較しています。比較には、OpenAI、Azure Content Safety、およびGoogleのPerspectiveAPIを使用し、公開ベンチマークと社内ベンチマークの両方で評価しています。公開ベンチマークには、ToxicChatとOpenAI Moderationが含まれます。
|
当社テストセット(プロンプト) |
OpenAI Mod |
ToxicChat |
当社テストセット(応答) |
Llama-Guard |
0.945 |
0.847 |
0.626 |
0.953 |
OpenAI API |
0.764 |
0.856 |
0.588 |
0.769 |
Perspective API |
0.728 |
0.787 |
0.532 |
0.699 |
⚠️ 重要提示
各分類体系の不一致のため、比較は完全に同等ではありません。詳細な議論については、[論文](LINK TO PAPER)を参照してください。