# 小狸 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