medical-jev-4b

给定病例和候选选项,返回一个选择及各选项的概率。

medical-jev-4b 基于 Qwen3.5-4B,通过医疗选择题训练 LoRA 适配器。它用一次模型前向计算完成选项打分,输出短 JSON,不生成解释或思维链;推理时无需调用教师 API。

应用场景

可用于以下场景的离线原型、教学演练与模型评测。每次调用提供题目材料、判断要求和候选选项,结果可直接交给程序统计、展示或交由人工复核。

场景 提供什么 返回什么
医学教学与题库评测 病例、问题,以及诊断、病因或检查候选 选中的答案与各选项概率,便于批量判题和模型对照
护理培训与病例复盘 护理记录,以及护理措施、监测目标或体位候选 对应的护理优先项或措施标签
用药与治疗方案研究 病例、题设规则,以及药物、给药途径或治疗方案候选 在给定条件下选中的方案或禁忌项
随访、宣教与康复演练 患者情况,以及随访、宣教、营养或康复方案候选 与题目要求匹配的方案标签
指南规则与试验转介匹配 病例或基因结果、适用规则,以及建议或转介候选 给定规则下的推荐项或转介判断
医疗消息分类实验 就诊消息,以及紧急程度等分类标签 分类结果与各标签概率

这些场景都采用“从给定选项中选择”的形式,具体任务表现见下方评测及完整报告。

输入与输出案例

下面六个案例使用构造材料,输出由已发布的 medical-jev-4b 在 RTX 5090 上实际运行得到。概率展示到小数点后四位;案例用于说明调用方式,不作为医学能力评测。answer 是输入中的选项键,probabilities 给出各选项概率。

1. 医学教学与题库评测

输入:

{
  "id": "teaching_diagnosis",
  "request": {
    "state": {
      "clinical_question": "教学病例:患者发热、咳嗽,检测报告为甲型流感病毒核酸阳性,新冠病毒核酸阴性。"
    },
    "questions": {
      "decision": {
        "type": "choice",
        "instructions": "本题按检测结果分类:甲型流感核酸阳性选择甲型流感,新冠核酸阳性选择新冠感染,两项均阴性选择证据不足。",
        "criteria": {
          "influenza_a": "甲型流感",
          "covid19": "新冠感染",
          "insufficient_evidence": "证据不足"
        }
      }
    }
  }
}

实际输出:

{
  "id": "teaching_diagnosis",
  "status": "ok",
  "answer": "influenza_a",
  "probabilities": {
    "influenza_a": 0.9658,
    "covid19": 0.0173,
    "insufficient_evidence": 0.0169
  }
}
2. 护理培训与病例复盘

输入:

{
  "id": "nursing_priority",
  "request": {
    "state": {
      "nursing_record": "模拟护理记录:患者骶尾部有持续受压记录,当前护理计划要求立即协助变换体位并减压;健康宣教安排在下午。"
    },
    "questions": {
      "decision": {
        "type": "choice",
        "instructions": "根据记录,选择当前护理计划中应先执行的一项。",
        "criteria": {
          "pressure_relief": "协助变换体位并减压",
          "health_education": "执行下午的健康宣教",
          "routine_documentation": "整理既往护理记录"
        }
      }
    }
  }
}

实际输出:

{
  "id": "nursing_priority",
  "status": "ok",
  "answer": "pressure_relief",
  "probabilities": {
    "pressure_relief": 0.9589,
    "health_education": 0.0205,
    "routine_documentation": 0.0205
  }
}
3. 用药与治疗方案研究

输入:

{
  "id": "medication_contraindication",
  "request": {
    "state": {
      "case": "教学病例:患者明确记录对药物甲过敏。",
      "plans": {
        "plan_a": "方案 A 含药物甲",
        "plan_b": "方案 B 含药物乙",
        "plan_c": "方案 C 含药物丙"
      }
    },
    "questions": {
      "decision": {
        "type": "choice",
        "instructions": "本题规则:包含已记录过敏药物的方案标记为禁忌。选择应被标记的方案。",
        "criteria": {
          "plan_a": "方案 A",
          "plan_b": "方案 B",
          "plan_c": "方案 C"
        }
      }
    }
  }
}

实际输出:

{
  "id": "medication_contraindication",
  "status": "ok",
  "answer": "plan_a",
  "probabilities": {
    "plan_a": 0.9603,
    "plan_b": 0.0212,
    "plan_c": 0.0184
  }
}
4. 随访、宣教与康复演练

输入:

{
  "id": "followup_plan",
  "request": {
    "state": {
      "discharge_plan": "模拟出院计划:出院后第 7 天门诊复查。",
      "current_record": "今天是出院后第 7 天,本题未报告新增症状。"
    },
    "questions": {
      "decision": {
        "type": "choice",
        "instructions": "仅按出院计划选择今天对应的随访安排。",
        "criteria": {
          "scheduled_review": "按计划进行第 7 天门诊复查",
          "delay_one_month": "将首次复查推迟一个月",
          "cancel_followup": "取消后续复查"
        }
      }
    }
  }
}

实际输出:

{
  "id": "followup_plan",
  "status": "ok",
  "answer": "scheduled_review",
  "probabilities": {
    "scheduled_review": 0.964,
    "delay_one_month": 0.0175,
    "cancel_followup": 0.0185
  }
}
5. 指南规则与试验转介匹配

输入:

{
  "id": "trial_referral",
  "request": {
    "state": {
      "trial_rules": "虚构研究初筛条件:年龄 18 至 65 岁,标志物 M 阳性,且无列出的排除项。",
      "case": {
        "age": 52,
        "marker_m": "阳性",
        "listed_exclusion_present": false
      }
    },
    "questions": {
      "decision": {
        "type": "choice",
        "instructions": "仅依据给出的初筛条件判断是否匹配;初筛匹配不代表正式入组。",
        "criteria": {
          "screening_match": "符合所列初筛条件",
          "screening_mismatch": "不符合所列初筛条件",
          "need_more_information": "给定信息不足"
        }
      }
    }
  }
}

实际输出:

{
  "id": "trial_referral",
  "status": "ok",
  "answer": "screening_match",
  "probabilities": {
    "screening_match": 0.9603,
    "screening_mismatch": 0.0198,
    "need_more_information": 0.0199
  }
}
6. 医疗消息分类实验

输入:

{
  "id": "message_classification",
  "request": {
    "state": {
      "message": "您好,我想确认下周三复诊的预约时间。",
      "reported_symptoms": "未报告症状或病情变化。"
    },
    "questions": {
      "decision": {
        "type": "choice",
        "instructions": "按题设规则分类:仅询问预约时间归为常规事务;报告新增不适归为需要临床人员复核;明确求助急救归为紧急求助。",
        "criteria": {
          "routine": "常规事务",
          "clinical_review": "需要临床人员复核",
          "emergency": "紧急求助"
        }
      }
    }
  }
}

实际输出:

{
  "id": "message_classification",
  "status": "ok",
  "answer": "routine",
  "probabilities": {
    "routine": 0.9644,
    "clinical_review": 0.0177,
    "emergency": 0.0179
  }
}

快速开始

以下命令使用 Python 3.12 和 CUDA 12.8 版 PyTorch,已在 Linux / RTX 5090 32 GB 上验证。下载包包含约 130 MB 的已训练适配器、独立推理代码和示例;首次加载还会自动下载约 9.3 GB 的 Qwen3.5-4B 底座,并核对版本与文件校验值。

python3 -m venv .venv
source .venv/bin/activate
pip install torch==2.8.0 --index-url https://download.pytorch.org/whl/cu128
pip install huggingface-hub==1.33.0
hf download JuneYao/medical-jev-4b --revision v1.1.0 --local-dir medical-jev-4b
pip install -r medical-jev-4b/requirements.txt
python medical-jev-4b/predict_choices.py --bundle medical-jev-4b \
  --input medical-jev-4b/examples/scenarios.jsonl

处理自己的数据时,将 --input 替换为 JSONL 文件路径,每行一题;添加 --output predictions.jsonl 保存结果。已有对应版本的底座可用 --base-model /path/to/Qwen3.5-4B 指定。默认批量为 8,显存不足时添加 --batch-size 1。

请使用随包的 predict_choices.py 或 ChoicePredictor 加载:适配器采用自定义 jev-lora-v1 格式,不兼容 PEFT 或聊天生成接口。

自定义输入与 Python 调用

发布包支持 2–52 个候选选项、完整输入最多 8,192 token。长度包含材料、候选和聊天模板;详细说明见 输入格式与运行范围。

JSONL 中每行采用以下结构(展示时展开,保存时写成一行):

{
  "id": "example",
  "request": {
    "state": {"clinical_question": "记录体温 37.0°C;题设阈值为 38.0°C。"},
    "questions": {
      "decision": {
        "instructions": "仅依据题设阈值选择匹配项。",
        "criteria": {"below": "低于阈值", "above": "达到或超过阈值"}
      }
    }
  }
}

state 放题目材料,instructions 放判断要求,criteria 将选项键映射到选项文字。每题只有一个 decision,无需提供正确答案。

也可在 Python 中加载一次后重复调用:

import json
import sys
sys.path.insert(0, "medical-jev-4b")
from jevtrain.inference import ChoicePredictor

model = ChoicePredictor("medical-jev-4b")
with open("medical-jev-4b/examples/scenarios.jsonl", encoding="utf-8") as f:
    requests = [json.loads(line)["request"] for line in f if line.strip()]
print(model.predict(requests))

效果如何

在 jev-healthcare-lab 的 1,514 道外部医疗题上,medical-jev-4b(LoRA)的准确率为 **67.90%**,比原始 4B 提高 7.99 个百分点,尚未超过存档 JEV 1.13。

模型 全部 1,514 题的准确率
原始 Qwen3.5-4B(同一打分方式) 59.91%
medical-jev-4b(LoRA) 67.90%
medical-jev-4b-full(全参数微调) 63.21%
JEV 1.13(存档结果) 70.87%

准确率按全部 1,514 题计算,未能回答的题目也计为错误。JEV 对照为 1.13 版存档,不代表其当前最新版。

当前推荐 LoRA 版。 同一批 44,847 条训练数据上的全参数微调模型,在该基准上低 4.69 个百分点。全量权重 单独提供,训练设置与详细比较见 全参数微调报告。

训练数据与外部基准的题目 ID、来源组和精确题面哈希无交集;这一检查不能排除语义近重复或预训练暴露。另有 1,620 道封存测试题尚未评测。

比较方法、置信区间和逐题结果见 完整评测报告。公开下载文件与 RTX 5090 推理结果的核对见 下载与推理验证记录。

使用范围

适用于给定选项的医疗判断研究与离线评测。分诊仍是明显短板:在基准的 100 道分诊题上,本模型答对 40 道,存档 JEV 答对 66 道。训练标签未经临床专家逐条审核,概率未经校准,不能据此判断真实临床风险或替代专业医疗判断。

默认推理使用 FP16。上述安装方式已通过示例验证;完整基准使用了 FLA / causal-conv1d 优化内核。更换硬件、精度或内核可能带来数值差异,目前没有与 JEV 的实测速度对比。

模型与训练资料

  • 底座:Qwen3.5-4B。精确版本由 inference_config.json 固定。
  • 适配器:全 32 层 LoRA,rank 16,约 3,246 万个训练参数。使用 44,847 条样本训练 2 个 epoch,由验证集选择 step 5,500。本版尚未使用教师软标签或 RSI 迭代。
  • 文件:训练权重、推理代码、示例与评测记录均在本模型仓库中;manifest.json 记录文件校验值。完整训练语料未分发。
  • 许可:代码与适配器采用 MIT,底座采用 Apache-2.0。数据使用条件按各来源许可执行。

训练项目 · 评测基准

Downloads last month

-

Downloads are not tracked for this model. How to track
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Model tree for JuneYao/medical-jev-4b

Finetuned
Qwen/Qwen3.5-4B
Adapter
(1015)
this model