模型概述
模型特點
模型能力
使用案例
🚀 Mistral-7B-Instruct-v0.2 GGUF模型
Mistral-7B-Instruct-v0.2 GGUF模型是基於特定量化方法優化的語言模型,在低比特量化方面有顯著提升,能適應不同硬件和內存條件,可用於多種場景,如網絡監控等。
🚀 快速開始
本項目提供了多種量化版本的Mistral-7B-Instruct-v0.2模型,你可以根據自身硬件條件和需求選擇合適的模型。同時,還提供了模型的使用示例和測試方法,幫助你快速上手。
✨ 主要特性
- 超低比特量化:引入了針對超低比特模型(1 - 2比特)的精度自適應量化方法,在Llama - 3 - 8B上經基準測試證明有顯著改進。
- 動態精度分配:對不同層採用不同的量化策略,如前25%和後25%的層採用IQ4_XS,中間50%採用IQ2_XXS/IQ3_S,提高效率。
- 關鍵組件保護:嵌入層和輸出層使用Q5_K,相比標準的1 - 2比特量化,可減少38%的誤差傳播。
- 多格式支持:提供BF16、F16、量化模型(Q4_K、Q6_K、Q8等)等多種格式,滿足不同硬件和內存需求。
📦 安裝指南
若在使用transformers
庫加載模型時遇到如下錯誤:
Traceback (most recent call last):
File "", line 1, in
File "/transformers/models/auto/auto_factory.py", line 482, in from_pretrained
config, kwargs = AutoConfig.from_pretrained(
File "/transformers/models/auto/configuration_auto.py", line 1022, in from_pretrained
config_class = CONFIG_MAPPING[config_dict["model_type"]]
File "/transformers/models/auto/configuration_auto.py", line 723, in getitem
raise KeyError(key)
KeyError: 'mistral'
可通過從源碼安裝transformers
來解決問題:
pip install git+https://github.com/huggingface/transformers
在transformers - v4.33.4之後版本,此操作可能不再需要。
💻 使用示例
基礎用法
使用mistral_common
進行編碼和解碼
from mistral_common.tokens.tokenizers.mistral import MistralTokenizer
from mistral_common.protocol.instruct.messages import UserMessage
from mistral_common.protocol.instruct.request import ChatCompletionRequest
mistral_models_path = "MISTRAL_MODELS_PATH"
tokenizer = MistralTokenizer.v1()
completion_request = ChatCompletionRequest(messages=[UserMessage(content="Explain Machine Learning to me in a nutshell.")])
tokens = tokenizer.encode_chat_completion(completion_request).tokens
使用mistral_inference
進行推理
from mistral_inference.transformer import Transformer
from mistral_inference.generate import generate
model = Transformer.from_folder(mistral_models_path)
out_tokens, _ = generate([tokens], model, max_tokens=64, temperature=0.0, eos_id=tokenizer.instruct_tokenizer.tokenizer.eos_id)
result = tokenizer.decode(out_tokens[0])
print(result)
使用Hugging Face transformers
進行推理
from transformers import AutoModelForCausalLM
model = AutoModelForCausalLM.from_pretrained("mistralai/Mistral-7B-Instruct-v0.2")
model.to("cuda")
generated_ids = model.generate(tokens, max_new_tokens=1000, do_sample=True)
# decode with mistral tokenizer
result = tokenizer.decode(generated_ids[0].tolist())
print(result)
高級用法
指令格式示例
在使用模型時,為了利用指令微調,你的提示應使用[INST]
和[/INST]
標記包圍。以下是一個示例:
from transformers import AutoModelForCausalLM, AutoTokenizer
device = "cuda" # the device to load the model onto
model = AutoModelForCausalLM.from_pretrained("mistralai/Mistral-7B-Instruct-v0.2")
tokenizer = AutoTokenizer.from_pretrained("mistralai/Mistral-7B-Instruct-v0.2")
messages = [
{"role": "user", "content": "What is your favourite condiment?"},
{"role": "assistant", "content": "Well, I'm quite partial to a good squeeze of fresh lemon juice. It adds just the right amount of zesty flavour to whatever I'm cooking up in the kitchen!"},
{"role": "user", "content": "Do you have mayonnaise recipes?"}
]
encodeds = tokenizer.apply_chat_template(messages, return_tensors="pt")
model_inputs = encodeds.to(device)
model.to(device)
generated_ids = model.generate(model_inputs, max_new_tokens=1000, do_sample=True)
decoded = tokenizer.batch_decode(generated_ids)
print(decoded[0])
📚 詳細文檔
量化方法介紹
超低比特量化與IQ - DynamicGate(1 - 2比特)
我們最新的量化方法為超低比特模型(1 - 2比特)引入了精度自適應量化,在Llama - 3 - 8B上經基準測試證明有顯著改進。該方法採用特定層策略,在保持極高內存效率的同時保留準確性。
基準測試環境
所有測試均在Llama - 3 - 8B - Instruct上進行,使用以下條件:
- 標準困惑度評估管道
- 2048令牌上下文窗口
- 所有量化使用相同的提示集
量化方法
- 動態精度分配:
- 前/後25%的層 → IQ4_XS(選定層)
- 中間50% → IQ2_XXS/IQ3_S(提高效率)
- 關鍵組件保護:
- 嵌入層/輸出層使用Q5_K
- 與標準的1 - 2比特量化相比,誤差傳播減少38%
量化性能對比(Llama - 3 - 8B)
量化方式 | 標準困惑度 | DynamicGate困惑度 | 困惑度變化 | 標準大小 | 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 |
關鍵說明:
- PPL = 困惑度(越低越好)
- Δ PPL = 從標準量化到DynamicGate量化的百分比變化
- 速度 = 推理時間(CPU avx2,2048令牌上下文)
- 大小差異反映了混合量化開銷
主要改進:
- 🔥 IQ1_M的困惑度大幅降低43.9%(從27.46降至15.41)
- 🚀 IQ2_S的困惑度降低36.9%,同時僅增加0.2GB大小
- ⚡ IQ1_S儘管是1比特量化,但準確性仍提高39.7%
權衡因素:
- 所有變體的大小均有適度增加(0.1 - 0.3GB)
- 推理速度相當(差異<5%)
使用場景
- 📌 將模型裝入GPU顯存
- ✔ 內存受限的部署
- ✔ 可容忍1 - 2比特誤差的CPU和邊緣設備
- ✔ 超低比特量化研究
選擇合適的模型格式
選擇正確的模型格式取決於你的硬件能力和內存限制。
BF16(Brain Float 16) – 若支持BF16加速則使用
- 一種16位浮點格式,專為更快的計算而設計,同時保留良好的精度。
- 提供與FP32 相似的動態範圍,但內存使用更低。
- 若你的硬件支持BF16加速(檢查設備規格),建議使用。
- 與FP32相比,是高性能推理且內存佔用減少的理想選擇。
📌 使用BF16的情況:
- ✔ 你的硬件具有原生BF16支持(如較新的GPU、TPU)。
- ✔ 你希望在節省內存的同時獲得更高的精度。
- ✔ 你計劃將模型重新量化為其他格式。
📌 避免使用BF16的情況:
- ❌ 你的硬件不支持BF16(可能會回退到FP32並運行較慢)。
- ❌ 你需要與缺乏BF16優化的舊設備兼容。
F16(Float 16) – 比BF16更廣泛支持
- 一種16位浮點格式,精度較高,但取值範圍小於BF16。
- 適用於大多數支持FP16加速的設備(包括許多GPU和一些CPU)。
- 數值精度略低於BF16,但通常足以進行推理。
📌 使用F16的情況:
- ✔ 你的硬件支持FP16但不支持BF16。
- ✔ 你需要在速度、內存使用和準確性之間取得平衡。
- ✔ 你在GPU或其他針對FP16計算優化的設備上運行。
📌 避免使用F16的情況:
- ❌ 你的設備缺乏原生FP16支持(可能運行比預期慢)。
- ❌ 你有內存限制。
量化模型(Q4_K、Q6_K、Q8等) – 用於CPU和低顯存推理
量化可在儘可能保持準確性的同時減小模型大小和內存使用。
- 低比特模型(Q4_K) → 內存使用最少,可能精度較低。
- 高比特模型(Q6_K、Q8_0) → 準確性更好,需要更多內存。
📌 使用量化模型的情況:
- ✔ 你在CPU上進行推理,需要優化的模型。
- ✔ 你的設備顯存較低,無法加載全精度模型。
- ✔ 你希望在保持合理準確性的同時減少內存佔用。
📌 避免使用量化模型的情況:
- ❌ 你需要最高的準確性(全精度模型更適合)。
- ❌ 你的硬件有足夠的顯存用於更高精度的格式(BF16/F16)。
極低比特量化(IQ3_XS、IQ3_S、IQ3_M、Q4_K、Q4_0)
這些模型針對極端內存效率進行了優化,非常適合低功耗設備或內存是關鍵限制因素的大規模部署。
- IQ3_XS:超低比特量化(3比特),具有極端的內存效率。
- 使用場景:最適合超低內存設備,即使Q4_K也太大的情況。
- 權衡:與高比特量化相比,準確性較低。
- IQ3_S:小塊大小,實現最大內存效率。
- 使用場景:最適合低內存設備,當IQ3_XS過於激進時。
- IQ3_M:中等塊大小,比IQ3_S準確性更好。
- 使用場景:適用於低內存設備,當IQ3_S限制較大時。
- Q4_K:4比特量化,具有逐塊優化以提高準確性。
- 使用場景:最適合低內存設備,當Q6_K太大時。
- Q4_0:純4比特量化,針對ARM設備進行了優化。
- 使用場景:最適合基於ARM的設備或低內存環境。
模型格式選擇總結表
模型格式 | 精度 | 內存使用 | 設備要求 | 最佳使用場景 |
---|---|---|---|---|
BF16 | 最高 | 高 | 支持BF16的GPU/CPU | 減少內存的高速推理 |
F16 | 高 | 高 | 支持FP16的設備 | BF16不可用時的GPU推理 |
Q4_K | 中低 | 低 | CPU或低顯存設備 | 內存受限環境的最佳選擇 |
Q6_K | 中 | 中等 | 內存較多的CPU | 量化模型中準確性較好的選擇 |
Q8_0 | 高 | 中等 | 有足夠顯存的CPU或GPU | 量化模型中準確性最高的選擇 |
IQ3_XS | 非常低 | 非常低 | 超低內存設備 | 極端內存效率和低準確性 |
Q4_0 | 低 | 低 | ARM或低內存設備 | llama.cpp可針對ARM設備進行優化 |
包含文件及詳情
Mistral-7B-Instruct-v0.2-bf16.gguf
- 模型權重以BF16保存。
- 若你想將模型重新量化為不同格式,請使用此文件。
- 若你的設備支持BF16加速,此文件最佳。
Mistral-7B-Instruct-v0.2-f16.gguf
- 模型權重以F16存儲。
- 若你的設備支持FP16,尤其是BF16不可用時,請使用此文件。
Mistral-7B-Instruct-v0.2-bf16-q8_0.gguf
- 輸出和嵌入層保持為BF16。
- 所有其他層量化為Q8_0。
- 若你的設備支持BF16,且你想要量化版本,請使用此文件。
Mistral-7B-Instruct-v0.2-f16-q8_0.gguf
- 輸出和嵌入層保持為F16。
- 所有其他層量化為Q8_0。
Mistral-7B-Instruct-v0.2-q4_k.gguf
- 輸出和嵌入層量化為Q8_0。
- 所有其他層量化為Q4_K。
- 適合內存有限的CPU推理。
Mistral-7B-Instruct-v0.2-q4_k_s.gguf
- 最小的Q4_K變體,以犧牲準確性為代價使用更少的內存。
- 最適合極低內存設置。
Mistral-7B-Instruct-v0.2-q6_k.gguf
- 輸出和嵌入層量化為Q8_0。
- 所有其他層量化為Q6_K。
Mistral-7B-Instruct-v0.2-q8_0.gguf
- 完全Q8量化的模型,以獲得更好的準確性。
- 需要更多內存,但提供更高的精度。
Mistral-7B-Instruct-v0.2-iq3_xs.gguf
- IQ3_XS量化,針對極端內存效率進行了優化。
- 最適合超低內存設備。
Mistral-7B-Instruct-v0.2-iq3_m.gguf
- IQ3_M量化,提供中等塊大小以提高準確性。
- 適用於低內存設備。
Mistral-7B-Instruct-v0.2-q4_0.gguf
- 純Q4_0量化,針對ARM設備進行了優化。
- 最適合低內存環境。
- 若追求更好的準確性,建議使用IQ4_NL。
模型測試相關
如果你覺得這些模型有用,請點擊“點贊”!同時,歡迎幫助測試AI網絡監控助手,進行量子就緒安全檢查: 👉 免費網絡監控
測試方法
- 點擊聊天圖標(任何頁面右下角)
- 選擇一個AI助手類型:
TurboLLM
(GPT - 4 - mini)FreeLLM
(開源)TestLLM
(僅實驗性CPU)
測試內容
正在探索小型開源模型在AI網絡監控中的極限,具體包括:
- 針對即時網絡服務的函數調用
- 模型可以多小,同時仍能處理:
- 自動化Nmap掃描
- 量子就緒檢查
- Metasploit集成
不同助手介紹
- 🟡 TestLLM – 當前實驗模型(llama.cpp在6個CPU線程上):
- ✅ 零配置設置
- ⏳ 30秒加載時間(推理慢,但無API成本)
- 🔧 尋求幫助! 如果你對邊緣設備AI感興趣,讓我們合作!
- 🟢 TurboLLM – 使用gpt - 4 - mini進行:
- 即時網絡診斷
- 自動化滲透測試(Nmap/Metasploit)
- 🔑 通過下載免費網絡監控代理獲取更多令牌
- 🔵 HugLLM – 開源模型(≈8B參數):
- 比TurboLLM多2倍令牌
- AI日誌分析
- 🌐 在Hugging Face推理API上運行
示例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"
🔧 技術細節
Mistral-7B-Instruct-v0.2是Mistral-7B-v0.2的指令微調版本。與Mistral-7B-v0.1相比,Mistral-7B-v0.2有以下變化:
- 32k上下文窗口(v0.1為8k上下文)
- Rope - theta = 1e6
- 無滑動窗口注意力
📄 許可證
本項目採用Apache - 2.0許可證。
🔍 注意事項
故障排除
如果你遇到如下錯誤:
Traceback (most recent call last):
File "", line 1, in
File "/transformers/models/auto/auto_factory.py", line 482, in from_pretrained
config, kwargs = AutoConfig.from_pretrained(
File "/transformers/models/auto/configuration_auto.py", line 1022, in from_pretrained
config_class = CONFIG_MAPPING[config_dict["model_type"]]
File "/transformers/models/auto/configuration_auto.py", line 723, in getitem
raise KeyError(key)
KeyError: 'mistral'
從源碼安裝transformers
應該可以解決問題:
pip install git+https://github.com/huggingface/transformers
在transformers - v4.33.4之後版本,此操作可能不再需要。
侷限性
Mistral 7B Instruct模型是一個快速演示,表明基礎模型可以很容易地進行微調以實現出色的性能。它沒有任何審核機制。我們期待與社區合作,使模型更好地遵守規則,以便在需要審核輸出的環境中部署。
開發團隊
Albert Jiang, Alexandre Sablayrolles, Arthur Mensch, Blanche Savary, Chris Bamford, Devendra Singh Chaplot, Diego de las Casas, Emma Bou Hanna, Florian Bressand, Gianna Lengyel, Guillaume Bour, Guillaume Lample, Lélio Renard Lavaud, Louis Ternon, Lucile Saulnier, Marie - Anne Lachaux, Pierre Stock, Teven Le Scao, Théophile Gervet, Thibaut Lavril, Thomas Wang, Timothée Lacroix, William El Sayed.



