【免费下载链接】DeepSeek-V3-W4A8-Pruing
初次接触 DeepSeek-V3-W4A8-Pruing 模型仓库时,面对 3 个 safetensors 分片文件、一个 578KB 的 index 索引 JSON,新手最容易发懵:为什么权重要拆成 3 片?index 文件里的 weight_map 到底在索引什么?这篇文章带你逐层拆解 safetensors 三分片结构与 index 索引的完整对应关系,看完你就能独立读懂任意量化模型的权重布局。
仓库文件全景:先看目录里有什么
整个仓库可以分成三类文件,各司其职:
| 类别 | 文件 | 作用 |
|---|---|---|
| 权重数据 | quant_model_weight_w8a8_dynamic-00001-of-00003.safetensors等 3 个分片 | 存放模型全部张量数据 |
| 权重索引 | quant_model_weight_w8a8_dynamic.safetensors.index.json | 记录"哪个张量在哪个分片" |
| 量化说明 | quant_model_description.json | 记录每个参数的量化类型 |
| 模型配置 | config.json、configuration_deepseek.py | 定义模型结构与加载入口 |
| 词表 | tokenizer.json、tokenizer_config.json | 分词与对话模板 |
📌 记住一条主线:index 索引管"位置",description 管"精度",safetensors 分片管"数据"。
safetensors 三分片各自装了什么?
大模型权重通常按大小上限切成多个 shard(分片)。本模型共 4810 个张量键(key),被均匀地分配到 3 个分片中,分布并不均匀:
| 分片 | 张量键数量 | 占比 | 内容 |
|---|---|---|---|
| 00001 | 496 | 约 10.3% | 词嵌入model.embed_tokens、第 0~2 层全部参数、第 3 层 MoE 专家 0~16 |
| 00002 | 3132 | 约 65.1% | 第 3 层 MoE 专家 17~190 的量化权重 |
| 00003 | 1182 | 约 24.6% | 第 3 层 MoE 专家 191~255、路由 gate、shared_experts、model.norm、lm_head |
💡 为什么第 2 片特别大?因为 config.json 中
n_routed_experts为 256、num_hidden_layers为 4,第 3 层是 MoE 层,256 个专家的权重占了全模型的大头,而 MoE 层被切分在 3 个分片里。
分片 1:从词嵌入到 MoE 专家 16
打开索引文件开头,第一个键就是词嵌入:
"model.embed_tokens.weight": "quant_model_weight_w8a8_dynamic-00001-of-00003.safetensors"随后按层顺序排布第 0~2 层的self_attn(q_a_proj、q_b_proj、kv_a_proj_with_mqa、o_proj 等 MLA 投影)与mlp参数,直到model.layers.3.mlp.experts.17.gate_proj.scale_bias为止。
分片 2:MoE 专家权重的"主战场"
第 2 片几乎全部是model.layers.3.mlp.experts.17到experts.190的键,每个专家都带有 gate_proj / up_proj / down_proj 三组矩阵及其量化伴随张量:
model.layers.3.mlp.experts.17.up_proj.weight model.layers.3.mlp.experts.17.up_proj.weight_scale model.layers.3.mlp.experts.17.up_proj.weight_offset model.layers.3.mlp.experts.17.up_proj.weight_scale_second model.layers.3.mlp.experts.17.up_proj.scale_bias这正是 W4A8 量化的典型特征——每个weight都配套 scale / offset / scale_bias 等伴随参数,键数量是普通模型的 5~6 倍。
分片 3:专家尾部 + 归一化 + 输出头
第 3 片从experts.191.up_proj.weight开始,收在模型的"最后三件套":
"model.norm.weight": "...-00003-of-00003.safetensors", "model.norm.bias": "...-00003-of-00003.safetensors", "lm_head.weight": "...-00003-of-00003.safetensors"lm_head是输出词表投影(词表大小 129280),永远位于权重文件的末尾,这是判断一个分片是否为"末片"的最快标志。
index 索引的完整解析:metadata + weight_map
索引文件结构非常简洁,只有两个顶层字段:
{ "metadata": { "total_size": 12073335872 }, "weight_map": { "张量名": "分片文件名", ... } }metadata.total_size:全模型张量总字节数12073335872,约11.25 GB。加载器用它校验分片是否完整,是判断"下载齐没齐"的第一依据。weight_map:4810 条"张量名 → 分片名"映射。推理框架(如 vLLM / MindIE)加载时只读这个索引,按需打开对应分片并做零拷贝内存映射,而不是把整个模型读进内存。
🔍 实用技巧:想确认某个参数在哪个分片,直接搜索weight_map中的键名即可,例如查model.layers.3.mlp.gate.weight会指向 00003 分片——这就是 MoE 路由表所在位置。
用 quant_model_description.json 看懂每个参数的精度
如果说 index 回答"在哪",那么 quant_model_description.json 回答的是"以什么精度存储"。文件头部声明:
"version": "1.0.0", "model_quant_type": "W8A8_DYNAMIC", "group_size": 256其中group_size: 256表示量化按 256 个元素一组做分组缩放。全文档按参数统计,精度类型分布如下:
| 量化类型 | 参数数量 | 分布位置 |
|---|---|---|
W4A8_DYNAMIC | 4608 | 第 3 层 MoE 路由专家的 gate/up/down_proj |
W8A8 | 112 | 各层 MLA 注意力投影(q_a/q_b/kv_a/o_proj) |
FLOAT | 54 | 词嵌入、layernorm、bias 等保持高精度 |
W8A8_DYNAMIC | 36 | 第 0~2 层 dense MLP 的 gate/up/down_proj |
这与 config.json 中的三个字段一一对应:
"mla_quantize": "w8a8", "quantize": "w8a8_dynamic", "moe_quantize": "w4a8_dynamic"📎 项目名里的 "W4A8" 指的就是 MoE 专家部分:权重 4-bit、激活 8-bit 的动态量化,这也是整个模型最省显存的功臣。
新手上手 3 步:下载、校验、加载
第 1 步:获取完整权重
在模型仓库页面下载全部文件,或执行:
git clone https://gitcode.com/hf_mirrors/vllm-ascend/DeepSeek-V3-W4A8-Pruing第 2 步:校验完整性
- 三个分片文件 + index 文件必须齐全,缺一不可;
- index 中
metadata.total_size(约 11.25 GB)应与各分片实际大小之和一致。
第 3 步:交给推理框架加载
配置 configuration.json 声明了framework: pytorch、task: text-generation;config.json 的auto_map字段把AutoConfig/AutoModel指向 configuration_deepseek.py 与 modeling_deepseek.py,因此框架会自动识别DeepseekV3ForCausalLM架构,通过 index 按需读取分片,无需手工指定分片顺序。
总结:一张图记住权重读取链路
config.json ──> 决定架构与量化方案 │ ▼ .safetensors.index.json ──> weight_map:张量名 → 分片文件(位置索引) │ ▼ 00001 / 00002 / 00003 分片 ──> 实际张量数据(safetensors 零拷贝读取) │ ▼ quant_model_description.json ──> 每个张量的精度类型(W4A8 / W8A8 / FLOAT)核心结论只有一句话:index 索引是"目录",分片是"章节",description 是"书脊上的标注"。掌握weight_map的键名 → 分片名映射规律(按层顺序排布、MoE 专家体量大导致分片 2 最厚、lm_head收尾于分片 3),你面对任何 safetensors 多分片量化模型都能快速建立全局认知。
【免费下载链接】DeepSeek-V3-W4A8-Pruing
相关推荐
Qwen3-235B-A22B-W4A8权重文件解码:读懂30个safetensors分片与量化索引文件
Qwen3 235B A22B W4A8权重文件解码:读懂30个safetensors分片与量化索引文件 Qwen3 235B A22B W4A8 是 Qwen
为什么叫Pruing?DeepSeek-V3-W4A8-Pruing剪枝版与完整模型的区别一文看懂
为什么叫Pruing?DeepSeek V3 W4A8 Pruing剪枝版与完整模型的区别一文看懂 如果你想在单卡昇腾 NPU 上体验 DeepSeek V3
Qwen3-8B-W4A8 模型文件结构全解析:safetensors 分片与 index.json 到底长什么样?
Qwen3 8B W4A8 模型文件结构全解析:safetensors 分片与 index.json 到底长什么样? Qwen3 8B W4A8 是 vllm
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考