【免费下载链接】Mistral-7B-Instruct-v0.2_rai_1.8.0_npu_4K
本文带你拆解 Mistral-7B-Instruct-v0.2_rai_1.8.0_npu_4K 的完整转换链路:从 PyTorch 基座模型出发,经 Quark AWQ 4-bit 量化,用 OGA Model Builder 导出 ONNX GenAI 推理模型,再经 NPU Full Fusion 4K 后处理,最终跑在 AMD Ryzen AI 的 NPU 上,让 7B 级大模型在本地设备实现快速、低功耗推理。
为什么要把 PyTorch 模型转成 ONNX GenAI?
很多新手的第一反应是:PyTorch 不是能直接跑推理吗?当然可以,但它更偏向训练场景。要做本地端侧部署,我们还需要:
- 🚀更高效的推理运行时:ONNX Runtime 对算子做了深度优化,并支持多种硬件后端;
- 📦LLM 专用格式:ONNX GenAI(简称 oga)专门针对大模型推理优化,内置 KV Cache 管理、Prefill/Decode 分离、采样策略等;
- 🎯NPU 卸载:本模型通过 Ryzen AI SDK 的混合调度,把解码阶段的 Token 生成卸载到 NPU,显著降低 CPU 功耗。
整条转换流水线可以概括为三步:
PyTorch (Mistral-7B-Instruct-v0.2) │ ① Quark AWQ 4-bit 量化 ▼ 量化后的 HF 模型 │ ② OGA Model Builder 导出 ▼ ONNX GenAI 模型(model.onnx + genai_config.json) │ ③ NPU 后处理(Full Fusion 4K) ▼ Ryzen AI NPU 可直接加载的部署包项目目录结构一览:每个文件都是干什么的?
仓库不大,但每个文件各司其职:
| 文件 | 作用 |
|---|---|
| model.onnx | ONNX 模型结构(图描述) |
| model.onnx.data | 外置权重数据(与图分离,便于加载与缓存) |
| genai_config.json | OGA 运行时配置:模型结构、KV Cache、采样参数 |
| rai_config.json | Ryzen AI NPU 混合调度的提示词长度上限配置 |
| config.json | Hugging Face 模型配置,内含量化策略详情 |
dd_metastate_* | NPU 全融合图状态文件,分 Prefill / Token 两组 |
| cache/ | NPU 图算子级元数据(op_list 等) |
| tokenizer.json / chat_template.jinja | 分词器与对话模板([INST]风格) |
第 1 步:Quark AWQ 4-bit 量化 —— 体积先瘦下来
7B 参数在 bf16 下权重大约 14GB,直接部署对内存压力大。本项目使用 config.json 中的quantization_config揭示了量化方案:
- 算法:AWQ(Activation-aware Weight Quantization),感知激活分布来保护重要权重;
- 位宽:权重
uint4,组大小group_size: 128,非对称量化; - 激活:BFP16,观测器为
PerGroupMinMaxObserver; - 覆盖范围:
q/k/v_proj、o_proj、gate/up_proj、down_proj全部线性层。
量化后权重压缩到约 4GB 量级,这正是它能在端侧流畅运行的第一块基石。
第 2 步:OGA Model Builder 导出 ONNX GenAI 模型
OGA Model Builder(oga命令行工具)负责把量化后的 PyTorch 模型转换成 ONNX GenAI 格式。转换结果的关键信息都写在 genai_config.json 里:
type: mistral,num_hidden_layers: 32,hidden_size: 4096;- 注意力采用GQA:32 个 Query 头 + 8 个 KV 头,
head_size: 128,KV Cache 占用更小; context_length: 32768,支持长上下文;- decoder 的输入/输出明确了
input_ids、attention_mask、position_ids以及past_key_values.%d.key/value等 KV Cache 张量命名,运行时据此管理缓存; search段内置采样参数:top_k: 50、top_p: 1.0、max_length: 4096。
运行时侧,provider_options中的"hybrid_opt_token_backend": "npu"表示:Prefill 阶段走 CPU/GPU 混合执行,Token 解码阶段优先使用 NPU——这就是"混合推理"(Hybrid Inference)的核心开关。
第 3 步:NPU Full Fusion 4K 后处理 —— 为 NPU"铺路"
这一步由 Ryzen AI SDK 的模型后处理工具完成,产物分两类:
- dd_metastate 文件:仓库中
dd_metastate_Llm_Prefill_*与dd_metastate_Llm_Token_*两组文件,分别对应提示词处理(Prefill)和逐词生成(Decode)两个阶段的 NPU 图状态。注意文件名中的sequence_length_padded_128~4096(Prefill)和attention_mask_padded_256~4096(Token)——这是为不同长度预先准备好的填充形状,正是"4K 上下文全融合"的含义:整条算子链路被融合成 NPU 可执行的图,并覆盖到 4096 的上下文长度。 - rai_config.json:按 Ryzen AI SDK 版本声明
max_prompt_length上限,rai_config.json 显示 SDK 1.6.0 及以上版本支持 4096,早期版本为 2048。
想深挖细节的话,cache/modellayers.0input_layernormMLADFRMSNORM_meta.json 里的op_list展示了融合后的算子形态:MLADFRMSNORM(LayerNorm 融合)、MladfMatMul(4-bit、block_size 128 的低精度矩阵乘)等,都是为 NPU 定制的加速算子。
快速上手:三步跑起来
硬件要求:带 NPU 的 AMD Ryzen AI 设备,并安装 Ryzen AI SDK(建议 1.6.0+ 以启用 4K 上下文)。
① 克隆模型仓库
git clone https://gitcode.com/hf_mirrors/amd/Mistral-7B-Instruct-v0.2_rai_1.8.0_npu_4K② 准备运行时(以 Python 为例,安装 onnxruntime-genai 后):
from onnxruntime_genai import Model, Tokenizer model_dir = "Mistral-7B-Instruct-v0.2_rai_1.8.0_npu_4K" model = Model(model_dir) tokenizer = Tokenizer(model_dir)③ 生成文本
prompt = tokenizer.encode("Hello, who are you?") gen = model.generate(prompt) print(tokenizer.decode(gen))模型会按照 chat_template.jinja 中定义的[INST]对话格式组织输入,采样参数则自动取自genai_config.json。
常见问题 FAQ
Q1:为什么权重拆成model.onnx.data单独文件?ONNX 支持外置数据(external data)格式,结构文件小、权重文件大,分离后首次加载后权重可被系统缓存,加速后续启动。
Q2:Prefill 和 Token 两个阶段有什么区别?Prefill 一次性并行处理整段提示词,计算密集;Token(Decode)阶段每次只生成一个 token,访存密集。NPU 更适合后者,所以把 Token 阶段卸载到 NPU 收益最大。
Q3:这个模型能支持多长的上下文?模型结构支持 32768(见 config.json 的max_position_embeddings),NPU 融合图当前覆盖到 4096 上下文,SDK 1.6.0 及以上即可用满 4K。
总结
Mistral-7B-Instruct-v0.2_rai_1.8.0_npu_4K 展示了一条完整的端侧 LLM 部署路线:
- ✅Quark AWQ 4-bit 量化:体积瘦身到约 1/4,精度损失可控;
- ✅OGA Model Builder 导出 ONNX GenAI:获得 LLM 专用推理格式与 KV Cache 管理能力;
- ✅NPU Full Fusion 4K 后处理:Token 生成卸载到 NPU,低功耗本地推理。
理解这条流水线后,你也可以用同样的 OGA Model Builder 工作流,把其他 PyTorch 开源模型带到自己的 AMD Ryzen AI 设备上运行。
【免费下载链接】Mistral-7B-Instruct-v0.2_rai_1.8.0_npu_4K
相关推荐
从 PyTorch 到 ONNX:深度剖析 Qwen3.5-35B-A3B_gpuep_1.0_gpu_128 的 Olive + OGA Model Builder 转换流水线
从 PyTorch 到 ONNX:深度剖析 Qwen3.5 35B A3B_gpuep_1.0_gpu_128 的 Olive + OGA Model Buil
进阶揭秘:OGA Model Builder如何将Qwen2.5-14B-Instruct转换并量化为ONNX模型
进阶揭秘:OGA Model Builder如何将Qwen2.5 14B Instruct转换并量化为ONNX模型 本文深入讲解 Qwen2.5 14B Ins
从 PyTorch 到 ONNX:Qwen2.5-Coder-14B-Instruct_gpuep_1.0_gpu_128 模型转换全流程开发者指南(OGA Model Builder 篇)
从 PyTorch 到 ONNX:Qwen2.5 Coder 14B Instruct_gpuep_1.0_gpu_128 模型转换全流程开发者指南(OGA M
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考