Views
No views yet

[!Note] We're introducing EuroLLM-9B-MeditronFO, our latest small medical specialist LLM, medical specialization of EuroLLM-9B-Instruct on the Fully Open Meditron Corpus. This model is part of the Fully Open Meditron family — the first end-to-end auditable pipeline for clinical LLMs, with open weights, open data, open training recipe, and clinician-vetted corpus construction.

| Benchmark | EuroLLM-9B-Instruct | EuroLLM-9B-MeditronFO | Δ |
|---|---|---|---|
| MedMCQA | 37.84 | 46.98 | +9.14 |
| MedQA | 48.55 | 49.73 | +1.18 |
| PubMedQA | 40.00 | 67.40 | +27.40 |
| MedXpertQA | 10.33 | 11.63 | +1.30 |
| HealthBench Hard | 13.47 | 31.62 | +18.15 |
| Average | 30.04 | 41.47 | +11.43 |
1from transformers import AutoModelForCausalLM, AutoTokenizer
2import torch
3
4model_id = "EPFLiGHT/EuroLLM-9B-MeditronFO"
5tokenizer = AutoTokenizer.from_pretrained(model_id)
6model = AutoModelForCausalLM.from_pretrained(
7 model_id,
8 torch_dtype=torch.bfloat16,
9 device_map="auto",
10)
11
12messages = [
13 {"role": "user", "content": "A 62-year-old woman presents with a three-day history of dyspnea on exertion and a productive cough. What is the differential diagnosis?"},
14]
15inputs = tokenizer.apply_chat_template(
16 messages,
17 add_generation_prompt=True,
18 tokenize=True,
19 return_dict=True,
20 return_tensors="pt",
21).to(model.device)
22
23outputs = model.generate(**inputs, max_new_tokens=512, do_sample=False)
24print(tokenizer.decode(outputs[0][inputs["input_ids"].shape[-1]:], skip_special_tokens=True))1@misc{theimerlienhard2026fullyopenmeditronauditable,
2 title = {Fully Open Meditron: An Auditable Pipeline for Clinical LLMs},
3 author = {Xavier Theimer-Lienhard and Mushtaha El-Amin and Fay Elhassan and Sahaj Vaidya and Victor Cartier-Negadi and David Sasu and Lars Klein and Mary-Anne Hartley},
4 year = {2026},
5 eprint = {2605.16215},
6 archivePrefix = {arXiv},
7 primaryClass = {cs.AI},
8 url = {https://arxiv.org/abs/2605.16215}
9}