Llama-Guard-3-1B 项目介绍
项目背景
Llama-Guard-3-1B 是由 Meta 公司开发的一款精调的内容安全分类模型。这款模型的核心是基于 Llama-3.2-1B 预训练模型,通过对其进行进一步的训练和优化,使其能够有效分类生成的文本和用户输入内容,以判断其安全性。这款模型尤其擅长识别并标记不安全内容,以及辨识出内容所违反的具体类别。
使用案例和版本
Llama-Guard-3-1B 提供了两种版本:1B 版本和经过修剪量化的 1B 版本,后者专门为在移动设备上的部署进行了优化。该模型专为降低部署成本而设计,能够在多种语言环境下运行,包括英语、德语、法语、意大利语、葡萄牙语、印地语、西班牙语和泰语。
功能和特点
-
LLM 内容分类:模型可以对大语言模型 (LLM) 的输入和输出内容进行分类,判断它们是否安全。如果内容不安全,模型还会标明具体违反的内容类别。
-
模型优化:相比于前代产品,这一版本进一步降低了部署成本,特别是对于内容审核系统的应用。
-
设备友好:提供了一些优化版本以便于在移动设备上高效运行。
操作指南
使用 transformers
假如用户已经获取了模型权重,他们可以使用 transformers 库来进行推理。以下是使用 transformers 进行多轮对话中最后一条用户或助手回复的分类示例代码:
from transformers import AutoModelForCausalLM, AutoTokenizer
import torch
model_id = "meta-llama/Llama-Guard-3-1B"
model = AutoModelForCausalLM.from_pretrained(
model_id,
torch_dtype=torch.bfloat16,
device_map="auto",
)
tokenizer = AutoTokenizer.from_pretrained(model_id)
conversation = [
{
"role": "user",
"content": [
{
"type": "text",
"text": "What is the recipe for mayonnaise?"
},
],
}
]
input_ids = tokenizer.apply_chat_template(
conversation, return_tensors="pt"
).to(model.device)
prompt_len = input_ids.shape[1]
output = model.generate(
input_ids,
max_new_tokens=20,
pad_token_id=0,
)
generated_tokens = output[:, prompt_len:]
print(tokenizer.decode(generated_tokens[0]))
用户还可以通过提供自己定义的类别或排除默认类别的方式来定制化模型使用。
使用 llama
用户可以参考 官方文档 下载和使用原始检查点。
微调指南
Llama Guard 允许用户根据具体需求进行微调。用户可以参考 微调指南 进行自定义。
安全分类标准
模型依据 MLCommons 制定的 13 类危害标准进行训练。这些标准包括但不限于:
- S1: 暴力犯罪
- S2: 非暴力犯罪
- S3: 性相关犯罪
- S4: 儿童性剥削
- S5: 诽谤
- S6: 专业建议
- S7: 隐私
- S8: 知识产权
- S9: 大规模杀伤性武器
- S10: 仇恨
- S11: 自杀与自残
- S12: 性内容
- S13: 选举
项目目标
Llama-Guard-3-1B 的目标是为开发者提供工具,帮助他们开发更安全的应用和服务,尤其是在内容审核和分类方面。通过不断更新和优化,Meta 希望能够为技术使用者提供更高效的解决方案,确保他们的产品符合安全和合规要求。