CoolFace
Modelpublic

ajaxdavis/donto-qwen3.8-27b-predicate-extractor-rtx3090

sourceHugging Faceapache-2.0updated 1mo agoView on Hugging Face
0likes16downloads
Model Card

Donto Qwen3.8 27B predicate extractor — RTX 3090 3× runtime

This release packages the Donto-specific Qwen3.8-27B predicate extractor and the exact no-retraining runtime that made it practical on one 24 GiB RTX 3090. It turns a document chunk into a validated submit_facts tool call containing open predicates and subject–predicate–object claims. Donto deliberately lets the model mint useful predicates instead of forcing every source into a fixed ontology at extraction time.

The trained LoRA in this repository is byte-identical to `ajaxdavis/donto-qwen3.8-27b-predicate-extractor`. The improvement in this release is inference engineering, not another training run.

Measured result

All measurements used one NVIDIA RTX 3090, the same frozen ten-document speed fixture, greedy structured decoding, and the same source-disjoint 1,085-row quality set used for the original V15 model.

GateOriginal V15 runtimeThis runtimeRequirement
Aggregate output throughput48.576 tok/s150.801–151.187 tok/s≥145.728 tok/s
Mean throughput—150.978 tok/s—
Minimum speedup over baseline1.00×3.104×≥3.00×
Exact recall, 1,085 rows93.318%93.832%≥88.652%
Exact precision, 1,085 rows93.888%94.228%≥89.194%
Valid structured calls1,085/1,0851,085/1,0851,085/1,085

The three packaged speed repeats measured 150.801, 151.187, and 150.947 output tokens/s. This is aggregate completed-token throughput across four simultaneous independent documents, not the decode rate of one request. The separate concurrency sweep peaked at 155.946 tok/s with eight requested clients; all 120 calls across requested concurrency 1–12 were valid.

Concurrency 1–12

Requested clientsEffective clientsAggregate tok/sWall time
1165.66789.786 s
22104.56756.385 s
33133.38544.203 s
44152.08038.769 s
55154.28138.216 s
66154.11638.257 s
77155.61237.889 s
88155.94637.808 s
99154.58838.140 s
1010155.21137.987 s
1110153.06738.519 s
1210155.16237.999 s

The fixture contains ten documents, so requested concurrency 11 and 12 remain ten effective clients. The server has four resident sequence slots; additional clients measure orderly queueing, not more simultaneous GPU-resident requests.

Machine-readable evidence is under `evaluation/`. Rejected profiles are retained rather than hidden. The decisive failure was ordering: merging LoRA into BF16 before NF4 missed the semantic floors even when both vocabulary tables were exact BF16. Candidate AX restored the baseline order (NF4 base first, unchanged runtime LoRA second) and exceeded baseline quality, but exact vocabulary tables left room for only two requests. Candidate AY compacts only the untuned vocabulary tables and admits four requests. Exhaustive live tokenization covers all 1,085 validation prompts and leaves 23 tokens of worst-case admission margin.

What is included

  • —The unchanged rank-16, alpha-32 V15 LoRA and its original PEFT tokenizer files. The admitted accelerated server deliberately pins the stock base tokenizer identified by runtime/launch_rtx3090.sh.
  • —The structured submit_facts schema and executable client examples.
  • —The original PEFT adapter plus a deterministic, value-preserving vLLM key-layout conversion and manifest.
  • —Audited upstream and patched runtime source, reviewable side by side.
  • —A fail-closed overlay installer that checks every upstream and replacement SHA-256 before changing the runtime.
  • —Launch scripts for the admitted RTX 3090 profile.
  • —Full training manifests, source, logs, checkpoint history, data provenance, earlier rejected-model reports, speed traces, quality outputs, and checksums.

The large BF16 base and DFlash2 drafter are not copied into this repository. They are downloaded from the pinned upstream artifacts described below; the unchanged Donto LoRA and its value-identical vLLM remap are included.

Extraction contract

The model receives a document chunk and must call submit_facts. Each fact is:

json
{
  "s": "ex:subject",
  "p": "freePredicateName",
  "o": "ex:object or literal",
  "c": 0.95,
  "h": false
}

s, p, and o are the core triple. c is confidence. h marks an interpretive or hypothesized claim. This practical lane does not require the older generated anchor field; Donto can attach evidence in a separate citer stage when a deployment requires it.

The complete tool schema is `schemas/tools.json`. The training and evaluation path uses real tool calling and validated arguments; it does not scrape JSON from assistant prose.

Quick start

1. Obtain pinned inputs

Download:

  1. 1.Qwen/Qwen3.8-27B at revision 1d4bf0f2ff6012fd82039f2fa52739d0dd7c60c0;
  2. 2.this repository;
  3. 3.syv-ai/qwen38-27b-rtx3090 at commit 60daef8255b6757d9791955a44bce27df1658ea6;
  4. 4.its Qwen3.8-27B-DFlash2-W4A16 drafter.

2. Install the measured runtime and serve

Follow the upstream native-Linux setup first. Then:

bash
bash runtime/install_overlay.sh /path/to/qwen38-27b-rtx3090 /path/to/venv

export QSF_DIR=/path/to/qwen38-27b-rtx3090
export MODEL=/path/to/Qwen3.8-27B-BF16
bash runtime/launch_rtx3090.sh

The admitted profile uses:

  • —maximum model length 2,672 tokens;
  • —maximum output reservation 768 tokens per short-chunk request;
  • —four concurrent sequences;
  • —832 maximum batched prefill tokens;
  • —a 3,800,000,000-byte KV pool;
  • —full CUDA graphs;
  • —DFlash2 W4A16 with seven drafted tokens;
  • —BitsAndBytes NF4 transformer weights and vector-wise INT8 output projection;
  • —symmetric per-row INT8 input embeddings;
  • —prefix caching disabled.

Prefix caching is intentionally off because this Donto lane processes short, independent document chunks. The prompt prefix is not large enough to repay its bookkeeping cost in the admitted workload. When a page needs more room, use more_supported_facts:true and issue another bounded call instead of silently raising the output reservation.

3. Call the structured endpoint

See `examples/structured_client.py`. A minimal OpenAI-compatible request selects the submit_facts function and disables Qwen thinking in the chat-template arguments. The launch profile defaults to http://127.0.0.1:18020/v1 and served model name pilot-live-v15-exhaustive-unit-r16-v1; the example uses those defaults and accepts DONTO_QWEN_BASE_URL / DONTO_QWEN_MODEL overrides.

Why it is faster

The runtime attacks memory residency first, then parallelism:

  1. 1.The frozen stock BF16 base is converted to NF4 at load, after which the unchanged V15 LoRA is applied at runtime. This ordering preserves small learned adapter deltas that merge-before-NF4 candidates rounded away.
  2. 2.The transformer body uses NF4 weights while the output head uses vector-wise INT8 with a graph-safe full-precision correction for the 64 highest-magnitude activation columns.
  3. 3.The large input embedding table uses per-row INT8; only requested token rows are dequantized.
  4. 4.The DFlash2 drafter proposes seven tokens per target-model verification.
  5. 5.The target output head is installed early, avoiding a temporary 2.37 GiB DFlash allocation during startup.
  6. 6.The resulting 16.86 GiB model load leaves enough memory for full CUDA graphs, a 3.8 GB KV pool, and four simultaneous measured Donto requests.
  7. 7.A 768-token output reservation fits every frozen short-chunk prompt while retaining the fast four-document context profile; longer extraction is paginated.

After downloading the complete repository, verify every published file with:

bash
bash verify_release.sh

Speculation cannot change accepted output tokens: the unchanged Donto target model verifies every draft token before emission.

Provenance and reproducibility

ArtifactSHA-256
adapter_model.safetensors40d11bcad20061f8291741c4dd8a3701405902f336c27b60592d62d6b2f7a974
vLLM conditional adapter payload28df663ffa70bf541cafff2c9bb60df11e4fe000a2ea9124b346a9cc3eb20d8b
pinned BF16 base index77042094076611b69791a610065f28b7013b8c621795fa86ddccc8bac7d1b9df
pinned BF16 base tokenizer0997f410c57a1f4e53b09e4be8f4a172d90edd9564368fb0847030937229b9f3
DFlash2 W4A16 weightsec26996e6a0745ab5edb857117220ce1e219ad524f71e6e149b703804947d8e7
validation datasetc360e8296e5ec7973f2fab8416d0b30e2aa850fe6b2cc618bb3fa52894d818b2
tool schemae02cf3c20831eed00a05598f42f324f9112f7c283b9cd0cef43af96e294c93ab
quality evaluator binaryb0e7092557edd51a3fd5e22edc61649319cc010b07c9e8e9d92a93988e9a4f03
published evaluator source84611c3c6b915099b216245bbe5f6bca9ac0a4de68a2fba257ad43e9ffa527d0

The Rust corpus, curation, evaluation, and RunPod launch toolchain is committed at `thomasdavis/donto@5ad8593`. The admitted runtime source, engineering report, and public README update are committed at `thomasdavis/donto@c3a6912`. The accelerated serving base is pinned separately to `syv-ai/qwen38-27b-rtx3090@60daef8`.

The full software and hardware capture is `runtime/environment.json`. The unchanged source adapter identity, deterministic key remap, and no-retraining declaration are under `provenance/` and `runtime/adapter/`. See the engineering report for the experiment history and the distinction between target-model fidelity, structured quality, and aggregate throughput.

Training data and history

This package intentionally preserves more than the final adapter:

  • —training/source/ contains the corpus builders, evaluator, trainer, audit, and remapping programs used for V15;
  • —training/data/v15/ contains the complete canonical train, validation, optional D1-repeat, and validator JSONL files plus both tool schemas;
  • —training/data/gold-100/ contains the complete public 100-document graph-first gold and validator suites plus both tool schemas;
  • —training/logs/ contains the selected training and canary logs;
  • —artifacts/ contains the immutable training contract, manifest, completion receipt, LoRA target-module audit, and original V15 training-run checksum receipt (whose paths are relative to the original training output);
  • —docs/ records both accepted and rejected V11–V15 experiments;
  • —the same complete data and its dedicated data card are also available at `ajaxdavis/donto-qwen3.8-27b-predicate-extraction-data`.

The adapter, runtime, and code use Apache-2.0. The included data retains its separate mixed-provenance terms in `training/data/DATA-LICENSE.md`; the repository license tag does not relicense source-derived excerpts.

No training, calibration, optimizer step, backward pass, or gradient update was performed to produce the RTX 3090 speedup.

Scope and limitations

  • —This is an English-focused predicate extractor, not a general chat model.
  • —The strict published quality numbers measure exact matches to a source-disjoint synthetic/reviewed Donto set. They are reproducible regression evidence, not a claim that every semantically valid paraphrase is scored.
  • —Throughput is workload-dependent. A single request is slower than the four-document aggregate; longer prompts or larger output caps require a new memory and quality admission run.
  • —The measured runtime is Linux/CUDA/RTX 3090 specific and currently depends on audited source overlays rather than stock vLLM.
  • —Do not silently increase context length, sequence count, KV allocation, or speculative depth. Re-run the shipped gates when changing the profile.
  • —The runtime does not make unsupported claims safe. Deployments should retain source text, validate structured output, and use Donto's citer or another evidence check when provenance is required.

Vision

Donto is a contradiction-preserving claim substrate for generative abundance. The scarce step is no longer inventing a schema before learning anything; it is holding many evidence-bearing, potentially incompatible claims without deleting the losing view. This model is a practical extraction front end for that idea: cheap enough to run continuously on a single consumer GPU, flexible enough to mint source-shaped predicates, and structured enough to feed an auditable knowledge system.