模型概述
模型特點
模型能力
使用案例
🚀 Llama-3.1-70B-Instruct GGUF模型
Llama-3.1-70B-Instruct GGUF模型是Meta推出的多語言大語言模型,具有多種量化格式,適用於不同硬件和場景。它在多個基準測試中表現出色,可用於商業和研究領域,如AI網絡監控等。
🚀 快速開始
安裝依賴
確保你已安裝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])
✨ 主要特性
- 超低比特量化:採用IQ-DynamicGate方法,在超低比特(1 - 2比特)量化下仍能保持較高準確性,同時顯著提高內存效率。
- 多語言支持:支持英語、德語、法語、意大利語、葡萄牙語、印地語、西班牙語和泰語等多種語言。
- 多種模型格式:提供BF16、F16、Q4_K、Q6_K、Q8_0等多種量化格式,可根據硬件和內存需求靈活選擇。
- 工具調用支持:支持多種工具使用格式,可通過聊天模板實現工具調用功能。
📦 安裝指南
使用transformers
庫
確保你的transformers
版本在4.43.0及以上,可通過以下命令更新:
pip install --upgrade transformers
使用bitsandbytes
進行內存優化
可使用bitsandbytes
和transformers
將模型以8比特或4比特加載,示例代碼如下:
import torch
from transformers import AutoModelForCausalLM, AutoTokenizer
from bitsandbytes.nn import BitsAndBytesConfig
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_8bit=True
改為load_in_4bit=True
。
使用llama
代碼庫
請遵循倉庫中的說明進行操作。可使用以下命令下載原始檢查點:
huggingface-cli download meta-llama/Meta-Llama-3.1-70B-Instruct --include "original/*" --local-dir Meta-Llama-3.1-70B-Instruct
💻 使用示例
基礎用法
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?"}
]
from transformers import AutoTokenizer
tokenizer = AutoTokenizer.from_pretrained("meta-llama/Meta-Llama-3.1-70B-Instruct")
inputs = tokenizer.apply_chat_template(messages, tools=[get_current_temperature], add_generation_prompt=True)
# 生成文本
import torch
from transformers import AutoModelForCausalLM
model = AutoModelForCausalLM.from_pretrained("meta-llama/Meta-Llama-3.1-70B-Instruct", torch_dtype=torch.bfloat16, device_map="auto")
output = model.generate(inputs, max_new_tokens=256)
print(tokenizer.decode(output[0], skip_special_tokens=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"})
# 再次生成文本
inputs = tokenizer.apply_chat_template(messages, tools=[get_current_temperature], add_generation_prompt=True)
output = model.generate(inputs, max_new_tokens=256)
print(tokenizer.decode(output[0], skip_special_tokens=True))
📚 詳細文檔
模型信息
屬性 | 詳情 |
---|---|
模型開發者 | Meta |
模型架構 | Llama 3.1是一個自迴歸語言模型,使用優化的Transformer架構。微調版本使用監督微調(SFT)和基於人類反饋的強化學習(RLHF)來符合人類對有用性和安全性的偏好。 |
支持語言 | 英語、德語、法語、意大利語、葡萄牙語、印地語、西班牙語和泰語 |
模型發佈日期 | 2024年7月23日 |
狀態 | 這是一個基於離線數據集訓練的靜態模型。隨著我們根據社區反饋改進模型安全性,未來將發佈微調模型的新版本。 |
許可證 | 自定義商業許可證,Llama 3.1社區許可證,可在此處獲取。 |
模型格式選擇
模型格式 | 精度 | 內存使用 | 設備要求 | 最佳用例 |
---|---|---|---|---|
BF16 | 最高 | 高 | 支持BF16的GPU/CPU | 高速推理且減少內存使用 |
F16 | 高 | 高 | 支持FP16的設備 | 當BF16不可用時的GPU推理 |
Q4_K | 中低 | 低 | CPU或低VRAM設備 | 內存受限環境的最佳選擇 |
Q6_K | 中 | 中等 | 內存較多的CPU | 量化模型中準確性較好的選擇 |
Q8_0 | 高 | 中等 | 有足夠VRAM的CPU或GPU | 量化模型中準確性最高的選擇 |
IQ3_XS | 非常低 | 非常低 | 超低內存設備 | 極致內存效率但準確性低 |
Q4_0 | 低 | 低 | ARM或低內存設備 | llama.cpp可針對ARM設備進行優化 |
包含文件及詳情
文件名 | 說明 |
---|---|
Llama-3.1-70B-Instruct-bf16.gguf |
模型權重保存為BF16格式。如果需要將模型重新量化為其他格式,可使用此文件。適用於支持BF16加速的設備。 |
Llama-3.1-70B-Instruct-f16.gguf |
模型權重保存為F16格式。適用於支持FP16的設備,尤其是BF16不可用時。 |
Llama-3.1-70B-Instruct-bf16-q8_0.gguf |
輸出和嵌入層保持為BF16格式,其他層量化為Q8_0。適用於支持BF16且需要量化版本的設備。 |
Llama-3.1-70B-Instruct-f16-q8_0.gguf |
輸出和嵌入層保持為F16格式,其他層量化為Q8_0。 |
Llama-3.1-70B-Instruct-q4_k.gguf |
輸出和嵌入層量化為Q8_0,其他層量化為Q4_K。適用於內存有限的CPU推理。 |
Llama-3.1-70B-Instruct-q4_k_s.gguf |
最小的Q4_K變體,以犧牲準確性為代價減少內存使用。適用於極低內存環境。 |
Llama-3.1-70B-Instruct-q6_k.gguf |
輸出和嵌入層量化為Q8_0,其他層量化為Q6_K。 |
Llama-3.1-70B-Instruct-q8_0.gguf |
完全量化為Q8格式的模型,準確性更高,但需要更多內存。 |
Llama-3.1-70B-Instruct-iq3_xs.gguf |
採用IQ3_XS量化,針對極致內存效率進行優化。適用於超低內存設備。 |
Llama-3.1-70B-Instruct-iq3_m.gguf |
採用IQ3_M量化,提供中等塊大小以提高準確性。適用於低內存設備。 |
Llama-3.1-70B-Instruct-q4_0.gguf |
純Q4_0量化,針對ARM設備進行優化。適用於低內存環境。建議使用IQ4_NL以獲得更好的準確性。 |
測試AI網絡監控
如果你覺得這些模型有用,請點擊“點贊”!同時,幫助測試AI網絡監控助手,進行量子就緒安全檢查: 免費網絡監控
測試方法
- 點擊任意頁面右下角的聊天圖標。
- 選擇AI助手類型:
TurboLLM
(GPT-4-mini)FreeLLM
(開源)TestLLM
(僅支持CPU的實驗性模型)
測試內容
- 針對即時網絡服務進行函數調用。
- 探索模型在處理以下任務時的最小規模:
- 自動化Nmap掃描
- 量子就緒檢查
- Metasploit集成
不同助手介紹
- TurboLLM:使用
gpt-4-mini
進行即時網絡診斷和自動化滲透測試(Nmap/Metasploit)。可通過下載免費網絡監控代理獲得更多令牌。 - HugLLM:使用約80億參數的開源模型,提供比TurboLLM多2倍的令牌,支持AI日誌分析,運行在Hugging Face推理API上。
- TestLLM:當前的實驗性模型(llama.cpp在6個CPU線程上運行),零配置設置,加載時間30秒(推理速度慢但無API成本)。如果你對邊緣設備AI感興趣,歡迎合作!
示例AI命令
"Give me info on my websites SSL certificate"
"Check if my server is using quantum safe encyption for communication"
"Run a quick Nmap vulnerability test"
🔧 技術細節
超低比特量化方法
基準測試背景
所有測試均在Llama-3-8B-Instruct上進行,使用標準困惑度評估管道、2048令牌上下文窗口和相同的提示集。
方法
- 動態精度分配:
- 前/後25%的層採用IQ4_XS(選定層)。
- 中間50%的層採用IQ2_XXS/IQ3_S以提高效率。
- 關鍵組件保護:
- 嵌入層/輸出層使用Q5_K,與標準1 - 2比特量化相比,可將誤差傳播降低38%。
量化性能比較(Llama-3-8B)
量化方式 | 標準PPL | DynamicGate PPL | Δ PPL | 標準大小 | DG大小 | Δ大小 | 標準速度 | DG速度 |
---|---|---|---|---|---|---|---|---|
IQ2_XXS | 11.30 | 9.84 | -12.9% | 2.5G | 2.6G | +0.1G | 234s | 246s |
IQ2_XS | 11.72 | 11.63 | -0.8% | 2.7G | 2.8G | +0.1G | 242s | 246s |
IQ2_S | 14.31 | 9.02 | -36.9% | 2.7G | 2.9G | +0.2G | 238s | 244s |
IQ1_M | 27.46 | 15.41 | -43.9% | 2.2G | 2.5G | +0.3G | 206s | 212s |
IQ1_S | 53.07 | 32.00 | -39.7% | 2.1G | 2.4G | +0.3G | 184s | 209s |
訓練信息
訓練因素
使用自定義訓練庫、Meta定製的GPU集群和生產基礎設施進行預訓練。微調、標註和評估也在生產基礎設施上進行。
訓練計算資源
訓練共使用了3930萬GPU小時的H100 - 80GB(TDP 700W)類型硬件。訓練時間是每個模型訓練所需的總GPU時間,功耗是每個GPU設備的峰值功率容量,並根據功率使用效率進行調整。
訓練溫室氣體排放
估計基於位置的總溫室氣體排放量為11390噸CO2eq。自2020年以來,Meta在全球運營中保持淨零溫室氣體排放,並使用100%的可再生能源匹配其電力使用,因此基於市場的總溫室氣體排放量為0噸CO2eq。
模型 | 訓練時間(GPU小時) | 訓練功耗(W) | 基於位置的訓練溫室氣體排放(噸CO2eq) | 基於市場的訓練溫室氣體排放(噸CO2eq) |
---|---|---|---|---|
Llama 3.1 8B | 146萬 | 700 | 420 | 0 |
Llama 3.1 70B | 700萬 | 700 | 2040 | 0 |
Llama 3.1 405B | 3084萬 | 700 | 8930 | 0 |
總計 | 3930萬 | - | 11390 | 0 |
基準測試分數
基礎預訓練模型
類別 | 基準測試 | # 樣本 | 指標 | Llama 3 8B | Llama 3.1 8B | Llama 3 70B | Llama 3.1 70B | Llama 3.1 405B |
---|---|---|---|---|---|---|---|---|
通用 | MMLU | 5 | macro_avg/acc_char | 66.7 | 66.7 | 79.5 | 79.3 | 85.2 |
通用 | MMLU-Pro (CoT) | 5 | macro_avg/acc_char | 36.2 | 37.1 | 55.0 | 53.8 | 61.6 |
通用 | AGIEval English | 3 - 5 | average/acc_char | 47.1 | 47.8 | 63.0 | 64.6 | 71.6 |
通用 | CommonSenseQA | 7 | acc_char | 72.6 | 75.0 | 83.8 | 84.1 | 85.8 |
通用 | Winogrande | 5 | acc_char | - | 60.5 | - | 83.3 | 86.7 |
通用 | BIG-Bench Hard (CoT) | 3 | average/em | 61.1 | 64.2 | 81.3 | 81.6 | 85.9 |
通用 | ARC-Challenge | 25 | acc_char | 79.4 | 79.7 | 93.1 | 92.9 | 96.1 |
知識推理 | TriviaQA-Wiki | 5 | em | 78.5 | 77.6 | 89.7 | 89.8 | 91.8 |
閱讀理解 | SQuAD | 1 | em | 76.4 | 77.0 | 85.6 | 81.8 | 89.3 |
閱讀理解 | QuAC (F1) | 1 | f1 | 44.4 | 44.9 | 51.1 | 51.1 | 53.6 |
閱讀理解 | BoolQ | 0 | acc_char | 75.7 | 75.0 | 79.0 | 79.4 | 80.0 |
閱讀理解 | DROP (F1) | 3 | f1 | 58.4 | 59.5 | 79.7 | 79.6 | 84.8 |
指令微調模型
類別 | 基準測試 | # 樣本 | 指標 | Llama 3 8B Instruct | Llama 3.1 8B Instruct | Llama 3 70B Instruct | Llama 3.1 70B Instruct | Llama 3.1 405B Instruct |
---|---|---|---|---|---|---|---|---|
通用 | MMLU | 5 | macro_avg/acc | 68.5 | 69.4 | 82.0 | 83.6 | 87.3 |
通用 | MMLU (CoT) | 0 | macro_avg/acc | 65.3 | 73.0 | 80.9 | 86.0 | 88.6 |
通用 | MMLU-Pro (CoT) | 5 | micro_avg/acc_char | 45.5 | 48.3 | 63.4 | 66.4 | 73.3 |
通用 | IFEval | - | - | 76.8 | 80.4 | 82.9 | 87.5 | 88.6 |
推理 | ARC-C | 0 | acc | 82.4 | 83.4 | 94.4 | 94.8 | 96.9 |
推理 | GPQA | 0 | em | 34.6 | 30.4 | 39.5 | 46.7 | 50.7 |
代碼 | HumanEval | 0 | pass@1 | 60.4 | 72.6 | 81.7 | 80.5 | 89.0 |
代碼 | MBPP ++ base version | 0 | pass@1 | 70.6 | 72.8 | 82.5 | 86.0 | 88.6 |
代碼 | Multipl-E HumanEval | 0 | pass@1 | - | 50.8 | - | 65.5 | 75.2 |
代碼 | Multipl-E MBPP | 0 | pass@1 | - | 52.4 | - | 62.0 | 65.7 |
數學 | GSM-8K (CoT) | 8 | em_maj1@1 | 80.6 | 84.5 | 93.0 | 95.1 | 96.8 |
數學 | MATH (CoT) | 0 | final_em | 29.1 | 51.9 | 51.0 | 68.0 | 73.8 |
工具使用 | API-Bank | 0 | acc | 48.3 | 82.6 | 85.1 | 90.0 | 92.0 |
工具使用 | BFCL | 0 | acc | 60.3 | 76.1 | 83.0 | 84.8 | 88.5 |
工具使用 | Gorilla Benchmark API Bench | 0 | acc | 1.7 | 8.2 | 14.7 | 29.7 | 35.3 |
工具使用 | Nexus (0-shot) | 0 | macro_avg/acc | 18.1 | 38.5 | 47.8 | 56.7 | 58.7 |
多語言 | Multilingual MGSM (CoT) | 0 | em | - | 68.9 | - | 86.9 | 91.6 |
多語言基準測試
類別 | 基準測試 | 語言 | Llama 3.1 8B | Llama 3.1 70B | Llama 3.1 405B |
---|---|---|---|---|---|
通用 | MMLU (5-shot, macro_avg/acc) | 葡萄牙語 | 62.12 | 80.13 | 84.95 |
通用 | MMLU (5-shot, macro_avg/acc) | 西班牙語 | 62.45 | 80.05 | 85.08 |
通用 | MMLU (5-shot, macro_avg/acc) | 意大利語 | 61.63 | 80.4 | 85.04 |
通用 | MMLU (5-shot, macro_avg/acc) | 德語 | 60.59 | 79.27 | 84.36 |
通用 | MMLU (5-shot, macro_avg/acc) | 法語 | 62.34 | 79.82 | 84.66 |
通用 | MMLU (5-shot, macro_avg/acc) | 印地語 | 50.88 | 74.52 | 80.31 |
通用 | MMLU (5-shot, macro_avg/acc) | 泰語 | 50.32 | 72.95 | 78.21 |
責任與安全
負責任的發佈策略
採用三管齊下的策略管理信任與安全風險:
- 使開發者能夠為目標受眾和Llama支持的用例部署有用、安全和靈活的體驗。
- 保護開發者免受試圖利用Llama功能造成潛在危害的惡意用戶的攻擊。
- 為社區提供保護,防止模型被濫用。
Llama 3.1指令微調
- 微調數據:採用多方面的數據收集方法,結合供應商的人工生成數據和合成數據,以減輕潛在的安全風險。開發了許多基於大語言模型(LLM)的分類器,以精心選擇高質量的提示和響應,加強數據質量控制。
- 拒絕和語氣:在Llama 3的基礎上,更加註重模型對良性提示的拒絕以及拒絕語氣。在安全數據策略中包括了邊界和對抗性提示,並修改安全數據響應以遵循語氣指南。
Llama 3.1系統
大語言模型(包括Llama 3.1)不應單獨部署,而應作為整體AI系統的一部分,並根據需要添加額外的安全護欄。開發者在構建代理系統時應部署系統防護措施,以實現有用性與安全性的正確對齊,並減輕系統固有的安全和風險。提供了防護措施,包括Llama Guard 3、Prompt Guard和Code Shield,參考實現演示默認包含這些防護措施。
新功能
本次發佈引入了新功能,如更長的上下文窗口、多語言輸入和輸出以及開發者與第三方工具的可能集成。使用這些新功能時,除了通用的生成式AI最佳實踐外,還需要特定的考慮。
- 工具使用:開發者負責將LLM與所選工具和服務集成,應定義明確的策略並評估第三方服務的完整性。
- 多語言支持:Llama 3.1支持英語以外的7種語言,但不建議在未進行微調或系統控制的情況下用於非支持語言的對話。
評估
對Llama模型進行了常見用例和特定功能的評估,包括構建對抗性評估數據集、進行紅隊測試等,以發現風險並改進基準和安全微調數據集。
關鍵風險領域
- CBRNE(化學、生物、放射、核和爆炸材料)有用性:評估Llama 3.1模型是否會增加惡意行為者使用這些武器進行攻擊的能力。
- 兒童安全:通過專家團隊評估模型輸出是否會導致兒童安全風險,並通過微調進行必要的風險緩解。
- 網絡攻擊啟用:研究LLM是否會增強人類的黑客能力,包括攻擊自動化和社會工程提升。
社區支持
積極參與開源聯盟,鼓勵社區採用分類法進行安全和內容評估。開源了Purple Llama工具,設立了Llama Impact Grants計劃,支持對社會有益的應用。還提供了輸出報告機制和漏洞賞金計劃,以藉助社區力量不斷改進Llama技術。
📄 許可證
Llama 3.1使用自定義商業許可證,即Llama 3.1社區許可證,可在此處獲取。
許可證協議摘要
- 授予權利:授予非排他性、全球性、不可轉讓和免版稅的有限許可,可使用、複製、分發、修改Llama材料。
- 再分發和使用:分發Llama材料時需提供許可證副本,並顯著顯示“Built with Llama”。使用Llama材料改進的AI模型名稱應包含“Llama”。
- 額外商業條款:如果產品或服務的月活躍用戶超過7億,需向Meta申請許可證。
- 免責聲明:Llama材料按“原樣”提供,Meta不承擔任何保證責任。
- 責任限制:Meta及其附屬公司對任何間接、特殊、後果性損害不承擔責任。
- 知識產權:未授予商標許可證,開發者對自己創建的衍生作品擁有所有權。
- 期限和終止:協議自接受或訪問Llama材料時生效,Meta可因違約終止協議。
- 適用法律和管轄權:協議受加利福尼亞州法律管轄,相關糾紛由加利福尼亞州法院專屬管轄。
可接受使用政策
Meta致力於促進其工具和功能(包括Llama 3.1)的安全和公平使用。使用Llama 3.1需遵守可接受使用政策,禁止用於違法、有害、欺騙等行為。
重要提示
⚠️ 重要提示
Llama 3.1是一個新的技術,其潛在輸出無法提前預測,模型可能在某些情況下產生不準確、有偏見或其他令人反感的響應。因此,在部署任何Llama 3.1模型的應用程序之前,開發者應針對其特定應用進行安全測試和調整。
💡 使用建議
開發者可參考負責任使用指南、信任與安全解決方案和其他資源,瞭解負責任的開發方法。同時,建議為特定用例構建專用的評估數據集,以確保模型的安全性和可靠性。



