Qwen2.5-3B-PoetryGen
基于 Qwen2.5-3B-Instruct 在自有中文古典诗歌数据集上微调的中文诗歌生成模型,支持古体诗、五言律诗、七言律诗、绝句等体裁的创作,并具备诗人风格模仿能力。
模型概览
| 项目 | 说明 |
|---|---|
| 基础模型 | Qwen/Qwen2.5-3B-Instruct |
| 参数量 | 3B(BF16,约 5.76GB) |
| 训练方法 | QLoRA(4bit NF4 量化,rank=16, alpha=32)+ DPO 强化学习 |
| 训练数据 | 20,001 首中国古典诗歌(来源:自有诗集数据,43,011 首去重筛选) |
| 硬件环境 | RTX 4060 Laptop 8GB VRAM |
训练数据说明
- 数据来源:自有中文诗集语料库
poetry_raw.jsonl(43,011 首古典诗歌,覆盖唐、宋等朝代多位诗人作品) - 数据规模:从中构建 20,001 条 SFT 样本(ShareGPT 格式),每条约含题目、体裁、作者与正文
- 风格隔离:风格模仿评测集与训练集/测试集严格隔离,不混入训练数据
- Prompt 示例:
请以《终南秋雪》为题,创作一首五言律诗。
训练方法
1. SFT 指令微调(QLoRA 4bit)
- 量化:4bit NF4(
bitsandbytes),有效降低显存占用,适配 8GB VRAM 笔记本 - LoRA:rank=16, alpha=32, dropout=0.05,
lora_target=all - 超参数:2 epoch,lr=2e-4,cosine 调度,warmup=0.1,cutoff_len=512
- 批次:per_device_batch=1 × grad_accum=16,梯度检查点开启,BF16 混合精度
2. DPO 强化学习(偏好优化)
- 使用 Qwen2.5-1.5B 诗歌判别模型对同一题目生成多首候选诗,按诗歌质量构造 31 组偏好对
- 超参数:pref_beta=0.1,sigmoid 损失,5 epoch,lr=5e-5
生成示例
示例一:五言律诗
Prompt:请以《终南秋雪》为题,创作一首五言律诗。
高卧北窗下,
偶兹霁景清。
白云满山色,
独鸟去无声。
阴壑凝虚白,
寒郊澹馀明。
悠然无俗虑,
浩思起冥冥。
示例二:五言律诗
Prompt:请以《夏日题岫禅师房》为题,创作一首五言律诗。
闲室清阴在,
中轩纳远峰。
松花落酒满,
水月入茶浓。
独鹤归难见,
高僧礼不逢。
时将一瓢去,
何处访支公。
示例三:古体诗
Prompt:请以《修史亭三首》为题,创作一首古体诗。
何人开此亭,
置在修史间。
百代有遗业,
千钧无一闲。
孤峰出遥汉,
双涧落晴山。
自是尘外境,
岂关人事删。
示例四:风格模仿(李白)
Prompt:模仿李白的风格,创作一首古体诗,题目《出塞》。
汉将归天马,
胡儿落日愁。
关山万里静,
旌节五陵秋。
剑匣神珠润,
烽台战士休。
何当投笔赋,
归奏报边筹。
快速开始
from transformers import AutoModelForCausalLM, AutoTokenizer
model_id = "li134/Qwen2.5-3B-PoetryGen"
tokenizer = AutoTokenizer.from_pretrained(model_id)
model = AutoModelForCausalLM.from_pretrained(
model_id,
trust_remote_code=True,
torch_dtype="auto",
device_map="auto",
)
prompt = "请以《秋夜》为题,创作一首五言律诗。"
messages = [{"role": "user", "content": prompt}]
text = tokenizer.apply_chat_template(messages, tokenize=False, add_generation_prompt=True)
inputs = tokenizer(text, return_tensors="pt").to(model.device)
outputs = model.generate(
**inputs,
max_new_tokens=256,
do_sample=True,
temperature=0.9,
top_p=0.9,
)
print(tokenizer.decode(outputs[0][inputs.input_ids.shape[1]:], skip_special_tokens=True))
硬件与资源
- 训练硬件:NVIDIA RTX 4060 Laptop(8GB VRAM)+ 16GB RAM
- 模型格式:BF16 safetensors(4 分片,共约 5.76GB)
- 也可使用 4bit 量化加载进一步降低显存需求
致谢
- 基础模型:Qwen/Qwen2.5-3B-Instruct
- 训练框架:LLaMA-Factory
- 量化:bitsandbytes / Transformers
- Downloads last month
- 210