模型概述
模型特點
模型能力
使用案例
🚀 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



