「小模型大秘密」分析材料 — CNSS 2026 招新赛
本仓库是 CNSS 2026 招新赛题目 「小模型大秘密」 的分析材料,供参赛选手在赛期内下载研究。
模型在训练过程中埋有一个需要通过分析权重来发现并触发的隐藏行为;具体题目目标、提交方式与判分标准以赛题平台页面为准。
仓库内容
| 文件 |
大小 |
说明 |
model.pt |
118,015,896 B(≈112.6 MiB) |
白盒模型权重,fp32,仅权重(无优化器状态、无训练历史) |
tokenizer.json |
544,501 B(≈532 KiB) |
与权重配套的 ByteLevel BPE 分词器,HF tokenizers 格式 |
校验和(sha256)
9504ca376812a2d157c88e6ca8c82f3f1331b03f26e38ba7049bac8d8cb3e17e model.pt
ab43104a5844d7f5feaa63d05defb4fdecf4bb77a48c17f7b0412a91a5cab1fe tokenizer.json
下载后请先校验,确保与本页发布版本一致。
model.pt 里有什么
torch.load(..., weights_only=True) 后得到一个字典:
import torch
ck = torch.load("model.pt", map_location="cpu", weights_only=True)
print(ck.keys()) # dict_keys(['model', 'model_kwargs', 'step'])
print(ck["model_kwargs"]) # 重建网络所需的全部超参数
print(list(ck["model"])) # 52 个张量的 state_dict
model_kwargs — 重建前向计算所需的全部超参数
model — state_dict(52 个张量)
step — 训练步数,纯元数据,无实际用途
注意:这是自定义结构的模型,不能用 transformers.AutoModelForCausalLM 直接加载;仓库不提供网络定义,需要依据下表自行实现前向计算——这本身就是题目的一部分。29.5M 参数 fp32,CPU 即可完成前向推理,不强制要求 GPU。
架构参数(与 model_kwargs 一致)
| 项 |
值 |
| 参数量(去重后) |
29,499,904 |
| vocab_size |
8192 |
| context_length |
256 |
| n_layer / n_head / n_embd |
8 / 8 / 512 |
| FFN 隐层 |
2048(ffn_mult = 4,GELU) |
| 归一化 |
RMSNorm(pre-norm) |
| 注意力 |
因果掩码;QKV 融合为单个 1536×512 矩阵 |
| 位置编码 |
可学习绝对位置嵌入(256×512) |
| 词嵌入 |
tok_emb 与 lm_head 权重绑定(tied,state_dict 两个条目共享同一存储,文件内只存一份) |
| 精度 |
fp32 |
| dropout |
0.0(对推理无影响) |
tokenizer.json
标准 HF tokenizers 格式的 ByteLevel BPE,词表 8192。
特殊 token:
| id |
token |
| 0 |
<PAD> |
| 1 |
<BOS> |
| 2 |
<EOI> |
| 3 |
<EOS> |
| 4 |
CNSS |
加载方式:tokenizers.Tokenizer.from_file("tokenizer.json")。
数值栈说明
验证环境为 torch 2.6.0(CUDA 12.4 / CPU 均可运行)。fp32 权重在不同 torch 版本、硬件或后端上的浮点结果可能存在微小抖动;若你观察到的模型行为恰好在临界处,请先核对自己使用的数值栈。建议使用较新的稳定版 torch。
使用范围与约束
- 本仓库仅供 CNSS 2026 招新赛 参赛选手对「小模型大秘密」进行白盒分析使用;
- 赛期内请勿转载权重文件,请勿公开解题思路、writeup 或可触发目标行为的输入;
- 完整比赛规则以赛题平台页面为准,本 README 仅约定本仓库文件的使用范围。
License
MIT