ClinicalEvidence GLiNER2.5 small adapter — relabelled v3 ACT/Sol
Release repository: na399/clinical-evidence-gliner2.5-small-lora-v3-act-sol.
Intended use and output
The model identifies candidate clinical evidence spans in English text. Its v3 schema has six core entity types and explicit attributes. Shared attributes are three complete, qualified, single-label groups: assertion (affirmed, hypothetical, negated, ruled out, uncertain), experiencer (patient, family, other), and time frame (current, recent, historical, future). The registry also defines family-specific choice and literal-span labels. Use the complete versioned schema in schema_v3.json; do not substitute an open-ended or partial attribute schema. An absent axis in a source row was masked during training; it was not a negative or an implicit default. Defaults are ordinary explicit values when the axis is present.
The six core types and their intended scope are:
| Type |
Scope |
clinical_condition |
Diagnosis, disorder, symptom, or clinical state; preserve context without deciding a phenotype. |
clinical_measure |
Named clinical measurement and its locally bound raw result. |
clinical_treatment |
Medication or intervention mention, distinguished from exposure, allergy, indication, and candidacy. |
clinical_event |
Unified clinical actions, episodes, behavioral patterns, psychological experiences, and persistent states; not restricted to acute events. |
functional_activity |
Specific ADL, IADL, mobility, transfer, or communication ability; not a frailty label. |
care_context |
Care setting, services, goals, and support without inferring prognosis or terminal illness. |
The complete canonical descriptions and family-specific field labels are in schema_v3.json.
The threshold 0.7 is the validation-selected core-span threshold for this checkpoint. Shared axes use the official single-label group decoder; the core threshold is not a confidence cutoff for those axes. Bind attribute spans to their core anchors by the returned exact offsets. An anchor-to-field span does not establish which record or database field should receive it.
The release includes a pinned Python usage.py helper, USAGE.md, and requirements.txt. It verifies a bundled 91-file GLiNER source tree before import and pins Python 3.12.13, Torch 2.11.0+cu130, Transformers 4.57.6, PEFT 0.21.2, NumPy 2.5.3, and tokenizers 0.22.2; it does not install a GLiNER wheel. The API is load_model(model_name, *, package_dir=None, adapter_dir=None, base_dir=None, adapter_revision=None, device='cpu'); it returns a LoadedModel with predict(text). The model repository contains PEFT weights and the pinned helper, but not the base model weights. The helper loads the fixed public base reference below and uses the registry-derived v3 schema (registry_profiles.json, registry hash 80f255076cde0237c3f176b45545807bb237cbc57af1d983c6550a6d6816f547).
Authenticate the Hugging Face CLI using its existing login or HF_TOKEN. Set ADAPTER_REVISION to this repository's full immutable 40-character commit SHA, then download the private package before creating the Python environment. The downloaded snapshot contains the helper, runtime manifest, schema, and adapter; base weights are fetched separately from the pinned public reference.
ADAPTER_REVISION='replace-with-full-40-character-private-commit'
hf download na399/clinical-evidence-gliner2.5-small-lora-v3-act-sol \
--revision "$ADAPTER_REVISION" --local-dir ./clinical-gliner-small
cd ./clinical-gliner-small
uv venv --python 3.12.13 .venv
uv pip install --python .venv/bin/python torch==2.11.0
uv pip install --python .venv/bin/python -r requirements.txt
Select the Torch wheel appropriate for your host; ORCA's qualified environment uses CUDA 13.0. Run a fixed synthetic smoke from the downloaded package directory:
PYTHONDONTWRITEBYTECODE=1 .venv/bin/python usage.py \
--model small --adapter-revision "$ADAPTER_REVISION" \
--synthetic --case-id affirmed_condition --device cpu
See USAGE.md for offline local-path loading and asset verification. The core threshold is recorded in release_manifest.json; do not change it at inference.
from usage import load_model
# Use this repository's full immutable 40-character private Hub commit SHA.
model = load_model(
"small",
adapter_revision="<private-adapter-commit-sha>",
device="cpu",
)
predictions = model.predict(text)
The bundled Python helper passed CPU job 17349 on all six fixed synthetic cases in offline mode with this adapter and its pinned base/runtime. This smoke checks loading and returned attributes and offsets; it is not a clinical evaluation or an accuracy qualification. See the CPU smoke report and receipt.
Training data and split policy
Only accepted v3 rows with status relabeled or repaired were eligible. Training kept natural row frequency; there was no source reweighting, upsampling, or downsampling. Patient and lineage splits, exact offsets, source hashes, and repair provenance were preserved.
| Source / use |
Train rows |
Validation rows |
Test / benchmark rows |
| ACT/MIMIC-derived |
8,301 |
2,202 |
2,183 ACT test rows, excluded from training |
| Sol generated synthetic notes |
54,689 |
6,047 |
No independent Sol test split |
| Sol training-only schema views |
9,600 |
— |
— |
| BPSD development benchmark |
— |
— |
1,714 rows; 900 non-default gold attribute instances |
| Total fitted training rows |
72,590 |
8,249 |
— |
The 9,600 schema-view rows are derived only from Sol training rows. They are a bounded training addition, not an external corpus. The ACT test split was protected from training. No native silver, Luna v2, public/open-schema corpora, v4 data, or Joint IE examples entered this run. Sol has no independent test split. The accepted Sol repair provenance records frames_dropped of 1,301 for training and 158 for validation; the frozen label audit retained that history, and training did not rewrite labels.
Accepted status counts and exclusions are recorded in the frozen audit:
| Source / split |
Accepted relabeled |
Accepted repaired |
Excluded base rows |
| ACT train |
6,645 |
1,656 |
2,097: 1,432 fallback_original, 45 fallback_repaired, 620 missing |
| ACT validation |
1,742 |
460 |
559: 416 fallback_original, 10 fallback_repaired, 133 missing |
| Sol train |
45,060 |
9,629 |
4,363 fallback_original |
| Sol validation |
5,072 |
975 |
398 fallback_original |
Thus 7,417 nonaccepted base rows were excluded from train and validation. A further 2,183 ACT test rows were protected from the training export; the original ACT test remained separate for final evaluation. The frozen export records 9,600 exclusion receipts in total, without uploading row-level audit data.
Training configuration
| Setting |
Value |
| Base |
fastino/gliner2.5-small-v1 at revision 7132dc4561c3f94563c6147e75ffa8ef34c4964a |
| Method |
PEFT LoRA on encoder and extractive head |
| LoRA |
rank 32, alpha 64, dropout 0.1 |
| Trainable parameters |
3,132,096 |
| Effective adapter learning rate |
1e-4 |
| Seed / selected checkpoint |
42 / epoch 3 (job 17131; six epochs completed) |
| Physical batch / accumulation |
32 / 4 (effective batch 128) |
| Precision |
FP32 parameters and activations |
| Schedule and regularization |
12 epoch cap, patience 3, weight decay 0.01, warmup ratio 0.1, gradient clipping 1.0 |
| Input perturbation |
Entity-label order shuffled; query-removal and synthetic-label probabilities 0 |
| Training hardware |
ORCA H200 2g.35gb MIG; observed training wall time 1:48:01 |
| Final evaluation hardware |
ORCA H200 2g.35gb MIG; job 17257 completed successfully in 4:30 |
The selected checkpoint and threshold came from ACT/Sol validation only. This is one seed; seed variation is unmeasured. A separate matched encoder comparison evaluates the base and small models at threshold 0.5; those matched comparison results are not the selected small model's threshold-0.7 scores below.
Evaluation
Scores use exact entity type and character offsets. Non-default F1 is end-to-end: missed anchors, wrong attribute values, and extra non-default predictions count against the score. The reported support is gold non-default attribute instances, identified by entity type, exact anchor offsets, axis, and value; several axes can refer to the same span. The threshold was frozen on validation before this final benchmark evaluation; ACT/BPSD benchmark results did not choose the epoch or threshold.
| Split |
Rows |
Non-default F1 |
Recall |
Precision |
Gold support |
| ACT/Sol validation, threshold 0.7 |
8,249 |
50.21% |
45.18% |
56.51% |
6,822 |
| ACT test, threshold 0.7 |
2,183 |
34.91% |
36.05% |
33.84% |
1,678 |
| BPSD development benchmark, threshold 0.7 |
1,714 |
58.98% |
54.00% |
64.97% |
900 |
Validation results by source:
| Validation source |
Non-default F1 |
Core F1 |
Default-value accuracy |
Family-choice F1 |
Literal-span F1 |
| ACT/MIMIC-derived |
39.58% |
63.72% |
55.17% |
26.44% |
50.63% |
| Sol synthetic |
57.55% |
81.65% |
73.64% |
72.40% |
82.95% |
Shared-axis per-value F1 is end-to-end on validation, with gold support shown in parentheses. These are not conditional scores restricted to already-detected anchors.
| Source |
Axis value |
F1 (gold support) |
Source |
Axis value |
F1 (gold support) |
| ACT |
assertion: affirmed |
0.640 (4,877) |
Sol |
assertion: affirmed |
0.794 (9,528) |
| ACT |
assertion: negated |
0.389 (362) |
Sol |
assertion: negated |
0.662 (281) |
| ACT |
assertion: uncertain |
0.405 (149) |
Sol |
assertion: uncertain |
0.694 (243) |
| ACT |
assertion: hypothetical |
0.000 (23) |
Sol |
assertion: hypothetical |
0.000 (21) |
| ACT |
assertion: ruled out |
0.243 (56) |
Sol |
assertion: ruled out |
0.296 (147) |
| ACT |
experiencer: patient |
0.629 (5,391) |
Sol |
experiencer: patient |
0.806 (10,061) |
| ACT |
experiencer: family |
0.191 (74) |
Sol |
experiencer: family |
0.197 (146) |
| ACT |
experiencer: other |
0.000 (2) |
Sol |
experiencer: other |
0.000 (13) |
| ACT |
time frame: current |
0.489 (2,918) |
Sol |
time frame: current |
0.789 (7,464) |
| ACT |
time frame: recent |
0.140 (571) |
Sol |
time frame: recent |
0.650 (1,352) |
| ACT |
time frame: historical |
0.513 (1,680) |
Sol |
time frame: historical |
0.656 (514) |
| ACT |
time frame: future |
0.204 (298) |
Sol |
time frame: future |
0.650 (890) |
All 20 derived schema views were scored on 7,591 validation rows. Per-view F1 ranged from 0.196 for harm_and_accidents (20 gold spans) to 0.793 for medication_details (2,785 gold spans). These views reuse validation source notes and do not form a separate test set. The aggregate reports retain full view results and masked-axis diagnostics without row-level predictions.
ORCA MIG model-call latency, excluding model loading and full preprocessing:
| Split |
Mean per row |
p95 per row |
| Validation |
8.70 ms |
11.41 ms |
| ACT test |
8.85 ms |
11.61 ms |
| BPSD |
7.78 ms |
8.70 ms |
Optional browser export qualification
The PEFT adapter release does not contain ONNX files. A separate optional FP32 browser export was evaluated; using it requires obtaining its separately pinned graph/runtime package and receipts. This browser test is synthetic software qualification, not clinical evaluation.
CPU export job 17296 and Chromium/WASM job 17300 passed on six fixed synthetic cases. All 19 preprocessing fields per case, exact entity types and codepoint/UTF-16 offsets, declared attribute values, and strict confidences matched the safely merged Python reference. Four natural entity spans carried twelve attribute values; two zero-output cases remained zero-output. The browser encoder forward passed all 2,011,716 legal restored-interval comparisons and 108 means at the unchanged tolerance. A separate raw cumulative-prefix diagnostic had 824 mismatches among 9,216 values; it remains a disclosed auxiliary numerical difference and is not described as a pass.
The three FP32 ONNX graphs total 292,188,325 bytes; they are separate optional artifacts and are not included in this adapter repository. In the measured ORCA CPU/Chromium 153, graph session loading took 3.47 seconds; short synthetic requests had warm medians from 386–412 ms across three repeats, and the 769-token case took 1.874 seconds. These measurements exclude qualification-array comparison and do not predict latency on other hardware. Empty input is rejected by the frontend rather than sent to the graph.
The synthetic browser report SHA-256 is 3f6fdc4dcd1e4f8e0feec926ec33fd9cd4819a99c5dbbb07e3ec0f6c3eb6d440; its job receipt is 30232cf6039b9eacbc8889eb137538bd339166cc5c410e33986234373732ab7f. The independent audit passed all 25 checks (SHA-256 fe0af930bfebec4cb25c78ee319fdd101651900fd7b1d81e81360a7250a3a807). These are synthetic browser receipts, separate from the clinical evaluation artifacts.
Limitations
- The labels are machine-relabeled/repaired v3 annotations, not independent clinical adjudication. Sol is generated synthetic text; it has no independent test split.
- BPSD is a development benchmark and the wider project has prior benchmark use. ACT test results here were not used to select this checkpoint, but ACT is not a prospective or external clinical validation cohort.
- ACT results are weaker than Sol validation. On ACT validation,
hypothetical assertion F1 was 0.000 on 23 gold attribute instances; family experiencer F1 was 0.191 on 74 and other was 0.000 on 2; recent time-frame F1 was 0.140 on 571. On Sol validation, hypothetical assertion F1 was 0.000 on 21, family experiencer 0.197 on 146, and other 0.000 on 13. These low or zero scores prohibit treating a good pooled score as reliable across attributes.
- Span and attribute extraction does not establish record-level binding, coding correctness, treatment eligibility, prognosis, fairness, calibration, or improved patient outcomes.
- Evaluated data are English ACT/MIMIC-derived text and generated Sol notes. Other languages, institutions, note styles, and deployment settings are not established.
- This is a research artifact only. Do not use it to make or support decisions about an individual patient.
Frozen release identity and provenance
| Item |
SHA-256 / identity |
| Selected base model fingerprint |
d4fe4bf76ddff24d9b53e8687ef6ed36a4b3b21b4a92a0e63800a701f20e98d4 |
| Adapter fingerprint |
74af2ef71d072d4731d1a13898c52366380f7bf9310506cd7833235e5f428695 |
| Adapter manifest |
271ae025ed44983d9e7f58afb4d0a37903c95c9ffcd343e263cdd3cfaad11be0 |
| Resolved training config |
9fce0d756e1f15890de5a40f6047baed5f5aaba9c4719e8c64a0c53df8654154 |
| Training receipt |
ccadf100a680add03e5f73f04a047f2b59846fa324229052260c5a664deb97f9 |
| Validation selection |
7ac70e27aa52bad2f29f9d886170f2e2fb6911195309f0532980afa390ee9077 |
| Threshold decision |
647ee5a8d03199c09db7dbd5230662528486585c6743777fef6d3b74426d0526 |
| Full validation report |
c20ea6096d15dc7c40c68fda1a58b17ff82b6f97c0b8df4406602297f4aaea9c |
| Final delivery report |
53af88b98b31a537457e136ebd28f225a15ab746a7fe66bc84d612303f992198 |
| Final delivery receipt |
9d2bc2f989d82cd1f0f068cabf48854c5ba8c44123d3f95aa7fe9e6250695ba3 |
| Independent audit |
a3140f46540eb2a3fb7720abbe43954d12fe34849f2f48bc48d53e1a7d909bd3 |
| Frozen export manifest |
3655cdb7e61056ab5870e504894d8efe3643bad6bd0ec90bfa8939f483e5cb16 |
| Frozen data-audit digest |
80e0e23f9902eb708fc7b4c8ef764df6fd7841903cc6c647e0453c02175fbdee |
| Excluded-row receipt digest |
26e70be7b839879fa563c9fc23a24a7482111058515c964df81208738708a038 |
| Schema-view catalog |
486f029a02601f3752e555d765f1cb61fd870d7147ffd3bf63c69bfd5db6d30d |
| Registry |
80f255076cde0237c3f176b45545807bb237cbc57af1d983c6550a6d6816f547 |
| Training source snapshot |
66b8ca3e913f94b697d37f533a49cfcf95d0f96e3b8d0d19dba45d036e184251 |
| Final evaluation source snapshot |
44ef846d7e305147fd8f484dcec90cb693226352f41e241d7c6f679cc0191f32 |
The release bundle retains the adapter/config, schema_v3.json, registry_profiles.json, per-model threshold in release_manifest.json, private LICENSE, and hash-bound aggregate provenance for training receipt, validation selection, runtime, final delivery report/receipt, ACT/BPSD mapping and evaluation, and the 20 schema-view results. Do not include raw notes, row-level predictions, credentials, or Codex/Hub tokens. The final report declares raw_text_in_report: false.