模型简介
模型特点
模型能力
使用案例
🚀 Phi-4-mini-reasoning GGUF 模型
Phi-4-mini-reasoning 是一个基于合成数据构建的轻量级开放模型,专注于高质量、富含推理的数据,并针对更高级的数学推理能力进行了进一步微调。该模型属于 Phi-4 模型家族,支持 128K 令牌上下文长度。
✨ 主要特性
- 超低比特量化:引入了适用于超低比特模型(1 - 2 比特)的精度自适应量化方法,在 Llama-3-8B 上经基准测试证明有改进。
- 多种模型格式:提供 BF16、F16、量化模型等多种格式,可根据硬件能力和内存限制选择。
- 支持长上下文:支持 128K 令牌上下文长度,能更好地处理长文本。
- 数学推理能力强:经过微调,在数学推理任务上表现出色,适用于正式证明生成、符号计算等多种数学推理场景。
📚 详细文档
模型生成详情
此模型使用 llama.cpp 在提交版本 19e899c
时生成。
超低比特量化(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 = 困惑度(越低越好)
- 困惑度变化率 = 从标准量化到 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 VRAM
- 内存受限的部署
- 可容忍 1 - 2 比特误差的 CPU 和边缘设备
- 超低比特量化研究
选择合适的模型格式
选择正确的模型格式取决于您的硬件能力和内存限制。
BF16(Brain Float 16) - 若支持 BF16 加速则使用
- 一种 16 位浮点格式,专为更快的计算而设计,同时保留良好的精度。
- 提供与 FP32 相似的动态范围,但内存使用更低。
- 如果您的硬件支持 BF16 加速(请检查设备规格),建议使用。
- 与 FP32 相比,适用于具有减少内存占用的高性能推理。
使用场景:
- 您的硬件具有原生 BF16 支持(例如,较新的 GPU、TPU)。
- 您希望在节省内存的同时获得更高的精度。
- 您计划将模型重新量化为另一种格式。
避免使用场景:
- 您的硬件不支持 BF16(可能会回退到 FP32 并运行较慢)。
- 您需要与缺乏 BF16 优化的旧设备兼容。
F16(Float 16) - 比 BF16 更广泛支持
- 一种 16 位浮点格式,精度较高,但取值范围比 BF16 小。
- 适用于大多数支持 FP16 加速的设备(包括许多 GPU 和一些 CPU)。
- 数值精度略低于 BF16,但通常足以进行推理。
使用场景:
- 您的硬件支持 FP16 但不支持 BF16。
- 您需要在速度、内存使用和准确性之间取得平衡。
- 您在 GPU 或其他针对 FP16 计算优化的设备上运行。
避免使用场景:
- 您的设备缺乏原生 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 设备进行了优化。
- 使用场景:最适合基于 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 设备进行优化 |
包含文件及详情
Phi-4-mini-reasoning-bf16.gguf
- 模型权重以 BF16 保存。
- 如果您想将模型重新量化为不同格式,请使用此文件。
- 如果您的设备支持 BF16 加速,效果最佳。
Phi-4-mini-reasoning-f16.gguf
- 模型权重以 F16 存储。
- 如果您的设备支持 FP16,尤其是在 BF16 不可用时使用。
Phi-4-mini-reasoning-bf16-q8_0.gguf
- 输出和嵌入保持为 BF16。
- 所有其他层量化为 Q8_0。
- 如果您的设备支持 BF16 并且您想要量化版本,请使用。
Phi-4-mini-reasoning-f16-q8_0.gguf
- 输出和嵌入保持为 F16。
- 所有其他层量化为 Q8_0。
Phi-4-mini-reasoning-q4_k.gguf
- 输出和嵌入量化为 Q8_0。
- 所有其他层量化为 Q4_K。
- 适用于内存有限的 CPU 推理。
Phi-4-mini-reasoning-q4_k_s.gguf
- 最小的 Q4_K 变体,以准确性为代价使用更少的内存。
- 最适合极低内存设置。
Phi-4-mini-reasoning-q6_k.gguf
- 输出和嵌入量化为 Q8_0。
- 所有其他层量化为 Q6_K。
Phi-4-mini-reasoning-q8_0.gguf
- 完全 Q8 量化的模型,以获得更好的准确性。
- 需要更多内存,但提供更高的精度。
Phi-4-mini-reasoning-iq3_xs.gguf
- IQ3_XS 量化,针对极端内存效率进行了优化。
- 最适合超低内存设备。
Phi-4-mini-reasoning-iq3_m.gguf
- IQ3_M 量化,提供中等块大小以获得更好的准确性。
- 适用于低内存设备。
Phi-4-mini-reasoning-q4_0.gguf
- 纯 Q4_0 量化,针对 ARM 设备进行了优化。
- 最适合低内存环境。
- 为了更好的准确性,建议使用 IQ4_NL。
模型测试
如果您发现这些模型有用,请点击“点赞”!同时,帮助我测试我的支持量子安全检查的 AI 网络监控助手: 免费网络监控器
测试方法
选择一个 AI 助手类型:
TurboLLM
(GPT-4o-mini)HugLLM
(Hugginface 开源)TestLLM
(仅实验性 CPU)
测试内容
我正在突破用于 AI 网络监控的小型开源模型的极限,具体包括:
- 针对实时网络服务进行函数调用
- 模型可以多小,同时仍能处理:
- 自动 Nmap 扫描
- 量子就绪检查
- 网络监控任务
TestLLM - 当前实验模型(llama.cpp 在 2 个 CPU 线程上)
- 零配置设置
- 加载时间约 30 秒(推理速度慢,但无 API 成本)
- 寻求帮助! 如果您对边缘设备 AI 感兴趣,让我们一起合作!
其他助手
- TurboLLM - 使用 gpt-4o-mini 进行:
- 创建自定义 cmd 处理器以在免费网络监控代理上运行 .net 代码
- 实时网络诊断和监控
- 安全审计
- 渗透测试 (Nmap/Metasploit)
- 通过登录或下载我们集成了 AI 助手的免费网络监控代理获取更多令牌
- HugLLM - 最新的开源模型:
- 在 Hugging Face 推理 API 上运行
示例命令
"Give me info on my websites SSL certificate"
"Check if my server is using quantum safe encyption for communication"
"Run a comprehensive security audit on my server"
"Create a cmd processor to .. (what ever you want)"
注意,您需要安装免费网络监控代理才能运行 .net 代码。这是一个非常灵活和强大的功能,请谨慎使用!
预期用途
主要用例
Phi-4-mini-reasoning 专为在内存/计算受限环境和延迟受限场景下解决多步骤、逻辑密集的数学问题而设计。一些用例包括正式证明生成、符号计算、高级文字问题以及广泛的数学推理场景。这些模型在跨步骤保持上下文、应用结构化逻辑以及在需要深入分析思维的领域提供准确、可靠的解决方案方面表现出色。
用例考虑
此模型仅针对数学推理进行了设计和测试,并非专门为所有下游用途设计或评估。开发人员在选择用例时,应考虑语言模型的常见限制以及不同语言之间的性能差异,并在特定下游用例中使用之前评估和缓解准确性、安全性和公平性问题,特别是在高风险场景中。开发人员应了解并遵守与其用例相关的适用法律或法规(包括但不限于隐私、贸易合规法律等)。
发布说明
Phi-4-mini-reasoning 的此版本解决了用户反馈和市场对紧凑型推理模型的需求。它是一个基于变压器的紧凑型语言模型,针对数学推理进行了优化,旨在在计算或延迟受限的环境中提供高质量的逐步问题解决能力。该模型使用来自更强大模型(更大、更智能、更准确且更擅长遵循指令)的合成数学数据进行微调,从而提高了推理性能。Phi-4-mini-reasoning 在推理能力和效率之间取得了平衡,使其可能适用于教育应用、嵌入式辅导以及在边缘或移动系统上的轻量级部署。如果发现 Phi-4-mini-reasoning 存在关键问题,请通过 MSRC 研究人员门户或 secure@microsoft.com 及时报告。
模型质量
为了了解其能力,将 38 亿参数的 Phi-4-mini-reasoning 模型与一组模型在各种推理基准上进行了比较。模型质量的高级概述如下:
模型 | AIME | MATH-500 | GPQA Diamond |
---|---|---|---|
o1-mini* | 63.6 | 90.0 | 60.0 |
DeepSeek-R1-Distill-Qwen-7B | 53.3 | 91.4 | 49.5 |
DeepSeek-R1-Distill-Llama-8B | 43.3 | 86.9 | 47.3 |
Bespoke-Stratos-7B* | 20.0 | 82.0 | 37.8 |
OpenThinker-7B* | 31.3 | 83.0 | 42.4 |
Llama-3.2-3B-Instruct | 6.7 | 44.4 | 25.3 |
Phi-4-Mini (基础模型,38 亿) | 10.0 | 71.8 | 36.9 |
Phi-4-mini-reasoning (38 亿) | 57.5 | 94.6 | 52.0 |
总体而言,38 亿参数的模型在多语言理解和推理能力方面达到了与更大模型相似的水平。然而,它仍然受到其大小的根本限制,对于某些任务,该模型没有足够的容量来存储太多事实知识,因此用户可能会遇到事实错误。但是,通过为 Phi-4 集成搜索引擎,特别是在 RAG 设置下使用模型时,可能可以解决这种弱点。
💻 使用示例
基础用法
分词器
Phi-4-mini-reasoning 支持最多 200064
个令牌的词汇表大小。分词器文件 已经提供了可用于下游微调的占位符令牌,但也可以扩展到模型的词汇表大小。
输入格式
鉴于训练数据的性质,Phi-4-mini-instruct 模型最适合使用特定格式的提示。以下是两种主要格式:
聊天格式
此格式用于一般对话和指令:
<|system|>Your name is Phi, an AI math expert developed by Microsoft.<|end|><|user|>How to solve 3*x^2+4*x+5=1?<|end|><|assistant|>
使用 transformers 进行推理
Phi-4-mini-reasoning 已集成到 transformers
的 4.51.3
版本中。可以使用 pip list | grep transformers
验证当前的 transformers
版本。Python 3.8 和 3.10 效果最佳。所需包列表如下:
flash_attn==2.7.4.post1
torch==2.5.1
transformers==4.51.3
accelerate==1.3.0
Phi-4-mini-reasoning 也可在 Azure AI Studio 中使用。
示例代码
在获得 Phi-4-mini-instruct 模型检查点后,用户可以使用以下示例代码进行推理:
import torch
from transformers import AutoModelForCausalLM, AutoTokenizer, pipeline
torch.random.manual_seed(0)
model_id = "microsoft/Phi-4-mini-reasoning"
model = AutoModelForCausalLM.from_pretrained(
model_id,
device_map="cuda",
torch_dtype="auto",
trust_remote_code=True,
)
tokenizer = AutoTokenizer.from_pretrained(model_id)
messages = [{
"role": "user",
"content": "How to solve 3*x^2+4*x+5=1?"
}]
inputs = tokenizer.apply_chat_template(
messages,
add_generation_prompt=True,
return_dict=True,
return_tensors="pt",
)
outputs = model.generate(
**inputs.to(model.device),
max_new_tokens=32768,
temperature=0.8,
top_p=0.95,
do_sample=True,
)
outputs = tokenizer.batch_decode(outputs[:, inputs["input_ids"].shape[-1]:])
print(outputs[0])
🔧 技术细节
模型架构
- 架构:Phi-4-mini-reasoning 与 Phi-4-Mini 具有相同的架构,有 38 亿参数,是一个密集的仅解码器 Transformer 模型。与 Phi-3.5-Mini 相比,Phi-4-Mini 的主要变化是 200K 词汇表、分组查询注意力以及共享输入和输出嵌入。
- 输入:文本。最适合使用聊天格式的提示。
- 上下文长度:128K 令牌
- GPU:128 个 H100 - 80G
- 训练时间:2 天
- 训练数据:1500 亿令牌
- 输出:生成的文本
- 训练时间:2024 年 2 月
- 状态:这是一个基于离线数据集训练的静态模型,公开可用数据的截止日期为 2025 年 2 月。
- 支持语言:英语
- 发布日期:2025 年 4 月
训练数据集
文档未详细提及训练数据集的具体信息。
📄 许可证
本项目采用 MIT 许可证,详情请见 许可证链接。



