2026-06-05 15:09:00 +00:00
2026-06-05 15:08:40 +00:00
2026-06-06 00:26:36 +00:00
2026-06-20 13:24:24 +00:00

小狸 AI — Xiaoli Chat

一个从零训练的 13M 参数闲聊心理治疗模型。纯 CPU 实时推理,无需 GPU。

小狸是一个 8 岁小女孩的角色化对话 AI,基于 Causal Decoder-Only Transformer 架构,支持日常闲聊、情感陪伴、角色扮演等场景。

快速开始

# 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

S
Description
No description provided
Readme
205 KiB
0 Stars 1 Watchers 0 Forks