Downloads · 30 days
27
36% of all-time downloads
ajaxdavis/donto-qwen3.8-27b-predicate-extractor
donto-qwen3.8-27b-predicate-extractor is a text generation model from ajaxdavis. Use it when you need the model to write or continue text. It is set up for peft. The card lists the license as apache-2.0.
An experimental, anchor-free, abundance-oriented predicate-extraction LoRA for short English document chunks.
Downloads · 30 days
27
36% of all-time downloads
All-time downloads
74
Public
Repo size
3.3 GB
Likes
1
Public
Click a slice to open those files.
.safetensors3.3 GB · 99%
From the Hugging Face model README
An experimental, anchor-free, abundance-oriented predicate-extraction LoRA for short English document chunks.
This repository contains the selected V15 adapter for
Qwen/Qwen3.8-27B, pinned to base
revision 1d4bf0f2ff6012fd82039f2fa52739d0dd7c60c0. It turns a general Qwen3.8
language backbone into a specialist that emits validated Donto fact objects
instead of conversational prose.
The headline result is 89.21% exact recall and 89.44% exact precision over a frozen, source- and template-disjoint, 100-document graph-first synthetic gold suite containing 5,338 target facts. All 2,718 forced structured calls succeeded.
This is a research release, not a claim that open-world extraction is solved. Read What the score does and does not mean and Limitations before deploying it.
Knowledge systems were designed for a world in which producing structured claims was scarce. Generative models invert that constraint: candidate properties and relations can be produced in abundance. The new problem is not merely generating one summary or one canonical graph. It is holding a large, multi-directional, possibly contradictory field of claims without erasing disagreement.
Donto is built for that second problem. It is a contradiction-preserving claim substrate: emit free predicates now; preserve separate claims; defer ontology alignment, entity resolution, joining, standing, and reconciliation to later query-time processes. Donto-Qwen is the extraction front door. Its job is to read a bounded source unit carefully and produce many compact candidate claims that the larger Donto system can hold, compare, cite, align, and re-rank.
The purpose of this adapter is deliberately narrower than general chat:
| Property | Value |
|---|---|
| Release | V15 / pilot-live-v15-exhaustive-unit-r16-v1 |
| Base | Qwen3.8-27B, exact revision 1d4bf0f... |
| Artifact | PEFT LoRA adapter; base weights are not duplicated here |
| Primary modality | Text; the Qwen vision tower was neither trained nor evaluated |
| Intended context | Short document chunks; trained and served at 4,096 tokens |
| Output | Forced submit_facts tool call |
| Fact fields | s, p, o, c, h |
| Anchors | Disabled in this release |
| Thinking | Disabled for training and evaluated serving |
| Training hardware | One NVIDIA RTX 3090, 24 GB |
| Training method | 4-bit NF4 QLoRA, BF16 compute, rank 16 |
| Status | Experimental predicate extractor; not a general assistant |
This adapter changes the base model's behaviour, not its underlying factual knowledge. It does not intrinsically make Qwen3.8 decode faster. Its efficiency advantages come from short inputs, compact structured outputs, shared prompt prefixes, fewer retries, and greater document concurrency.
Every call must produce the submit_facts tool with this shape:
{
"facts": [
{
"s": "ex:review-panel",
"p": "postponed",
"o": "ex:deployment",
"c": 0.99,
"h": false
},
{
"s": "ex:postponement-wasted-money",
"p": "contrastsWith",
"o": "ex:postponement-protected-staff",
"c": 0.92,
"h": true
}
],
"more_supported_facts": false
}
s: subject IRI, normally a stable ex:kebab-case identifier.p: concise camelCase free predicate, with standard RDF predicates allowed.o: entity IRI or string, numeric, or Boolean literal.c: model confidence in [0, 1]; this is not calibrated probability.h: false for direct/source-licensed claims; true for a derived,
interpretive, hypothetical, or otherwise non-direct view.more_supported_facts: continuation signal for the current bounded task.The exact OpenAI-compatible tool declaration is in schemas/tools.json.
The benchmark did not ask one vague prompt to "extract everything." Each document was traversed through explicit bounded tasks:
| Stage | Purpose |
|---|---|
| Metadata | Document, creator, date, and topic relations |
| D0 | Atomic propositions directly expressed in a source unit |
| Local residual | Recover a deliberately omitted supported fact, then prove exhaustion |
| D1 unit | Licensed semantic views and local relational expansion |
| D2 | Discourse-level, contrastive, causal, or interpretive relations (h:true) |
| Structural batches | Relations over the dynamically discovered entity inventory |
| Global residual | Final bounded coverage audit |
This decomposition is important. A single generic extraction prompt is not expected to reproduce the published multi-stage score.
| Evaluation | Documents | Calls | Gold facts | Exact recall | Exact precision | Mean document recall | 95% bootstrap recall floor | Structured success |
|---|---|---|---|---|---|---|---|---|
| Source-disjoint V15 validation | 40 | 1,085 | 2,140 | 93.32% | 93.89% | 93.36% | 91.74% | 100% |
| Frozen graph-first Gold 100 | 100 | 2,718 | 5,338 | 89.21% | 89.44% | 89.50% | 87.82% | 100% |
Gold 100 also produced:
| Task | Calls | Targets | Exact recall | Exact precision |
|---|---|---|---|---|
| D0 direct extraction | 428 | 1,751 | 75.10% | 75.14% |
| D1 unit views | 766 | 645 | 95.35% | 97.77% |
| D2 discourse views | 212 | 446 | 93.72% | 94.78% |
| Metadata | 100 | 361 | 95.01% | 95.28% |
| Global residual | 200 | 300 | 96.33% | 96.01% |
| Local residual | 590 | 162 | 97.53% | 98.14% |
| Structural batches | 322 | 1,673 | 97.07% | 96.55% |
The overall release clears the project's predeclared 80% aggregate-gold target, but the direct D0 slice does not. That distinction is intentional and public. The weakest blind families were long wetlands argument/procurement documents; the strongest were bounded incidents, metadata, residual stopping, and structural relations.
Full row-level outputs—not summaries alone—are published under evaluation/.
The metric uses one-to-one exact keys over (s, p, o, h). A supported free
predicate synonym or stable entity alias receives no credit, which can make the
score conservative. Conversely, the gold documents are programmatically generated
from explicit graphs and templates. They measure controlled compositional transfer,
not the full ambiguity, OCR damage, genre diversity, or factual uncertainty of
unseen real-world documents.
The 100-document suite was generated after V15 training, then frozen and hashed before the first V15 inference. It has:
The run used one seed. It is not a multi-seed reliability estimate and is not a
human-blind real-document benchmark. The prior real llm_nerd fixture was heavily
used for development diagnosis and is therefore not presented as blind evidence.
All distributable training, validation, validator, gold, manifest, and audit files
are published at
ajaxdavis/donto-qwen3.8-27b-predicate-extraction-data.
Canonical V15 training mixture:
The dataset card separates synthetic and reviewed-real provenance and explains its mixed licensing status.
| Parameter | Value |
|---|---|
| Base revision | 1d4bf0f2ff6012fd82039f2fa52739d0dd7c60c0 |
| Seed | 38 |
| Epochs / optimizer steps | 1 / 532 |
| LoRA rank / alpha / dropout | 16 / 32 / 0.05 |
| Trainable parameters | 116,727,808 |
| Learning rate | 2e-5, cosine decay |
| Warmup | 5% / 27 steps |
| Microbatch / accumulation | 1 / 8 |
| Maximum length | 4,096 |
| Quantization | bitsandbytes NF4, double quantization |
| Compute | BF16; TF32 enabled |
| Optimizer | paged AdamW 8-bit |
| Kernel | Liger enabled |
| Gradient checkpointing | Enabled, non-reentrant |
| Train runtime | 20,860 seconds including epoch evaluation |
| Final explicit eval loss | 0.0010853700805455446 |
Qwen3.8-27B contains 48 Gated DeltaNet layers and 16 full-attention layers. A
generic q_proj/v_proj LoRA recipe would miss most recurrent projections.
This adapter explicitly targeted 496 language modules / 992 LoRA tensors and
no vision module:
linear_attn.in_proj_qkv, in_proj_z, in_proj_a, in_proj_b,
out_proj;self_attn.q_proj, k_proj, v_proj, o_proj;mlp.gate_proj, up_proj, down_proj.The complete name-level audit is artifacts/lora-target-audit.json.
The physically tested path used vLLM 0.27.1, Transformers 5.15.0,
bitsandbytes 0.50.1, a 4,096-token limit, four concurrent sequences, and prefix
caching. vLLM required the tensor-preserving conditional-key remap under
runtime/vllm-conditional/; the root adapter remains
the canonical native PEFT artifact.
hf download ajaxdavis/donto-qwen3.8-27b-predicate-extractor \
--local-dir ./donto-qwen
vllm serve Qwen/Qwen3.8-27B \
--served-model-name qwen3.8-27b \
--language-model-only \
--quantization bitsandbytes \
--load-format bitsandbytes \
--dtype bfloat16 \
--max-model-len 4096 \
--max-num-seqs 4 \
--max-num-batched-tokens 2048 \
--enable-prefix-caching \
--generation-config vllm \
--reasoning-parser qwen3 \
--enable-auto-tool-choice \
--tool-call-parser qwen3_coder \
--enable-lora \
--lora-modules donto-qwen=./donto-qwen/runtime/vllm-conditional \
--max-loras 1 \
--max-lora-rank 16
The exact tested launcher includes additional GPU-specific cache and attention
flags and is preserved at training/source/start_runpod_quality_canary.sh.
Then call the forced tool and validate its arguments with a real schema. A complete
Pydantic/OpenAI-compatible example is in examples/structured_client.py.
The root adapter_model.safetensors is the canonical PEFT adapter. Load it over
the exact pinned base revision with current Transformers and PEFT. The training
script in training/source/train_qwen38_donto_3090.py
contains the memory-safe text-only 3090 loader and exact QLoRA configuration.
Do not attach the root native adapter directly to vLLM if its Qwen3.8 key resolver
expects the conditional language-model root; use the verified remap supplied in
runtime/vllm-conditional.
c as a probability of truth.h:true is not established fact. It marks derived or interpretive output.This release is the fifteenth curriculum iteration, trained fresh from the pinned stock base. Rejected adapters were never reused as weight bases. The repository preserves rejection reports for V11–V14 because the failures are informative:
See docs/ for the plan, audits, launch receipt, runbook, and complete
negative-result reports.
40d11bcad20061f8291741c4dd8a3701405902f336c27b60592d62d6b2f7a97428df663ffa70bf541cafff2c9bb60df11e4fe000a2ea9124b346a9cc3eb20d8b1b3630d00d11476c7f1e941a60a442a5eb5eb57dd882b7d188ef9b85d461e738c360e8296e5ec7973f2fab8416d0b30e2aa850fe6b2cc618bb3fa52894d818b26f16c87d06c2a0b850321b8750e54a63364937cfa2823f34f698f6c00f160f1ca21e32e6db21f217af4ad7fc66cbcb3836f0607567bdaab9fcc5c11859e2fd55The repository includes intermediate adapter checkpoints 100–500, trainer states, the exact trainer/evaluator/generator sources, training and serving logs, run contracts, target-module audit, and full row-level evaluation outputs. Unsafe and unnecessary optimizer/RNG pickle states are not part of the public release.
The Hub upload, clean-download hash checks, and unauthenticated browser proof are
recorded in PUBLICATION-RECEIPT-20260825.md.
The adapter and code are released under Apache-2.0, consistent with the pinned Qwen3.8-27B base. Dataset licensing is documented separately because the corpus contains both generated material and a small reviewed-real research tier.
Built on Qwen3.8-27B, PEFT, Transformers, bitsandbytes, Liger Kernel, and vLLM.
The practical RTX 3090 serving work was informed by
syv-ai/qwen38-27b-rtx3090.
@misc{donto_qwen38_v15_2026,
author = {Davis, Thomas},
title = {Donto-Qwen3.8-27B Predicate Extractor V15},
year = {2026},
publisher = {Hugging Face},
howpublished = {\url{https://huggingface.co/ajaxdavis/donto-qwen3.8-27b-predicate-extractor}},
note = {Experimental LoRA adapter for structured Donto predicate extraction}
}