ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

从PyTorch到ONNX GenAI:Mistral-7B-Instruct-v0.2_rai_1.8.0_npu_4K 的OGA Model Builder转换之旅

从PyTorch到ONNX GenAI:Mistral-7B-Instruct-v0.2_rai_1.8.0_npu_4K 的OGA Model Builder转换之旅

【免费下载链接】Mistral-7B-Instruct-v0.2_rai_1.8.0_npu_4K

项目地址:https://ai.gitcode.com/hf_mirrors/amd/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.onnxONNX 模型结构(图描述)
model.onnx.data外置权重数据(与图分离,便于加载与缓存)
genai_config.jsonOGA 运行时配置:模型结构、KV Cache、采样参数
rai_config.jsonRyzen AI NPU 混合调度的提示词长度上限配置
config.jsonHugging 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 的模型后处理工具完成,产物分两类:

  1. 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 的上下文长度。
  2. 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 部署路线:

  1. ✅Quark AWQ 4-bit 量化:体积瘦身到约 1/4,精度损失可控;
  2. ✅OGA Model Builder 导出 ONNX GenAI:获得 LLM 专用推理格式与 KV Cache 管理能力;
  3. ✅NPU Full Fusion 4K 后处理:Token 生成卸载到 NPU,低功耗本地推理。

理解这条流水线后,你也可以用同样的 OGA Model Builder 工作流,把其他 PyTorch 开源模型带到自己的 AMD Ryzen AI 设备上运行。

【免费下载链接】Mistral-7B-Instruct-v0.2_rai_1.8.0_npu_4K

项目地址:https://ai.gitcode.com/hf_mirrors/amd/Mistral-7B-Instruct-v0.2_rai_1.8.0_npu_4K
点击查看免费下载
上一篇:Super Productivity 完整上手指南:用时间盒与任务追踪把每天安排明白
下一篇:uni-app x 中 padding-right 属性完全指南:语法、Vapor 拍平兼容与动态样式操作

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进