一. 背景
互联网巨头Meta发布的开源大模型安全解决方案Purple-Llama,整合了多种防护工具和评估方法,旨在保护开源生成式AI模型安全发展。在上一篇文章《Meta大模型安全解决方案——评估》一文中[1],我们详细介绍了Purple-Llama中的评估部分。除了大模型安全评估方法框架CyberSecEval,Purple-Llama中还提供了三种防护工具,Llama Guard、Prompt Guard、Code Shield,分别应对大模型应用不同的易受威胁面,保证大模型应用的使用安全合规,提高大模型的安全性,防止潜在的安全威胁和攻击。本文将继续深入探讨Purple-Llama中的大模型应用安全防护措施,介绍防护工具的原理与应用场景。
二. 输入输出检测:Llama Guard 3
Llama Guard 3是一款输入输出检测工具,由一系列安全分类模型组成,用于对大模型的输入和输出内容安全进行检测判断,旨在帮助开发者发现各种违规内容。其随着Llama家族大模型的发展(从Llama-2到如今的Llama-3.1),从第一代Llama Guard的基础上迭代升级,迄今为止已经迭代了三次。Llama Guard 3中包含三个模型:Llama Guard 3-8B、Llama Guard 3-1B、Llama Guard 3-11B-vision。
2.1
Llama Guard 3-8B:文本安全分类模型
Llama Guard 3-8B是基于Llama-3.1-8B预训练模型,针对内容安全分类进行了微调后得到的。与早先版本类似,它可用于对模型的输入(提示词)和输出(模型回复)中的内容进行风险分类。与文本大模型一致,在将用户和大模型的对话、与风险分类标准输入给Llama Guard 3-8B后,其会将待测内容标注为安全(safe)或不安全(unsafe),如果不安全,还会列出违反的风险类别。
图1:Llama Guard 3-8B支持的风险类别
Llama Guard 3-8B经过微调后,共计可以识别14个风险类别,包括MLCommons标准化危险分类法 [2] 中的13个风险类别(S1-S13)与Llama Guard新增的代码解释器滥用类(S14: Code Interpreter Abuse)。此外,Llama Guard 3-8B还可支持英语、法语、德语、印地语、意大利语、葡萄牙语、西班牙语、泰语8种语言,保证了其应用领域的广泛性。
其详细工作原理如图2所示:
1. 提示词工程:Llama Guard 3-8B的输入主要由4个部分组成:任务描述、风险分类类别、待测对话内容、输出格式规则。输出格式规则要求模型在第一个Token输出safe或unsafe作为标签,如果为unsafe,还会在后续Token继续输出风险类别。
2. 结果处理:使用模型输出第一个Token的概率表,取其中“unsafe”Token的概率作为不安全的分数,并使用阈值判断给出最终分类结果。
图2:Llama Guard 3-8B工作原理
2.2
Llama Guard 3-1B:文本安全分类模型
Llama Guard 3-1B的功能略逊于8B版本,且相比下少了对于代码解释器滥用风险(S14)的分类能力,但是换来了模型体积的减少,以降低其部署成本。相应的,Llama Guard 3-1B使用了众多降低成本的技术:
1.剪枝(Pruning):将模型减少到12层与6400MLP隐藏维度;
2.蒸馏(Distillation):以8B为教师模型在监督式训练中微调剪枝过的模型;
3.输出层剪枝(Output Layer Pruning):输出层仅保留“unsafe”、“S1”等20个Token,删除其他不常用Token权重;
4.量化(Quantization):将每个线性层的输入量化为INT4,线性层的权重量化为INT8,其余保留BF16;
尽管Llama Guard 3-1B保留了可观的文本安全分类能力,Meta的研究人员仍建议在部署成本充足时,应优先考虑使用Llama Guard 3-8B,因为它可以提供更好的安全分类性能。Llama Guard 3-1B的目标主要是应对一些部署环境简陋的平台,例如手机移动端。
2.3
Llama Guard 3-11B-vision:多模态文本图像安全分类模型
Llama Guard 3 Vision是基于Llama-3.2-11B预训练模型微调而来,强化了其安全风险分类能力。在训练中,Llama Guard 3 Vision专门设计了用于支持图像推理的用例,并优化以检测有风险的多模态(文本和图像)提示词及模型回复。Meta的研究人员使用了人工生成数据+合成数据的方法构建数据集,具体如下:
1. 收集大量人工编写的提示词并配以相应的图像;
2. 利用Meta内部的Llama模型,生成了安全回复和风险回复;
3. 通过越狱技术,诱导模型产生风险回复,以丰富数据集正负样本多样性;
4. 最终数据集中的样本由人工或Llama 3.1 405B模型打标签;
通过这种综合性的数据集构建方法,Meta旨在提升 Llama Guard 3 Vision的识别和防护能力,确保其在各种场景下的多模态安全分类任务中表现出色。
三. 提示词过滤:Prompt Guard
Prompt Guard是一款强大的工具,旨在为大模型驱动的应用提供提示词过滤能力。就像一个“安全卫士”,它能对于提示词注入以及越狱攻击起到防护作用。
1. 提示词注入:不受信任第三方或用户数据注入到大模型对话的上下文窗口中,从而使模型执行不受控制的指令;
2. 越狱攻击:恶意指令旨在覆盖大模型中原有的安全防护功能;
3.1
工作原理
Prompt Guard基于一款在大量攻击数据集上训练的分类模型,能够检测显式的恶意提示词以及包含注入的数据。作为一个多标签分类模型,它会在过滤中将输入的提示词分为三类——良性(benign)、注入(injection)和越狱(jailbreak)。注入和越狱两种标签之间可能存在重叠,例如一条危险提示词可能既进行了提示词注入,也使用了越狱攻击的手段。
图3:注入与越狱标签样例
3.2
技术规格
1. 底座模型:mDeBERTa-v3-base;
2. 参数量:86M+192M;
3. 上下文窗口:512;
4. 支持语言:英语、法语、德语、印地语、 意大利语、葡萄牙语、西班牙语、泰语;
3.
适用场景
Prompt Guard的用法可以根据具体应用程序的需求和风险进行调整:
1. 直接用于过滤高风险提示词:Prompt Guard可以立刻部署进行输入过滤,适合于一些需要立即缓解风险的应用场景,且容许一些误报。
2. 用于威胁检测与缓解:通过提取疑似高风险的输入用于研究,Prompt Guard可以用于识别输入端的新威胁。这种方式也可以为模型微调标注数据创建提供帮助。
3. 作为一种精确过滤攻击的微调解决方案:对于特定的应用,Prompt Guard模型可以在真实输入分布上微调,以实现对于特定领域提示词分类的高准确性。
该模型对于识别并保护大模型应用中的外界输入非常有用,通常这些外界输入是被视为高风险的。此外为了获得最佳效果,Meta的研究人员还建议使用者根据实际情况和大模型的用途进行针对性微调。
图4:Prompt Guard分类示例
四. 不安全代码检测:Code Shield
Code Shield是一款代码安全检测与过滤工具,旨在防止大模型生成的不安全代码被引入生产系统。近年来,大模型在帮助开发人员生成代码方面发挥着重要作用。但由于大模型随机性强、受训练数据影响大的特点,即使增加了安全限制,大模型依然可能会产生不安全代码,其中可能包含漏洞或恶意功能。Code Shield 就像一面围栏放置于大模型的下游,帮助确保这种不安全代码在返回给用户或进入代码库之前被拦截和过滤掉。
图5:Code Shield
4.1
工作原理
如在上一篇中我们提到的CyberSecEval中一样 [1] ,Code Shield也使用代码安全静态分析库Insecure Code Detector(ICD)来识别不安全的代码。ICD使用了一系列静态分析工具(regex、semgrep等),能在C、C#、Java、Python等8种编程语言中执行分析,这些分析工具可以根据静态分析规则独立评估输入代码片段的安全性,检测范围可以涵盖超过50+种代码漏洞(CWEs)。
图6:Code Shield工作原理
4.2
适用场景
Code Shield 旨在适用于各种场景,常见的两个示例使用场景如下所列:
1. 大模型编程助手插件:Code Shield 非常适合集成到IDE(如VSCode或任何其他开发框架)的AI编程助手(如通义灵码、文心快码等),在那里它能够阻断编程助手的不安全代码建议。
2. Chat大模型协助编程:除了编程助手,一些业余开发人员(如学生等)还经常直接请求Chat大模型帮助编写代码片段。这些代码片段是由大模型生成的,同样也具备安全风险。Code Shield可以通过添加警告消息,或完全阻止当前回复来加强防护,防止不安全代码被用户采用。
图7:VSCode插件 文心快码
五. 总结
在这篇文章中,我们详细探讨了Meta开源大模型安全解决方案Purple-Llama中的防护工具,包括Llama Guard 3、Prompt Guard和Code Shield。这些工具分别针对大模型应用的不同安全隐患提供了有效的解决方案。Llama Guard 3通过输入输出检测,有效识别并分类不安全内容,保障了大模型在多语言环境下的内容安全;Prompt Guard则如同安全卫士,对输入的提示词进行严格过滤,防止恶意注入和越狱攻击,保护大模型的指令安全;而Code Shield则专注于代码安全,确保大模型生成的代码安全可靠,防止潜在的安全威胁。总的来说,Purple-Llama的防护工具为大模型的应用提供了全面的安全保障,有助于促进大模型技术的健康发展,并确保其在各领域的安全应用。未来,随着大模型技术的不断进步,Meta也会对安全防护措施持续迭代升级以应对新的安全挑战,我们也将持续跟踪领域最新发展。
参考文献
[1] 《Meta大模型安全解决方案——评估》
[2] https://mlcommons.org/2024/04/mlc-aisafety-v0-5-poc/
[3] https://github.com/meta-llama/PurpleLlama
[4] Llama guard: LLM-based input-output safeguard for human-ai conversations
[5] Llama Guard 3 Vision: Safeguarding Human-AI Image Understanding Conversations
[6] Llama Guard 3-1B-INT4: Compact and Efficient Safeguard for Human-AI Conversations
内容编辑:创新研究院 陈寅嵩
责任编辑:创新研究院 舒展
原文始发于微信公众号(绿盟科技研究通讯):Meta大模型安全解决方案——防护篇
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论