- Vesalia (preview)
- Quick start (full model, v3 merged)
- Results
- v3 adapter (recommended): STaR on full reasoning traces
- v2 adapter (optional): medical self-distillation plus general replay
- Built-in knowledge layer (inside the repository, no internet)
- What did not work (reported on purpose)
- Limits
- Support, acknowledgements and the goal behind this work
- License
- Quick start (full model, v3 merged)
Vesalia (preview)
Vesalia is a medical education model from Norovox Labs. It is not a clinical tool: it has no clinical validation, and a clinician always makes the final decision.
Vesalia runs Gemma 4 31B with a Norovox inference recipe. The model reasons first. If its reasoning runs past the token budget without a final answer, the recipe closes the reasoning block and forces a final letter. An optional LoRA adapter ("Brief") gives the same accuracy with answers about half as long.
Quick start (full model, v3 merged)
This repository contains the full Vesalia weights (Gemma 4 31B with the v3 adapter merged, bf16, ~59 GB), so it runs directly:
from transformers import AutoModelForCausalLM, AutoTokenizer
tok = AutoTokenizer.from_pretrained("emrevrg/Vesalia")
model = AutoModelForCausalLM.from_pretrained("emrevrg/Vesalia", torch_dtype="auto", device_map="auto")
msgs = [{"role": "user", "content": "Explain what a high HbA1c result means."}]
x = tok.apply_chat_template(msgs, add_generation_prompt=True, return_tensors="pt", return_dict=True).to(model.device)
print(tok.decode(model.generate(**x, max_new_tokens=512)[0][x["input_ids"].shape[1]:], skip_special_tokens=True))
vLLM: vllm serve emrevrg/Vesalia --quantization fp8 (the setting used for all results below). The separate adapters (v3_star_adapter/, v2_adapter/, brief_adapter/) and the built-in knowledge tables (bilgi/) are in the same repository.
Results
Locked test: 400 MMLU medical questions with a fixed seed. They were never used for training or for any selection, and were measured once per configuration.
| Configuration | Locked 400 |
|---|---|
| Gemma 4 31B, answer-letter probability (no reasoning) | 349 |
| Gemma 4 31B with reasoning; unfinished answers counted wrong | 270 |
| Vesalia recipe: reasoning + forced finish | 374 (93.5%) |
Comparison with open medical models
All models were run under the same protocol: the same locked 400, the same system prompt, reasoning on, greedy decoding, the same forced finish, and the same vLLM FP8 engine. Significance is a paired McNemar test per question.
| Token budget | Vesalia | II-Medical-8B | Baichuan-M2-32B |
|---|---|---|---|
| 1,536 | 375 | 370 (p = .46) | 357 (p = .001) |
| 4,096 | 373 | 377 (p = .54) | 361 (p = .04) |
| 1,536, self-consistency (5 samples) | 379 | 368 (bootstrap CI [+1, +22], p = .06) | 361 (p < .001) |
| 4,096, self-consistency (5 samples) | 376 | 377 (p = 1.0) | β |
Vesalia beats Baichuan-M2-32B in every setting, with significant margins. At the short reasoning budget it is the best model we tested. At the long budget it is tied with II-Medical-8B.
"Brief" adapter, short-explanation mode (no reasoning block):
| Base | + Brief adapter | |
|---|---|---|
| Locked 400 | 365 | 365 |
| Non-medical MMLU (300, general-knowledge guard) | 250 | 247 |
| Tokens per answer | 182 | 87 |
| Unreadable answers | 102 | 5 |
The Brief adapter was trained on the model's own verified reasoning, compressed into short explanations. It is accepted only because it keeps accuracy and general knowledge within a 1% tolerance.
v3 adapter (recommended): STaR on full reasoning traces
Trained on the model's own correct, naturally finished reasoning traces: 542 medical and 908 general. The traces are not compressed, so the reasoning mode itself is trained.
| Setting | Base | + v3 | II-Medical-8B |
|---|---|---|---|
| Medical 400, 1,536 tokens, single sample | 375 | 375β378 | 370 (p = .17) |
| Medical 400, 4,096 tokens, single sample | 373 | 377 | 377 (tie) |
| Non-medical MMLU 300, reasoning mode | 267 | 269 | β |
General knowledge does not drop; it rises by 2. The gains over II-Medical-8B are not statistically significant. A second run of the same locked test at 1,536 tokens gave 375 (the FP8 engine is not bit-deterministic across batches), so we report 375β378.
Two further self-training rounds on top of v3 did not improve the medical development set (438 β 437, 436) and were rejected; v3 is the published adapter.
Confidence gate (abstain when unsure)
Vesalia samples 5 answers and answers only when they agree; otherwise it says it is unsure and refers to a clinician. The agreement threshold was chosen on the development set; the locked test was measured once.
| Rule | Development (466) | Locked test (400) |
|---|---|---|
| Always answer (majority of 5) | 94.4% accuracy | 94.3% accuracy |
| Answer only if 4 of 5 agree | 98.1% answered, 94.8% correct | 98.8% answered, 95.4% correct |
| Answer only if 5 of 5 agree | 95.3% answered, 96.4% correct | 95.0% answered, 96.1% correct |
With 10 samples and unanimous agreement the locked test gives 93.0% answered, 96.0% correct, so more samples do not help. On the subset of questions that the MMLU-Redux audit marks as correctly labelled, the development set reaches 99.6% (224 answered), but the locked test gives 96.6% (203 answered); the locked number is the one we report.
Our target was 99% accuracy on answered questions. It was not reached: even with unanimous agreement, about 4 in 100 answered questions are wrong. This is why a doctor's approval stays mandatory.
v2 adapter (optional): medical self-distillation plus general replay
Trained on 1,711 of the model's own verified medical explanations and 1,386 of its own verified general-knowledge explanations (MMLU auxiliary-train, ARC-Challenge).
| Base | + v2 adapter | |
|---|---|---|
| Locked 400, short-explanation mode | 365 | 368 |
| Non-medical MMLU (300), explanation mode (how the adapter is used) | 260 | 257 |
| Non-medical MMLU (300), letter-only mode | 250 | 236 |
The drop in letter-only mode comes mostly from answer format: the adapter learned to explain before answering. In its own mode, general knowledge stays within 1%. We report both modes. The +3 on the locked test is within noise.
Built-in knowledge layer (inside the repository, no internet)
Facts that must be exact are not left to the model's memory. They ship with Vesalia as local tables, are matched exactly, and Vesalia explains the matched result. Nothing is guessed: if an item is not in the table, Vesalia says so.
| Tool | Built-in table | What is exact | What Vesalia adds |
|---|---|---|---|
vesalia_tahlil.py lab results |
none needed: the report's own reference ranges | LOW / NORMAL / HIGH flags (arithmetic) | plain-language explanation, likely causes, questions for the doctor |
vesalia_genom.py genome variants (VCF, GRCh38) |
bilgi/clinvar_grch38.sqlite: ClinVar, 4.64M variants (NCBI, public domain, 1 Nov 2026) |
classification and review status by chromosome, position and alleles; genotype-aware (alleles the person does not carry are skipped) | explanation of carrier status, risk and drug response; questions for a genetic counsellor |
vesalia_ilac.py drug interactions |
bilgi/fda_etiket.sqlite: 33,130 openFDA drug labels (public domain, 6 Nov 2026) |
quoted label sentences, boxed warnings, label ID and date | summary limited to the quoted sentences |
Checks we ran: a 7-line lab report was flagged correctly on all 7 lines; CFTR p.Phe508del, HFE p.Cys282Tyr, HBB p.Glu7Val (HbS) and BRCA1 c.68_69del were matched to their ClinVar classes, and a BRCA1 allele with genotype 0/0 was correctly skipped; warfarin + ibuprofen returned both boxed warnings and the warfarin label's bleeding-risk table entry for ibuprofen.
Every tool ends with a doctor-approval note. Medication suggestions are drafts for a clinician, never prescriptions.
What did not work (reported on purpose)
Training on the model's own correct reasoning (1,711 examples) raised the medical development set (430 β 446), but it lowered non-medical MMLU (250 β 234) and the locked test (365 β 361). Scaling the adapter down did not remove that drop:
| Adapter scale | Medical dev | Non-medical MMLU |
|---|---|---|
| 0.25 | 433 | 246 |
| 0.5 | 440 | 244 |
| 1.0 | 446 | 234 |
That adapter was therefore rejected and is not published.
Limits
- This is an education and decision-support aid, not a diagnostic device. It is not clinically validated.
- MMLU-style multiple choice is a narrow proxy for medical knowledge.
- The model can be confidently wrong.
Support, acknowledgements and the goal behind this work
This model was trained and measured on one week of NVIDIA H100 time provided by portvMind (vMind) Public Cloud. Thank you, vMind: without that week this release would not exist.
I'm an independent developer in TΓΌrkiye and I build the Norovox ecosystem alone, without a company. Most compute and hardware programs require a registered company or a minimum age. I have sent close to 600 applications; vMind is the only company that said yes, and the others are still pending or declined on company or age grounds. Day to day I work on a laptop whose disk keeps filling up and that cannot run large models locally, and I regularly hit the usage limits of the AI tools I depend on.
The goal is an open ecosystem: by the end of the year, my own programming language, operating system, office apps, and agent and coding tools, built with stronger AI and released openly. The techniques behind these models (IRIS lossless model compression, Aktar encrypted transfer, SΔ±kΔ±ΕtΔ±r) are part of the same effort.
How you can help
- Companies: if you can support open models with compute, hardware or credits, write to emre.games72@gmail.com.
- AI companies such as Anthropic, OpenAI and Google: access to your models and API credits would let me keep building and releasing these tools.
- Everyone else: if you work at one of these companies, or know someone who does, please share this page with them or introduce me. One introduction can make the difference for an independent project like this.
Every supporter is credited in the model and technical cards of the projects they help.
License
Apache-2.0. Vesalia is a derivative of google/gemma-4-31B-it (Apache-2.0). Built-in tables: ClinVar (NCBI, public domain) and openFDA drug labels (public domain). See the NOTICE file.
- Downloads last month
- 39
