HFXM's picture
Upload README.md with huggingface_hub
26d8b5f verified
|
Raw
History Blame Contribute Delete
2 kB
---
license: other
base_model: Qwen/Qwen3-4B
tags:
- clinvar
- acmg
- variant-classification
- dual-head
- sentence-classification
- text-classification
---
# LLM4Variants-Qwen3-4B
Dual-head sentence classifier for **ACMG evidence-code + strength** prediction on
ClinVar submission comments. This is rank **#1** of the grid search (ranked by
joint test accuracy).
The model wraps the backbone **`Qwen/Qwen3-4B`** with two heads on top of mean-pooled
hidden states:
- **code head** — 28-way ACMG evidence code (`PVS1, PS1–PS4, PM1–PM6, PP1–PP5,
BA1, BS1–BS4, BP1–BP7` + `NO_KEYWORD`)
- **strength head** — 6-way strength, conditioned on a learned embedding of the
predicted code (`Supporting, Moderate, Strong, VeryStrong, NotMet, NoStrength`)
## Test metrics
| Metric | Value |
|---|---:|
| Code accuracy | 0.9309 |
| Strength accuracy | 0.9374 |
| Joint accuracy | 0.8822 |
| Strength acc \| correct code | 0.9477 |
| Code weighted-F1 | 0.9307 |
| Strength weighted-F1 | 0.9351 |
## Training configuration
| Hyperparameter | Value |
|---|---|
| Learning rate | 0.0001 |
| Effective batch size | 128 |
| Epochs | 8 |
| Max length | 256 |
| λ (strength loss) | 1.0 |
| Code emb dim | 64 |
| Negative ratio | 0.25 |
| Seed | 42 |
| Train / val / test size | 19161 / 1278 / 5110 |
## Files
- `model.safetensors` — full state dict (backbone + `code_head` +
`code_embeddings` + `strength_head`).
- `label_mappings.json``keyword2id` / `strength2id` (and reverse).
- tokenizer files + `chat_template.jinja`.
## Loading
This is a custom `nn.Module` (`DualHeadLLM`), not a `transformers`
`AutoModel`. Reconstruct the module (see `train_dual_head.py`), then load the
weights:
```python
from safetensors.torch import load_file
from huggingface_hub import hf_hub_download
model = DualHeadLLM("Qwen/Qwen3-4B", num_keywords=28, num_strengths=6)
state = load_file(hf_hub_download("HFXM/LLM4Variants-Qwen3-4B", "model.safetensors"))
model.load_state_dict(state)
```