【免费下载链接】Phi-3.5-mini-instruct_rai_1.8.0_hybrid
Phi-3.5-mini-instruct_rai_1.8.0_hybrid 是 AMD 使用 Quark 量化工具对 Phi-3.5-mini-instruct 小语言模型进行量化优化的成果,采用AWQ 量化 + UINT4 权重 + BFP16 激活的混合量化策略,目标是在 AMD Ryzen AI 设备上实现高效的本地大模型推理。本文带你读懂这套量化方案的每个细节。
🚀 为什么这个模型值得关注
在笔记本电脑上本地运行大模型,最大的障碍是显存/内存占用。以 16 位精度存储,一个约 38 亿参数(3.8B)的模型需要约 7.6GB 内存;而将其量化到 4 位后,权重体积可以压缩到2GB 量级,这正是本项目的核心目标。
它的几个关键定位:
| 特性 | 说明 |
|---|---|
| 源模型 | microsoft/Phi-3.5-mini-instruct(约 3.8B 参数) |
| 量化工具 | AMD Quark Quantization tool |
| 量化策略 | AWQ / Group 128 / Asymmetric / BFP16 activations / UINT4 Weights |
| 部署平台 | AMD Ryzen AI(NPU 混合推理) |
| 上下文长度 | 131072(128K) |
| 许可证 | MIT(AMD 修改版,版权 2025) |
完整介绍见 README.md,模型结构参数在 config.json 中定义,Phi-3 的建模代码见 modeling_phi3.py 与 configuration_phi3.py。
🔍 AWQ 量化策略:保护"重要权重"的聪明做法
AWQ 是什么
AWQ(Activation-aware Weight Quantization,激活感知权重量化)是一种只量化权重、不量化输入激活的方法。它的核心思想是:权重矩阵中有一小部分是"显著权重"(salient weights),它们对应的激活值较大,对输出影响最大,如果直接压缩会造成明显精度损失。
AWQ 的做法是为每个权重通道学习一个保护性的缩放因子,在量化前把"重要通道"的数值放大,使其在 4 位精度下依然能保留关键信息;反量化时再还原。这样做的好处是:
- ✅ 无需存储低精度激活,推理时计算简单
- ✅ 只需校准集统计激活分布,成本远低于全量化方案
- ✅ 精度损失小,适合小模型部署到端侧设备
AWQ 在这个模型里量化了哪些层
打开 config.json 的quantization_config,可以看到quant_method为quark(AMD Quark 工具链),其中algo_config明确使用了awq算法,并对每层 Transformer 的 4 个关键投影模块做了校准:
| 被校准模块 | 前驱算子(prev_op) | 作用 |
|---|---|---|
self_attn.qkv_proj | input_layernorm | 注意力 QKV 投影 |
self_attn.o_proj | self_attn.qkv_proj | 注意力输出投影 |
mlp.gate_up_proj | post_attention_layernorm | MLP 门控/上投影 |
mlp.down_proj | mlp.gate_up_proj | MLP 下投影 |
也就是说,注意力层和 MLP 层中承担主要计算量的 4 个线性层全部被 AWQ 算法覆盖,这正是决定模型精度表现的关键位置。
🔢 UINT4 权重:关键参数逐一拆解
config.json中global_quant_config.weight字段(config.json#L79-L96)完整描述了权重量化方式:
| 参数 | 取值 | 含义 |
|---|---|---|
dtype | uint4 | 权重以无符号 4 位整数存储,单权重仅 0.5 字节 |
group_size | 128 | 每 128 个权重共享一组量化参数(Group 128) |
qscheme | per_group | 按组量化,而非全层或逐通道 |
symmetric | false | 非对称量化,能更好地拟合实际权重分布 |
observer_cls | PerGroupMinMaxObserver | 按组统计最小/最大值来确定量化范围 |
round_method | half_even | 银行家舍入,减少系统性舍入偏差 |
scale_type | float | 缩放因子以浮点格式保存 |
is_dynamic | false | 静态量化,校准阶段确定参数 |
几个值得新手理解的点:
- Group 128 的平衡术:组越小,量化范围越贴合局部数据、精度越高,但每组缩放因子的存储开销也越大。128 是精度与开销之间被广泛验证的甜点位。
- 非对称量化(Asymmetric):权重分布通常并不以 0 为中心,非对称量化用
min/max两点确定范围,比强制以 0 为对称中心的方案浪费更少精度。 pack_method: reorder(config.json#L67-L73):导出权重时采用重排打包方式,方便推理引擎按硬件友好的布局读取 4 位权重。
粗略估算:3.8B 参数 × 0.5 字节 ≈1.9GB权重(加上以 16 位存储的嵌入层等未量化部分,总量在 2GB 出头),相比 16 位版本节省约 3/4 内存。
🧠 BFP16 激活:精度与性能的平衡点
本模型的另一半策略是BFP16 activations(BFP16 激活):
- 权重走 4 位(UINT4),计算走 16 位——矩阵乘法在反量化后的 BFP16 精度下完成,避免激活值也降到低位带来的级联精度损失。
- BFP16 与 BF16 思路相近:保留 8 位指数、动态范围大,天然适合浮点数值分布宽泛的激活值,不易溢出。
- 由于激活不量化,KV Cache 也未启用量化(
kv_cache_quant_config为空,见 config.json#L99),长上下文场景下的缓存数值依然可靠。
这种"低比特存权重、高比特做计算"的组合,是当前端侧 LLM 部署的主流做法:用存储带宽换精度,而不是两头都压。
⚡ Hybrid 混合推理:在 Ryzen AI 上如何运行
模型名中的hybrid指的是混合推理模式:由 ONNX Runtime GenAI 引擎调度,把模型计算拆到 Ryzen AI 的 NPU 与 CPU 上协同完成。
推理配置文件解读
genai_config.json 定义了推理引擎的全部关键信息:
| 配置项 | 取值 | 说明 |
|---|---|---|
model.type | phi3 | 模型架构类型 |
context_length | 131072 | 支持 128K 上下文 |
hidden_size | 3072 | 隐藏层维度 |
num_hidden_layers | 32 | Transformer 层数 |
num_attention_heads | 32 | 注意力头数 |
provider_options.RyzenAI.hybrid_opt_max_seq_length | 4096 | 混合模式下的最大优化序列长度 |
provider_options.RyzenAI.external_data_file | model.pb.bin | NPU 侧外部权重数据文件 |
模型本体以 ONNX 格式导出,仓库中的核心权重文件如下:
| 文件 | 作用 |
|---|---|
| model.onnx | 主计算图定义 |
| model.onnx.data | ONNX 外部权重数据 |
| model.pb.bin | Hybrid 模式下 NPU 侧加载的外部数据 |
| model.bin | 附加模型数据 |
不同 Ryzen AI 版本的提示词长度限制
rai_config.json 按驱动版本规定了最大提示词长度:
- Ryzen AI1.3.x ~ 1.5.x:
max_prompt_length = 2048 - Ryzen AI1.6.0 ~ 1.7.1:
max_prompt_length = 4096
这意味着在较新驱动上,你可以一次输入更长的上下文;若提示词超过限制,需要截断或分段输入。
🛠 上手前你需要知道的细节
- 分词器:词表大小 32064,分词文件为 tokenizer.json、tokenizer.model,新增特殊 token 见 added_tokens.json。
- 对话模板:chat_template.jinja 使用
<|system|>、<|user|>、<|assistant|>与<|end|>标记组织多轮对话。 - 生成配置:generation_config.json 设置了 3 个
eos_token_id(32007 / 32001 / 32000),采样开启(do_sample: true);默认搜索参数(temperature 1.0、top_k 50、top_p 1.0)在 genai_config.json#L45-L60。 - 微调示例:如果想基于原模型做 SFT 微调,仓库提供了完整示例 sample_finetune.py,它演示了如何用 SFTTrainer + LoPEFT(r=16)+ DeepSpeed ZeRO-3 在 V100 级别 GPU 上以 bf16 微调 Phi-3 系列模型。
📝 总结:一句话看懂这套量化方案
UINT4 存权重(AWQ 保护重要通道 + Group 128 非对称分组量化),BFP16 做计算(激活与 KV Cache 保持 16 位),Hybrid 引擎调度 NPU/CPU 混合推理。
这套"权重 4 位、激活 16 位、分组 128、非对称校准"的组合,让 Phi-3.5-mini 在 Ryzen AI 笔记本上以约 2GB 的内存占用完成本地推理,同时把精度损失控制在可接受范围。想深入某个参数(如group_size或 AWQ 缩放层)的含义,直接查阅 config.json 中quantization_config对应的字段即可。
【免费下载链接】Phi-3.5-mini-instruct_rai_1.8.0_hybrid
相关推荐
AWQ量化深度拆解:Qwen3-1.7B_rai_1.8.0_hybrid的UINT4组量化如何兼顾精度与速度
AWQ量化深度拆解:Qwen3 1.7B_rai_1.8.0_hybrid的UINT4组量化如何兼顾精度与速度 本文深度拆解 Qwen3 1.7B_rai_1.
Duix-Mobile:可本地部署的移动端实时交互数字人SDK
Duix Mobile:可本地部署的移动端实时交互数字人SDK 政务大厅门口的迎宾屏,现场网络常常不稳定,云端方案驱动的虚拟形象要么口型卡顿,要么直接失联。Du
8B大模型为何能流畅跑在NPU上?Qwen3-8B_rai_1.8.0_hybrid的AWQ+UINT4量化策略完全指南
8B大模型为何能流畅跑在NPU上?Qwen3 8B_rai_1.8.0_hybrid的AWQ+UINT4量化策略完全指南 Qwen3 8B_rai_1.8.0_
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考