miniLLM_model

4 downloads 0 likes on ModelScope updated

Model card

miniLLM

miniLLM 是一个用于学习、实验和本地部署的轻量级因果语言模型。它采用 Decoder-only Transformer、分组查询注意力(GQA)、RoPE 和稀疏混合专家(Sparse MoE)架构。

本目录保存的是项目当前经强化学习对齐后的策略模型,适合进行对话生成、指令遵循实验和部署演示。它仍然是一个约 2 亿参数的小型实验模型,不应被视为具备生产级可靠性的通用助手。

[!IMPORTANT] 模型可能生成错误、虚构、有偏见或不安全的内容。请勿在无人审核的情况下将输出用于医疗、法律、金融等高风险决策。

模型信息

项目 配置
任务类型 自回归文本生成(Causal Language Modeling)
架构 Decoder-only Transformer + Sparse MoE
总参数量 199,791,360(约 199.8M)
每 Token 激活参数量 约 65.3M
Transformer 层数 8
隐藏维度 768
注意力 GQA:8 个 Query Heads / 4 个 KV Heads
Attention 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 共享
对话格式 ChatML 风格

32,768 是配置所允许的最大位置长度,并不表示模型已经在所有长上下文长度上得到充分训练或验证。

目录内容

out/miniLLM_model/
├── README.md
├── chat_template.jinja
├── config.json
├── generation_config.json
├── model.safetensors
├── tokenizer.json
└── tokenizer_config.json
文件 用途
model.safetensors FP32 模型权重,约 762 MiB
config.json 模型结构、MoE 参数和 Tokenizer 指纹
generation_config.json 默认生成配置
tokenizer.json 8K 词表 Tokenizer
tokenizer_config.json 特殊 Token 和最大长度配置
chat_template.jinja 对话、思考过程和工具调用模板

特殊 Token 如下:

Token ID 用途
<|endoftext|> 0 Padding / Unknown
<|im_start|> 1 消息开始(BOS)
<|im_end|> 2 消息结束(EOS)

环境安装

请在项目根目录执行:

pip install -r requirements.txt

推荐使用 Python 3.10 或更高版本。主要依赖包括 PyTorch、Transformers、Tokenizers、Safetensors 和 Jinja2。

[!NOTE] 模型依赖项目中的 model/model_minillm.py。由于导出配置没有注册 auto_map,请使用 MiniLLMConfig 和 MiniLLMForCausalLM 加载,而不是直接调用通用的 AutoModelForCausalLM。以下示例应从项目根目录运行。

适用场景

  • 学习小型语言模型的结构、训练、对齐和部署流程
  • 本地对话与文本生成实验
  • SFT、LoRA、DPO、PPO 或 GRPO 等后续训练的初始化模型
  • MoE 路由、GQA、RoPE 和 KV Cache 的教学研究
  • 低成本原型与演示

已知限制

  • 模型规模较小,知识容量、复杂推理、代码生成和长文本一致性有限。
  • 强化学习对齐不保证事实正确性、安全性或稳定的指令遵循。
  • 生成内容可能重复、偏离问题或混合语言,也可能无法正确结束输出。
  • 虽然配置支持 32K 上下文,但实际效果会受到训练序列长度、数据分布、内存和推理实现的影响。
  • 稀疏 MoE 每个 Token 只激活一个 Expert;总参数量不等于单次前向传播的激活参数量。
  • 当前目录未包含训练数据版本、训练步数、训练损失或标准基准测试结果,因此不声明具体效果指标。
  • FP32 权重约占 762 MiB;实际运行还需要为激活值、KV Cache 和框架开销预留额外内存。