Toward better sub-million-scale expert models from large genomic language models via knowledge distillation
University of California, Irvine
01 — Overview
Genomic language models keep growing — billions of parameters trained on trillions of base pairs — while the questions biologists ask of them are usually narrow: is this sequence an enhancer, does this window carry a histone mark, where are the splice sites.
OmegaGenome asks whether that narrow competence can be moved out of the large model. A pre-trained gLM is fine-tuned on one task, frozen, and then used as a teacher for a compact student trained against the task labels, the teacher's output distribution and the teacher's penultimate representation at the same time. The result keeps most of the teacher's accuracy, beats a same-architecture network trained from scratch on every task, and costs orders of magnitude less to run.
02 — How it works
The walkthrough plays on its own — step through it at your own pace.
03 — Results
Every number here is computed from the result tables released with the code. Hover a point to read it.
| Teacher | Teacher | Distilled student (0.12 M) | From-scratch baseline |
|---|---|---|---|
| Carbon-3B | 0.664 | 0.620 | 0.588 |
| Enformer | 0.663 | 0.620 | 0.588 |
| NT-2.5B | 0.662 | 0.627 | 0.588 |
| DNABERT-2 | 0.649 | 0.607 | 0.588 |
| Caduceus | 0.612 | 0.608 | 0.588 |
| Model | Parameters | All-18 GPU time | Peak GPU memory | One task on CPU |
|---|---|---|---|---|
| NT-2.5B | 2.54 B | 7,304 s | 11,553 MB | 8.3 h |
| Carbon-3B | 3.45 B | 1,073 s | 8,004 MB | 6.6 h |
| DNABERT-2 | 117 M | 531 s | 3,074 MB | 23.6 min |
| Caduceus | 7.7 M | 342 s | 489 MB | 4.2 h |
| Enformer | 251 M | 102 s | 1,184 MB | 1.9 min |
| OmegaGenome student | 0.12 M | 11.1 s | 17 MB | 2.65 s |
The same recipe transfers to a 34-track, per-base-pair regression benchmark, where each model predicts a coverage value at every base of a 32,768 bp window. Distilling NTv3-650M into students of 0.12 M, 8 M and 100 M parameters traces a smooth cost–accuracy curve, and the distilled student beats a size-matched from-scratch baseline in every assay family and at every size.
| Model | Parameters | Whole-test GPU time | Peak GPU memory |
|---|---|---|---|
| NTv3-650M teacher | 655 M | 2,122 s | 9,472 MB |
| NTv3-100M student | 106 M | 705 s | 3,909 MB |
| NTv3-8M student | 7.7 M | 136 s | 1,210 MB |
| BPNet student | 0.12 M | 10.6 s | 89 MB |
04 — Figures
Vector, as submitted. Click any figure to open it full size.
All six main-text figures, in vector PDF and PNG, are in the repository under
paper_figures/figures/,
next to the scripts that draw them.
05 — Reproduce
22 of the 23 figure scripts redraw the paper's panels from the bundled result tables — no GPU, no downloads, seconds per figure.
Stage 1 fine-tunes a teacher per task; stage 2 distils the student. Both are single commands with every hyperparameter overridable.
Machine paths come from documented environment variables, dependencies are locked, and the lint workflow runs on every push.
git clone https://github.com/aicb-ZhangLabs/OmegaGenome.git
cd OmegaGenome && cp env_sample.toml env.toml
# redraw the paper's figures from the bundled tables
uv sync --extra analysis
cd paper_figures
python figure_panels/build/fig4_efficiency_carbon.py # Figure 3
# or train: fine-tune a teacher, then distil the student
uv sync --extra default
python -m src.train.finetune_teacher carbon_3b --config.task-names H3K4me3
python -m src.train.distill carbon-raw --task-names H3K4me3
The repository README documents every entry point, the environment variables and the released checkpoints.
06 — Citation
If this work is useful to you, please cite the paper and, if you use the code directly, the archived snapshot.
@software{omegagenome_code,
title = {OmegaGenome: source code},
author = {Xu, Pengcheng and Liu, Junhao and Dai, Yi and Nishida, Kainoa Andrew and
Sun, Dongbo and Lei, Yutong and Hu, Yaqi and Wang, Chaoyang and Zhang, Jing},
year = {2026},
doi = {10.5281/zenodo.22805335},
url = {https://doi.org/10.5281/zenodo.22805335}
}