08 · 模型卡(ModelScope / HuggingFace)

ModelScope 模型仓库自述。配套数据集:TCM-Andrology-EMR;代码与完整文档见 GitHub 仓库。


模型详情

项 值
基座模型 XiaomiMiMo/MiMo-V2.6-Distill-Qwen-9B
架构 Qwen3_5ForConditionalGeneration(多模态 + 混合注意力)
参数量 9.41B(可训练 LoRA 部分 43.3M = **0.458%**)
微调方式 bf16 LoRA(非 QLoRA)
LoRA 配置 r=16, α=32, dropout=0.05, 12 个目标模块
训练数据 21,484 条中医男科门诊病历(含既往处方)
训练硬件 单卡 NVIDIA H20 96GB
训练时长 2 小时 50 分(2 epoch,2,686 步)
精度 bfloat16
许可 权重沿用基座许可;训练数据为 CC BY-NC 4.0,故本模型限非商用

目标模块(自动探测,重要)

down_proj  gate_proj  in_proj_a  in_proj_b  in_proj_qkv
in_proj_z  k_proj     o_proj     out_proj   q_proj  up_proj  v_proj

⚠️ 该基座是混合注意力架构:只有 8 层有 q_proj/k_proj/v_proj/o_proj, 另外 24 层用 in_proj_qkv/in_proj_z/in_proj_b/in_proj_a/out_proj。 照抄 Qwen3 的名单会漏掉 24/32 层注意力且不报错。 已排除 lm_head 与视觉塔(qkv/proj/linear_fc1/2)。


用途

直接用途:根据患者四诊信息(性别、年龄、主诉、现病史、西医诊断, 复诊时附既往处方)生成中医诊断与中药处方草案,供执业中医师参考。

输入格式

【基本信息】男,33岁
【主诉】腰痛乏力复诊
【现病史】腰痛乏力,勃起不坚,晨勃(+),手心出汗,脚凉,心悸。
【西医诊断】男性性腺功能低下
【既往处方】第 1 次复诊,间隔 9 天,上次处方:炙甘草 北柴胡 麸炒枳壳 ...

System prompt:

你是中医男科专家。请根据患者四诊信息进行辨证论治:先给出中医诊断,每行一个诊断,
格式为「病名·证型·治法」;再给出中药处方,输出药味名称,不含剂量。

输出格式

【中医诊断】
腰痛·肾气不充证·补肾扶元
失眠·气血亏虚证·益气生脉
【中药处方】
白芍 炙甘草 桂枝 生姜 大枣 龙骨 牡蛎 茯苓 麸炒苍术 白附片 白薇 韭菜子

输出不含剂量。剂量须由外部药典量表填充并由医师核定(见配套 GitHub 仓库的 dose_filler.py)。


评测结果

测试集:2,764 条金标准样本,按患者分组切分(患者零重叠,无泄漏)。

口径 本模型 参照基线 结论
总体 Jaccard 0.429 [0.416, 0.441] 常量方 0.159 / Oracle 0.208 ✅ 远超规则基线
初诊 Jaccard 0.301 初诊 Oracle 0.254 ✅ 超过检索上界
复诊 Jaccard 0.501 照抄上次方 0.542 ❌ 不如直接照抄
关键药 Recall(top100) 0.609 Gate 0.45 / Oracle 0.406 ✅
证型 micro-F1 0.485 Gate 0.55 ❌ 未达(80% 因标签同义)
非法药名率 0.02% Gate ≤0.5% ✅
G5 时效漂移 −10.5% Gate ≤20% ✅

Oracle 的定义:用真实中医诊断去做检索所能达到的上界(现实中拿不到真实诊断)。 模型在不知道真实诊断的情况下端到端超过它 —— 这是它在读自由文本的硬证据。

分口径的显著性(与另一个 epoch 配置的对比)

口径 差值 95% CI p 判定
总体 −0.003 [−0.009, +0.003] 0.873 不可分
初诊 −0.022 [−0.034, −0.012] 1.000 本模型(2 epoch)显著更好
复诊 +0.008 [+0.002, +0.014] 0.004 3 epoch 版本显著更好

⚠️ 局限与不当使用

明确做不到的事

限制 说明
不能替代医师审方 配套校验器只做缺失检测,治法判别力实测仅 7.9%
不能解释"为什么开这个方" 训练数据无疗效反馈,模型只能模仿医生的处方,不能给出因果理由
不建议用于复诊 不如直接照抄上次处方(0.501 vs 0.542)
剂量不可信 模型不生成剂量;任何剂量输出都应丢弃
缺舌脉 数据中舌象 0.53% / 脉象 0.74%,存在原理性输入缺口

禁止用途

  • ❌ 不得用于临床诊断、处方决策或任何直接影响患者诊疗的用途
  • ❌ 不得作为自动开方系统
  • ❌ 不得商用(训练数据为 CC BY-NC 4.0)
  • ❌ 不得用于生成对真实患者的医疗建议

已知偏差

  1. 医师个人风格未剥离:训练数据无医生 ID,实测 13/16 组文书风格检验显著。 模型会模仿训练医生的书写与用药偏好,不等于普适的中医共识。
  2. 机构单一:数据来自单一科室,可能不适用于其他地区/流派的诊疗习惯。
  3. 证型标签同义:参考标签中 肾虚证/肾虚、肝肾亏虚证/肝肾两虚证 并存,模型输出的证型写法可能与期望不完全一致。
  4. 虚实混淆:肾气不充证(虚)↔ 湿热下注证(实)是最大单项错误(213 次), 两者治法方向相反(补 vs 清),需重点人工复核。

使用方法

from transformers import AutoModelForImageTextToText, AutoTokenizer
from peft import PeftModel
import torch

BASE = "XiaomiMiMo/MiMo-V2.6-Distill-Qwen-9B"
ADAPTER = "<此仓库>"

tok = AutoTokenizer.from_pretrained(BASE, trust_remote_code=True)
tok.padding_side = "left"          # ★ 必须:decoder-only 生成
model = AutoModelForImageTextToText.from_pretrained(
    BASE, dtype=torch.bfloat16, device_map={"": 0}, trust_remote_code=True)
model = PeftModel.from_pretrained(model, ADAPTER)
model.eval()

msgs = [
    {"role": "system", "content": "你是中医男科专家。请根据患者四诊信息进行辨证论治:"
                                  "先给出中医诊断,每行一个诊断,格式为「病名·证型·治法」;"
                                  "再给出中药处方,输出药味名称,不含剂量。"},
    {"role": "user", "content": "【基本信息】男,33岁\n【主诉】腰痛乏力\n"
                                "【现病史】腰痛乏力,勃起不坚,脚凉,心悸。\n"
                                "【西医诊断】男性性腺功能低下\n【既往处方】无(初诊)"},
]
prompt = tok.apply_chat_template(msgs, tokenize=False, add_generation_prompt=True)
enc = tok([prompt], return_tensors="pt", padding=True).to(model.device)
with torch.no_grad():
    out = model.generate(**enc, max_new_tokens=192, do_sample=False,
                         pad_token_id=tok.pad_token_id, eos_token_id=tok.eos_token_id)
print(tok.batch_decode(out[:, enc["input_ids"].shape[1]:], skip_special_tokens=True)[0])

输出可能带 <think></think> 前缀(该基座支持思考模式),解析时应剥离。 配套 GitHub 仓库的 predict.py 已处理,并附药名归一化与处方校验。


训练细节

项 值
数据 21,484 条(T3+,含既往处方),val 2,675
epoch 2
学习率 1e-4,cosine,warmup_steps 80(3%)
有效 batch 16(bs 8 × ga 2)
max_length 1024(实测 p99=360)
优化器 adamw_torch(bf16 LoRA 不需要 bitsandbytes)
梯度检查点 关闭(96GB 显存充裕,吞吐提升 5.5×)
模型选择 val 集 eval_subset_jaccard(初诊/复诊未加权平均)

训练框架注意:transformers>=5.12(qwen3_5 架构要求)、 trl 的 SFTConfig 在 transformers 5.x 中**已移除 warmup_ratio**,须用 warmup_steps。


引用

@misc{mimo9b_tcm_andrology_2026,
  title  = {MiMo-9B TCM Andrology LoRA: 中医男科辨证论治辅助模型},
  year   = {2026},
  note   = {基座 XiaomiMiMo/MiMo-V2.6-Distill-Qwen-9B;训练数据 CC BY-NC 4.0},
  url    = {https://modelscope.cn/models/your-account/MiMo-9B-TCM-Andrology-LoRA}
}

免责声明

本模型为研究与教学用途,不构成医疗建议。使用者须自行确保其使用场景 符合当地法规与伦理要求。模型输出必须经执业中医师审核后方可用于任何临床相关场景。

Downloads last month
16
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Model tree for johnson/MiMo-9B-TCM-Andrology-LoRA

Finetuned
Qwen/Qwen3.5-9B
Adapter
(2)
this model

Dataset used to train johnson/MiMo-9B-TCM-Andrology-LoRA

Evaluation results

  • 处方 Jaccard(总体) on 中医男科病历(冻结测试集 2,764 条,患者分组切分)
    self-reported
    0.429
  • 处方 Jaccard(初诊) on 中医男科病历(冻结测试集 2,764 条,患者分组切分)
    self-reported
    0.301
  • 处方 Jaccard(复诊) on 中医男科病历(冻结测试集 2,764 条,患者分组切分)
    self-reported
    0.501
  • 关键药 Recall(top100) on 中医男科病历(冻结测试集 2,764 条,患者分组切分)
    self-reported
    0.609