模型简介
模型特点
模型能力
使用案例
🚀 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.



