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



