模型概述
模型特點
模型能力
使用案例
🚀 Meta Llama 3.1 多語言大語言模型
Meta Llama 3.1 是一系列多語言大語言模型,提供 8B、70B 和 405B 三種不同規模的預訓練和指令微調生成模型。這些模型在多語言對話場景中表現出色,在常見的行業基準測試中超越了許多開源和閉源的聊天模型。
🚀 快速開始
本倉庫包含兩個版本的 Meta-Llama-3.1-70B-Instruct,可分別與 transformers
庫和原始的 llama
代碼庫配合使用。
使用 transformers 庫
從 transformers >= 4.43.0
版本開始,你可以使用 transformers
的 pipeline
抽象方法或藉助 Auto
類和 generate()
函數進行對話推理。
請確保通過以下命令更新你的 transformers
庫:
pip install --upgrade transformers
以下是使用 transformers
庫的示例代碼:
import transformers
import torch
model_id = "meta-llama/Meta-Llama-3.1-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])
使用 bitsandbytes 庫
可以結合 bitsandbytes
和 transformers
庫,以 8 位或 4 位量化的方式加載模型,進一步優化內存使用。
以下是使用示例:
import torch
from transformers import AutoModelForCausalLM, AutoTokenizer
model_id = "meta-llama/Meta-Llama-3.1-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 位量化方式加載模型,只需將 load_in_4bit=True
傳入即可。
使用原始 llama 代碼庫
請遵循 倉庫 中的說明進行操作。
可以使用以下示例命令,藉助 huggingface-cli
下載原始模型檢查點:
huggingface-cli download meta-llama/Meta-Llama-3.1-70B-Instruct --include "original/*" --local-dir Meta-Llama-3.1-70B-Instruct
✨ 主要特性
- 多語言支持:支持英語、德語、法語、意大利語、葡萄牙語、印地語、西班牙語和泰語等多種語言。
- 高性能表現:在多個標準自動基準測試中取得了優異的成績,如 MMLU、AGIEval、CommonSenseQA 等。
- 靈活的使用方式:提供預訓練模型和指令微調模型,適用於多種自然語言生成任務,如聊天、文本生成等。
- 安全可靠:採用了多種安全措施,包括安全微調、拒絕惡意提示、提供安全防護工具等,以確保模型的安全使用。
📦 安裝指南
使用前請確保更新 transformers
庫到最新版本:
pip install --upgrade transformers
💻 使用示例
基礎用法
import transformers
import torch
model_id = "meta-llama/Meta-Llama-3.1-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])
高級用法
# 定義一個工具函數
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!
# 創建聊天消息並應用聊天模板
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.1 是一個自迴歸語言模型,採用了優化的 Transformer 架構。微調版本使用了監督微調(SFT)和基於人類反饋的強化學習(RLHF)來與人類的偏好對齊。 |
支持語言 | 英語、德語、法語、意大利語、葡萄牙語、印地語、西班牙語和泰語 |
模型發佈日期 | 2024 年 7 月 23 日 |
狀態 | 這是一個基於離線數據集訓練的靜態模型。未來,我們將根據社區反饋不斷改進模型的安全性,併發布微調模型的新版本。 |
許可證 | 自定義商業許可證,Llama 3.1 社區許可證,可在 此處 獲取。 |
預期用途
- 預期用例:Llama 3.1 適用於多種語言的商業和研究用途。指令微調的純文本模型適用於類似助手的聊天場景,而預訓練模型可用於各種自然語言生成任務。此外,Llama 3.1 模型集合還支持利用其模型輸出來改進其他模型,如合成數據生成和蒸餾。
- 超出範圍的使用:禁止以任何違反適用法律法規(包括貿易合規法律)的方式使用該模型。同時,也不得違反《可接受使用政策》和《Llama 3.1 社區許可證》的規定。此外,不得在本模型卡片中未明確支持的語言中使用該模型。
硬件和軟件
- 訓練因素:我們使用了自定義的訓練庫、Meta 定製的 GPU 集群和生產基礎設施進行預訓練。微調、標註和評估也在生產基礎設施上進行。
- 訓練計算資源:訓練總共使用了 3930 萬 GPU 小時的計算資源,硬件類型為 H100-80GB(TDP 為 700W)。訓練時間是每個模型訓練所需的總 GPU 時間,功耗是每個 GPU 設備的峰值功率容量,並根據功率使用效率進行了調整。
- 訓練溫室氣體排放:訓練過程中估計的基於位置的溫室氣體排放總量為 11390 噸 CO2 當量。自 2020 年以來,Meta 在全球運營中保持了淨零溫室氣體排放,並使用可再生能源滿足了 100% 的電力需求,因此基於市場的溫室氣體排放總量為 0 噸 CO2 當量。
訓練數據
- 概述:Llama 3.1 在約 15 萬億個公開可用數據源的標記上進行了預訓練。微調數據包括公開可用的指令數據集以及超過 2500 萬個合成生成的示例。
- 數據新鮮度:預訓練數據的截止日期為 2023 年 12 月。
基準測試分數
在標準自動基準測試中,Llama 3.1 模型取得了優異的成績。具體結果請參考文檔中的表格。
責任與安全
- 負責任的部署:Llama 是一種基礎技術,旨在用於各種用例。Meta 的 Llama 模型已在多個場景中得到了負責任的部署,具體示例可在 社區故事網頁 中查看。我們的目標是構建最有用的模型,使世界能夠從技術力量中受益,並通過調整模型安全性來應對一系列標準危害。開發者可以根據自己的用例定製安全性,定義自己的政策,並在 Llama 系統中部署必要的安全措施。Llama 3.1 是按照我們的《負責任使用指南》中的最佳實踐開發的,你可以參考 負責任使用指南 瞭解更多信息。
- 評估:我們對 Llama 模型進行了常見用例和特定能力的評估。常見用例評估衡量了系統在最常見應用(如聊天機器人、編碼助手、工具調用)中的安全風險。我們構建了專門的對抗性評估數據集,並評估了由 Llama 模型和 Llama Guard 3 組成的系統,以過濾輸入提示和輸出響應。建議為你的用例構建專門的評估數據集。此外,根據應用情況,還可以使用 Prompt Guard 和 Code Shield。
- 關鍵和其他風險:我們特別關注減輕以下關鍵風險領域:CBRNE(化學、生物、放射、核和爆炸材料)幫助、兒童安全和網絡攻擊啟用。
社區
我們鼓勵社區採用 MLCommons 概念驗證評估等分類法,以促進安全和內容評估的協作和透明度。我們的 Purple Llama 工具已開源,供社區使用,並廣泛分佈在包括雲服務提供商在內的生態系統合作伙伴中。我們鼓勵社區為我們的 Github 倉庫 做出貢獻。此外,我們還設立了 Llama 影響贈款 計劃,以支持對社會有益的 Meta Llama 模型應用。
倫理考慮和侷限性
Llama 3.1 的核心價值觀是開放、包容和有用。它旨在為所有人服務,並適用於廣泛的用例。然而,作為一種新技術,Llama 3.1 的使用也存在風險。目前的測試無法覆蓋所有場景,因此模型可能會產生不準確、有偏見或其他令人反感的響應。在部署 Llama 3.1 模型的任何應用之前,開發者應根據具體應用進行安全測試和調整。請參考 負責任使用指南、信任與安全 解決方案和其他 資源 瞭解更多關於負責任開發的信息。
🔧 技術細節
模型架構
Llama 3.1 是一個自迴歸語言模型,採用了優化的 Transformer 架構。微調版本使用了監督微調(SFT)和基於人類反饋的強化學習(RLHF)來與人類的偏好對齊。
訓練數據
Llama 3.1 在約 15 萬億個公開可用數據源的標記上進行了預訓練。微調數據包括公開可用的指令數據集以及超過 2500 萬個合成生成的示例。
訓練計算資源
訓練總共使用了 3930 萬 GPU 小時的計算資源,硬件類型為 H100-80GB(TDP 為 700W)。訓練時間是每個模型訓練所需的總 GPU 時間,功耗是每個 GPU 設備的峰值功率容量,並根據功率使用效率進行了調整。
安全措施
- 安全微調:採用多方面的數據收集方法,結合人類生成的數據和合成數據,以減輕潛在的安全風險。
- 拒絕惡意提示:強調模型對良性提示的拒絕以及拒絕語氣的控制。
- 提供安全防護工具:提供 Llama Guard 3、Prompt Guard 和 Code Shield 等安全防護工具,幫助開發者構建安全的 AI 系統。
📄 許可證
Llama 3.1 採用自定義商業許可證,即 Llama 3.1 社區許可證,可在 此處 獲取。
⚠️ 重要提示
使用 Llama 3.1 時,請遵守適用的法律法規和《可接受使用政策》。不得將其用於任何違法或有害的目的。
💡 使用建議
在部署 Llama 3.1 模型的任何應用之前,建議進行充分的安全測試和調整,以確保模型的輸出符合你的預期和安全要求。同時,建議參考我們的《負責任使用指南》和其他相關資源,以瞭解如何安全、負責任地使用該模型。



