Files
xiaoli-llm-chat/README.md
T
shuiyu1123 231af72de9 大整理: 仓库重组 + 新词表 + 新README
- 清理仓库: 删除所有废弃的generate_*脚本和旧版数据文件
- 目录重组:
  - data/       → 训练数据
  - scripts/    → 数据生成脚本
  - templates/  → Web UI
- 重命名:
  - train_v2.py  → train.py
  - vocab_v3.json → vocab.json (BPE, 6.8k tokens)
- 更新 train.py 指向新词表路径
- 重写 README.md 完整文档
- 更新 .gitignore
2026-06-18 11:17:30 +00:00

95 lines
2.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 小狸 AI — Xiaoli Chat
> 一个从零训练的 **13M 参数闲聊心理治疗模型**。纯 CPU 实时推理,无需 GPU。
小狸是一个 8 岁小女孩的角色化对话 AI,基于 Causal Decoder-Only Transformer 架构,支持日常闲聊、情感陪伴、角色扮演等场景。
## 快速开始
```bash
# 1. 推理(对话)
python3 -c "
import json, torch
from llm_chat_improved import LLMModel, LLMChat, tokenizer_instance
vocab = json.load(open('vocab.json'))
ckpt = torch.load('llm_model_v2_resume_epoch_7.pth', map_location='cpu')
cfg = ckpt['model_config']
model = LLMModel(vocab_size=len(vocab), d_model=cfg['d_model'], n_heads=cfg['n_heads'],
n_layers=cfg['n_layers'], d_ff=cfg['d_ff'], max_len=cfg['max_len'], dropout=0.1)
model.load_state_dict(ckpt['model_state_dict'])
model.eval()
chat = LLMChat(model, vocab, device='cpu')
tokenizer_instance.char_to_id = vocab.copy()
tokenizer_instance.id_to_char = {v:k for k,v in vocab.items()}
print(chat.generate_response('小狸你好呀'))
"
# 2. 训练
python3 train.py
```
## 模型架构
| 参数 | 值 |
|------|-----|
| 架构 | Causal Decoder-Only Transformer |
| 参数量 | 13M |
| 隐藏层 (d_model) | 320 |
| 层数 (n_layers) | 6 |
| 注意力头 (n_heads) | 8 |
| FFN 宽度 (d_ff) | 1280 |
| 最大序列长度 | 512 |
| 位置编码 | RoPE (Rotary Position Embedding) |
| 激活函数 | SwiGLU |
| 归一化 | RMSNorm |
| 词表 | BPE, 6,812 tokens |
## 项目结构
```
xiaoli-llm-chat/
├── llm_chat_improved.py # 模型架构 + 推理代码(核心)
├── train.py # 训练脚本
├── vocab.json # BPE 词表(6.8k tokens)
├── web_server.py # Web 聊天服务
├── chat_server.py # Flask 聊天服务
├── templates/
│ └── chat.html # 聊天网页 UI
├── data/
│ ├── xiaoli_data_v1_part_1of2.json # 训练数据(33万条)
│ └── xiaoli_data_v1_part_2of2.json # 训练数据(33万条)
└── scripts/ # 数据生成脚本
├── generate_fresh_qa.py
├── generate_multiturn.py
├── regenerate_all_high_temp.py
├── daily_data_gen.py
└── api_correction.py
```
## 训练数据
- **总计 666,379 条** 去重 QA 对
- 来源:Astron 30B API 蒸馏生成(高温采样 + 多轮对话 + 新问答)
- 场景覆盖:日常闲聊、情感陪伴、儿童对话、角色扮演
- 纯人工蒸馏,零网页爬取,数据安全可控
## 模型权重
当前发布版本:**Epoch 7**(v0.1)
模型权重文件 `llm_model_v2_resume_epoch_7.pth`(154MB)因超出 Gitee 单文件限制,需单独下载。
## 系统要求
- Python 3.8+
- PyTorch(CPU 即可,无需 GPU)
- 内存:~200MB
- 磁盘:~500MB(含训练数据和权重)
## 许可
MIT License