🚀 Llama Guard 3:内容安全分类预训练模型
Llama Guard 3 是基于 Llama-3.1-8B 的预训练模型,针对内容安全分类进行了微调。它能够对大语言模型(LLM)的输入(提示分类)和响应(响应分类)内容进行分类,通过生成文本输出表明给定提示或响应是否安全,若不安全还会列出违反的内容类别。该模型支持 8 种语言的内容审核,优化后可支持搜索和代码解释器工具调用的安全保障。
🚀 快速开始
Llama Guard 3 可直接与 transformers
库配合使用,不过仅支持 transformers
4.43 及以上版本。
代码示例
import torch
from transformers import AutoTokenizer, AutoModelForCausalLM
model_id = "meta-llama/Llama-Guard-3-8B"
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."},
])
⚠️ 重要提示
此仓库对应的是模型的半精度版本,同时也提供了 8 位精度版本,详情请访问 meta-llama/Llama-Guard-3-8B-INT8。
✨ 主要特性
- 多语言支持:支持英语、法语、德语、印地语、意大利语、葡萄牙语、西班牙语和泰语 8 种语言的内容安全分类。
- 内容分类全面:可对大语言模型的输入和响应内容进行分类,识别多种不安全内容类别。
- 性能提升:相较于 Llama Guard 2 和 GPT4,在英语、多语言和工具使用能力方面表现更优,且误报率更低。
- 量化版本:提供量化版本,降低部署成本,同时对模型性能影响较小。
📦 安装指南
使用前请确保已安装 transformers
库,且版本在 4.43 及以上。可通过以下命令安装:
pip install transformers>=4.43
📚 详细文档
模型细节
Llama Guard 3 是基于 Llama-3.1-8B 的预训练模型,针对内容安全分类进行了微调。它可以对大语言模型的输入和响应内容进行分类,输出表明给定提示或响应是否安全,若不安全还会列出违反的内容类别。
危害分类与策略
该模型基于 MLCommons 分类法 中的 13 种危害以及代码解释器滥用的额外类别,对以下 14 个类别进行安全标签预测:
危害类别 |
详情 |
S1: 暴力犯罪 |
包括对人或动物的非法暴力行为,如恐怖主义、谋杀、虐待动物等。 |
S2: 非暴力犯罪 |
涵盖个人犯罪、金融犯罪、财产犯罪、毒品犯罪、武器犯罪和网络犯罪等。 |
S3: 性相关犯罪 |
包括性交易、性侵犯、性骚扰和卖淫等。 |
S4: 儿童性剥削 |
包含、描述、促成、鼓励或支持对儿童的性虐待的内容。 |
S5: 诽谤 |
可验证为虚假且可能损害他人声誉的内容。 |
S6: 专业建议 |
包含专业金融、医疗或法律建议,或表明危险活动或物体安全的内容。 |
S7: 隐私 |
包含可能损害他人身体、数字或财务安全的敏感非公开个人信息的内容。 |
S8: 知识产权 |
可能侵犯第三方知识产权的内容。 |
S9: 滥杀性武器 |
促成、鼓励或支持制造滥杀性武器的内容,如化学武器、生物武器等。 |
S10: 仇恨言论 |
基于敏感个人特征贬低或非人化他人的内容。 |
S11: 自杀与自残 |
促成、鼓励或支持故意自残行为的内容,如自杀、自伤和饮食失调等。 |
S12: 色情内容 |
包含色情内容的回复。 |
S13: 选举 |
包含关于选举系统和流程的事实错误信息的内容。 |
S14: 代码解释器滥用 |
试图滥用代码解释器的内容,如拒绝服务攻击、容器逃逸或权限提升漏洞利用等。 |
支持语言
支持英语、法语、德语、印地语、意大利语、葡萄牙语、西班牙语和泰语。
训练数据
- 英语数据:使用 Llama Guard [1] 的英语数据,通过在 hh-rlhf 数据集 [2] 的提示上获取 Llama 2 和 Llama 3 的生成结果得到。
- 多语言数据:为扩展新类别和新能力(如多语言和工具使用)的训练数据,收集了额外的人工和合成生成数据。多语言数据是单轮或多轮的人机对话数据。
- 工具使用数据:对于搜索工具调用,使用 Llama3 对收集和合成的提示集生成响应;对于代码解释器滥用检测,使用大语言模型生成安全和不安全的提示,然后使用未进行安全调整的大语言模型生成符合这些指令的代码解释器完成结果。
评估
- 评估说明:比较模型性能并不简单,因为每个模型基于自身策略构建,在与模型策略一致的评估数据集上表现更好。通过将 Llama Guard 系列模型与 MLCommons 危害分类法对齐,有助于推动行业标准的采用,促进大语言模型安全和内容评估领域的协作与透明度。
- 评估结果:在内部测试中,Llama Guard 3 在 MLCommons 危害分类法上的性能优于 Llama Guard 2 和 GPT4,且误报率更低。在 OSS 数据集 XSTest [4] 上,Llama Guard 3 达到了与 Llama Guard 2 相同的 F1 分数,但误报率更低。
应用
根据 Llama 3 论文,Llama Guard 3 提供了行业领先的系统级安全性能,建议与 Llama 3.1 一起部署。虽然部署 Llama Guard 3 可能会提高系统安全性,但可能会增加对良性提示的拒绝率(误报)。Llama 3 论文中提供了违规率改进和对误报影响的内部基准测试结果。
量化
为帮助社区负责任地部署 Llama 系统,提供了 Llama Guard 3 的量化版本,使用集成到 Hugging Face 生态系统中的 int 8 实现,将检查点大小减少约 40%,对模型性能影响很小。量化模型的性能与原始模型相当。
开始使用
Llama Guard 3 默认在 Llama 3.1 参考实现 上可用。可通过 Llama Recipes 了解更多配置和自定义方法。
局限性
- 数据依赖:Llama Guard 3 是基于 Llama 3.1 微调的大语言模型,其性能可能受(预)训练数据的限制。
- 特定类别评估:某些危害类别(如诽谤、知识产权和选举)需要事实性、最新的知识进行评估,对于对这些类型危害高度敏感的用例,可能需要部署更复杂的系统,但 Llama Guard 3 为通用用例提供了良好的基线。
- 对抗攻击:作为大语言模型,Llama Guard 3 可能容易受到对抗攻击或提示注入攻击,导致其绕过或改变预期用途。请随时 报告 漏洞,以便在未来版本中进行改进。
引用
@misc{dubey2024llama3herdmodels,
title = {The Llama 3 Herd of Models},
author = {Llama Team, AI @ Meta},
year = {2024},
eprint = {2407.21783},
archivePrefix = {arXiv},
primaryClass = {cs.AI},
url = {https://arxiv.org/abs/2407.21783}
}
参考文献
[1] Llama Guard: LLM-based Input-Output Safeguard for Human-AI Conversations
[2] Training a Helpful and Harmless Assistant with Reinforcement Learning from Human Feedback
[3] Llama Guard 2 Model Card
[4] XSTest: A Test Suite for Identifying Exaggerated Safety Behaviors in Large Language Models
🔧 技术细节
响应分类示例
为了生成分类器分数,我们查看第一个标记的概率,并将其作为“不安全”类别的概率,然后应用分数阈值进行二元决策。
量化影响
使用 int 8 量化将检查点大小减少约 40%,对模型性能影响很小。在内部测试中,量化模型的性能与原始模型相当。
📄 许可证
Llama Guard 3 遵循 Llama 3.1 社区许可证。详细的许可证协议请参考 LLAMA 3.1 COMMUNITY LICENSE AGREEMENT。
许可证摘要
- 许可权利:授予非排他性、全球性、不可转让和免版税的有限许可,用于使用、复制、分发、修改 Llama 材料。
- 再分发和使用:分发 Llama 材料或包含其衍生作品的产品或服务时,需提供许可证副本,并在相关网站、用户界面、博客文章、关于页面或产品文档中显著显示“Built with Llama”。
- 额外商业条款:如果在 Llama 3.1 版本发布日期,被许可人或其关联方提供的产品或服务的月活跃用户数超过 7 亿,则需向 Meta 请求许可证。
- 免责声明:除非适用法律要求,Llama 材料及其输出和结果按“原样”提供,Meta 不提供任何形式的保证。
- 责任限制:Meta 及其关联方在任何情况下均不对因本协议引起的任何利润损失或间接、特殊、后果性、偶发性、惩戒性或惩罚性损害承担责任。
- 知识产权:本协议未授予商标许可,Meta 授予使用“Llama”标记的许可,以遵守相关条款。对于用户对 Llama 材料的衍生作品和修改,用户拥有所有权。
- 期限和终止:协议自接受或访问 Llama 材料时生效,直至根据协议条款终止。如果被许可人违反协议条款,Meta 有权终止协议。
- 适用法律和管辖权:本协议受加利福尼亚州法律管辖,加利福尼亚州法院对因本协议引起的任何争议具有专属管辖权。
可接受使用政策
使用 Llama 3.1 需遵守 可接受使用政策,禁止使用 Llama 3.1 进行违法、有害、欺诈、歧视等行为。如发现违反政策的情况,请通过以下方式报告: