【免费下载链接】Phi-4-mini-instruct_rai_1.8.0_npu_16K项目地址https://ai.gitcode.com/hf_mirrors/amd/Phi-4-mini-instruct_rai_1.8.0_npu_16K点击查看免费下载/输出文章抱歉刚才输出有误以下是正式文章输出文章Phi-4-mini-instruct_rai_1.8.0_npu_16K 量化原理揭秘AWQ、Group 128 与 UINT4 权重如何炼成Phi-4-mini-instruct_rai_1.8.0_npu_16K 是 AMD 基于 Phi-4-mini-instruct 官方模型面向AMD Ryzen AI NPU16K 上下文深度优化的量化部署版模型。它用AWQ 算法 Group 128 分组 UINT4 非对称权重这套组合拳把 38 亿参数的推理权重压缩到约 1/4 体积让大模型跑得动、跑得快。本文带你逐层拆解它的量化原理。一句话看懂这个模型是什么项目说明源模型Microsoft Phi-4-mini-instruct3.8B 参数BFP16 精度量化工具链Quark Quantization → OGA Model Builder → NPU 后处理Token Fusion 16K量化策略AWQ / Group 128 / Asymmetric / BFP16 activations / UINT4 Weights部署目标AMD Ryzen AI 处理器内置 NPU支持 16K token 生成长度官方简介可直接查看README.md。整个流程可以概括为先量化Quark→ 再导出 ONNXOGA→ 最后做 NPU 专用后处理。什么是量化为什么 NPU 模型要量化量化Quantization本质是用更少的比特数表示数字BFP16每个权重占 16 bit精度高但体积大UINT4每个权重只用 4 bit0~15 的无符号整数体积直接缩到原来的约 1/4。Phi-4-mini 的 3.8B 参数若全部按 BFP16 存储需要约 7.6 GB 内存量化成 UINT4 后权重本体降到2~3 GB 量级并且 NPU 的矩阵运算单元对低比特权重有硬件加速推理延迟和功耗同步下降——这正是端侧大模型能落地的关键。但压缩必然带来精度损失所以必须配合聪明的算法和合理的分组粒度这就是下面两个主角出场的原因。AWQ让关键权重少受损失AWQActivation-aware Weight Quantization激活感知权重量化的核心洞察是并非所有权重同等重要——少量显著权重对输出影响巨大权重的重要性可以从激活值的大小中统计出来激活值大的通道其对应权重也更敏感因此 AWQ 会先根据校准数据calibration data统计激活分布对敏感权重施加通道级缩放再执行量化从而在几乎不掉点的前提下完成 4 bit 压缩。在本仓库的 config.json 中可以看到这套算法的痕迹desc_act: true启用与激活感知的权重重排/排序配合pack_method: reorder让敏感权重在存储布局中集中、对齐damp_percent: 0.01来自 GPTQ 思路的阻尼项AWQ 常与 GPTQ 结合使用用于量化误差补偿防止误差逐层累积inside_layer_modules明确列出参与量化的四个核心投影层模块作用self_attn.qkv_proj注意力 Q/K/V 线性投影self_attn.o_proj注意力输出投影mlp.gate_up_projFFN 门控上投影对应 Phi3MLP 中的门控实现mlp.down_projFFN 下投影也就是说每一层 Transformer 中 4 个最大的矩阵全部走 AWQ 量化而模型结构本身32 层、24 个注意力头、8 个 KV 头、hidden_size3072可以在 config.json 中核对。Group 128 UINT4权重压缩的分组账本如果整张矩阵共用一套量化参数数值范围稍微偏一点全矩阵精度就崩了。分组量化Per-Group把这个问题化解了Group 128 怎么算每128 个连续权重为一组独立计算一组 scale缩放因子和 zero-point零点量化: q round( w / scale zero_point ) # 映射到 0~15 反量化: w ( q - zero_point ) * scale # 推理时近似还原group_size 128组内 128 个权重共享 1 套 scale zero-point开销极小分组越细精度越好、元数据越多128 是精度与开销的经典平衡点Llama-2、AWQ 原版默认值。Asymmetric 非对称量化Phi-4 的权重分布往往不关于 0 对称例如某组权重集中在 0.02~0.08。非对称量化通过 zero-point 把整个数值区间平移后再映射到 0~15比对称量化更能贴住真实分布。这一点在 config.json 中明确写着dtype: uint4权重用 4 bit无符号整数存储group_size: 128分组粒度symmetric: false非对称即带 zero-pointobserver_cls: PerGroupMinMaxObserver每组独立统计最小/最大值来定 scaleround_method: half_even银行家舍入遇 0.5 取偶数比四舍五入的统计偏差更小。对比记忆权重压到 UINT4激活值保留 BFP16dtype: bfloat16。激活值动态范围大强行压 4 bit 损失严重所以权重激进压缩 激活保持精度是 W4A16 方案的标准打法。量化流水线从 PyTorch 到 NPU 的三步走整个模型文件集就是这条流水线的产物Phi-4-mini-instruct (BFP16) │ ① Quark QuantizationAWQ GPTQ生成 UINT4 权重 ▼ 量化后 PyTorch 权重 │ ② OGA Model Builder导出 ONNX GenAI 格式 ▼ model.onnx 计算图 分离权重数据 │ ③ NPU 后处理Token Fusion16K 上下文KV Cache 绑定 ▼ Ryzen AI NPU 可直接加载的部署包① 量化config.jsonquant_method: quark指明使用了 AMD 的 Quark 量化框架quant_mode: eager_mode表示在加载权重时即时完成反量化计算而不是延迟到前向。algo_config中name: gptqdesc_actdamp_percent的组合正是AWQ 思路叠加 GPTQ 误差补偿的典型配置。② 导出model.onnx 与 model.onnx.dataONNX 采用图与数据分离model.onnx只存计算图数十亿参数的 UINT4 权重存放在外部数据文件model.onnx.data中加载更灵活。genai_config.json 则声明了输入输出接口输入input_ids、attention_mask、position_ids及past_key_valuesKV Cache输出logits与更新后的 KV Cachecontext_length: 131072对应模型的长上下文能力LongRoPE 扩展见 config.json 的rope_scaling。③ NPU 部署genai_config.json 里的关键参数参数值含义hybrid_opt_token_backendnpu逐 token 解码阶段卸载到 NPU 执行hybrid_opt_max_seq_length8192单次 NPU 会话支持的最大序列长度fusion_opt_io_bind_kv_cache1将 KV Cache 与算子 IO 绑定减少数据搬运hybrid_opt_npu_pdi_nameDPU_9指定 NPU 计算分区external_data_filemodel.pb.binNPU 侧额外权重/常量文件同时search段将max_length设为16384这就是文件名中16K的由来——NPU 上可稳定生成 16K token。仓库里大量dd_metastate_...attention_mask_padded_1024_ / _2048_ / ... / _16384_前缀文件是 NPU 运行时为不同注意力掩码填充尺寸1024 到 16384步长 128预生成的元数据缓存保证任意长度输入都能命中已编译的加速路径——这是16K 上下文能够高效工作的幕后功臣。上手体验如何获取并运行这个模型一键安装步骤git clone https://gitcode.com/hf_mirrors/amd/Phi-4-mini-instruct_rai_1.8.0_npu_16K.git需要 AMD Ryzen AI 处理器如 Ryzen AI 300 系列Strix Point 平台与 Ryzen AI Software 1.7完整接入流程可参考官方 README 指向的 Ryzen AI 文档。目录结构速览文件作用model.onnx / model.onnx.dataONNX 计算图 量化权重数据model.pb.binNPU 外部数据文件config.json模型结构 量化配置本文主角genai_config.jsonONNX GenAI 运行时与 NPU 参数rai_config.json各版本 Ryzen AI 软件的 prompt 长度上限tokenizer.json / vocab.json分词器vocab_size200064modeling_phi3.py / configuration_phi3.pyPyTorch 参考实现可用于对拍精度常见问题 FAQQ1为什么选 UINT4 而不是 INT84 bit 是端侧存储/带宽的甜点相比 INT8 再省一半体积而 AWQ 分组量化恰好能守住 4 bit 的精度下限。NPU 硬件对 4 bit 权重也有专门的计算路径。Q2Group 128 中的 128 是拍脑袋定的吗不是。128 与 hidden_size3072 128 × 24天然整除且是 AWQ/GPTQ 生态的成熟默认值更小的组如 32元数据开销成倍增长收益边际递减。Q3BFP16 activations 是什么BFP16bfloat16 系浮点用于推理时的激活张量。相比 FP16 它有更大的指数范围不容易上溢权重 4 bit 激活 BFP16 的组合是 AMD 在 Ryzen AI 上验证过的 W4A16 方案。Q4这个模型和原版 Phi-4-mini-instruct 效果一样吗权重经过 AWQ GPTQ 双重保护后精度损失极小属于几乎无损级别README 注明基准分数暂未公布官方建议以实际业务效果验证为准。小结AWQ负责保精度依据激活分布保护敏感权重配合 GPTQ 阻尼项补偿误差Group 128负责控误差每组独立 scale zero-point非对称映射贴合真实分布UINT4负责省空间4 bit 无符号权重 半偶舍入体积缩至约 1/4NPU 后处理负责跑得快Token Fusion、KV Cache 绑定、16K 上下文全部固化在genai_config.json与dd_metastate_*元数据里。理解了这套配方你也就看懂了当前端侧 LLM 部署的主流技术路线——它几乎可以平移到任何 Ryzen AI 上的量化模型。赞分享【免费下载链接】Phi-4-mini-instruct_rai_1.8.0_npu_16K项目地址https://ai.gitcode.com/hf_mirrors/amd/Phi-4-mini-instruct_rai_1.8.0_npu_16K点击查看免费下载相关推荐AWQ量化深度解析Mistral-7B-Instruct-v0.3_rai_1.8.0_npu_16K的UINT4权重与Group 128策略如何实现极致压缩AWQ量化深度解析Mistral 7B Instruct v0.3_rai_1.8.0_npu_16K的UINT4权重与Group 128策略如何实现极致压缩AWQ量化技术深度解析Llama-3.1-8B_rai_1.8.0_hybrid如何用UINT4权重Group 128把8B参数压进8GBAWQ量化技术深度解析Llama 3.1 8B_rai_1.8.0_hybrid如何用UINT4权重Group 128把8B参数压进8GB 本文带你深入拆解3B模型如何塞进NPULlama-3.2-3B_rai_1.8.0_hybrid的AWQUINT4 Group 128量化策略深度剖析3B模型如何塞进NPULlama 3.2 3B_rai_1.8.0_hybrid的AWQUINT4 Group 128量化策略深度剖析 Llama 3.2创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考