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



