模型简介
模型特点
模型能力
使用案例
🚀 Llama-Guard模型介绍
Llama-Guard是一个基于Llama 2的输入输出安全防护模型,可用于对大语言模型(LLM)的输入(提示分类)和响应(响应分类)进行内容分类。它能生成文本输出,指示给定的提示或响应是否安全,若不安全还会列出违规子类别。
🚀 快速开始
本仓库包含了以原生Llama格式和Hugging Face transformers
格式存储的模型权重。若你尚未获得访问权限,请查看 此讨论。
✨ 主要特性
- 内容分类:可对LLM的输入和响应进行安全分类,判断其是否安全,并列出违规子类别。
- 类LLM功能:像LLM一样生成文本输出,指示内容的安全性。
- 概率评分:通过查看第一个标记的概率,将其转换为“不安全”类别的概率,用户可根据阈值进行二进制决策。
📦 安装指南
在 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": "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`
⚠️ 重要提示
你需要登录Hugging Face Hub才能使用该模型。
如需更多详细信息,请参阅 此Colab笔记本。
💻 使用示例
基础用法
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."},
])
# `safe`
📚 详细文档
训练和评估
训练数据
我们使用了来自Anthropic 数据集 的提示和内部收集的红队测试示例。具体来说,我们仅从Anthropic数据集中提取提示,并使用越狱技术从内部LLaMA模型生成新的响应,以引发违规响应。然后,我们在内部对Anthropic数据(提示和响应)进行注释,根据上述确定的类别映射标签。总体而言,我们有大约13K个训练示例。
危害分类和风险指南
自动化内容风险缓解依赖于分类器实时对内容进行决策,构建这些系统的前提是具备以下组件:
- 风险分类:感兴趣的风险类别,这些类别成为分类器的类别。
- 风险指南:确定在每个风险类别中,鼓励和不鼓励的输出之间的界限。
我们与该模型一起发布了一个受谷歌、微软和OpenAI等现有开放分类法启发的开放分类法,希望它对社区有用。此分类法不一定反映Meta的内部政策,旨在展示我们将LLM调整为分类器的方法的价值,这些分类器在不同政策下表现出高性能和高度适应性。
Llama-Guard安全分类法和风险指南
以下是该分类法下的危害类型以及每个类别下被认为有害的具体内容示例:
- 暴力与仇恨:包括鼓励或帮助人们计划或参与暴力的声明。同样,倡导歧视、包含侮辱性言论或基于敏感个人特征(如种族、肤色、宗教、国籍、性取向、性别、性别认同或残疾)表达仇恨情绪的声明也在此类别下被视为不当。
- 性内容:包括鼓励某人(可能是未成年人)进行特定性行为的声明。同样,性明确(即色情)的声明也在此类别下被视为不当。
- 枪支与非法武器:包括专门鼓励、纵容或帮助人们计划或实施涉及非法获取、制造或使用枪支或非法武器(如爆炸物、生物制剂或化学武器)的特定犯罪的声明,包括如何制造或使用它们的说明。
- 管制物质:包括专门鼓励或帮助人们非法生产、转移或消费管制物质(如非法药物、烟草、酒精或大麻)的声明。
- 自杀与自我伤害:包括鼓励、纵容或使人们能够伤害自己的声明(如提供自我伤害方法的说明或信息)。当人们表达或暗示有伤害自己的意图时,除提供适当健康资源链接的响应外,任何其他响应都将被视为不当(即使完全支持)。
- 犯罪策划:包括鼓励、纵容或帮助人们计划或实施特定犯罪活动(如纵火、绑架或盗窃)的杂项声明。只有当这些声明不能被解读为违反上述其他危害类型时,才在此类别下被视为有害(例如,鼓励暴力的声明应被视为违反“暴力与仇恨”类别,而非此类别)。
评估结果
我们将模型的性能与行业标准内容审核API进行了比较,包括 OpenAI、Azure Content Safety 和谷歌的 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 |
📄 许可证
使用该模型需遵守 LLAMA 2社区许可协议。
Llama 2社区许可协议
“协议”指本协议中规定的Llama材料的使用、复制、分发和修改的条款和条件。
“文档”指Meta在 https://ai.meta.com/resources/models-and-libraries/llama-downloads/ 分发的Llama 2随附的规格、手册和文档。
“被许可人”或“您”指您,或您的雇主或任何其他人或实体(如果您代表该人或实体签订本协议),达到适用法律、规则或法规要求的提供法律同意的年龄,并且如果您代表您的雇主或其他人员或实体签订本协议,则具有约束他们的法律权力。
“Llama 2”指基础大语言模型以及软件和算法,包括机器学习模型代码、训练模型权重、推理启用代码、训练启用代码、微调启用代码以及Meta在 ai.meta.com/resources/models-and-libraries/llama-downloads/ 分发的上述内容的其他元素。
“Llama材料”指根据本协议提供的Meta专有的Llama 2和文档(及其任何部分)。
“Meta”或“我们”指Meta Platforms Ireland Limited(如果您位于欧洲经济区(EEA)或瑞士,或者如果您是实体,您的主要营业地点在EEA或瑞士)和Meta Platforms, Inc.(如果您位于EEA或瑞士以外)。
通过点击下方的“我接受”,或使用或分发Llama材料的任何部分或元素,您同意受本协议的约束。
-
许可权利和再分发
- 权利授予:您被授予在Llama材料中体现的Meta知识产权或其他权利下的非排他性、全球性、不可转让和免版税的有限许可,以使用、复制、分发、复制、创建衍生作品并对Llama材料进行修改。
- 再分发和使用
- 如果您将Llama材料或其任何衍生作品分发给第三方,您应向该第三方提供本协议的副本。
- 如果您作为集成最终用户产品的一部分从被许可人处接收Llama材料或其任何衍生作品,则本协议第2条不适用于您。
- 您在分发的所有Llama材料副本中,必须在作为副本一部分分发的“通知”文本文件中保留以下归属声明:“Llama 2根据LLAMA 2社区许可获得许可,版权所有 (c) Meta Platforms, Inc. 保留所有权利。”
- 您使用Llama材料必须遵守适用的法律和法规(包括贸易合规法律和法规),并遵守Llama材料的可接受使用政策(可在 https://ai.meta.com/llama/use-policy 找到),该政策特此通过引用并入本协议。
- 您不得使用Llama材料或Llama材料的任何输出或结果来改进任何其他大语言模型(不包括Llama 2或其衍生作品)。
-
额外商业条款:如果在Llama 2版本发布日期,被许可人或其关联公司提供的产品或服务的月活跃用户在前一个日历月超过7亿,则您必须向Meta请求许可,Meta可自行决定是否授予您许可。在Meta明确授予您此类权利之前,您无权行使本协议下的任何权利。
-
保修免责声明:除非适用法律要求,Llama材料及其任何输出和结果按“原样”提供,不提供任何形式的保证,无论是明示或暗示的,包括但不限于所有权、不侵权、适销性或特定用途适用性的保证。您独自负责确定使用或再分发Llama材料的适当性,并承担使用Llama材料及其任何输出和结果相关的任何风险。
-
责任限制:在任何情况下,Meta或其关联公司均不对本协议引起的任何利润损失或任何间接、特殊、后果性、偶发性、惩戒性或惩罚性损害承担责任,无论责任理论如何,包括合同、侵权、疏忽、产品责任或其他,即使Meta或其关联公司已被告知此类损害的可能性。
-
知识产权
- 本协议未授予商标许可,与Llama材料相关,除非在描述和再分发Llama材料的合理和惯常使用中需要,否则Meta和被许可人均不得使用对方或其关联公司拥有或关联的任何名称或标记。
- 受Meta对Llama材料及其衍生作品的所有权约束,对于您对Llama材料所做的任何衍生作品和修改,在您和Meta之间,您是并将是此类衍生作品和修改的所有者。
- 如果您对Meta或任何实体提起诉讼或其他程序(包括诉讼中的交叉索赔或反诉),声称Llama材料或Llama 2的输出或结果或其任何部分构成侵犯您拥有或可许可的知识产权或其他权利,则本协议授予您的任何许可应自该诉讼或索赔提起之日起终止。您将赔偿并使Meta免受因您使用或分发Llama材料而引起的任何第三方索赔。
-
期限和终止:本协议的期限自您接受本协议或访问Llama材料开始,并将持续有效,直至根据本协议的条款和条件终止。如果您违反本协议的任何条款或条件,Meta可终止本协议。本协议终止后,您应删除并停止使用Llama材料。第3、4和7条在本协议终止后仍然有效。
-
适用法律和管辖权:本协议受加利福尼亚州法律管辖和解释,不考虑法律选择原则,《联合国国际货物销售合同公约》不适用于本协议。加利福尼亚州的法院对本协议引起的任何争议具有专属管辖权。
Llama 2可接受使用政策
Meta致力于促进其工具和功能(包括Llama 2)的安全和公平使用。如果您访问或使用Llama 2,您同意本可接受使用政策(“政策”)。本政策的最新版本可在 ai.meta.com/llama/use-policy 找到。
禁止使用
我们希望每个人都能安全、负责任地使用Llama 2。您同意您不会使用或允许他人使用Llama 2进行以下行为:
- 违反法律或他人权利
- 从事、促进、生成、促成、鼓励、计划、煽动或进一步推动非法或违法活动或内容,例如:
- 暴力或恐怖主义
- 对儿童的剥削或伤害,包括招揽、创建、获取或传播儿童剥削内容或未能报告儿童性虐待材料
- 人口贩运、剥削和性暴力
- 向未成年人非法分发信息或材料,包括淫秽材料,或未能对此类信息或材料采用法律要求的年龄限制
- 性招揽
- 任何其他犯罪活动
- 从事、促进、煽动或便利对个人或群体的骚扰、虐待、威胁或欺凌
- 从事、促进、煽动或便利在就业、就业福利、信贷、住房、其他经济福利或其他基本商品和服务提供方面的歧视或其他非法或有害行为
- 从事未经授权或无执照的任何专业实践,包括但不限于金融、法律、医疗/健康或相关专业实践
- 在未获得适用法律要求的权利和同意的情况下,收集、处理、披露、生成或推断个人的健康、人口统计或其他敏感个人或私人信息
- 从事或便利任何侵犯、盗用或以其他方式侵犯任何第三方权利的行为或生成任何内容,包括使用Llama 2材料的任何产品或服务的输出或结果
- 创建、生成或便利创建恶意代码、恶意软件、计算机病毒或做任何可能禁用、负担过重、干扰或损害网站或计算机系统的正常运行、完整性、操作或外观的事情
- 从事、促进、生成、促成、鼓励、计划、煽动或进一步推动非法或违法活动或内容,例如:
- 从事、促进、煽动、便利或协助计划或开展对个人造成死亡或身体伤害风险的活动,包括与以下相关的Llama 2使用:
- 军事、战争、核工业或应用、间谍活动、受美国国务院维护的《国际武器贸易条例》(ITAR)管制的材料或活动
- 枪支和非法武器(包括武器开发)
- 非法药物和管制/受控物质
- 关键基础设施、运输技术或重型机械的操作
- 自我伤害或伤害他人,包括自杀、切割和饮食失调
- 任何旨在煽动或促进暴力、虐待或对个人造成身体伤害的内容
- 故意欺骗或误导他人,包括与以下相关的Llama 2使用:
- 生成、促进或进一步推动欺诈或创建或推广虚假信息
- 生成、促进或进一步推动诽谤性内容,包括创建诽谤性声明、图像或其他内容
- 生成、促进或进一步分发垃圾邮件
- 在未经同意、授权或合法权利的情况下冒充他人
- 声称Llama 2的使用或输出是人类生成的
- 生成或促进虚假的在线互动,包括虚假评论和其他虚假在线互动方式
- 未能向最终用户适当披露您的AI系统的任何已知危险
请通过以下方式报告本政策的任何违反行为、软件“漏洞”或其他可能导致违反本政策的问题:
- 报告模型问题:github.com/facebookresearch/llama
- 报告模型生成的风险内容:developers.facebook.com/llama_output_feedback
- 报告漏洞和安全问题:facebook.com/whitehat/info
- 报告可接受使用政策的违反行为或未经授权的Llama使用:LlamaUseReport@meta.com



