Qwen3.8-27B 的权重怎么组织:18 个分片、索引文件与 crc32
翻一个模型仓,最先看到的往往不是 model card 的第一段,而是文件列表:一长串 model-0000X-of-00018.safetensors,旁边跟着 model.safetensors.index.json 和 crc32.txt。很多人会顺手把分片数当成规模指标,再往下推一层「那大概要多少显存」。这篇不干这件事,一个字都不推。
先把这篇能讲什么、讲不了什么划清楚。
一、我们没有下载任何一个分片
截至 2026-08-16,我们对 Qwen/Qwen3.8-27B 取到的快照是 1d4bf0f。取的是文本文件:model card、协议、配置、分词器配置、聊天模板,一共 8 个。18 个 .safetensors 分片、model.safetensors.index.json 和 crc32.txt 我们都没有下载。
所以这篇不会出现单片体积、权重总大小、加载后占多少显存、量化到某精度大概多少 GB 这类数字——不是不愿意写,是我们手上根本没有这些文件,写出来就只能是算的。model card 在 Model Overview 里写参数量是 27B(README.md:37),而 config.json 里没有任何一个字段直接写参数量,我们逐个 key 看过。由 27B 去反推体积,属于我们自己的推导,不是仓库里写的字。
二、仓库侧的文件清单(截至 2026-08-16)
按用途分,Hugging Face 仓库侧的文件是这么几类:
| 类别 | 文件 |
|---|---|
| 权重分片 | model-00001-of-00018.safetensors … model-00018-of-00018.safetensors,共 18 个 |
| 分片索引 | model.safetensors.index.json |
| 校验清单 | crc32.txt |
| 模型配置 | config.json、generation_config.json |
| 多模态预处理 | preprocessor_config.json、video_preprocessor_config.json |
| 分词器 | tokenizer_config.json、tokenizer.json、merges.txt、vocab.json |
| 对话模板 | chat_template.jinja |
| 文档与协议 | README.md、LICENSE |
「18 个分片」这个数字来自文件名本身的 -of-00018 后缀,是可以直接从清单上数出来的。它就到此为止了:分片是怎么切的、每片装了哪些张量、切分依据是什么,本文一概不写:文件清单里的 model.safetensors.index.json 与 crc32.txt,我们只知道这两个文件名存在,内容一行都没有读过,所以不描述它们的格式,也不描述里面有什么。
这就是本篇最别扭的地方,也是必须讲明白的地方:标题问「权重是怎么组织的」,而真正回答这个问题的两个文件,恰好是我们没取到的那两个。能讲的部分只有外圈——清单、配置、以及配置与文档对不对得上。
三、本地快照实况:8 个文本文件
我们在本地快照目录里用 Python 列了一遍文件,得到 8 个,逐个记下字节数、行数与换行符:
| 文件 | 字节数 | 行数 | CRLF 行数 |
|---|---|---|---|
LICENSE | 11,544 | 202 | 201 |
README.md | 65,012 | 583 | 582 |
chat_template.jinja | 8,952 | 170 | 0 |
config.json | 4,312 | 140 | 0 |
generation_config.json | 202 | 13 | 0 |
preprocessor_config.json | 390 | 21 | 0 |
tokenizer_config.json | 17,928 | 306 | 0 |
video_preprocessor_config.json | 385 | 21 | 0 |
有两处小细节值得记一笔。
其一,README.md 与 LICENSE 是 CRLF 换行(分别 582 和 201 个 \r\n),其余六个文件是 LF(0 个 \r\n)。同一个仓库里换行风格不统一,这在写脚本按行处理时是会踩到的。
其二,字节数是对得上的:LICENSE 解码后纯文本 11,343 字节,加上 201 个 \r,正好是 11,544 字节;README.md 的 65,012 字节,也与 Hugging Face 元数据里记的 model card 体积一致。这是我们能做的最基本的一次核对——不是校验权重,只是确认取到的文本没缺没多。
本地没有的文件,本批任何文章都不描述其内容:tokenizer.json、merges.txt、vocab.json、model.safetensors.index.json、crc32.txt,以及全部 18 个分片。词表细节因此也核不了,tokenizer_config.json 里能查到的只有 added_tokens_decoder 的 33 条记录(id 是 248044–248076 的连续区间)。
四、反直觉的一处:model card 通篇不提 safetensors,也不提 crc32
我们用 Python 逐行检索 README.md 全文(65,012 字节、583 行),结果是:
safetensors:0 命中crc32:0 命中modelscope/ModelScope/huggingface:0 命中download:全文只有 1 处命中,在README.md:178,那是 Benchmark 表的脚注,说的是评测时禁用了pip download等命令,与「怎么下载这个模型」无关
也就是说,model card 里没有给出任何权重下载命令——没有 huggingface-cli download,没有 git lfs clone,也没有其它获取入口的命令。## Quickstart(README.md:225)的第一句写的是 For streamlined integration, we recommend using Qwen3.8 via APIs.(README.md:227),随后 ### Serving Qwen3.8(README.md:229-241)列了 SGLang、vLLM、TokenSpeed 三个框架各自的官方文档入口(README.md:238-240),再往下就直接进 #### Chat Completions API 的示例(README.md:270 起)了。
这只是照实描述文档结构:文件清单里躺着 18 个分片和一份校验清单,而 model card 从头到尾没有把它们当成读者要打交道的对象来讲。为什么这么安排,我们不推断。
顺带说一句 model card 顶部的 > [!Tip](README.md:14-16):它提到官方有一个名为 Qwen Cloud 的 API 服务,并写明 27B 的托管版本 The service is coming soon——服务尚未提供。同一句里出现的 1M context length by default 说的是那个托管版本的特性,不是这个开源权重仓的能力,别混到一起。
五、能核到的「组织方式」,都在配置侧
既然分片索引读不了,那在可核范围内,关于这个模型「怎么组织」的信息就只剩 config.json 这 140 行了。它描述的是结构,不是文件切分:
num_hidden_layers: 64(config.json:98),与 Model Overview 的 Number of Layers 64(README.md:40)一致;text_config.layer_types是一个长度 64 的字符串数组(config.json:21-86),我们用 Python 统计,linear_attention出现 48 次,full_attention出现 16 次,后者所在下标(0 起)为 3、7、11、15……63;同一份配置里另有full_attention_interval: 4(config.json:15);- 视觉侧的参数只在
vision_config(config.json:122-137)里,比如depth: 27(config.json:124)、hidden_size: 1152(:126)、out_hidden_size: 5120(:133)——而 Model Overview(README.md:32-53)只在第 34 行用一句Causal Language Model with Vision Encoder带过,没有列出任何一条视觉编码器参数。
这些字段是「模型长什么样」,跟「权重被切成几片、每片放什么」不是一回事。config.json 的内容就是两块——text_config(config.json:8-118)与 vision_config(config.json:122-137),我们逐项记下来的字段全是结构与位置编码一类的参数,分片信息不在其中。至于 full_attention_interval、attn_output_gate、mamba_ssm_dtype 这些字段具体如何影响推理,这是权重仓、不含建模代码,我们没有源码可读,因此只登记字面值,不作解释。
六、顺手记下几处名字对不上的地方
翻文件的时候会撞见几处世代名不一致,都只并列陈述,不推断哪个是对的、也不据此评价什么:
- README 的一级标题是
# Qwen3.8-27B(README.md:7),而config.json的model_type是qwen3_5(config.json:7),architectures是["Qwen3_5ForConditionalGeneration"](config.json:2-4);README 自己在README.md:20写Built on the architectural foundation of Qwen3.5。 preprocessor_config.json同一个文件里,processor_class是Qwen3VLProcessor,image_processor_type是Qwen2VLImageProcessorFast;video_preprocessor_config.json的video_processor_type是Qwen3VLVideoProcessor;tokenizer_config.json的tokenizer_class是Qwen2Tokenizer。config.json:120的transformers_version值是"5.8.0.dev0",字面上是一个 dev 版本号;README 全文没有写最低 transformers 版本要求,关于 transformers 只有第 10、12 行的兼容性表述和 frontmatter 第 2 行的library_name。README.md:575-581的 bibtex 条目里,title写的是{Qwen3.8-Max}: A New Bar for Coding and Cowork,而本仓是 Qwen3.8-27B。
对文件组织这件事来说,第 2 条最实际:如果你要按类名去对照上游实现,仓库里这四处字面值是不一样的,照抄哪个都得先看清是哪个文件里的。
七、想自己数一遍
上面这些统计不需要下载权重,只作用于文本文件。列清单与换行符的口径是:
python -c "
import os
files=sorted(os.listdir('.'))
print('LOCAL FILE COUNT', len(files))
for f in files:
b=open(f,'rb').read()
print(f, len(b), 'bytes,', b.count(b'\n')+1, 'lines, crlf=', b.count(b'\r\n'))
"
数 layer_types 的口径是:
python -c "
import io,json
from collections import Counter
c=json.load(io.open('config.json',encoding='utf-8'))
lt=c['text_config']['layer_types']
print('len', len(lt), Counter(lt))
print('full idx', [i for i,x in enumerate(lt) if x=='full_attention'])
"
两段都在放着这些文本文件的目录(<你存放模型仓文本文件的目录>)下执行,Windows 与 Linux/macOS 都是同一条 python -c,差别只在 shell 对引号的处理:上面这种写法在 Git Bash、PowerShell 与 bash 下的引号转义行为不同,如果报语法错,把脚本存成 .py 再跑最省事。这属于通用做法,不是该模型仓官方文档的内容。
最后重复一遍这篇的边界:文件清单可数,配置可读,字节数可核;而 18 个分片的内部、model.safetensors.index.json 的映射关系、crc32.txt 的校验值,我们一样都没有。谁要是在别处看到由「18 个分片」推出来的显存结论,先问一句那个数是从哪个文件读出来的。
延伸阅读
- 从头读起:Qwen3.8-27B 是什么:一个模型仓里有哪些文件、各自负责什么
- 本专题共 35 篇,完整分组目录见专题页
- Qwen3.8-27B 的 config.json 里全是 qwen3_5:代际关系怎么读
- Qwen3.8-27B 的许可实读:Apache-2.0 标准文本与那行版权
本文依据 Hugging Face 仓库 Qwen/Qwen3.8-27B 的 model card 与随仓配置文件
(config.json、generation_config.json、preprocessor_config.json、chat_template.jinja 等)整理,
核对日 2026-08-16,对应仓库快照 1d4bf0f。
本文内容为 model card 与配置文件口径,我们没有下载权重、没有部署、也没有推理过这个模型,
因此不涉及生成质量、推理速度与显存占用的任何描述;文中所有评测数字均为 model card 自述,我们没有复现。
模型仓库内容随上游更新而变动,请以官方最新说明为准。
许可条款请以官方 LICENSE 原文为准,本文不构成法律意见。