模型概述
模型特點
模型能力
使用案例
🚀 Mistral-7B-Instruct-v0.1 GGUF模型
本項目提供了Mistral-7B-Instruct-v0.1的GGUF模型,採用了超低比特量化技術,在保證模型精度的同時,極大地提高了內存使用效率。這些模型適用於多種硬件環境,可根據不同的需求進行選擇。
🚀 快速開始
如果你想使用這些模型,可以根據自己的硬件能力和內存限制選擇合適的模型格式。同時,項目還提供了模型的使用示例和測試方法,幫助你快速上手。
✨ 主要特性
- 超低比特量化:引入了精度自適應量化方法,用於超低比特模型(1 - 2比特),在Llama - 3 - 8B上經過基準測試驗證,能在保持極端內存效率的同時保留精度。
- 多種模型格式:提供了BF16、F16、量化模型(Q4_K、Q6_K、Q8等)以及超低比特量化模型(IQ3_XS、IQ3_S、IQ3_M、Q4_K、Q4_0)等多種格式,滿足不同硬件和應用場景的需求。
- 廣泛的應用場景:適用於GPU、CPU和邊緣設備,可用於內存受限的部署、超低比特量化研究等。
📦 安裝指南
若在使用模型時遇到如下錯誤:
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.1")
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)
📚 詳細文檔
超低比特量化方法
基準測試背景
所有測試均在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 |
關鍵改進:
- 🔥 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 VRAM
- ✔ 內存受限的部署
- ✔ 可容忍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和低VRAM推理
量化可在儘可能保持準確性的同時減小模型大小和內存使用。
- 低比特模型(Q4_K) → 最適合最小的內存使用,可能精度較低。
- 高比特模型(Q6_K、Q8_0) → 更好的準確性,需要更多內存。
📌 使用量化模型的情況:
- ✔ 你在CPU上運行推理,需要優化的模型。
- ✔ 你的設備VRAM較低,無法加載全精度模型。
- ✔ 你希望在保持合理準確性的同時減少內存佔用。
📌 避免使用量化模型的情況:
- ❌ 你需要最高的準確性(全精度模型更適合)。
- ❌ 你的硬件有足夠的VRAM用於更高精度的格式(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設備進行了優化。
- 使用場景:最適合低內存環境。
模型格式選擇總結表
模型格式 | 精度 | 內存使用 | 設備要求 | 最佳用例 |
---|---|---|---|---|
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設備進行優化 |
包含的文件及詳情
Mistral-7B-Instruct-v0.1-bf16.gguf
:模型權重保存為BF16。如果你想將模型重新量化為不同的格式,請使用此文件。若你的設備支持BF16加速,效果最佳。Mistral-7B-Instruct-v0.1-f16.gguf
:模型權重存儲為F16。若你的設備支持FP16,尤其是當BF16不可用時,使用此文件。Mistral-7B-Instruct-v0.1-bf16-q8_0.gguf
:輸出和嵌入保持為BF16,所有其他層量化為Q8_0。若你的設備支持BF16且你想要量化版本,使用此文件。Mistral-7B-Instruct-v0.1-f16-q8_0.gguf
:輸出和嵌入保持為F16,所有其他層量化為Q8_0。Mistral-7B-Instruct-v0.1-q4_k.gguf
:輸出和嵌入量化為Q8_0,所有其他層量化為Q4_K。適用於CPU推理,內存有限。Mistral-7B-Instruct-v0.1-q4_k_s.gguf
:最小的Q4_K變體,以犧牲準確性為代價使用更少的內存。最適合極低內存設置。Mistral-7B-Instruct-v0.1-q6_k.gguf
:輸出和嵌入量化為Q8_0,所有其他層量化為Q6_K。Mistral-7B-Instruct-v0.1-q8_0.gguf
:完全Q8量化的模型,以獲得更好的準確性。需要更多內存,但提供更高的精度。Mistral-7B-Instruct-v0.1-iq3_xs.gguf
:IQ3_XS量化,針對極端內存效率進行了優化。最適合超低內存設備。Mistral-7B-Instruct-v0.1-iq3_m.gguf
:IQ3_M量化,提供中等塊大小,以提高準確性。適用於低內存設備。Mistral-7B-Instruct-v0.1-q4_0.gguf
:純Q4_0量化,針對ARM設備進行了優化。最適合低內存環境。
測試模型
如果你發現這些模型有用,請點擊“點贊”!同時,幫助測試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"
指令格式
為了利用指令微調,你的提示應該用[INST]
和[/INST]
標記包圍。第一個指令應該以句子開始ID開頭,後續指令則不需要。助手生成將由句子結束令牌ID結束。
例如:
text = "<s>[INST] What is your favourite condiment? [/INST]"
"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!</s> "
"[INST] Do you have mayonnaise recipes? [/INST]"
這種格式可以通過apply_chat_template()
方法作為聊天模板使用:
from transformers import AutoModelForCausalLM, AutoTokenizer
device = "cuda" # the device to load the model onto
model = AutoModelForCausalLM.from_pretrained("mistralai/Mistral-7B-Instruct-v0.1")
tokenizer = AutoTokenizer.from_pretrained("mistralai/Mistral-7B-Instruct-v0.1")
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])
🔧 技術細節
模型架構
此指令模型基於Mistral - 7B - v0.1,這是一個具有以下架構選擇的Transformer模型:
- 分組查詢注意力
- 滑動窗口注意力
- 字節回退BPE分詞器
📄 許可證
本項目採用Apache - 2.0許可證。
⚠️ 重要提示
Mistral 7B指令模型是一個快速演示,表明基礎模型可以很容易地進行微調以實現引人注目的性能。它沒有任何審核機制。期待與社區合作,使模型能夠更好地遵守規則,以便在需要審核輸出的環境中部署。
團隊成員
Albert Jiang, Alexandre Sablayrolles, Arthur Mensch, Chris Bamford, Devendra Singh Chaplot, Diego de las Casas, Florian Bressand, Gianna Lengyel, Guillaume Lample, Lélio Renard Lavaud, Lucile Saulnier, Marie - Anne Lachaux, Pierre Stock, Teven Le Scao, Thibaut Lavril, Thomas Wang, Timothée Lacroix, William El Sayed.



