arthur789/qwen3.5-9b-tcm-cpt
170
Qwen3.5-9B-TCM-CPT (Stage 1)
这是 Qwen3.5-9B 在中医领域继续预训练 (CPT) 后的 LoRA 适配器,是两阶段训练流程的第一阶段产物。
⚠️ 此版本只完成 CPT(知识注入),未做 SFT(指令微调)。 直接用于对话会输出"补全式"长文本,不是 Q&A 格式。如需对话能力,请叠加 SFT 适配器或继续第二阶段训练。
模型说明 (Model Overview)
基础模型: Qwen/Qwen3.5-9B 适配器类型: LoRA (CPT 阶段) 合并方式: 推理前需 merge_and_unload() 合并到基座权重(见下方使用说明) 主要语言: 简体中文(夹杂 30% 古文原文,因典籍数据为文言文)
本模型通过在 53.2 万条非网络来源的中医高质量文本 上做 1 epoch 继续预训练获得。训练集覆盖范围(详见下文"训练数据"章节的客观描述):
- 中医临床病案与诊疗记录
- 688 本古今中医典籍原文
- 中医百科词条和术语解释
- 中西医结合科目的基础医学知识
训练数据 (Training Data)
来自 SylvanL/Traditional-Chinese-Medicine-Dataset-Pretrain 的镜像快照(TCM_PRETRAIN/ 目录)。
总计 532,512 条样本,tokenize 后约 1.7 亿 token,全部按 2048 长度 packing 为 83,448 个训练块。
质量分布:
- 高质量(人工编辑病案 + 平台百科)≈ 30%(~16 万条)
- 中等质量(EMR 规则拼接)≈ 43%(~23 万条)
- 典籍原文(文言文为主)≈ 27%(~15 万条)
未做 minHash 去重(源数据集未做),可能有少量跨文件重复。
训练配置 (Training Configuration)
硬件与环境
- GPU: NVIDIA RTX 5090 (32GB)
- 框架: HuggingFace Transformers + PEFT + Liger Kernel
- 关键库:
liger-kernel(apply_liger_kernel_to_qwen3_5,rope=False)flash-attn 2.x(FA3 未在 Qwen3.5 路径启用)bitsandbytes(paged_adamw_8bit)
超参数
训练曲线
- 总步数: 2,318(1 epoch 全量)
- Loss: 2.1711 → 1.7577 (下降 19.0%)
- 末段状态: loss 在 1.72-1.78 之间小幅震荡,已收敛饱和,无需继续训练
使用方式 (Usage)
1. 加载并合并 LoRA
import torch
from transformers import AutoModelForCausalLM, AutoTokenizer
from peft import PeftModel
base = AutoModelForCausalLM.from_pretrained(
"Qwen/Qwen3.5-9B",
torch_dtype=torch.bfloat16,
device_map="auto",
)
model = PeftModel.from_pretrained(base, "your-username/Qwen3.5-9B-TCM-CPT")
model = model.merge_and_unload() # 关键:合并到基座
# 保存完整模型(可选)
model.save_pretrained("./qwen3.5-9b-tcm-cpt-merged")2. 推理
from transformers import AutoTokenizer
tokenizer = AutoTokenizer.from_pretrained("your-username/qwen3.5-9b-tcm-cpt-merged")
# 注意: CPT 模型是"补全"风格,不是 chat 风格
prompt = "中医治疗消渴病的核心病机是"
inputs = tokenizer(prompt, return_tensors="pt").to(model.device)
outputs = model.generate(
**inputs,
max_new_tokens=512,
do_sample=True,
temperature=0.7,
top_p=0.9,
repetition_penalty=1.1,
)
print(tokenizer.decode(outputs[0], skip_special_tokens=True))⚠️ 重要事项 (Important Notes)
📚 训练数据涵盖的知识范围(客观描述训练分布)
以下是训练数据的事实组成,不是已验证的模型能力。Loss 从 2.17 降到 1.76 仅代表模型在训练分布上学到了统计模式。
本模型训练数据由 7 个子集构成,覆盖以下内容:
1. 中医临床病案(35.5 万条,占比 66.8%)
- 61K 条高水平执业中医问诊记录(含问诊引导/主诉/诊断/方剂/中药),人工脱敏
- 15K 条知名教授临床病案(Qwen2.5-14B 脱敏 + 人工校对)
- 230K 条中医院 EMR 归档病案(规则联表拼接,质量中等)
- 49K 条知名教授病案(含证型)
- 涵盖:患者主诉、辨证、立法、处方、用药
2. 中医典籍原文(14.6 万条,占比 27.5%)— 688 本书
- 古代典籍(文言文,~89K 条):《伤寒论》《金匮要略》《黄帝内经》《难经》《神农本草经》《本草纲目》《医宗金鉴》《证类本草》《圣济总录》《备急千金要方》《外台秘要》《针灸甲乙经》《针灸大成》等约 400+ 部
- 古代医案(文言文,~5K 条):《续名医类案》《古今医案按》《临证指南医案》《吴鞠通医案》《丁甘仁医案》等 50+ 部
- 现代中医教材(白话,~9K 条):《方剂学》《中药学》《中医内科学》《中医诊断学》《中医基础理论》《中医妇科学》《针灸学》《温病学》等 18 本
- 完整清单见 tcm_books_list.md
3. 中医百科与术语(3.1 万条,占比 5.8%)
- 18K 条"中国中医药信息查询平台"百科词条:疾病、症状、医疗美容、药品、中药材、保健品、方剂、药膳食疗、针灸穴位
- 13K 条 ICD-10 / 中医国标术语详解(涵盖方剂、中药材、针灸配穴)
4. 西医基础(1.6 万条,占比 3.0%)
- 65 本西医教材:《人体解剖学》《生理学》《生物化学》《病理学》《药理学》《内科学》《外科学》《妇产科学》《儿科学》《免疫学》《传染病》《急诊医学》等
- 若干西医家庭医学百科
5. 中西医结合临床(5K 条医案 + 1K 条其他)
- 古代医案全集含近现代中西医汇通案例
- 中医医院药学 / 临床应用指南等参考用书
⚠️ 未做能力评估
上述只是训练数据的覆盖范围,不代表模型已具备对应能力。例如:
- 数据中包含《伤寒论》136 条原文,不等于模型能准确背诵或正确引用
- 数据包含 35 万条病案,不等于模型能给出符合临床规范的辨证论治
- 评估需独立 benchmark(如 TCM 知识题库 / 病案生成打分),本仓库未提供
⚠️ 已知局限
- 不是对话模型 — 直接发问会输出补全式长文,不是 Q&A。需要 SFT 阶段或叠加对话适配器
- 可能输出古文 — ~27% 训练数据是文言文典籍,所以问某些问题时模型可能以古文风格回答
- 西医能力有限 — 仅
tcmBooks和部分tcmKnowledge包含西医基础,未做系统西医训练 - 存在幻觉风险 — CPT 后未经过 RLHF 对齐,对超出训练数据的医学问题可能编造处方
- 不构成医疗建议 — 本模型仅供学术研究,严禁用于真实诊疗
🚫 不能用于
- ❌ 真实临床诊疗决策
- ❌ 药品/剂量开具
- ❌ 替代执业医师判断
- ❌ 紧急医疗情况处理
训练流程 (Pipeline)
Phase 1 (当前): CPT (已完成)
└─ 输入: Qwen3.5-9B 基座
└─ 数据: 53.2 万条中医文本
└─ 输出: 本仓库的 LoRA 适配器
Phase 2 (下一步): SFT (计划中)
└─ 输入: 已合并 CPT 的基座
└─ 数据: ~2.6M 条 SFT 数据 (TCM_SFT + ChatMed + SHENNONG-600K + 翻译对下采样)
└─ 输出: 对话版 LoRA 适配器引用与致谢 (Citation)
数据来源:
- Author: SylvanL
- Email: sl18n19@soton.ac.uk
- License: Apache-2.0
- 仓库: SylvanL/Traditional-Chinese-Medicine-Dataset-Pretrain
基础模型: Qwen/Qwen3.5-9B(Apache-2.0)
关键训练加速: Liger Kernel、FlashAttention
