Qwen2.5-3B-LiBai 李白风格诗歌生成模型
模型简介
基于 Qwen/Qwen2.5-3B-Instruct 基座,使用王琦注本《李太白全集》中 878 首 李白亲笔诗歌(赋、古诗、乐府、律诗、绝句、词)进行 QLoRA 4bit SFT 微调。
数据处理(关键陷阱规避,避免前人踩坑)
- 正文边界截断:《李太白全集.txt》L1–L3686 为王琦注本正文(878 首),L3687 起是附录(年谱/碑传/序/后人题跋),严格 END_LINE=3686,绝不混入陆游、曾极、胡震亨等人的文字。
- 评注剥离:杨齐贤曰 / 萧士赟曰 / 琦按 / 胡震亨曰 / 《XXX》曰 等评注段常与诗句无空行直接相连,使用「遇下一个标题候选行立即结束评注」策略实现精准切分。
- 标题识别:过滤 [一][二] 脚注标记、"跋/年谱/本传/墓志铭" 等非诗标题;分类题头「古风五十九首」「乐府三十首」仅做 section_header,与数字副标题拼接为「古风五十九首·其三」。
- 数据划分:838 train / 20 test / 20 style(风格参考集),test 与 style 互不重叠。
训练配置
| 参数 | 值 |
|---|---|
| 微调方法 | QLoRA 4bit (bitsandbytes) |
| LoRA rank | 32 |
| LoRA alpha | 64 |
| LoRA dropout | 0.05 |
| LoRA target | all linear layers |
| batch size × grad_accum | 1 × 8 = 8 |
| Epochs | 10 |
| Learning rate | 2e-4 |
| LR scheduler | cosine (warmup 10%) |
| cutoff_len | 768 |
| Train steps | 约 1050 步 |
推理使用
from transformers import AutoModelForCausalLM, AutoTokenizer
import torch
model_path = "shikunpunk/Qwen2.5-3B-LiBai"
tokenizer = AutoTokenizer.from_pretrained(model_path, trust_remote_code=True)
model = AutoModelForCausalLM.from_pretrained(
model_path,
torch_dtype=torch.bfloat16,
device_map="auto",
trust_remote_code=True,
)
prompt = (
"<|im_start|>system
"
"你是一位深谙李白诗歌风格的盛唐诗人。李白(太白)的诗以豪放飘逸、想象奇幻著称,善用明月、酒、剑、山、黄河、白云、长风等意象,语言奔放自然、气势磅礴,兼具浪漫主义的瑰丽想象与任侠使气的精神,古体乐府尤长,近体亦清新俊逸,常常带有傲岸不羁、旷达超脱的气度。必须全部使用中文,禁止混入任何英文字母、单词或句子。<|im_end|>
"
"<|im_start|>user
"
"你是诗人李白,请以《将进酒》为题,写一首你觉得好的诗歌。<|im_end|>
"
"<|im_start|>assistant
"
)
inputs = tokenizer(prompt, return_tensors="pt").to(model.device)
out = model.generate(
**inputs,
max_new_tokens=512,
temperature=1.0,
top_p=0.9,
do_sample=True,
repetition_penalty=1.05,
pad_token_id=tokenizer.eos_token_id,
)
print(tokenizer.decode(out[0][inputs["input_ids"].shape[1]:], skip_special_tokens=True))
中文约束
本模型在 SFT 数据中内置了中文约束指令,并额外加入中文纯净化 SFT 样本(参考海子模型 58%→0% 英文混入率的处理经验),保证:
- 生成 100% 使用中文,禁止任何英文字母 / 单词 / 句子混入。
- temperature 建议 0.8–1.2(1.0 最佳),> 1.2 英文混入风险上升。
生成实验验证(完整 10 epoch 版本)
- 温度对比:两组提示词 × 10 个温度(0.4–2.2)共 20 首,英文混入 0/20;高温(T≥1.8)下保持稳定,仅个别字漂移,不产生胡言乱语。
- 现代诗:10 首中 8 首纯中文无英文,其中《路灯下的秋天》《键盘与稻穗》《城市地铁》等作品现代意象与李白式哲思融合良好。
- 风格倾向:古体(五言/七言/乐府)显著优于现代诗;对《九月九日忆山东兄弟》等经典名作,模型倾向直接复现原诗而非重新创作,属训练数据高频暴露的正常现象。
- 实验记录:
experiments/libai_experiments_final.md、experiments/libai_compare_step600_vs_1050.md
关联资源
- 数据集仓库:shikunpunk/libai-poetry-dataset(含 train/test/style/test_ref 四份 ShareGPT 格式数据)
- 兄弟模型:
- shikunpunk/Qwen2.5-3B-GuCheng(顾城风格,朦胧/童话/意象化)
- shikunpunk/Qwen2.5-3B-Haizi(海子风格,麦地/太阳/史诗/村庄)
- shikunpunk/Qwen2.5-3B-Haizi-CN(海子 + 中文纯净化约束)
许可
学术研究用途。原始诗歌文本属公有领域(作者于公元 762 年辞世);基座模型权重请遵守 Qwen2.5 相应 License。