Views
No views yet
| Stage | Method | Objective |
|---|---|---|
| 1 | SFT (LoRA r=16) | General medical knowledge (PubMed, clinical guidelines) |
| 2 | SFT (LoRA r=16) | SOAP note → structured ESI triage decision |
| 3 | DPO (LoRA r=8) | Reduce over-triage · preserve ESI 1/2 high-risk recall |
vadimbelsky/qwen3.5-medical-ft-stage2)dpo_dataset_v4.jsonl — 5,413 raw pairs → 7,789 weighted pairsapo_down × 0.3 + sft × 1.0 (MPO-style)ESI 2 — Emergent (high risk)\n\n...) to anchor preference signal at token position 0| Source | Description | Raw pairs | Weight | Weighted |
|---|---|---|---|---|
| A | Anti-overtriage synthetic (ESI 3→1/2 rejected) | 2,388 | 1× | 2,388 |
| B | Anti-overtriage synthetic (ESI 4/5→1/2 rejected) | 1,500 | 1× | 1,500 |
| C | Edge cases (synthetic boundary scenarios) | 39 | 1× | 39 |
| D | ESI 1/2 anchor pairs (high-risk recall preservation) | 890 | 3× | 2,670 |
| E-over | ESI 3 bidirectional — anti-overtriage | 297 | 2× | 594 |
| E-under | ESI 3 bidirectional — anti-undertriage | 299 | 2× | 598 |
| Total | 5,413 | 7,789 |
| Metric | Stage 2 (SFT) | v1 DPO | v2 DPO | v3 DPO | v4 DPO | Target |
|---|---|---|---|---|---|---|
| Accuracy | ~68% | 55.6% | 50.0% | 27.8% | 75.0% | >82% |
| Over-triage rate | ~22% | 22.2% | 30.6% | 0% | 13.9% | <10% |
| Under-triage rate | ~8% | 36.1% | 41.7% | 72.2% | 11.1% | <6% |
| High-risk recall (ESI 1+2) | ~84% | 76% | 64% | 40% | 92% | 100% |
| ESI 3 accuracy | ~45% | ~40% | ~30% | ~0% | 60% | >65% |
Samples evaluated : 36
ESI level parsed : 36 / 36
Correct : 27
Accuracy : 75.0%
Under-triage rate : 11.1% (4 cases)
Over-triage rate : 13.9% (5 cases)
High-risk recall : 92.0% (ESI 1+2, n=25)| ESI Level | N | Correct | Accuracy |
|---|---|---|---|
| ESI 1 | 14 | 12 | 85.7% |
| ESI 2 | 11 | 9 | 81.8% |
| ESI 3 | 5 | 3 | 60.0% |
| ESI 4 | 4 | 2 | 50.0% |
| ESI 5 | 2 | 1 | 50.0% |
GT \ Pred ESI 1 ESI 2 ESI 3 ESI 4 ESI 5
ESI 1 12 2 0 0 0
ESI 2 0 9 2 0 0
ESI 3 0 2 3 0 0
ESI 4 0 0 2 2 0
ESI 5 0 0 0 1 1apo_down + sft combined loss preserves ESI 1/2 recall via SFT component; (3) Sources D (ESI 1/2 anchors ×3) + E (ESI 3 bidirectional ×2) balance dataset direction1# Requires llama.cpp server running with the Q4_K_M GGUF
2# llama-server --model qwen3.5-medical-ft-stage3-dpo-q4km.gguf --port 8080 -c 4096
3
4from openai import OpenAI
5client = OpenAI(base_url="http://localhost:8080/v1", api_key="none")
6
7SYSTEM_PROMPT = (
8 "You are an expert emergency medicine triage nurse. "
9 "Given a SOAP intake note, provide a structured triage decision including "
10 "ESI level with justification, key clinical findings, time-to-provider target, "
11 "and any immediate interventions required."
12)
13
14response = client.chat.completions.create(
15 model="local",
16 messages=[
17 {"role": "system", "content": SYSTEM_PROMPT},
18 {"role": "user", "content": "<SOAP intake note here>"},
19 ],
20 temperature=0.1,
21 max_tokens=512,
22)
23print(response.choices[0].message.content)⚠️ This model is for research purposes only. It must NOT be used for clinical decision-making without licensed clinician oversight.