Text Generation
Transformers
Safetensors
Korean
English
medical
healthcare
korean
english
gemma4
lora
Instructions to use ZeroOneAI/ZEO-Med-2 with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use ZeroOneAI/ZEO-Med-2 with Transformers:
# Use a pipeline as a high-level helper from transformers import pipeline pipe = pipeline("text-generation", model="ZeroOneAI/ZEO-Med-2")# Load model directly from transformers import AutoModel model = AutoModel.from_pretrained("ZeroOneAI/ZEO-Med-2", device_map="auto") - Notebooks
- Google Colab
- Kaggle
- Local Apps Settings
- vLLM
How to use ZeroOneAI/ZEO-Med-2 with vLLM:
Install from pip and serve model
# Install vLLM from pip: pip install vllm # Start the vLLM server: vllm serve "ZeroOneAI/ZEO-Med-2" # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:8000/v1/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "ZeroOneAI/ZEO-Med-2", "prompt": "Once upon a time,", "max_tokens": 512, "temperature": 0.5 }'Use Docker
docker model run hf.co/ZeroOneAI/ZEO-Med-2
- SGLang
How to use ZeroOneAI/ZEO-Med-2 with SGLang:
Install from pip and serve model
# Install SGLang from pip: pip install sglang # Start the SGLang server: python3 -m sglang.launch_server \ --model-path "ZeroOneAI/ZEO-Med-2" \ --host 0.0.0.0 \ --port 30000 # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:30000/v1/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "ZeroOneAI/ZEO-Med-2", "prompt": "Once upon a time,", "max_tokens": 512, "temperature": 0.5 }'Use Docker images
docker run --gpus all \ --shm-size 32g \ -p 30000:30000 \ -v ~/.cache/huggingface:/root/.cache/huggingface \ --env "HF_TOKEN=<secret>" \ --ipc=host \ lmsysorg/sglang:latest \ python3 -m sglang.launch_server \ --model-path "ZeroOneAI/ZEO-Med-2" \ --host 0.0.0.0 \ --port 30000 # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:30000/v1/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "ZeroOneAI/ZEO-Med-2", "prompt": "Once upon a time,", "max_tokens": 512, "temperature": 0.5 }' - Docker Model Runner
How to use ZeroOneAI/ZEO-Med-2 with Docker Model Runner:
docker model run hf.co/ZeroOneAI/ZEO-Med-2
| language: | |
| - ko | |
| - en | |
| license: apache-2.0 | |
| library_name: transformers | |
| pipeline_tag: text-generation | |
| base_model: | |
| - google/gemma-4-31B-it | |
| tags: | |
| - medical | |
| - healthcare | |
| - korean | |
| - english | |
| - gemma4 | |
| - lora | |
| extra_gated_heading: "Access ZEO Med 2" | |
| extra_gated_description: > | |
| ZEO Med 2, including the LoRA adapter weights, is released under the Apache | |
| License 2.0. Commercial use, modification and redistribution are permitted | |
| under that license. Access is granted automatically once you share your contact | |
| information. | |
| extra_gated_button_content: "Agree and access" | |
| extra_gated_prompt: > | |
| By requesting access you confirm that you have read the Apache License 2.0 and | |
| the medical-use limitations described in this model card. | |
| extra_gated_fields: | |
| Full legal name: text | |
| Organization: text | |
| Department or role: text | |
| Country: country | |
| Intended use: | |
| type: select | |
| options: | |
| - Academic research | |
| - Education | |
| - Non-commercial evaluation | |
| - Internal enterprise evaluation | |
| - Internal proof of concept | |
| - Commercial product or service | |
| - Clinical or healthcare deployment | |
| - Model training or distillation | |
| - Other | |
| Please briefly describe your intended use: text | |
| I understand that the model is not approved for autonomous diagnosis, prescription, or treatment: checkbox | |
| <div align="center"> | |
| <picture> | |
| <source media="(prefers-color-scheme: dark)" srcset="https://huggingface.co/ZeroOneAI/ZEO-Med-2/media/main/zeroone-logo-dark.png"> | |
| <source media="(prefers-color-scheme: light)" srcset="https://huggingface.co/ZeroOneAI/ZEO-Med-2/media/main/zeroone-logo-light.png"> | |
| <img src="./zeroone-logo-light.png" width="620" alt="ZeroOne AI"> | |
| </picture> | |
| <img src="./zeroone-logo-dark.png" alt="" hidden> | |
| </div> | |
| <hr> | |
| <div align="center"> | |
| [](https://ainode.ai) | |
| [](https://zeroone.ai) | |
| [](https://huggingface.co/ZeroOneAI/ZEO-Med-2/blob/main/evaluation-code/README.md) | |
| [](https://huggingface.co/ZeroOneAI/ZEO-Med-2/blob/main/LICENSE) | |
| </div> | |
| ## 1. Model Introduction | |
| **ZEO = Zero ยท Expert ยท One.** ZEO is ZeroOne AI's model family that brings | |
| expert-level intelligence into the journey from zero to one. **ZEO Med** is a ZEO | |
| model specialized for medical use, designed to deliver expert-level medical | |
| reasoning in secure enterprise and hospital environments. | |
| ZEO Med 2 is a medical language model for Korean healthcare licensing | |
| examinations and English medical question answering. On the Korean doctor | |
| licensing exam it is state of the art among open-weight models measured under | |
| the same evaluation setup, and on the nurse, pharmacist and dentist exams and on | |
| MedQA-USMLE it stays in the top tier. | |
| ZEO Med 2 was developed by ZeroOne AI together with Samsung Medical Center, | |
| under the Advanced GPU Utilization Support Program of the Ministry of Science | |
| and ICT, Republic of Korea. See [Acknowledgements](#12-acknowledgements). | |
| ## 2. Model Summary | |
| <div align="center"> | |
| | | | | |
| |:---:|:---:| | |
| | **Model** | ZEO Med 2 | | |
| | **Base model** | google/gemma-4-31B-it | | |
| | **Adaptation** | LoRA adapter (medical post-training) | | |
| | **Domain** | Medical question answering | | |
| | **Languages** | Korean, English | | |
| | **Answering** | Single chat-completion call; internal reasoning, final answer scored | | |
| | **Decoding** | temperature 0.7, top-p 0.95, 5 samples, majority vote | | |
| | **Max Tokens** | 8,192 | | |
| | **Weights** | LoRA adapter included (open weights) | | |
| | **License** | Apache License 2.0 | | |
| </div> | |
| ## 3. Evaluation Results | |
| Every score below was measured under the same conditions. The model is never | |
| shown worked examples with their answers beforehand (0-shot), and each sample | |
| uses one prompt and one call in which the model reasons and then gives its final | |
| answer in the same response โ there is no second call asking for the answer. | |
| Each question is sampled five times and the most frequent answer is taken as the | |
| answer for that question. | |
| ### 3.1 Open-weight models measured under the same setup | |
| <div align="center"> | |
|  | |
| </div> | |
| Doctor, Nurse, Pharmacist and Dentist are the Korean national licensing | |
| examinations (KorMedMCQA). Every model in this table was measured by us under | |
| the contract | |
| `final-sc5-medical-private-cot-final-answer-0shot-onecall-max8192-v1`. | |
| <div align="center"> | |
| | Model | MedQA-USMLE | Doctor | Nurse | Pharmacist | Dentist | 4-exam average | | |
| |---|---:|---:|---:|---:|---:|---:| | |
| | **ZEO Med 2** | <span style="background-color:#0b7285;color:#ffffff;padding:2px 6px;border-radius:4px"><b>94.82% (1207/1273)</b></span> | <span style="background-color:#0b7285;color:#ffffff;padding:2px 6px;border-radius:4px"><b>97.70% (425/435)</b></span> | <span style="background-color:#0b7285;color:#ffffff;padding:2px 6px;border-radius:4px"><b>96.36% (846/878)</b></span> | 94.69% (838/885) | 87.05% (706/811) | <span style="background-color:#0b7285;color:#ffffff;padding:2px 6px;border-radius:4px"><b>93.95%</b></span> | | |
| | Gemma-4-31B-it | 94.74% (1206/1273) | 97.01% (422/435) | 96.24% (845/878) | **95.03% (841/885)** | **87.42% (709/811)** | 93.93% | | |
| | Qwen3.6-27B | 94.11% (1198/1273) | 93.56% (407/435) | 95.22% (836/878) | 93.90% (831/885) | 83.23% (675/811) | 91.48% | | |
| | Qwen3.6-35B-A3B | 94.34% (1201/1273) | 93.10% (405/435) | 93.28% (819/878) | 92.77% (821/885) | 82.00% (665/811) | 90.29% | | |
| | Mistral Medium 3.5 ยถ | 91.99% (1171/1273) | 90.80% (395/435) | 93.51% (821/878) | 92.99% (823/885) | 80.39% (652/811) | 89.42% | | |
| | HARI-Q2.5-Thinking * | 88.36% | 89.20% | 90.99% | 90.94% | 72.96% | 86.02% | | |
| | gpt-oss-120b (native/default thinking) ยถ | 92.38% (1176/1273) | 86.67% (377/435) | 89.07% (782/878) | 89.15% (789/885) | 75.83% (615/811) | 85.18% | | |
| | Nemotron 3 Nano | 88.45% (1126/1273) | 83.22% (362/435) | 86.67% (761/878) | 85.76% (759/885) | 66.46% (539/811) | 80.53% | | |
| | Nemotron 3 Nano Omni | 83.03% (1057/1273) | 81.84% (356/435) | 83.71% (735/878) | 88.02% (779/885) | 66.09% (536/811) | 79.92% | | |
| | MedGemma 1.0 | 86.65% (1103/1273) | 72.41% (315/435) | 78.70% (691/878) | 75.37% (667/885) | 60.79% (493/811) | 71.82% | | |
| | MedGemma 1.5 | 72.43% (922/1273) | 67.59% (294/435) | 67.65% (594/878) | 67.23% (595/885) | 49.08% (398/811) | 62.89% | | |
| </div> | |
| <details> | |
| <summary><b>Footnotes</b></summary> | |
| - No mark: results we evaluated directly on open-weight/adapter models under the | |
| 0-shot SC@5 family of contracts. Per-model differences in runtime and parser | |
| are published in [PROTOCOL.md](report/PROTOCOL.md). | |
| - `*` HARI: values published on its | |
| [official model card](https://huggingface.co/snuh/hari-q2.5-thinking). The four | |
| KorMedMCQA exams are 5-shot and MedQA-USMLE is 0-shot, and `KorMed4 macro` is | |
| the simple average of the published Doctor/Nurse/Pharmacist/Dentist scores. | |
| - `ยถ` Mistral ยท gpt-oss: reference values from our own evaluation, run with a | |
| different reasoning setting from the rest of the table. Mistral Medium 3.5 ran | |
| with explicit high reasoning. gpt-oss-120b ran with its native/default | |
| thinking setting, which is why it is not labelled `gpt-oss-120b (high)`. | |
| </details> | |
| ### 3.2 KMed.ai | |
| KMed.ai reported an average of `96.4 points` on the 2025 Korean national doctor | |
| licensing examination, in the | |
| [official announcement by Seoul National University Hospital and NAVER](https://www.snuh.org/board/B003/view.do?bbs_no=7351). | |
| That is a score on the actual national examination, not on the KorMedMCQA | |
| benchmark used throughout this model card. The two are different examinations | |
| with different items, so the figure is not converted to `%`, no gap against | |
| ZEO Med 2 is derived from it, and it is not placed in the table above. | |
| ### 3.3 Frontier API models | |
| Gemini 3.1 Flash-Lite is a closed model reachable only through an API, so it is | |
| listed separately from the open-weight models in | |
| [the Section 3.1 table](#31-open-weight-models-measured-under-the-same-setup). We | |
| measured it ourselves through OpenRouter under the same evaluation conditions as | |
| [the Section 3.1 table](#31-open-weight-models-measured-under-the-same-setup). | |
| <div align="center"> | |
| | Model | MedQA-USMLE | Doctor | Nurse | Pharmacist | Dentist | 4-exam average | | |
| |---|---:|---:|---:|---:|---:|---:| | |
| | **ZEO Med 2** | <span style="background-color:#0b7285;color:#ffffff;padding:2px 6px;border-radius:4px"><b>94.82% (1207/1273)</b></span> | <span style="background-color:#0b7285;color:#ffffff;padding:2px 6px;border-radius:4px"><b>97.70% (425/435)</b></span> | 96.36% (846/878) | 94.69% (838/885) | 87.05% (706/811) | 93.95% | | |
| | Gemini 3.1 Flash-Lite | 94.42% (1202/1273) | 96.09% (418/435) | **96.47%** | **96.05%** | **90.26%** | **94.72%** | | |
| </div> | |
| The ZEO Med 2 row repeats the scores from | |
| [the Section 3.1 table](#31-open-weight-models-measured-under-the-same-setup). | |
| ZEO Med 2 leads on MedQA-USMLE and on the | |
| Korean doctor licensing examination. Gemini 3.1 Flash-Lite leads on the nurse, | |
| pharmacist and dentist examinations and on the four-exam average. This is a | |
| controlled comparison under matching evaluation conditions. | |
| Gemini 3.1 Flash-Lite's nurse, pharmacist and dentist scores are recorded as | |
| percentages only, so no item counts are shown for those three cells. | |
| ## 4. Evaluation Protocol | |
| Each question is answered in **one** chat-completion call. The model performs its | |
| reasoning inside that single call and then emits a final answer line; the scorer | |
| reads only that line. There is no separate rationale request and no second call, | |
| and hidden reasoning is neither scored nor released. | |
| Prompting is template-driven. A system template fixes the answering format and a | |
| user template carries the question, the option list and the option labels through | |
| `{question}`, `{choices}` and `{labels}` placeholders. The exact templates used | |
| for these scores are published here: | |
| [KorMedMCQA system](report/PROMPTS/medical_private_kormed_system_template_v0.txt) ยท | |
| [KorMedMCQA user](report/PROMPTS/medical_private_kormed_user_template_v0.txt) ยท | |
| [MedQA system](report/PROMPTS/medical_private_medqa_system_template_v0.txt) ยท | |
| [MedQA user](report/PROMPTS/medical_private_medqa_user_template_v0.txt). | |
| They hold placeholders only and carry no benchmark question text. Filled-in | |
| prompts are not published. | |
| Five samples are taken per question and the answer is the one most of them agree | |
| on. If a sample runs out of tokens before it finishes, that is recorded and | |
| published together with the score instead of being hidden. | |
| The full setup is written out in [PROTOCOL.md](report/PROTOCOL.md). | |
| ## 5. Run the Model | |
| ZEO Med 2 is a LoRA adapter over `google/gemma-4-31B-it`. Serving loads the base | |
| model and applies the adapter โ you do not merge weights. The adapter files are | |
| in this repository under | |
| `evaluation-code/artifacts/adapter/ZEO-Med-31B-Adapter-v1/` | |
| (`adapter_model.safetensors`, `adapter_config.json`); access is gated with | |
| automatic approval (see [Section 10, License](#10-license)). | |
| ### Serve with vLLM | |
| The served model id is `ZEO-Med-31B-Adapter-v1` (the identifier used throughout | |
| the evaluation scripts); on Hugging Face the model is shown as ZEO Med 2. | |
| ```bash | |
| python -m vllm.entrypoints.openai.api_server \ | |
| --model google/gemma-4-31B-it \ | |
| --enable-lora \ | |
| --lora-modules ZEO-Med-31B-Adapter-v1=evaluation-code/artifacts/adapter/ZEO-Med-31B-Adapter-v1 \ | |
| --max-lora-rank 8 \ | |
| --dtype bfloat16 \ | |
| --language-model-only \ | |
| --reasoning-parser gemma4 \ | |
| --max-model-len 16384 | |
| ``` | |
| `serve_vllm.sh` ([Section 6, Reproduce the Evaluation](#6-reproduce-the-evaluation)) | |
| wraps this exact command with the pinned base | |
| revision and the adapter hash check. | |
| ### Chat | |
| ```python | |
| from openai import OpenAI | |
| client = OpenAI(base_url="http://localhost:8000/v1", api_key="EMPTY") | |
| resp = client.chat.completions.create( | |
| model="ZEO-Med-31B-Adapter-v1", | |
| messages=[ | |
| {"role": "user", "content": "๊ณ ํ์ 1์ฐจ ์ฝ์ ์ ํ์ ์ผ๋ฐ์ ์์น์ ์ค๋ช ํด์ค."}, | |
| ], | |
| temperature=0.7, | |
| top_p=0.95, | |
| max_tokens=8192, | |
| ) | |
| print(resp.choices[0].message.content) | |
| ``` | |
| The model reasons internally within the single call and returns the final answer | |
| in `content`. The base model's tokenizer and chat template are used; the adapter | |
| does not replace them. | |
| > The model is for research and non-clinical use. See Sections 7 and 8. | |
| ## 6. Reproduce the Evaluation | |
| This is separate from [Section 5, Run the Model](#5-run-the-model): here you | |
| re-run the exact 0-shot SC@5 contract to | |
| reproduce the published scores. Benchmark question text is not redistributed โ | |
| bring your own licensed copy of the datasets. Full step-by-step instructions, | |
| including the CPU-only package self-test, are in the | |
| [evaluation-code guide](evaluation-code/README.md). | |
| `run_full5_reproduction.sh` does not start vLLM itself: you first serve the five | |
| task endpoints (with `serve_vllm.sh zeo`), then pass their URLs, PIDs, and the | |
| input/manifest directories as environment variables. It requires all of the | |
| following to be set: | |
| ```bash | |
| export PACKAGE_ROOT=/path/to/evaluation-code | |
| export MODEL_PACKAGE_ROOT=/path/to/evaluation-code | |
| export SERVE_PY=/path/to/vllm-0.23.0/bin/python | |
| export SERVED_MODEL=ZEO-Med-31B-Adapter-v1 | |
| export SERVING_MODE=dynamic_lora | |
| export FULL5_INPUT_DIR=/path/to/full5-inputs # your licensed benchmark rows | |
| export FULL5_MANIFEST_DIR=/path/to/full5-manifests | |
| export OUTPUT_ROOT=/path/to/new-full5-output | |
| export NUM_WORKERS=48 | |
| export REQUEST_SEED=42 | |
| # one URL + PID per task, from the endpoints you started with serve_vllm.sh: | |
| export DOCTOR_URL=... NURSE_URL=... PHARMACIST_URL=... DENTIST_URL=... MEDQA_URL=... | |
| export DOCTOR_SERVE_PID=... NURSE_SERVE_PID=... PHARMACIST_SERVE_PID=... DENTIST_SERVE_PID=... MEDQA_SERVE_PID=... | |
| bash evaluation-code/scripts/run_full5_reproduction.sh | |
| ``` | |
| A full-5 macro delta of zero and an all-task match indicate a successful | |
| reproduction. | |
| ## 7. Evaluation Datasets | |
| The scores above were measured on the public test sets below. Because of the | |
| licenses of those test sets, no question text or dataset file is redistributed | |
| here; anyone reproducing the measurement obtains them under their own terms. | |
| - [KorMedMCQA](https://huggingface.co/datasets/sean0042/KorMedMCQA) โ doctor, | |
| nurse, pharmacist and dentist configurations, `test` split, revision | |
| `79efd6f91edfc8036330d7a4daa88b9f2deb9a82`. The dataset card states | |
| `CC-BY-NC-2.0`. | |
| - [MedQA-USMLE-4-options](https://huggingface.co/datasets/GBaker/MedQA-USMLE-4-options) | |
| โ `test` split, revision `0fb93dd23a7339b6dcd27e241cb9b5eca62d4d18`. The | |
| dataset card states `CC-BY-4.0`. | |
| Question text is excluded from this repository by publication policy. This is a | |
| release-control decision, not legal advice. | |
| ## 8. Intended Use and Limitations | |
| ZEO Med 2 is released for research, education, evaluation, and product | |
| development. It is not a medical device and is not approved for autonomous | |
| diagnosis, prescription, treatment, or other independent clinical | |
| decision-making, and may not be used as the sole basis for a clinical decision. | |
| Any healthcare deployment must include qualified professional oversight, | |
| institution-specific validation, and compliance with applicable laws. | |
| The published scores measure exam-style multiple-choice answer selection under | |
| one fixed setup and do not establish clinical safety or diagnostic accuracy. | |
| ## 9. Base Model and Modifications | |
| ZEO Med 2 is a modified and fine-tuned derivative of: | |
| - Base model: `google/gemma-4-31B-it` (revision `3548789868c5356dbf307c98e6f609007b82b3eb`) | |
| - Base model license: Apache License 2.0 (Developer: Google) | |
| - Modifications by ZeroOne AI: medical-domain LoRA fine-tuning, Korean/English | |
| medical instruction tuning, response alignment, and configuration changes | |
| ZEO Med 2 is not affiliated with, endorsed by, or sponsored by Google. The full | |
| license text is in [`LICENSE`](LICENSE); attribution and modification notices are | |
| in [`NOTICE`](NOTICE). | |
| ## 10. License | |
| ZEO Med 2 is released under the [Apache License 2.0](LICENSE), and that includes | |
| the LoRA adapter weights. Commercial use, modification, and redistribution are | |
| permitted under that license. | |
| The base model `google/gemma-4-31B-it` is under the same license. Attribution and | |
| the list of modifications made by ZeroOne AI are in [`NOTICE`](NOTICE), which you | |
| must retain when redistributing the model or a derivative of it, as required by | |
| Section 4 of the license. | |
| Access to the repository files is gated with automatic approval: you share | |
| your contact information once and access is granted immediately. | |
| ## 11. Contact | |
| - Email: [zeo@zeroone.ai](mailto:zeo@zeroone.ai) | |
| - Company: [zeroone.ai](https://zeroone.ai) | |
| - Product: [AInode](https://ainode.ai) | |
| ## 12. Acknowledgements | |
| ZEO Med 2 was developed under the Advanced GPU Utilization Support Program of the | |
| Ministry of Science and ICT, Republic of Korea, project no. `02-26-01-0282`, | |
| awarded to Samsung Medical Center. | |
| We thank the research team of the Department of Emergency Medicine, Samsung | |
| Medical Center โ Prof. Won Chul Cha, principal investigator, and | |
| Prof. Meong Hi Son โ for the collaboration on this project. | |
| ## 13. Citation | |
| ```bibtex | |
| @misc{zeo-med-2-2026, | |
| title={ZEO Med 2}, | |
| author={ZeroOne AI}, | |
| year={2026}, | |
| url={https://huggingface.co/ZeroOneAI/ZEO-Med-2} | |
| } | |
| ``` | |