MoXin 是一个完全从零构建的中文语言模型项目,涵盖 Tokenizer 训练、预训练、多阶段 SFT、LoRA 微调、多模态 VLM 扩展的完整流程。所有组件基于 PyTorch 原生实现,不依赖第三方训练框架。
Tokenizer 训练
↓
文本预训练 → pretrain.pth
↓
SFT-1 (seq_len=512) → sft01.pth
↓
SFT-2 (seq_len=1024) → sft02.pth
↓ ↓
LoRA 微调 → moxin-lora.pt VLM 预训练 → pretrain_vlm.pth
↓
VLM SFT → sft_vlm.pth
1import torch
2from transformers import AutoTokenizer
3
4# 需要先 clone 项目代码
5# git clone https://github.com/mozihe/moxin
6# cd moxin
7
8from config.moxin_config import MoXinConfig
9from model.moxin_model import MoXinModel
10
11config = MoXinConfig()
12tokenizer = AutoTokenizer.from_pretrained("tokenizer/moxin_tokenizer")
13
14model = MoXinModel(config)
15state_dict = torch.load("out/sft02.pth", map_location="cpu")
16model.load_state_dict(state_dict, strict=False)
17model.eval()
18
19messages = [{"role": "user", "content": "你好,请介绍一下你自己。"}]
20prompt = tokenizer.apply_chat_template(messages, tokenize=False, add_generation_prompt=True)
21input_ids = torch.tensor(tokenizer(prompt)["input_ids"]).unsqueeze(0)
22
23output = model.generate(
24 input_ids,
25 eos_token_id=tokenizer.eos_token_id,
26 max_new_tokens=512,
27 temperature=0.85,
28 top_p=0.85,
29)
30print(tokenizer.decode(output[0], skip_special_tokens=True))