【免费下载链接】Llama-3.1-8B_rai_1.8.0_npu_4K
Llama-3.1-8B_rai_1.8.0_npu_4K是 AMD 面向 Ryzen AI(NPU)深度优化的 Llama 3.1 8B 大语言模型部署包,采用 UINT4 量化权重 + 4K 上下文支持。如果你下载过这个仓库,会发现根目录散落着 54 个以dd_metastate_开头的"神秘文件"——它们正是 NPU 运行 ONNX 模型所必需的预编译状态缓存,覆盖了 Prefill(预填充)和 Token(逐词解码)两个推理阶段。
本文带你完整解析这套 dd_metastate 缓存文件机制 🧩
一、dd_metastate 缓存是什么?
在 AMD OGA(Optimized Graph Architecture)部署流程中,ONNX 模型并不是运行时直接执行的。AMD 的模型构建工具会先把整个模型融合、扁平化并预编译为 NPU 硬件可高效执行的形态,产物就是这些dd_metastate_*文件:
| 组件 | 作用 |
|---|---|
dd_metastate_*.meta | 算子图元数据(operator list、tensor_map、buffer 布局) |
dd_metastate_*.state | NPU 状态表(state table)初始状态 |
dd_metastate_*.fconst | 扁平化常量缓冲——全部模型权重按 NPU 内存布局排布 |
dd_metastate_*.ctrlpkt | 控制包(control packet)占位,运行时动态填充 |
dd_metastate_*.super | 超级指令(super instruction)缓冲占位 |
💡 类比理解:如果把
model.onnx比作"源代码",那么 dd_metastate 文件组就是"编译好的可执行文件 + 运行时状态",NPU 直接加载它们,跳过了大量运行时准备工作。
二、文件名速读:一次看懂 5 段命名规则
以一个真实文件为例(点击可打开仓库中对应文件):
dd_metastate_Llm_Token_Token_modellayers.0input_layernormMLADFRMSNORM_attention_mask_padded_384_.meta
| 片段 | 含义 |
|---|---|
dd_metastate_ | 固定前缀,标记"数据驱动状态缓存" |
Llm_Prefill/Llm_Token_Token | 推理阶段:预填充 或 逐词解码 |
modellayers.0input_layernormMLADFRMSNORM | 融合块入口算子名——整个 32 层模型被扁平化为一个以 layer 0 的 input_layernorm(MLADFRMSNORM)为起点的单一子图 |
sequence_length_padded_N/attention_mask_padded_N | 动态形状标识,N 为 padding 后的长度 |
.meta.state.fconst.ctrlpkt.super | 文件类型(见上表) |
同一形状会有 5 个扩展名的文件一一对应,因此:每阶段 = 若干形状 × 5 种文件。
三、双阶段差异:为什么 Prefill 和 Token 的形状集合不一样?
模型推理分两个阶段,对 NPU 而言它们的输入张量不同,所以分别预编译:
| 维度 | Prefill(预填充) | Token(逐词解码) |
|---|---|---|
| 形状标识 | sequence_length_padded_N | attention_mask_padded_N |
| 覆盖形状 | 128 / 256 / 512 / 768 / 1024 / 1536 / 2048 / 2304 / 3072 / 4096,共10 档 | 384 / 512 / 1024 / 1280 / 1536 / 2048 / 2304 / 2560 / 2816 / 3072 / 3328 / 3584 / 3840 / 4096,共14 档 |
| 特点 | 一次性处理整段 prompt,长度是 128 的倍数即可 | 解码阶段每轮追加 1 个 token,需更细的 256 步长粒度 |
运行时的行为:应用把实际序列长度向上 padding 到最近的一档,然后加载对应的 dd_metastate 文件组执行。这就是为什么仓库里成百上千个文件——每一档都是一份独立的预编译产物。
🔍 这 14 档 Token 形状与 cache/Token_modellayers.0input_layernormMLADFRMSNORM_meta.json 中的
dynamic_shape_list字段完全一致,可交叉验证。
四、各文件真实体积一览(来自 Git LFS 指针)
仓库中大文件以 Git LFS 指针存储,指针里记录了真实大小。以下为实际数据 📦
共享文件(每阶段各 1 份):
| 文件 | 真实大小 |
|---|---|
| dd_metastate_Llm_Prefill_...fconst | 约 3.80 GB |
| dd_metastate_Llm_Token_Token_...fconst | 约 3.77 GB |
| dd_metastate_Llm_Prefill_...state | 843 B |
| dd_metastate_Llm_Token_Token_...state | 1,049 B |
全部 24 个.ctrlpkt/ 24 个.super | 0 B(占位,运行时填充) |
.meta元数据(每形状 1 份):
- Token 阶段:14 份大小几乎相同,均为约 2.36 MB——因为解码阶段输入恒为 1 个 token,元数据不随形状膨胀。
- Prefill 阶段:从
padded_128的28.6 MB线性增长到padded_4096的241.7 MB——元数据需要为整段 prompt 的每层中间张量(scratch buffer)预留布局,长度越长条目越多。
.fconst的 3.8 GB 体量可以佐证它承载了全部 UINT4 量化权重(约 8B 参数 × 0.5 字节 + scales/zeros/归一化层权重),这也解释了模型为什么能在 32 GB 内存的笔记本上流畅运行。
五、元数据里藏着什么?
cache/Token_modellayers.0input_layernormMLADFRMSNORM_meta.json(约 1.2 MB)是与 dd_metastate 配套的明文 JSON 元数据,其中包含 289 个算子节点,仅 5 种算子类型:
| 算子类型 | 含义 |
|---|---|
MLADFRMSNORM | 入口 RMSNorm(融合版) |
FlatRMSAdd | RMSNorm + 残差加法的融合算子 |
FLATMHA | 融合多头注意力(GQA) |
FlatMLP | 融合 MLP(gate/up/down) |
MladfMatMul | 扁平化量化矩阵乘 |
"Flat" 前缀正是 OGA 的核心思想:把 32 层 LLaMA 展开并融合成一条紧凑的算子链,最大限度减少 NPU 数据搬运。元数据中还能看到:
aux_info.is_llm: True与states: [[0, 1, 1]]:LLM 会话状态标记;ext_buf_0(512 MB 外部缓冲):32 层 × 8 个 KV 头 × 4096 长度的 K/V 缓存区,正是 4K 上下文的物理载体;- 输入绑定
attention_mask_padded、sin_cache_cos_cache_sliced(RoPE 缓存切片)等——与 genai_config.json 中context_length、config.json 的rope_scaling配置呼应。
六、实用要点清单 ✅
- 别删、别改:dd_metastate 文件组是 NPU 会话的"燃料",删掉任何一个都会导致模型无法加载。
- 需要 LFS 拉取:仓库中它们只是几十字节的 Git LFS 指针,必须用支持 Git LFS 的客户端 checkout 才能拿到 3.5 GB 级的真实数据。
- 形状对不上会报错:若运行时请求的长度不属于已预编译的档位(如 Token 阶段请求 200 长度会 padding 到 384 档),超出 4096 则超出本模型(
_npu_4K版本)支持范围。 - 想自己复现?:该模型由 "Quark Quantization → OGA Model Builder → NPU 后处理(Full Fusion 4K context)" 三步生成,详见 README.md 的 Quick Start 与 rai_config.json(其中
max_prompt_length按 Ryzen AI 驱动版本声明 2048/4096)。
七、30 秒速查表
| 你的疑问 | 答案 |
|---|---|
| 一共有多少个 dd_metastate 文件? | 54 个(24 meta + 24 ctrlpkt + 24 super 中的配对关系 + 2 state + 2 fconst,按阶段计:Prefill 10 形状 + Token 14 形状,各 ×5 扩展名,其中 state/fconst 每阶段各 1) |
| 最大的是什么? | .fconst,约 3.8 GB,即整套量化权重 |
| 哪个文件决定"长度档位"? | 文件名中的_padded_N段 |
| 想看懂算子结构去哪看? | cache/ 下的两份*_meta.json |
理解了这个机制,你就不难看懂 AMD Ryzen AI 系列 OGA 模型仓库中任何一批dd_metastate文件了——"阶段 × 形状 × 5 种扩展名"的命名矩阵,就是全部秘密 🔑
【免费下载链接】Llama-3.1-8B_rai_1.8.0_npu_4K
相关推荐
dd_metastate 预编译缓存机制解析:Llama-3.1-8B_rai_1.8.0_npu_16K 如何加速 Attention Mask 加载(完整指南)
dd_metastate 预编译缓存机制解析:Llama 3.1 8B_rai_1.8.0_npu_16K 如何加速 Attention Mask 加载(完整指
dd_metastate文件深度解读:Llama-3.2-1B_rai_1.8.0_npu_4K的NPU控制流与序列长度填充机制
dd_metastate文件深度解读:Llama 3.2 1B_rai_1.8.0_npu_4K的NPU控制流与序列长度填充机制 在 AMD 官方发布的 Lla
Llama-3.1-8B_rai_1.8.0_npu_16K 文件结构全解析:从 model.onnx 到 dd_metastate 缓存的 62 个文件逐一说明
Llama 3.1 8B_rai_1.8.0_npu_16K 文件结构全解析:从 model.onnx 到 dd_metastate 缓存的 62 个文件逐一说
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考