☰
Qwen2.5-Coder-7B NPU模型文件结构大揭秘:model.onnx、model.pb.bin 与量化权重从何而来
2026/10/23 1:55:30 网站建设 项目流程

【免费下载链接】Qwen2.5-Coder-7B-Instruct_rai_1.8.0_npu_16K

项目地址:https://ai.gitcode.com/hf_mirrors/amd/Qwen2.5-Coder-7B-Instruct_rai_1.8.0_npu_16K
点击查看免费下载

这个仓库是Qwen2.5-Coder-7B-Instruct_rai_1.8.0_npu_16K,一款为 AMD Ryzen AI NPU 深度定制的 Qwen 代码大模型量化部署包(Ryzen AI 1.8.0、16K 上下文)。本文带你逐个看懂model.onnx、model.pb.bin、model.bin以及一堆dd_metastate_*小文件各自是干什么的,并讲清楚 ONNX 模型与 UINT4 量化权重是如何一步步生产出来的。

📦 一张表看懂:仓库里的文件都是干什么的

先建立整体认知。这个仓库由 AMD 基于官方 Qwen2.5-Coder-7B-Instruct 加工而来,完整流水线是:Quark 量化 → OGA Model Builder 构建 → NPU 后处理(Token Fusion 16K 上下文)(详见 README.md)。

文件真实大小作用
model.onnx≈471 KBONNX 计算图(模型"骨架")
model.onnx.data≈2.2 GBONNX 外部权重数据(模型"血肉")
model.bin≈3.86 GBNPU 端 UINT4 量化权重主体
model.pb.bin≈10 KBNPU 后端图入口/元数据文件
config.json3.5 KB模型结构 + 量化参数配置
genai_config.json2 KBonnxruntime-genai 运行时配置
rai_config.json230 B各 Ryzen AI 版本的最大 prompt 长度
cache/ 与dd_metastate_*数 KB~1 MBNPU 部署元数据(16K 上下文缓存)
tokenizer.json、vocab.json、merges.txt 等约 4 MB分词器全套文件
chat_template.jinja2.5 KB对话提示词模板
generation_config.json242 B默认采样参数

⚠️新手必看:仓库里的大模型文件用的是 Git LFS(大文件存储)。直接 clone 后看到的只是几 KB 的"指针文件",需要执行git lfs install和git lfs pull才能拉到 GB 级的真实内容:

git clone https://gitcode.com/hf_mirrors/amd/Qwen2.5-Coder-7B-Instruct_rai_1.8.0_npu_16K cd Qwen2.5-Coder-7B-Instruct_rai_1.8.0_npu_16K git lfs pull

🔍 model.onnx 与 model.onnx.data:ONNX 图的"骨架"和"血肉"

genai_config.json 中可以看到运行时的核心线索:

  • log_id: onnxruntime-genai—— 模型由 AMD 采用的onnxruntime-genai推理框架加载;
  • filename: model.onnx—— 入口计算图就是 model.onnx。

ONNX(Open Neural Network Exchange)是一种通用的神经网络交换格式,可以理解为"用标准格式画出来的电路原理图"。大模型为了不把 GB 级权重塞进单个文件,普遍采用图与数据分离的写法:

  • model.onnx(仅 471 KB):只存 28 层 Transformer 的算子连接关系、输入输出定义(input_ids、attention_mask、KV Cache 的past_key_values.*等);
  • model.onnx.data(约 2.2 GB):存放真正的张量数值,以"外部数据"形式被图引用。

从 2.2 GB 的体量反推,ONNX 侧主要承载词嵌入(embedding)与输出投影(lm_head)这类 BF16 大矩阵(152064 词表 × 3584 隐层 × 2 字节 × 2 ≈ 2.2 GB),这部分在 CPU 侧完成分词、嵌入和 logits 后处理。

🧠 model.bin 与 model.pb.bin:量化权重"藏"在哪里

这两个文件是理解本仓库的关键,答案就在 genai_config.json 的 RyzenAI Provider 配置里:

  • hybrid_opt_token_backend: "npu"—— 逐 token 解码的主战场交给 NPU;
  • external_data_file: "model.pb.bin"—— NPU 后端从这个文件读取其专属图数据;
  • fusion_opt_io_bind_kv_cache: "1"—— KV Cache 做了融合绑定优化。

而 model.bin 约3.86 GB,恰好约为 BF16 完整权重(约 15.5 GB)的1/4——这正是 7B 参数被压到4 bit后的体量。结合 config.json 中的量化配置可以确认:它是 UINT4 量化权重的主体存储,供 NPU 以极低显存占用跑完 28 层 Transformer 主干。

一句话总结这套混合(hybrid)部署分工:

CPU 负责分词、词嵌入、logits 与采样(ONNX 侧,BF16);NPU 负责逐 token 的 28 层注意力与 FFN 前向(4-bit 量化,权重在model.bin,图入口为model.pb.bin)。

📐 量化策略:AWQ + UINT4 如何做到又快又省

README.md 用一行道出了核心策略:AWQ / Group 128 / Asymmetric / BFP16 激活 / UINT4 权重。拆开看 config.json 的global_quant_config:

参数值含义
dtypeuint4权重以 4 bit 无符号整数存储
group_size128每 128 个权重共享一组缩放参数
symmetricfalse非对称量化,表达能力更强
round_methodhalf_even四舍五入取整方式
observer_clsPerGroupMinMaxObserver分组统计极值以计算缩放

AWQ(Activation-aware Weight Quantization)的巧妙之处在于:它会参考激活值分布,识别出对精度影响更大的"关键权重"并重点保护,从而在 4-bit 极限压缩下尽量保住输出质量。量化由 Quark 工具链(quant_method: quark)完成,这也是 README 中 "created using Quark Quantization" 的由来。

🧬 dd_metastate_* 与 cache/:16K 上下文的幕后功臣

仓库根目录有十几个名字很长的dd_metastate_Llm_Token_Token_modellayers.0input_layernormMLADFRMSNORM_*文件(如.meta、.ctrlpkt、.super、.fconst、.state),配合 cache/ 目录下的Token_..._meta.json与txn_bins.zip,它们是 NPU 后处理阶段的部署元数据:

  • 文件名中的256 / 512 / 1024 / … / 16384是不同序列长度的 attention_mask 预填充形状——NPU 对每种长度都预先缓存了编译产物,运行时按长度直接命中,避免每次重新编译;
  • MLADFRMSNORM记录的是 NPU 上首层 RMSNorm 算子的元信息(输入、常量、算子列表);
  • 上限 16384(16K)正是仓库名中npu_16K的含义;
  • rai_config.json 则规定了不同 Ryzen AI 版本(1.3.1~1.7.1)允许的最大 prompt 长度(2048 或 4096)。

这些文件你不需要修改,运行时会自动读取,它们的存在恰恰说明模型经过了完整的 NPU 部署调优。

🚀 新手上手:三步在 Ryzen AI 上跑起来

  1. 拉取完整权重:clone 仓库后执行git lfs pull,确认model.bin达到 3.86 GB;
  2. 准备环境:安装 Ryzen AI 1.8.0 工具链及 onnxruntime-genai,快速开始步骤可参考 README.md 中指向的官方 Quick Start;
  3. 运行推理:直接以本目录为模型根目录启动,运行时按 genai_config.json 自动加载model.onnx与 NPU 后端;默认采样参数见 generation_config.json(temperature 0.7、top_k 20、top_p 0.8),最长可生成 16K token(search.max_length: 16384)。

❓ 常见问题 FAQ

  • clone 下来为什么文件只有几 KB?大文件走 Git LFS,执行git lfs pull后才会下载真实内容。
  • 7B 模型为什么只有 4 GB 而不是 15 GB?权重已用 AWQ 量化到 UINT4,约为 BF16 的 1/4,这也是它能装进 NPU 小容量内存的原因。
  • 非 Ryzen AI 设备能用吗?model.onnx部分是通用 ONNX 格式,理论上可被 CPU 推理;但model.pb.bin/model.bin及其配套元数据专为 AMD Ryzen AI NPU 编译,建议在 Ryzen AI 平台上按官方混合(hybrid OGA)方式部署。

小结:model.onnx+model.onnx.data是 CPU 侧的 ONNX 计算图与数据,model.bin是 NPU 侧 UINT4 量化权重,model.pb.bin是 NPU 后端入口,dd_metastate_*与 cache/ 是为 16K 上下文准备的部署缓存——读懂了这套文件结构,你就掌握了 Ryzen AI 上本地大模型部署的核心逻辑。

【免费下载链接】Qwen2.5-Coder-7B-Instruct_rai_1.8.0_npu_16K

项目地址:https://ai.gitcode.com/hf_mirrors/amd/Qwen2.5-Coder-7B-Instruct_rai_1.8.0_npu_16K
点击查看免费下载
上一篇:MacNativeGames 流式音频故障排查实战:RomFS 重复斜杠路径解析的修复与三层验证
下一篇:K3s镜像缓存配置:加速节点容器启动

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

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询