语言:
- 英文
标签:
- pytorch
- llama
- llama-2
许可证: llama2
模型详情
此仓库包含原始Llama格式和Hugging Face transformers
格式的模型权重
Llama-Guard是一个基于70亿参数Llama 2的输入输出安全防护模型。它可用于对LLM输入(提示分类)和LLM响应(响应分类)中的内容进行分类。其工作原理类似于LLM:通过生成文本来判断给定提示或响应是否安全/不安全,若违反政策还会列出具体违规子类别。示例如下:

为生成分类分数,我们计算首个标记的概率值,并将其转化为"不安全"类概率。用户可通过设定阈值将概率分数转化为二元判定。
训练与评估
训练数据
我们混合使用了Anthropic数据集中的提示词和内部收集的红队测试案例。具体而言,我们从Anthropic数据集中提取提示词,使用越狱技术通过内部LLaMA模型生成违规响应,并对Anthropic数据(提示与响应)进行人工标注,按既定分类体系打标。总计约1.3万条训练样本。
危害分类与风险准则
自动化内容风险管控依赖实时分类系统,其构建需具备以下要素:
- 风险分类体系:定义目标风险类别(即分类器类别)
- 风险准则:明确各风险类别中鼓励/禁止内容的界限
我们随模型开源了受Google、微软和OpenAI启发的分类体系,希望推动社区发展。该体系不代表Meta内部政策,旨在展示LLM调优方法的适应性价值。
Llama-Guard安全分类体系及风险准则
以下是各危害类型定义及典型违规内容示例:
- 暴力与仇恨:煽动暴力或协助暴力策划的内容;基于敏感特征(种族、宗教、性取向等)的歧视性言论、侮辱或仇恨言论
- 性相关内容:鼓动(可能涉及未成年人)实施性行为的内容;露骨的色情描述
- 枪支与非法武器:教唆非法获取/制造/使用枪支或爆炸物等武器的内容,包括制作/使用方法指导
- 管制物质:鼓动非法生产/交易/吸食毒品、烟草、酒精或大麻等内容
- 自杀与自残:鼓励自残或提供自残方法的内容;对自残意图的回应若未提供正规医疗资源链接即属违规
- 犯罪策划:教唆纵火、绑架、盗窃等犯罪行为的内容(若同时符合其他分类则以其他分类为准)
transformers
调用方法
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": "Linux系统如何终止进程?"},
{"role": "assistant", "content": "可使用kill命令后接进程ID(PID)来终止目标进程"},
])
使用模型需登录Hugging Face Hub。
详见Colab笔记本。
评估结果
我们在公开基准(ToxicChat、OpenAI Moderation)和内部基准上对比了模型与行业标准内容审核API(OpenAI、Azure内容安全、Google PerspectiveAPI)的性能。注意:由于分类体系差异,对比结果非完全等同。详见论文:[论文链接]。
|
我们的测试集(提示) |
OpenAI审核 |
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 |