miniLLM Pretrain
这是 miniLLM 的预训练基础模型,采用 Decoder-only Transformer 与稀疏 MoE 架构,以 Hugging Face save_pretrained 格式导出。模型完成的是自回归 next-token prediction,适合文本续写、基础语言模型评估,以及作为 SFT、LoRA、蒸馏和强化学习阶段的初始化权重。
[!IMPORTANT] 该模型尚未经过 Chat SFT 或偏好对齐。它可能无法稳定遵循指令,也不应被当作成熟的对话助手使用。需要对话能力时,请使用
out/sft或在本模型基础上继续训练。
模型信息
| 项目 | 配置 |
|---|---|
| 架构 | Decoder-only Transformer + MoE |
| 总参数量 | 199,791,360(约 199.8M) |
| 每 Token 激活参数量 | 65,311,488(约 65.3M) |
| Transformer 层数 | 8 |
| 隐藏维度 | 768 |
| 注意力 | GQA:8 个 Query Heads / 4 个 KV Heads |
| Head Dim | 96 |
| MoE | 4 Experts,Top-1 路由 |
| Expert 中间维度 | 2,432 |
| 词表大小 | 8,192 |
| 最大位置长度 | 32,768 |
| 位置编码 | RoPE,theta = 1,000,000 |
| 归一化 | RMSNorm,eps = 1e-6 |
| 权重精度 | FP32 |
| 权重共享 | Token Embedding 与 LM Head 共享 |
| KV Cache | 当前实现未启用 |
32,768 是配置允许的最大位置长度,并不代表模型已经在所有长上下文长度上得到充分训练或验证。
目录内容
out/pretrain/
├── README.md
├── config.json
├── generation_config.json
├── model.safetensors
├── tokenizer.json
├── tokenizer_config.json
└── chat_template.jinja
| 文件 | 用途 |
|---|---|
model.safetensors |
模型权重,约 762 MiB |
config.json |
网络结构、MoE 和 Tokenizer 指纹配置 |
generation_config.json |
默认生成配置 |
tokenizer.json |
8K BPE Tokenizer |
tokenizer_config.json |
Tokenizer 特殊 Token 与最大长度 |
chat_template.jinja |
后续对话训练和推理可使用的消息模板 |
环境安装
在项目根目录执行:
pip install -r requirements.txt
推荐使用 Python 3.10 或更高版本。模型依赖项目中的自定义 MiniLLMConfig 和 MiniLLMForCausalLM,不能脱离 model/model_minillm.py 仅通过通用 AutoModelForCausalLM 加载。
Tokenizer
模型配置保存了 Tokenizer 指纹。继续训练或评估时应始终使用本目录内的 Tokenizer,避免词表 ID 与 Embedding 行错位。
后续训练
本模型可作为项目后续阶段的起点。
完整参数和数据要求请参阅项目中的预训练、SFT、LoRA、蒸馏及强化学习文档,并先通过对应脚本的 --help 查看当前可用参数。
限制与使用建议
- 模型仅完成预训练,指令遵循、事实可靠性、安全性和多轮对话能力均未得到保证。
- 生成内容可能包含事实错误、重复、偏见或不恰当文本;不要直接用于医疗、法律、金融等高风险决策。
- MoE 每个 Token 只激活一个 Expert;总参数量不等于单次前向传播的激活参数量。
- 当前导出目录未记录训练步数、训练 Loss、数据版本或基准测试结果,因此本文不声明具体效果指标。
- 发布或商用前,请确认训练数据、项目代码和依赖项各自的许可证及合规要求。