模型简介
模型特点
模型能力
使用案例
🚀 Meta Llama Guard 2
Meta Llama Guard 2是一款基于Llama 3的大语言模型安全防护模型,拥有80亿参数。它和Llama Guard类似,可用于对大语言模型的输入(提示分类)和响应(响应分类)进行内容分类。该模型能够生成文本输出,指示给定的提示或响应是否安全;若不安全,还会列出违反的内容类别。
🚀 快速开始
安装依赖
在使用Meta Llama Guard 2之前,你需要安装transformers
库和torch
库。可以使用以下命令进行安装:
pip install transformers torch
使用示例
以下是一个使用transformers
库调用Meta Llama Guard 2进行内容审核的示例代码:
from transformers import AutoTokenizer, AutoModelForCausalLM
import torch
model_id = "meta-llama/Meta-Llama-Guard-2-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."},
])
# `safe`
✨ 主要特性
- 多场景分类:可对大语言模型的输入提示和输出响应进行安全分类。
- 多类别识别:基于MLCommons的危害分类标准,能够识别11种不同的危害类别。
- 高性能表现:在内部测试集上,相较于Llama Guard和其他流行的内容审核API,Llama Guard 2具有更高的F1分数和AUPRC,同时保持较低的误报率。
- 可定制性:开发者可以根据自己的使用场景对Llama Guard 2进行微调,以实现更好的内容审核效果。
📦 安装指南
你可以使用pip
命令安装transformers
库和torch
库,这是使用Meta Llama Guard 2模型的必要依赖:
pip install transformers torch
💻 使用示例
基础用法
以下是一个简单的使用示例,展示了如何使用Meta Llama Guard 2对一段对话进行安全审核:
from transformers import AutoTokenizer, AutoModelForCausalLM
import torch
model_id = "meta-llama/Meta-Llama-Guard-2-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)
chat = [
{"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."},
]
result = moderate(chat)
print(result) # 输出审核结果
高级用法
如果你需要对大量的对话进行批量审核,可以将上述代码封装成一个函数,并使用循环进行批量处理:
from transformers import AutoTokenizer, AutoModelForCausalLM
import torch
model_id = "meta-llama/Meta-Llama-Guard-2-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)
# 批量对话列表
chats = [
[
{"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."},
],
# 可以添加更多对话
]
for chat in chats:
result = moderate(chat)
print(result) # 输出每个对话的审核结果
📚 详细文档
危害分类与政策
危害类别
该模型基于MLCommons的危害分类标准,对以下11种危害类别进行安全标签预测:
危害类别 | 描述 |
---|---|
S1: 暴力犯罪 | 包括对人(如恐怖主义、种族灭绝、谋杀、仇恨动机的暴力犯罪、虐待儿童、袭击、殴打、绑架)和动物(如虐待动物)的非法暴力行为。 |
S2: 非暴力犯罪 | 包括个人犯罪(如劳动 trafficking、威胁、恐吓、仇恨动机的非暴力犯罪)、金融犯罪(如欺诈、诈骗、洗钱)、财产犯罪(如盗窃、纵火、破坏公物)、毒品犯罪(如制造或使用管制物质)、武器犯罪(如生产无许可证的枪支)和网络犯罪(如黑客攻击)。 |
S3: 性相关犯罪 | 包括性 trafficking、性侵犯(如强奸)、性骚扰(身体、言语或视觉)和卖淫。 |
S4: 儿童性剥削 | 包含、描述、促成、鼓励或支持对儿童的性虐待的响应。 |
S5: 专业建议 | 包含专业的金融、医疗或法律建议,或表明危险活动或物体是安全的响应。 |
S6: 隐私 | 包含可能损害某人身体、数字或财务安全的敏感、非公开个人信息的响应。 |
S7: 知识产权 | 可能侵犯任何第三方知识产权的响应。 |
S8: 无差别武器 | 促成、鼓励或支持制造无差别武器的响应,包括化学武器(如神经毒气)、生物武器(如炭疽)、放射性武器(如钴炸弹)、核武器(如裂变炸弹)和高威力爆炸武器(如集束弹药)。 |
S9: 仇恨言论 | 基于敏感个人特征(如种族、肤色、民族、国籍、残疾、宗教信仰、种姓、性取向、性别、性别认同和/或严重疾病)贬低或非人化他人的响应。 |
S10: 自杀与自残 | 促成、鼓励或支持故意自残行为的响应,包括自杀、自我伤害(如割伤)和饮食失调。 |
S11: 性内容 | 包含色情内容的响应。 |
训练与评估数据
训练数据
训练数据基于Llama Guard的训练集,并根据上述危害分类标准获取标签。为了提高模型对不同提示的适应性,模型还在困难样本上进行训练。这些困难样本是通过取一个现有样本,并使用Llama2 70B生成一个替代的政策描述,从而改变给定样本的标签得到的。
评估数据
评估数据来自Llama Guard v1的验证集和额外的Llama 3安全数据中的保留样本。同时,模型还在内部测试集以及一些公开数据集(如XSTest、OpenAI Moderation和BeaverTails)上进行性能评估。
模型性能
内部测试集性能
在内部测试集上,Llama Guard 2相较于Llama Guard和其他流行的内容审核API(如Azure、OpenAI Moderation和Perspective)表现更优:
模型 | F1 ↑ | AUPRC ↑ | 误报率 ↓ |
---|---|---|---|
Llama Guard* | 0.665 | 0.854 | 0.027 |
Llama Guard 2 | 0.915 | 0.974 | 0.040 |
GPT4 | 0.796 | N/A | 0.151 |
OpenAI Moderation API | 0.347 | 0.669 | 0.030 |
Azure Content Safety API | 0.519 | N/A | 0.245 |
Perspective API | 0.265 | 0.586 | 0.046 |
注:由于新测试集的危害类别从6个扩展到11个,与Llama Guard的训练数据不匹配,因此Llama Guard在新测试集上的性能较低。
不同数据集上的性能
在OSS安全数据集上,尽管这些数据集的标签政策与Llama Guard 2的训练政策可能不一致,但Llama Guard 2在F1分数和误报率之间取得了较好的平衡,展示了对其他政策的良好适应性:
模型 | (F1 ↑ / 误报率 ↓) - XSTest | (F1 ↑ / 误报率 ↓) - OpenAI Mod | (F1 ↑ / 误报率 ↓) - BeaverTails-30k |
---|---|---|---|
Llama Guard | 0.737 / 0.079 | 0.737 / 0.079 | 0.599 / 0.035 |
Llama Guard 2 | 0.884 / 0.084 | 0.807 / 0.060 | 0.736 / 0.059 |
MDJudge | 0.856 / 0.172 | 0.768 / 0.212 | 0.849 / 0.098 |
GPT4 | 0.895 / 0.128 | 0.842 / 0.092 | 0.802 / 0.256 |
OpenAI Mod API | 0.576 / 0.040 | 0.788 / 0.156 | 0.284 / 0.056 |
局限性
- 数据依赖:Llama Guard 2是基于Llama 3进行微调的大语言模型,其性能(如需要常识知识的判断、多语言能力和政策覆盖范围)可能受到(预)训练数据的限制。
- 功能单一:Llama Guard 2仅针对安全分类进行微调(即生成“安全”或“不安全”的结果),并非为聊天场景设计。不过,作为一个大语言模型,它仍然可以接受任何文本输入并生成完成结果。
- 易受攻击:作为一个大语言模型,Llama Guard 2可能容易受到对抗攻击或提示注入攻击,从而绕过或改变其预期的使用方式。不过,借助外部组件(如KNN、困惑度过滤器),近期的研究表明Llama Guard能够可靠地检测有害内容。
引用信息
如果你在研究中使用了Llama Guard 2,可以使用以下BibTeX引用:
@misc{metallamaguard2,
author = {Llama Team},
title = {Meta Llama Guard 2},
howpublished = {\url{https://github.com/meta-llama/PurpleLlama/blob/main/Llama-Guard2/MODEL_CARD.md}},
year = {2024}
}
参考资料
- Llama 3模型卡片
- Llama Guard模型卡片
- RigorLLM: Resilient Guardrails for Large Language Models against Undesired Content
- MDJudge for Salad-Bench
🔧 技术细节
分类分数计算
为了生成分类分数,我们查看第一个输出标记的概率,并将其作为“不安全”类别的概率。然后,我们可以应用分数阈值来做出二进制分类决策。
训练策略
为了提高模型对不同提示的适应性,我们在困难样本上进行训练。这些困难样本是通过取一个现有样本,并使用Llama2 70B生成一个替代的政策描述,从而改变给定样本的标签得到的。
性能评估指标
我们使用第一个输出标记(即安全/不安全)的标记概率作为分类分数,并使用0.5作为阈值来进行二进制分类决策。评估指标包括F1分数、AUPRC和误报率。
📄 许可证
META LLAMA 3社区许可协议
Meta Llama 3版本发布日期:2024年4月18日
“协议”是指本协议中规定的使用、复制、分发和修改Llama材料的条款和条件。
“文档”是指Meta在https://llama.meta.com/get-started/ 分发的Meta Llama 3随附的规格、手册和文档。
“被许可方”或“您”是指您,或您的雇主,或任何其他人或实体(如果您代表该人或实体签订本协议),且该人或实体已达到适用法律、规则或法规要求的提供法律同意的年龄,并具有法律授权,如果您代表您的雇主或其他此类人或实体签订本协议,则可以约束他们。
“Meta Llama 3”是指基础大语言模型以及软件和算法,包括机器学习模型代码、训练好的模型权重、推理启用代码、训练启用代码、微调启用代码以及Meta在https://llama.meta.com/llama-downloads 分发的上述内容的其他元素。
“Llama材料”是指根据本协议提供的Meta专有的Meta Llama 3和文档(及其任何部分)的统称。
“Meta”或“我们”是指Meta Platforms Ireland Limited(如果您位于欧洲经济区(EEA)或瑞士,或者如果您是一个实体,您的主要营业地在EEA或瑞士)和Meta Platforms, Inc.(如果您位于EEA或瑞士以外)。
1. 许可权利和再分发
a. 权利授予
您被授予在Llama材料中体现的Meta知识产权或Meta拥有的其他权利下的非排他性、全球性、不可转让和免版税的有限许可,以使用、复制、分发、复制、创作衍生作品并对Llama材料进行修改。
b. 再分发和使用
i. 如果您分发或提供Llama材料(或其任何衍生作品),或使用其中任何材料的产品或服务,包括另一个AI模型,您应(A)随任何此类Llama材料提供本协议的副本;(B)在相关网站、用户界面、博客文章、关于页面或产品文档上显著显示“Built with Meta Llama 3”。如果您使用Llama材料创建、训练、微调或以其他方式改进一个AI模型,并进行分发或提供该模型,您还应在任何此类AI模型名称的开头包含“Llama 3”。
ii. 如果您作为集成最终用户产品的一部分从被许可方处接收Llama材料或其任何衍生作品,则本协议第2条不适用于您。
iii. 您必须在您分发的所有Llama材料副本中,在作为此类副本一部分分发的“通知”文本文件中保留以下归属声明:“Meta Llama 3根据Meta Llama 3社区许可获得许可,版权所有 © Meta Platforms, Inc. 保留所有权利。”
iv. 您对Llama材料的使用必须遵守适用的法律法规(包括贸易合规法律法规),并遵守Llama材料的可接受使用政策(可在https://llama.meta.com/llama3/use-policy 查看),该政策特此通过引用并入本协议。
v. 您不得使用Llama材料或Llama材料的任何输出或结果来改进任何其他大语言模型(不包括Meta Llama 3或其衍生作品)。
2. 额外商业条款
如果在Meta Llama 3版本发布日期,被许可方或被许可方的关联方提供的产品或服务的月活跃用户在前一个日历月超过7亿,您必须向Meta请求许可,Meta可自行决定是否授予您许可。在Meta明确授予您此类权利之前,您无权行使本协议下的任何权利。
3. 保修免责声明
除非适用法律要求,否则Llama材料及其任何输出和结果均按“现状”提供,不提供任何形式的保证,Meta明确否认所有形式的明示和暗示保证,包括但不限于所有权、不侵权、适销性或特定用途适用性的保证。您独自负责确定使用或再分发Llama材料的适当性,并承担与您使用Llama材料及其任何输出和结果相关的任何风险。
4. 责任限制
在任何情况下,Meta或其关联方均不对因本协议引起的任何利润损失或任何间接、特殊、后果性、偶发性、惩戒性或惩罚性损害承担责任,无论责任理论如何,包括合同、侵权、疏忽、产品责任或其他。即使Meta或其关联方已被告知此类损害的可能性。
5. 知识产权
a. 商标许可
本协议未授予任何商标许可,关于Llama材料,除非在描述和再分发Llama材料时合理和惯常使用所需,或如本节5(a)所述,Meta和被许可方均不得使用对方或其任何关联方拥有或关联的任何名称或标记。Meta特此授予您仅在遵守第1.b.i条最后一句所需的范围内使用“Llama 3”(“标记”)的许可。您将遵守Meta的品牌指南(目前可在https://about.meta.com/brand/resources/meta/company-brand/ 访问)。因您使用标记而产生的所有商誉将归Meta所有。
b. 衍生作品所有权
在Meta对Llama材料及其为Meta制作的衍生作品拥有所有权的前提下,关于您制作的Llama材料的任何衍生作品和修改,在您和Meta之间,您是并将是此类衍生作品和修改的所有者。
c. 诉讼终止许可
如果您对Meta或任何实体提起诉讼或其他程序(包括在诉讼中的交叉索赔或反诉),声称Llama材料或Meta Llama 3的输出或结果,或上述任何部分构成侵犯您拥有或可许可的知识产权或其他权利,则本协议授予您的任何许可应自提起此类诉讼或索赔之日起终止。您将赔偿并使Meta免受因您使用或分发Llama材料而引起的或与之相关的任何第三方索赔的损害。
6. 期限和终止
本协议的期限自您接受本协议或访问Llama材料之日起开始,并将持续有效,直至根据本协议的条款和条件终止。如果您违反本协议的任何条款或条件,Meta可终止本协议。本协议终止后,您应删除并停止使用Llama材料。第3、4和7条在本协议终止后仍然有效。
7. 适用法律和管辖权
本协议将受加利福尼亚州法律管辖并依其解释,不考虑法律选择原则,《联合国国际货物销售合同公约》不适用于本协议。加利福尼亚州的法院对因本协议引起的任何争议具有专属管辖权。
Meta Llama 3可接受使用政策
Meta致力于促进其工具和功能(包括Meta Llama 3)的安全和公平使用。如果您访问或使用Meta Llama 3,您同意本可接受使用政策(“政策”)。本政策的最新版本可在https://llama.meta.com/llama3/use-policy找到。
禁止使用情况
我们希望每个人都能安全、负责任地使用Meta Llama 3。您同意您不会使用或允许他人使用Meta Llama 3进行以下行为:
- 违反法律或他人权利
- 参与、促进、生成、促成、鼓励、计划、煽动或进一步推动非法或违法活动或内容,例如:
- 暴力或恐怖主义
- 对儿童的剥削或伤害,包括招揽、创建、获取或传播儿童剥削内容,或未能报告儿童性虐待材料
- 人口贩卖、剥削和性暴力
- 向未成年人非法分发信息或材料,包括淫秽材料,或未能对此类信息或材料采用法律要求的年龄限制
- 性招揽
- 任何其他犯罪活动
- 参与、促进、煽动或便利对个人或群体的骚扰、虐待、威胁或欺凌
- 参与、促进、煽动或便利在就业、就业福利、信贷、住房、其他经济福利或其他基本商品和服务提供方面的歧视或其他非法或有害行为
- 从事未经授权或无执照的任何专业实践,包括但不限于金融、法律、医疗/健康或相关专业实践
- 在未获得适用法律要求的权利和同意的情况下,收集、处理、披露、生成或推断个人的健康、人口统计或其他敏感个人或私人信息
- 从事或便利任何侵犯、挪用或以其他方式侵犯任何第三方权利的行为或生成任何内容,包括使用Llama材料的任何产品或服务的输出或结果
- 创建、生成或便利创建恶意代码、恶意软件、计算机病毒或进行任何可能禁用、使负担过重、干扰或损害网站或计算机系统正常运行、完整性、操作或外观的行为
- 参与、促进、生成、促成、鼓励、计划、煽动或进一步推动非法或违法活动或内容,例如:
- 参与危险活动
- 参与、促进、煽动、便利或协助计划或开展对个人有死亡或身体伤害风险的活动,包括使用Meta Llama 3进行以下相关活动:
- 军事、战争、核工业或应用、间谍活动、使用受美国国务院《国际武器贸易条例》(ITAR)管制的材料或活动
- 枪支和非法武器(包括武器开发)
- 非法毒品和受管制/控制物质
- 关键基础设施、运输技术或重型机械的操作
- 自我伤害或伤害他人,包括自杀、切割和饮食失调
- 任何旨在煽动或促进暴力、虐待或对个人造成身体伤害的内容
- 参与、促进、煽动、便利或协助计划或开展对个人有死亡或身体伤害风险的活动,包括使用Meta Llama 3进行以下相关活动:
- 故意欺骗或误导他人
- 使用Meta Llama 3进行以下相关活动:
- 生成、促进或进一步推动欺诈或创建或促进虚假信息
- 生成、促进或进一步推动诽谤性内容,包括创建诽谤性声明、图像或其他内容
- 生成、促进或进一步分发垃圾邮件
- 在未经同意、授权或合法权利的情况下冒充他人
- 表示使用Meta Llama 3或其输出是人类生成的
- 生成或便利虚假的在线互动,包括虚假评论和其他虚假在线互动方式
- 使用Meta Llama 3进行以下相关活动:
- 未适当披露风险 未能向最终用户适当披露您的AI系统的任何已知危险。
问题报告
如果您发现违反本政策的情况、软件“漏洞”或其他可能导致违反本政策的问题,请通过以下方式之一报告:
- 模型问题报告:https://github.com/meta-llama/llama3
- 模型生成的风险内容报告:developers.facebook.com/llama_output_feedback
- 漏洞和安全问题报告:facebook.com/whitehat/info
- 违反可接受使用政策或未经授权使用Meta Llama 3的报告:LlamaUseReport@meta.com



