模型概述
模型特點
模型能力
使用案例
🚀 Meta Llama 3.3多語言大語言模型
Meta Llama 3.3是一款70B參數的多語言大語言模型,支持文本輸入和輸出。它針對多語言對話場景進行了優化,在常見的行業基準測試中,表現優於許多現有的開源和閉源聊天模型。
🚀 快速開始
使用transformers庫
從transformers >= 4.45.0
版本開始,你可以使用Transformers的pipeline
抽象或利用Auto
類結合generate()
函數進行對話推理。
確保通過以下命令更新你的transformers庫:
pip install --upgrade transformers
以下是使用Transformers的示例代碼:
import transformers
import torch
model_id = "meta-llama/Llama-3.3-70B-Instruct"
pipeline = transformers.pipeline(
"text-generation",
model=model_id,
model_kwargs={"torch_dtype": torch.bfloat16},
device_map="auto",
)
messages = [
{"role": "system", "content": "You are a pirate chatbot who always responds in pirate speak!"},
{"role": "user", "content": "Who are you?"},
]
outputs = pipeline(
messages,
max_new_tokens=256,
)
print(outputs[0]["generated_text"][-1])
使用transformers庫進行工具調用
LLaMA-3.3支持多種工具調用格式。你可以在這裡查看完整的提示格式化指南。
在Transformers中,也可以通過聊天模板支持工具調用。以下是一個簡單工具調用的快速示例:
# First, define a tool
def get_current_temperature(location: str) -> float:
"""
Get the current temperature at a location.
Args:
location: The location to get the temperature for, in the format "City, Country"
Returns:
The current temperature at the specified location in the specified units, as a float.
"""
return 22. # A real function should probably actually get the temperature!
# Next, create a chat and apply the chat template
messages = [
{"role": "system", "content": "You are a bot that responds to weather queries."},
{"role": "user", "content": "Hey, what's the temperature in Paris right now?"}
]
inputs = tokenizer.apply_chat_template(messages, tools=[get_current_temperature], add_generation_prompt=True)
你可以像往常一樣從這個輸入生成文本。如果模型生成了一個工具調用,你應該將其添加到聊天中,如下所示:
tool_call = {"name": "get_current_temperature", "arguments": {"location": "Paris, France"}}
messages.append({"role": "assistant", "tool_calls": [{"type": "function", "function": tool_call}]})
然後調用工具並將結果以tool
角色添加到聊天中,如下所示:
messages.append({"role": "tool", "name": "get_current_temperature", "content": "22.0"})
之後,你可以再次調用generate()
讓模型在聊天中使用工具結果。請注意,這只是對工具調用的簡要介紹,更多信息請參閱LLaMA提示格式文檔和Transformers的工具使用文檔。
使用bitsandbytes
庫
可以使用bitsandbytes
和transformers
庫將模型檢查點以8-bit
和4-bit
量化,以進一步優化內存使用。
以下是使用示例:
import torch
from transformers import AutoModelForCausalLM, AutoTokenizer
model_id = "meta-llama/Llama-3.3-70B-Instruct"
quantization_config = BitsAndBytesConfig(load_in_8bit=True)
quantized_model = AutoModelForCausalLM.from_pretrained(
model_id, device_map="auto", torch_dtype=torch.bfloat16, quantization_config=quantization_config)
tokenizer = AutoTokenizer.from_pretrained(model_id)
input_text = "What are we having for dinner?"
input_ids = tokenizer(input_text, return_tensors="pt").to("cuda")
output = quantized_model.generate(**input_ids, max_new_tokens=10)
print(tokenizer.decode(output[0], skip_special_tokens=True))
若要以4-bit
加載,只需將load_in_4bit=True
傳入即可。
使用llama
代碼庫
請遵循倉庫中的說明。
要下載原始檢查點,請使用以下huggingface-cli
命令示例:
huggingface-cli download meta-llama/Llama-3.3-70B-Instruct --include "original/*" --local-dir Llama-3.3-70B-Instruct
✨ 主要特性
- 多語言支持:支持英語、德語、法語、意大利語、葡萄牙語、印地語、西班牙語和泰語。
- 優化架構:採用優化的Transformer架構,使用監督微調(SFT)和基於人類反饋的強化學習(RLHF)來符合人類對有用性和安全性的偏好。
- 高性能表現:在常見的行業基準測試中,表現優於許多現有的開源和閉源聊天模型。
- 工具調用支持:支持多種工具調用格式,方便開發者集成外部工具。
📦 安裝指南
本部分文檔未提供具體安裝步驟,可參考快速開始部分的代碼示例進行安裝和使用。
💻 使用示例
基礎用法
import transformers
import torch
model_id = "meta-llama/Llama-3.3-70B-Instruct"
pipeline = transformers.pipeline(
"text-generation",
model=model_id,
model_kwargs={"torch_dtype": torch.bfloat16},
device_map="auto",
)
messages = [
{"role": "system", "content": "You are a pirate chatbot who always responds in pirate speak!"},
{"role": "user", "content": "Who are you?"},
]
outputs = pipeline(
messages,
max_new_tokens=256,
)
print(outputs[0]["generated_text"][-1])
高級用法
# First, define a tool
def get_current_temperature(location: str) -> float:
"""
Get the current temperature at a location.
Args:
location: The location to get the temperature for, in the format "City, Country"
Returns:
The current temperature at the specified location in the specified units, as a float.
"""
return 22. # A real function should probably actually get the temperature!
# Next, create a chat and apply the chat template
messages = [
{"role": "system", "content": "You are a bot that responds to weather queries."},
{"role": "user", "content": "Hey, what's the temperature in Paris right now?"}
]
inputs = tokenizer.apply_chat_template(messages, tools=[get_current_temperature], add_generation_prompt=True)
tool_call = {"name": "get_current_temperature", "arguments": {"location": "Paris, France"}}
messages.append({"role": "assistant", "tool_calls": [{"type": "function", "function": tool_call}]})
messages.append({"role": "tool", "name": "get_current_temperature", "content": "22.0"})
# 再次生成文本
output = quantized_model.generate(**input_ids, max_new_tokens=10)
print(tokenizer.decode(output[0], skip_special_tokens=True))
📚 詳細文檔
模型信息
屬性 | 詳情 |
---|---|
模型開發者 | Meta |
模型架構 | Llama 3.3是一個自迴歸語言模型,使用優化的Transformer架構。微調版本使用監督微調(SFT)和基於人類反饋的強化學習(RLHF)來符合人類對有用性和安全性的偏好。 |
訓練數據 | Llama 3.3在約15萬億個公開可用來源的標記上進行預訓練。微調數據包括公開可用的指令數據集,以及超過2500萬個合成生成的示例。 |
參數數量 | 70B |
輸入模態 | 多語言文本 |
輸出模態 | 多語言文本和代碼 |
上下文長度 | 128k |
GQA | 是 |
標記數量 | 15T+ |
知識截止日期 | 2023年12月 |
模型發佈日期 | 70B指令調優版本:2024年12月6日 |
狀態 | 這是一個在離線數據集上訓練的靜態模型。隨著我們通過社區反饋改進模型安全性,未來將發佈微調模型的新版本。 |
許可證 | 自定義商業許可證,Llama 3.3社區許可協議可在此處查看。 |
預期用途
- 預期用例:Llama 3.3旨在用於多種語言的商業和研究用途。僅針對文本進行指令調優的模型適用於類似助手的聊天,而預訓練模型可用於各種自然語言生成任務。Llama 3.3模型還支持利用其模型的輸出來改進其他模型,包括合成數據生成和蒸餾。Llama 3.3社區許可證允許這些用例。
- 超出範圍的使用:以任何違反適用法律法規(包括貿易合規法律)的方式使用。以可接受使用政策和Llama 3.3社區許可證禁止的任何其他方式使用。在本模型卡片中未明確提及支持的語言之外的語言中使用。
硬件和軟件
- 訓練因素:使用自定義訓練庫、Meta的自定義GPU集群和生產基礎設施進行預訓練。微調、註釋和評估也在生產基礎設施上進行。
- 訓練能源使用:訓練在H100 - 80GB(TDP為700W)類型的硬件上累計使用了3930萬GPU小時的計算資源。訓練時間是訓練每個模型所需的總GPU時間,功耗是每個GPU設備的峰值功率容量,並根據功率使用效率進行了調整。
- 訓練溫室氣體排放:估計基於位置的總溫室氣體排放量為11390噸CO2eq。自2020年以來,Meta在其全球運營中保持淨零溫室氣體排放,並以100%的可再生能源匹配其電力使用,因此基於市場的總溫室氣體排放量為0噸CO2eq。
訓練數據
- 概述:Llama 3.3在約15萬億個來自公開可用來源的標記上進行預訓練。微調數據包括公開可用的指令數據集,以及超過2500萬個合成生成的示例。
- 數據新鮮度:預訓練數據的截止日期為2023年12月。
基準測試 - 英語文本
類別 | 基準測試 | 樣本數量 | 指標 | Llama 3.1 8B指令調優 | Llama 3.1 70B指令調優 | Llama-3.3 70B指令調優 | Llama 3.1 405B指令調優 |
---|---|---|---|---|---|---|---|
MMLU (CoT) | 0 | macro_avg/acc | 73.0 | 86.0 | 86.0 | 88.6 | |
MMLU Pro (CoT) | 5 | macro_avg/acc | 48.3 | 66.4 | 68.9 | 73.3 | |
可控性 | IFEval | 80.4 | 87.5 | 92.1 | 88.6 | ||
推理能力 | GPQA Diamond (CoT) | 0 | acc | 31.8 | 48.0 | 50.5 | 49.0 |
代碼能力 | HumanEval | 0 | pass@1 | 72.6 | 80.5 | 88.4 | 89.0 |
MBPP EvalPlus (base) | 0 | pass@1 | 72.8 | 86.0 | 87.6 | 88.6 | |
數學能力 | MATH (CoT) | 0 | sympy_intersection_score | 51.9 | 68.0 | 77.0 | 73.8 |
工具使用能力 | BFCL v2 | 0 | overall_ast_summary/macro_avg/valid | 65.4 | 77.5 | 77.3 | 81.1 |
多語言能力 | MGSM | 0 | em | 68.9 | 86.9 | 91.1 | 91.6 |
責任與安全
負責任的部署
Llama是一種基礎技術,旨在用於各種用例。有關Meta的Llama模型如何負責任地部署的示例,可以在我們的社區故事網頁上找到。我們的方法是構建最有用的模型,使世界能夠從技術力量中受益,通過為通用用例調整模型安全性來解決一系列標準危害。然後,開發者可以根據自己的用例定製安全性,定義自己的政策,並在其Llama系統中部署必要的保障措施。Llama 3.3是按照我們的負責任使用指南中概述的最佳實踐開發的,你可以參考負責任使用指南瞭解更多信息。
Llama 3.3指令調優模型
- 微調數據:採用多方面的數據收集方法,將供應商提供的人類生成數據與合成數據相結合,以減輕潛在的安全風險。開發了許多基於大語言模型(LLM)的分類器,以便精心選擇高質量的提示和響應,加強數據質量控制。
- 拒絕和語氣:在Llama 3的基礎上,非常重視模型對良性提示的拒絕以及拒絕語氣。在安全數據策略中包括了邊界和對抗性提示,並修改了安全數據響應以遵循語氣指南。
Llama 3.3系統
大型語言模型,包括Llama 3.3,並非旨在單獨部署,而是應作為整體AI系統的一部分,並根據需要添加額外的安全保障措施。開發者在構建代理系統時應部署系統保障措施。保障措施對於實現正確的有用性 - 安全性對齊以及減輕系統固有的安全和風險以及模型或系統與外部工具集成時的風險至關重要。作為我們負責任發佈方法的一部分,我們為社區提供了保障措施,開發者應將其與Llama模型或其他LLM一起部署,包括Llama Guard 3、Prompt Guard和Code Shield。我們所有的參考實現演示默認包含這些保障措施,因此開發者可以立即從系統級安全中受益。
特定能力考慮
- 工具使用:與標準軟件開發一樣,開發者負責將LLM與他們選擇的工具和服務集成。他們應該為自己的用例定義明確的政策,並評估他們使用的第三方服務的完整性,以瞭解使用此功能時的安全和風險限制。有關安全部署第三方保障措施的最佳實踐,請參閱負責任使用指南。
- 多語言支持:Llama 3.3除英語外還支持7種語言:法語、德語、印地語、意大利語、葡萄牙語、西班牙語和泰語。Llama可能能夠輸出其他語言的文本,但這些語言可能未達到安全和有用性的性能閾值。我們強烈建議開發者在未根據其政策和負責任使用指南中分享的最佳實踐進行微調並實施系統控制的情況下,不要使用此模型在不支持的語言中進行對話。
評估
對Llama模型進行了常見用例以及特定能力的評估。常見用例評估衡量了為最常見構建的應用程序(包括聊天機器人、編碼助手、工具調用)的系統安全風險。構建了專門的對抗性評估數據集,並評估了由Llama模型和Llama Guard 3組成的系統,以過濾輸入提示和輸出響應。在上下文中評估應用程序很重要,我們建議為你的用例構建專門的評估數據集。如果與應用程序相關,還可以使用Prompt Guard和Code Shield。
特定能力評估衡量了Llama模型特定能力固有的漏洞,為此設計了專門的基準測試,包括長上下文、多語言、工具調用、編碼或記憶。
紅隊測試
在這兩種情況下,都進行了定期的紅隊測試,目標是通過對抗性提示發現風險,並利用這些經驗教訓改進我們的基準測試和安全調優數據集。
早期與關鍵風險領域的主題專家合作,以瞭解這些現實世界危害的性質,以及此類模型如何可能對社會造成意外危害。根據這些對話,為紅隊制定了一組對抗性目標,例如提取有害信息或重新編程模型以潛在地造成危害。紅隊由網絡安全、對抗性機器學習、負責任AI和完整性方面的專家以及在特定地理市場的完整性問題方面有背景的多語言內容專家組成。
關鍵和其他風險
特別關注減輕以下關鍵風險領域:
- CBRNE(化學、生物、放射、核和爆炸材料)有用性:為了評估Llama 3系列模型與化學和生物武器擴散相關的風險,進行了提升測試,旨在評估使用Llama 3模型是否會顯著提高惡意行為者使用這些類型武器策劃或實施攻擊的能力。
- 兒童安全:由一組專家進行兒童安全風險評估,以評估模型產生可能導致兒童安全風險的輸出的能力,並通過微調提供必要和適當的風險緩解建議。利用這些專家紅隊測試會議,在Llama 3模型開發過程中擴大了評估基準的覆蓋範圍。對於Llama 3,使用基於目標的方法進行了新的深入測試,以評估模型在多個攻擊向量下的風險,包括Llama 3訓練的其他語言。還與內容專家合作進行紅隊測試,評估潛在違規內容,同時考慮市場特定的細微差別或經驗。
- 網絡攻擊啟用:網絡攻擊提升研究調查了Llama 3系列大語言模型是否能在技能水平和速度方面增強人類在黑客任務中的能力。攻擊自動化研究專注於評估大語言模型作為自主代理在網絡攻擊行動中的能力,特別是在勒索軟件攻擊的背景下。此評估與之前將大語言模型視為交互式助手的研究不同。主要目標是評估這些模型是否能在無人干預的情況下有效地作為獨立代理執行復雜的網絡攻擊。
社區
生成式AI安全需要專業知識和工具,我們相信開放社區的力量可以加速其發展。我們是開放聯盟的積極成員,包括AI聯盟、AI合作組織和MLCommons,積極為安全標準化和透明度做出貢獻。我們鼓勵社區採用像MLCommons概念驗證評估這樣的分類法,以促進安全和內容評估方面的協作和透明度。我們的紫色Llama工具已開源供社區使用,並廣泛分發給包括雲服務提供商在內的生態系統合作伙伴。我們鼓勵社區為我們的Github倉庫做出貢獻。
我們還設立了Llama影響贈款計劃,以識別和支持Meta的Llama模型在三個類別中的最有吸引力的社會有益應用:教育、氣候和開放創新。數百份申請中的20名決賽選手可以在這裡找到。
最後,我們建立了一套資源,包括輸出報告機制和漏洞賞金計劃,以在社區的幫助下不斷改進Llama技術。
倫理考慮和侷限性
Llama 3.3的核心價值觀是開放性、包容性和有用性。它旨在為每個人服務,並適用於廣泛的用例。因此,它旨在讓具有不同背景、經驗和觀點的人都能使用。Llama 3.3以用戶的實際需求為出發點,不插入不必要的判斷或規範性,同時認識到即使在某些情況下可能看起來有問題的內容,在其他情況下也可能有價值。它尊重所有用戶的尊嚴和自主權,特別是在推動創新和進步的自由思想和表達價值觀方面。
但Llama 3.3是一項新技術,與任何新技術一樣,其使用存在風險。到目前為止進行的測試尚未涵蓋,也不可能涵蓋所有場景。因此,與所有大語言模型一樣,Llama 3.3的潛在輸出無法提前預測,模型在某些情況下可能會對用戶提示產生不準確、有偏見或其他令人反感的響應。因此,在部署Llama 3.3模型的任何應用程序之前,開發者應針對其特定應用進行安全測試和調優。請參考可用資源,包括我們的負責任使用指南、信任與安全解決方案和其他資源,以瞭解更多關於負責任開發的信息。
📄 許可證
Llama 3.3使用自定義商業許可證,Llama 3.3社區許可協議可在此處查看。



