specgen-qwen3-1.7b

A LoRA adapter over Qwen/Qwen3-1.7B that turns a task written in ordinary Russian into an executable FTS specification โ€” a document that a real compiler parses, type checks, runs the examples of, and proves the theorem of.

On a 1 500-document holdout whose structural templates and subject areas were split off before any data was generated, 99.9 % of what this adapter writes passes the real compiler and 92.8 % of it means what the task asked. The untuned base model, on the same documents, scores 0.

133 MiB of adapter, plus a 1.2 GiB GGUF for CPU serving.


0. Two adapters live in this repository. Read this first.

This repository has been published twice. Both adapters are here, neither is hidden, and each one names the revision of the training data it was built from. A number quoted without that pairing is meaningless, because the two revisions of the corpus differ in ways that changed the model's behaviour.

revision 2 โ€” current revision 1 โ€” previous
where repository root previous/data-rev1/
trained on dataset revision 2, 11 000 rows dataset revision 1, 9 000 rows
training data defects none known two, both listed below
passes the compiler (1 500 holdout) 1 499/1 500 (99.9 %) 1 492/1 500 (99.5 %)
means what the task asked 1 392/1 500 (92.8 %) 1 257/1 500 (83.8 %)
writes the theorem when asked 453/453 (100 %) 324/453 (71.5 %)
writes both calculations when asked 20/20 0/20
marks both optional fields when asked 2/108 21/108
GGUF gguf/specgen-1.7b-v2-Q5_K_M.gguf gguf/specgen-1.7b-v1-Q5_K_M.gguf

Both columns are measured on the same 1 500 documents โ€” the holdout of dataset revision 2 โ€” with the same greedy decoding and the same compiler. That matters: 64 of the 1 500 task texts changed between the revisions (revision 1 chose the phrasing register non-reproducibly), so the previous adapter's outputs were regenerated on the new prompts rather than carried over from its own publication run. The revision-1 numbers you may have read on this page before โ€” 1 491/1 500 and 83.8 % โ€” were measured on the revision-1 holdout and are reproduced in ยง 2.3 for continuity.

Revision 2 is better on every headline and worse on exactly one thing, and that one thing is named, measured and explained in ยง 1.3 rather than buried. It is not caused by the data fix.

What changed in the data between the revisions

Revision 1 of fts-specgen-dataset carried two defects and one gap, all three of which this adapter's predecessor inherited:

  1. The gap: not one of the 9 000 training documents contained a utility and a theorem at the same time. The CMB-UTL-THM holdout template asks for both; the previous adapter produced the theorem 0 times out of 129.
  2. The defect: 416 of 10 500 published documents answered a task naming two calculations with a document containing one โ€” the corpus generator printed both into the task and only the first into the document. The previous adapter learned that mapping exactly and reproduced it 20 times out of 20.
  3. Two smaller ones: 448 documents carried float noise (7.199999999999999) that fell outside the GBNF grammar after it was narrowed, and the phrasing register was chosen non-reproducibly.

Revision 2 fixes all of them. Revision 2 of the corpus measures 0 two-calculation divergences over all 12 950 documents and conforms to the grammar 12 950 of 12 950.


1. Read this before you read any number

1.1 The gate proves compilation, not meaning โ€” and both are reported

This is the single most important sentence on this page.

Every "passes the compiler" number is produced by running the model's output through the actual FTS toolchain: compile โ†’ validate (with coverage analysis) โ†’ testUtilities (executes every ะฟั€ะธะผะตั€ in the document) โ†’ for documents with a theorem, prove + certify + verifyCertificate. A document that passes has been proven well-formed, well-typed, self-consistent and internally proved.

It has not been proven to mean what the task asked for in words. A document that compiles perfectly while computing the wrong thing passes the gate.

So meaning is measured separately, and by a different instrument. The task text is parsed by an independent reader into the same shape the compiler builds from the document, and the two are compared element by element. That comparison's sensitivity is itself measured: 8 600 of 8 600 deliberate corruptions were caught (4 800 mutations of the document, 3 800 of the task), and its six declared blind spots โ€” changes that must not count, such as ยซั‚ะตะบัั‚ยป โ†” ัั‚ั€ะพะบะฐ โ€” were verified to be silent.

verdict on this adapter's 1 500 holdout documents count
means exactly what the task asked 1 392 (92.8 %)
means something different 108 (7.2 %)
did not compile at all 0

Against the previous adapter's 1 257 (83.8 %), 235 and 8 on the same 1 500 tasks.

The honest reading of this page is: 99.9 % of outputs are valid FTS, and 92.8 % of outputs mean what was asked. Those are two different numbers about two different things.

1.2 The two inherited defects are closed

Both defects that the previous adapter carried are gone, and each was checked with the instrument that found it rather than by eye.

previous adapter this adapter
CMB-UTL-THM โ€” task asks for a calculation and a theorem theorem present 0/129 129/129
all templates whose reference has a theorem 324/453 453/453
CMB-TWO-UTIL โ€” task asks for two calculations second one written 0/20 20/20
extended holdout, 450 documents that all need both theorem present 0/450 446/450 (99.1 %)

The CMB-TWO-UTIL row is not an eyeball count of ัƒั‚ะธะปะธั‚ะฐ blocks. It is the same task-versus-document comparison used to find the defect in the corpus: on all 20 documents the number of utilities now agrees with the task (utilities/<ะบะพะปะธั‡ะตัั‚ะฒะพ> divergences: 20 โ†’ 0).

One CMB-TWO-UTIL document still diverges, for an unrelated reason: CMB-TWO-UTIL:telecom:0 writes an example whose expected result the interpreter disagrees with (FTS_EXAMPLE_MISMATCH on a boundary case, expected 0, got 0.2). It is the only document in the whole 1 500 that the compiler rejects.

1.3 What got worse: optional fields, 21/108 โ†’ 2/108

This is a regression and it is not caused by the data fix.

The OBJ-OPTIONAL holdout template has 108 documents. Every one of their tasks names exactly two optional fields ("ยซะดะฐั‚ะฐ ัั‚ะฐั€ั‚ะฐยป โ€” ะดะฐั‚ะฐ, ะฝะตะพะฑัะทะฐั‚ะตะปัŒะฝะพะต"), and every reference document marks exactly two (ะธะฝะพะณะดะฐ ัะฒะปัะตั‚ัั). The adapter must mark both.

correct on OBJ-OPTIONAL documents emitting 0 / 1 / 2 marks
previous adapter (data rev 1, 9 000 rows) 21/108 47 / 40 / 21
this adapter (data rev 2, 11 000 rows) 2/108 43 / 40 / 25

Note the second column: this adapter emits the right number of marks slightly more often (25 vs 21) and is still right less often, because it puts them on the wrong fields. It drops the mark from the date field 106 times and invents one on the boolean field 23 times.

The cause is the 2 000 extra training rows, not the corrected data. The intermediate adapter that added the same 2 000 rows to the uncorrected revision-1 corpus scores 2/108 as well โ€” identically. Its full report ships as eval/rev2/semcheck.ml32-trained-on-rev1.holdout.jsonl so this can be checked rather than taken on trust. The data fix moved CMB-TWO-UTIL from 20 divergences to 0 and left OBJ-OPTIONAL exactly where it was.

The root cause is in the training distribution, and it is exact:

OBJ-OPTIONAL is a held-out template โ€” no training document has that shape. Optional fields appear in training only inside CMB-STRUCT-UTL and CMB-STRUCT-UTL-THM, and there they appear exactly once per document, always. Of the 11 000 training rows, 797 have one optional field and 10 203 have none. Not one training document has two.

The 2 000 rows added for the theorem fix are 400 CMB-STRUCT-UTL-THM among them, all single-optional; they raised the share of "exactly one ะธะฝะพะณะดะฐ per document" from 397/9 000 to 797/11 000 and sharpened a prior that was already wrong for this template. The model has never seen the thing it is being asked to do, and the extra data made it more confident about the nearest thing it has seen.

Practical consequence: if your task marks more than one field as ะฝะตะพะฑัะทะฐั‚ะตะปัŒะฝะพะต, check that all of them came out as ะธะฝะพะณะดะฐ ัะฒะปัะตั‚ัั. The compiler cannot help you here โ€” a field declared required instead of optional is a perfectly valid document.

Fixing it needs training rows with two or more optional fields. None exist yet, so nothing about this is speculative-but-fixed: it is measured, named, and open.

1.4 This writes specifications; it is not a chat model

The adapter was trained on one task shape with one system prompt (ยง 6). Used as a general assistant it will emit FTS at you. None of the numbers here describe that use.

1.5 Russian only

The dataset is Russian and so is the model's competence. The FTS surface syntax used here is the Russian one. The English surface of the language is not covered โ€” not measured and not expected to work.


2. What was measured

2.1 The full 1 500-document holdout

The holdout is not a random slice. split.json divides the space of structural templates and subject areas and is written before the first document is generated. A document is training data only if both its template and its area are on the training side; everything else is holdout, labelled with which thing is new.

Greedy decoding, no grammar constraint, no reference sheet in the prompt, max_new_tokens = 1200, thinking disabled. Both rows of every table below are the two adapters on the same 1 500 revision-2 tasks.

passes the real compiler new area new template new template and area total
this adapter (data rev 2) 500/501 (99.8 %) 501/501 (100 %) 498/498 (100 %) 1 499/1 500 (99.9 %)
previous adapter (data rev 1) 495/501 (98.8 %) 501/501 (100 %) 496/498 (99.6 %) 1 492/1 500 (99.5 %)
matches the reference structure new area new template new template and area total
this adapter 500/501 501/501 498/498 1 499/1 500 (99.9 %)
previous adapter 475/501 436/501 433/498 1 344/1 500 (89.6 %)
means what the task asked total where it diverges
this adapter 1 392/1 500 (92.8 %) OBJ-OPTIONAL 106, OBJ-NESTED 1, CMB-TWO-UTIL 1
previous adapter 1 257/1 500 (83.8 %) CMB-UTL-THM 129, OBJ-OPTIONAL 87, CMB-TWO-UTIL 20, other 7

The single compiler failure for this adapter is an FTS_EXAMPLE_MISMATCH (ยง 1.2). The previous adapter's 8 failures are all PARSE_ERROR at the compile stage.

Inside the 1 499 documents that passed: 3 102 examples were executed and 3 102 passed โ€” the documents' own ะฟั€ะธะผะตั€ blocks, run by the language's interpreter โ€” and 453 theorems were proved, certified, and each certificate independently re-checked against its own digest, 453 of 453. The adapter wrote a theorem in exactly the 453 documents whose reference has one: none missing, none invented.

Note what the second table shows about this revision: structure match and compiler pass are now the same 1 499 documents. In the previous adapter they were 148 documents apart, and that gap was the missing theorems.

2.2 The extended holdout โ€” 450 documents that all need a calculation and a theorem

This split exists to stress exactly the combination the previous adapter could not do.

compiler theorem present means what was asked
this adapter 446/450 (99.1 %) 446/450 (99.1 %) 444/450 (98.7 %)
previous adapter 420/450 (93.3 %) 0/450 (0 %) not applicable โ€” no theorem in any

All 4 of this adapter's failures are PARSE_ERROR, all 4 in one template (CMB-UTL-THM-MULTI: two unterminated ยซ quotes, one stray token after a name, one unrecognised theorem line). The previous adapter failed 30 documents across six templates.

2.3 The revision-1 measurement, kept for continuity

The previous adapter's published numbers were taken on the revision-1 holdout: 1 491/1 500 (99.4 %) through the compiler โ€” 98.8 % / 100 % / 99.4 % by stratum โ€” 1 364/1 500 (90.9 %) structural match, and 1 257/1 500 (83.8 %) semantic fidelity with 234 divergences and 9 documents that did not compile. Those are not deleted and not restated as the new baseline; ยง 2.1 re-measures the same adapter on the same tasks as the new one, which is the comparison that carries weight.

3. Reference points, on the same 150 documents

Four systems, one fixed 150-document slice of the holdout (50 per stratum), same prompts, same greedy decoding, same gate.

system reference sheet in prompt passes the compiler
Qwen3-1.7B, untuned no 0/150 (0 %)
Qwen3-1.7B, untuned yes (2 235 tokens) 15/150 (10.0 %)
Qwen3-14B (nf4), untuned yes (2 235 tokens) 79/150 (52.7 %)
Qwen3-1.7B + adapter rev 1 no 150/150 (100 %)
Qwen3-1.7B + adapter rev 2 no 149/150 (99.3 %)

Two honest notes on the last two rows. The rev-2 row is one document behind, and it is the single FTS_EXAMPLE_MISMATCH of ยง 1.2, which happens to fall in this slice; on the full 1 500 the order is the other way round (1 499 vs 1 492). And the three untuned baselines were run on the revision-1 phrasing of these tasks, of which 5 of the 150 changed in revision 2 โ€” too few to move a 0/15/79 result, but it is a difference and it is stated. On semantic fidelity over the same 150, adapter rev 2 scores 140/150.

The comparison the table is for: a 1.7B model that has been trained beats a 14B model that has been shown the manual, and it does it without the manual in its context.

3.1 An oddity in the same run, reported rather than smoothed over

The same 150 outputs were also run through the GBNF recogniser for fts-gate/grammars/fts.gbnf:

system compiler grammar accepts
Qwen3-1.7B untuned, no sheet 0/150 0/150
Qwen3-1.7B untuned + sheet 15/150 0/150
Qwen3-14B (nf4) + sheet 79/150 78/150
Qwen3-1.7B + adapter rev 1 150/150 150/150

The middle row does not behave like the others: 15 documents the compiler accepted, the grammar rejected all of them. The grammar and the compiler are not the same acceptor and were never claimed to be nested, but a 15-to-0 split is larger than that explains. Nobody has diagnosed it. It is printed here because deleting an inconvenient row is how a measurement becomes folklore.

3.2 A previous 24/25 result for the 14B that did not reproduce

An earlier run of this project recorded 24/25 for a 14B model with the reference sheet. On this holdout the same configuration scored 79/150 (52.7 %).

The team's hypothesis is that the earlier run decoded under the GBNF grammar and this one did not. That hypothesis has never been tested. The earlier run's raw record is not in the evaluation tree, so it cannot be re-derived, and the two measurements use different document sets of different sizes.

The two numbers are not comparable and must not be quoted as a before/after. The 79/150 in ยง 3 is what this work measured; 24/25 is an earlier number about a different run that this work could not reproduce, and that is the whole of what is known.

4. Choosing the base โ€” the difference was noise

Four pilots, identical LoRA and identical hyperparameters, trained on a 6 856-row subset and scored on a fixed 180-document dev split. This experiment predates both revisions and was not repeated; it is what chose the base, not what evaluates the current adapter.

base epochs passes the compiler train time McNemar vs Qwen3-1.7B 2ep
Qwen/Qwen3-4B 1 175/180 (97.2 %) 2 866 s p = 0.774
Qwen/Qwen3-1.7B 2 174/180 (96.7 %) 2 502 s โ€” (chosen)
Qwen/Qwen3-1.7B 1 173/180 (96.1 %) 1 249 s โ€”
Vikhrmodels/QVikhr-3-1.7B-Instruction-noreasoning 1 167/180 (92.8 %) 1 262 s p = 0.070

4B's advantage is one document out of 180. A paired McNemar test gives p = 0.774 โ€” indistinguishable from noise. Paying 2.4ร— the parameters and 15 % more training time for that is not supported by the measurement, so 1.7B was chosen.

The QVikhr result deserves a caveat the headline does not give it. 92.8 % against 96.7 % is 7 documents, and p = 0.070 does not reach the conventional 0.05 threshold. The direction agrees with this organisation's earlier finding that Russian SFT over an unchanged Qwen tokeniser buys nothing for structured-output tasks (digit-router-experiments), but on this evidence alone "QVikhr is worse" is suggestive, not established. One seed, one run, 180 documents.

5. Training

revision 2 โ€” current revision 1 โ€” previous
base Qwen/Qwen3-1.7B, bf16 (not quantised) same
method LoRA, r = 32, alpha = 64, dropout 0.05 same
target modules q_proj, k_proj, v_proj, o_proj, gate_proj, up_proj, down_proj same
training data fts-specgen-dataset revision 2, 11 000 rows revision 1, 9 000 rows
rows dropped for length 0 0
epochs 2 2
lr 1e-4 1e-4
batch 2 ร— grad-accum 8 = effective 16 same
max length 2 560 tokens 1 792 tokens
optimiser adamw_bnb_8bit same
wall time 5 075 s (85 min) 3 442 s (57 min)
peak GPU memory 12.59 GiB 9.96 GiB
final train loss 0.0126 0.0154
PEFT 0.20.0 0.20.0

Why max_length had to go up. The 2 000 rows that carry a utility and a theorem are longer than the rest โ€” median 1 821 tokens against 1 048. At the previous 1 792 the trainer would have silently dropped 1 081 of those 2 000, and the theorem fix would have half failed without any error message. At 2 560, 0 rows were dropped. Cost: 2.6 GiB more memory and 28 minutes more wall time.

It still fits in 13 GiB on one GPU.

No intermediate checkpoint-*/ state is published โ€” it lets you resume a run and reproduces nothing that the final adapter and train_summary.json do not.

6. How to use it

The system prompt is not optional. It is the one the model was trained under, verbatim:

ะขั‹ ะฟะธัˆะตัˆัŒ ะธัะฟะพะปะฝัะตะผั‹ะต ัะฟะตั†ะธั„ะธะบะฐั†ะธะธ ะฝะฐ ัะทั‹ะบะต FTS (ั€ัƒััะบะฐั ะฟะพะฒะตั€ั…ะฝะพัั‚ัŒ). ะžั‚ะฒะตั‚ โ€” ั‚ะพะปัŒะบะพ ั‚ะตะบัั‚ ัะฟะตั†ะธั„ะธะบะฐั†ะธะธ, ะฑะตะท ะฟะพััะฝะตะฝะธะน ะธ ะฑะตะท ะพะณั€ะฐะถะดะตะฝะธะน ะบะพะดะฐ.
import torch
from transformers import AutoTokenizer, AutoModelForCausalLM
from peft import PeftModel

SYS = ("ะขั‹ ะฟะธัˆะตัˆัŒ ะธัะฟะพะปะฝัะตะผั‹ะต ัะฟะตั†ะธั„ะธะบะฐั†ะธะธ ะฝะฐ ัะทั‹ะบะต FTS (ั€ัƒััะบะฐั ะฟะพะฒะตั€ั…ะฝะพัั‚ัŒ). "
       "ะžั‚ะฒะตั‚ โ€” ั‚ะพะปัŒะบะพ ั‚ะตะบัั‚ ัะฟะตั†ะธั„ะธะบะฐั†ะธะธ, ะฑะตะท ะฟะพััะฝะตะฝะธะน ะธ ะฑะตะท ะพะณั€ะฐะถะดะตะฝะธะน ะบะพะดะฐ.")

tok = AutoTokenizer.from_pretrained("digitable-lol/specgen-qwen3-1.7b")
base = AutoModelForCausalLM.from_pretrained("Qwen/Qwen3-1.7B", dtype=torch.bfloat16,
                                            device_map={"": 0})
model = PeftModel.from_pretrained(base, "digitable-lol/specgen-qwen3-1.7b")
model = model.merge_and_unload().eval()

msgs = [{"role": "system", "content": SYS},
        {"role": "user", "content": "<ะทะฐะดะฐะฝะธะต ะฝะฐ ั€ัƒััะบะพะผ>"}]
prompt = tok.apply_chat_template(msgs, tokenize=False, add_generation_prompt=True,
                                 enable_thinking=False)          # thinking OFF
ids = tok(prompt, return_tensors="pt", add_special_tokens=False).to(model.device)
out = model.generate(**ids, max_new_tokens=1200, do_sample=False)  # greedy
print(tok.decode(out[0, ids["input_ids"].shape[1]:], skip_special_tokens=True))

To load the previous adapter instead, pass subfolder="previous/data-rev1". Its behaviour is the right-hand column of ยง 0, and it is kept so that anything measured against it stays reproducible โ€” not because it is recommended.

Every number on this page is greedy (do_sample=False) with thinking disabled. Sampling was not measured.

6.1 GGUF, for serving on a CPU

gguf/specgen-1.7b-v2-Q5_K_M.gguf   this adapter, merged into the base and quantised
gguf/specgen-1.7b-v1-Q5_K_M.gguf   the previous adapter, same recipe, kept

1.2 GiB each โ€” the same byte count, which is what two runs of one recipe over one architecture produce.

v2 was built by merging the LoRA into Qwen/Qwen3-1.7B in fp16, converting with convert_hf_to_gguf.py and quantising with llama-quantize, both from llama.cpp b10295 โ€” the build this project pins and serves with. It quantises to 5.82 bits per weight. v1 predates this record: it carries the same 310 tensors, the same quantization_version 2 and the same file_type 17, so it is the same quantisation of the same architecture, but which llama.cpp build produced it was never written down. That is a gap in the record, not a claim.

The training tasks are short (the longest is 747 prompt tokens and 1 200 of answer), so an 8 192-token window is fourfold headroom; the full 40 960 the base was trained on would cost gigabytes of KV cache for nothing.

6.2 Constrained decoding is free here

All 12 950 documents of dataset revision 2 are inside the language of the GBNF grammar fts-gate/grammars/fts.gbnf โ€” 12 950 of 12 950 accepted. Decoding under that grammar therefore costs the model nothing it was going to do anyway, and removes the failure mode that actually occurs (PARSE_ERROR).

This is a real improvement over the previous revision, not just a restatement. The previous adapter trained on 448 documents that carried float noise such as 7.199999999999999 and fell outside the grammar once it was narrowed on 2026-08-07; under constrained decoding it could be pushed off a token sequence its own training had made likely. Revision 2 rebuilt those 448, so this adapter's training data and the grammar agree.

No number in ยง 2 or ยง 3 was produced under the grammar. Everything above is unconstrained. Grammar-constrained decoding is an available improvement, still not a measured one.

The grammar ships in the dataset repository as fts.gbnf.

6.3 Verify the output; that is the point

The model is one half of the design. The other half is that the output is checkable:

# per document: compile -> validate -> testUtilities -> prove -> certify
node tools/verify.mjs < generations.ndjson > verdicts.ndjson

The gate runs at roughly 4 200 documents/second in-process. A specification you have not compiled is a guess. And โ€” ยง 1.1 โ€” a specification you have compiled is still only a valid document, not necessarily the right one.

7. Files

adapter_config.json               PEFT config (r=32, alpha=64, 7 target modules)
adapter_model.safetensors         133 MiB of LoRA delta โ€” trained on DATA REVISION 2
tokenizer.json                    the base tokenizer, unmodified
tokenizer_config.json
chat_template.jinja
train_summary.json                hyperparameters + final metrics for this adapter

previous/data-rev1/               the previous adapter โ€” trained on DATA REVISION 1
previous/data-rev1/README.md      what it is, why it is kept, what is wrong with it

gguf/specgen-1.7b-v2-Q5_K_M.gguf  this adapter, merged and quantised
gguf/specgen-1.7b-v1-Q5_K_M.gguf  the previous one, kept

eval/rev2/                        everything behind ยง 0-ยง 2
  specgen-qwen3-1.7b-ml32-rev2.holdout.ndjson       this adapter, 1 500 holdout
  specgen-qwen3-1.7b-ml32-rev2.holdout_ext.ndjson   this adapter, 450 extended
  specgen-qwen3-1.7b.rev2-holdout.ndjson            previous adapter, SAME 1 500
  specgen-qwen3-1.7b.rev2-holdout_ext.ndjson        previous adapter, SAME 450
  results.json                                      every number above, machine-readable
  results_ml32_trained_on_rev1.json                 the control run behind ยง 1.3
  semcheck.*.jsonl                                  per-document meaning verdicts
eval/*.ndjson                     the revision-1 evaluation record, unchanged
eval/reference.md                 the 2 235-token sheet given to the untuned baselines
MANIFEST.json                     sha256 of every file in this repository

eval/ is published so the claims are checkable rather than merely stated: those NDJSON files are the models' actual output, and re-running them through the compiler reproduces ยง 2.

8. What was not measured

  • Sampling. Greedy only. No temperature sweep, no self-consistency, no pass@k.
  • Grammar-constrained decoding (ยง 6.2) โ€” the dataset conforms to the grammar, but no evaluation on this page used it.
  • Documents with more than one optional field, in training. ยง 1.3 โ€” none exist, which is why that class fails. Whether adding them fixes it is unknown, because it has not been tried.
  • CPU latency and throughput of the GGUF. The file is built and served, but no timing claim is made here; the numbers that exist were taken on a loaded machine and are not worth quoting.
  • Any non-Russian surface.
  • Variance. One seed, one training run per revision. The base comparison in ยง 4 is one seed per base, which is why its differences are reported as noise rather than as a ranking.
  • Documents longer than the training distribution. max_length was 2 560 tokens and nothing longer was tried.
  • Real user requests. Every task the model has ever seen was generated by tools/task.py from the same structure that produced the reference document. Real requests are messier, and none were tested.

9. Origin and licensing

Both adapters: BSD-2-Clause.

Unlike the router models in this organisation, there is no unresolved copyleft question here. The FTS language and its compiler (@digitable-lol/fts) and the verification gate (@digitable-lol/fts-gate) are both BSD-2-Clause, both belong to this organisation, and the training data was generated from them by this project's own code.

The base model is Qwen/Qwen3-1.7B, Apache-2.0. The adapter files are LoRA deltas and do not redistribute it; using them requires downloading the base under its own terms. The GGUF files do contain the merged base weights and are therefore a redistribution of Qwen/Qwen3-1.7B under Apache-2.0, whose terms apply to them.

10. Integrity

MANIFEST.json lists the sha256 of every published file, recorded at upload time on the machine that produced it. This project tracks runs by weight hash rather than by tag, because a tag was once re-created from a different build while an evaluation was in flight and only the digest made the swap visible.


11. ะŸะพ-ั€ัƒััะบะธ

ะงั‚ะพ ัั‚ะพ ะธ ะบะฐะบะฐั ั€ะตะฒะธะทะธั

LoRA-ะฐะดะฐะฟั‚ะตั€ (133 ะœะธะ‘) ะฟะพะฒะตั€ั… Qwen/Qwen3-1.7B, ะบะพั‚ะพั€ั‹ะน ะฟะธัˆะตั‚ ะธัะฟะพะปะฝัะตะผั‹ะต ัะฟะตั†ะธั„ะธะบะฐั†ะธะธ FTS ะฟะพ ะทะฐะดะฐะฝะธัŽ ะฝะฐ ะพะฑั‹ั‡ะฝะพะผ ั€ัƒััะบะพะผ.

ะ’ ั€ะตะฟะพะทะธั‚ะพั€ะธะธ ะปะตะถะฐั‚ ะดะฒะฐ ะฐะดะฐะฟั‚ะตั€ะฐ, ะธ ัƒ ะบะฐะถะดะพะณะพ ะฝะฐะทะฒะฐะฝะฐ ั€ะตะฒะธะทะธั ะดะฐะฝะฝั‹ั…, ะฝะฐ ะบะพั‚ะพั€ะพะน ะพะฝ ะพะฑัƒั‡ะตะฝ. ะ‘ะตะท ัั‚ะพะน ะฟะฐั€ั‹ ั‡ะธัะปะพ ะฝะธั‡ะตะณะพ ะฝะต ะทะฝะฐั‡ะธั‚.

ั€ะตะฒะธะทะธั 2 โ€” ั‚ะตะบัƒั‰ะฐั ั€ะตะฒะธะทะธั 1 โ€” ะฟั€ะตะถะฝัั
ะณะดะต ะบะพั€ะตะฝัŒ ั€ะตะฟะพะทะธั‚ะพั€ะธั previous/data-rev1/
ะพะฑัƒั‡ะตะฝ ะฝะฐ ั€ะตะฒะธะทะธะธ 2 ะดะฐั‚ะฐัะตั‚ะฐ, 11 000 ัั‚ั€ะพะบ ั€ะตะฒะธะทะธะธ 1, 9 000 ัั‚ั€ะพะบ
ะฟั€ะพั…ะพะดะธั‚ ะบะพะผะฟะธะปัั‚ะพั€ (1 500) 1 499/1 500 (99,9 %) 1 492/1 500 (99,5 %)
ะพะทะฝะฐั‡ะฐะตั‚ ั‚ะพ, ั‡ั‚ะพ ะฟั€ะพัะธะปะธ 1 392/1 500 (92,8 %) 1 257/1 500 (83,8 %)
ะฟะธัˆะตั‚ ั‚ะตะพั€ะตะผัƒ, ะบะพะณะดะฐ ะฟั€ะพััั‚ 453/453 (100 %) 324/453 (71,5 %)
ะฟะธัˆะตั‚ ะพะฑะฐ ั€ะฐัั‡ั‘ั‚ะฐ, ะบะพะณะดะฐ ะฟั€ะพััั‚ 20/20 0/20
ะฟะพะผะตั‡ะฐะตั‚ ะพะฑะฐ ะฝะตะพะฑัะทะฐั‚ะตะปัŒะฝั‹ั… ะฟะพะปั 2/108 21/108
GGUF specgen-1.7b-v2-Q5_K_M.gguf specgen-1.7b-v1-Q5_K_M.gguf

ะžะฑะต ะบะพะปะพะฝะบะธ ัะฝัั‚ั‹ ะฝะฐ ะพะดะฝะธั… ะธ ั‚ะตั… ะถะต 1 500 ะดะพะบัƒะผะตะฝั‚ะฐั… โ€” holdout ั€ะตะฒะธะทะธะธ 2 โ€” ะพะดะฝะธะผ ะธ ั‚ะตะผ ะถะต greedy-ะดะตะบะพะดะธั€ะพะฒะฐะฝะธะตะผ ะธ ะพะดะฝะธะผ ะธ ั‚ะตะผ ะถะต ะบะพะผะฟะธะปัั‚ะพั€ะพะผ. ะญั‚ะพ ััƒั‰ะตัั‚ะฒะตะฝะฝะพ: ัƒ 64 ะธะท 1 500 ะทะฐะดะฐะฝะธะน ั‚ะตะบัั‚ ะธะทะผะตะฝะธะปัั ะผะตะถะดัƒ ั€ะตะฒะธะทะธัะผะธ (ะฒ ั€ะตะฒะธะทะธะธ 1 ั€ะตะณะธัั‚ั€ ั„ะพั€ะผัƒะปะธั€ะพะฒะบะธ ะฒั‹ะฑะธั€ะฐะปัั ะฝะตะฒะพัะฟั€ะพะธะทะฒะพะดะธะผะพ), ะฟะพัั‚ะพะผัƒ ะฒั‹ะดะฐั‡ะธ ะฟั€ะตะถะฝะตะณะพ ะฐะดะฐะฟั‚ะตั€ะฐ ะฟะตั€ะตัะฝัั‚ั‹ ะฝะฐ ะฝะพะฒั‹ั… ะทะฐะดะฐะฝะธัั…, ะฐ ะฝะต ะฒะทัั‚ั‹ ะธะท ะตะณะพ ัะพะฑัั‚ะฒะตะฝะฝะพะน ะฟัƒะฑะปะธะบะฐั†ะธะธ.

ะ“ะปะฐะฒะฝะฐั ะพะณะพะฒะพั€ะบะฐ

ะ“ะตะนั‚ ั€ัƒั‡ะฐะตั‚ัั, ั‡ั‚ะพ ะดะพะบัƒะผะตะฝั‚ ะบะพะผะฟะธะปะธั€ัƒะตั‚ัั, ั‚ะธะฟะธะทะธั€ัƒะตั‚ัั, ะธัะฟะพะปะฝัะตั‚ ัะฒะพะธ ะฟั€ะธะผะตั€ั‹ ะธ ะดะพะบะฐะทั‹ะฒะฐะตั‚ ัะฒะพัŽ ั‚ะตะพั€ะตะผัƒ. ะžะฝ ะฝะต ั€ัƒั‡ะฐะตั‚ัั, ั‡ั‚ะพ ะดะพะบัƒะผะตะฝั‚ ะพะทะฝะฐั‡ะฐะตั‚ ั‚ะพ, ั‡ั‚ะพ ะฟั€ะพัะธะปะธ ัะปะพะฒะฐะผะธ. ะŸะพัั‚ะพะผัƒ ัะผั‹ัะป ะผะตั€ัะตั‚ัั ะพั‚ะดะตะปัŒะฝั‹ะผ ะธะฝัั‚ั€ัƒะผะตะฝั‚ะพะผ: ะทะฐะดะฐะฝะธะต ั‡ะธั‚ะฐะตั‚ัั ะฝะตะทะฐะฒะธัะธะผั‹ะผ ั‡ะธั‚ะฐั‚ะตะปะตะผ ะฒ ั‚ัƒ ะถะต ะผะพะดะตะปัŒ, ะบะพั‚ะพั€ัƒัŽ ะบะพะผะฟะธะปัั‚ะพั€ ัั‚ั€ะพะธั‚ ะธะท ะดะพะบัƒะผะตะฝั‚ะฐ, ะธ ะพะฝะธ ัั€ะฐะฒะฝะธะฒะฐัŽั‚ัั ะฟะพัะปะตะผะตะฝั‚ะฝะพ. ะงัƒะฒัั‚ะฒะธั‚ะตะปัŒะฝะพัั‚ัŒ ัะฐะผะพะน ะผะตั‚ั€ะธะบะธ ะธะทะผะตั€ะตะฝะฐ: 8 600 ะธะท 8 600 ะฝะฐะผะตั€ะตะฝะฝั‹ั… ะฟะพั€ั‡ ะฟะพะนะผะฐะฝะพ (4 800 ะฟะพั€ั‡ ะดะพะบัƒะผะตะฝั‚ะฐ, 3 800 โ€” ะทะฐะดะฐะฝะธั), ะธ ัˆะตัั‚ัŒ ะตั‘ ะทะฐัะฒะปะตะฝะฝั‹ั… ัะปะตะฟั‹ั… ะฟัั‚ะตะฝ ะฟั€ะพะฒะตั€ะตะฝั‹ ะฝะฐ ะผะพะปั‡ะฐะฝะธะต.

ะงะตัั‚ะฝะพะต ั‡ั‚ะตะฝะธะต ัั‚ั€ะฐะฝะธั†ั‹: 99,9 % ะฒั‹ะดะฐั‡ โ€” ะฒะฐะปะธะดะฝั‹ะน FTS, ะธ 92,8 % ะฒั‹ะดะฐั‡ ะพะทะฝะฐั‡ะฐัŽั‚ ั‚ะพ, ั‡ั‚ะพ ะฟั€ะพัะธะปะธ.

ะžะฑะฐ ัƒะฝะฐัะปะตะดะพะฒะฐะฝะฝั‹ั… ะดะตั„ะตะบั‚ะฐ ะทะฐะบั€ั‹ั‚ั‹

ะขะตะพั€ะตะผะฐ ั€ัะดะพะผ ั ั€ะฐัั‡ั‘ั‚ะพะผ. ะ‘ั‹ะปะพ: ัˆะฐะฑะปะพะฝ CMB-UTL-THM โ€” ั‚ะตะพั€ะตะผะฐ ะฝะฐะฟะธัะฐะฝะฐ 0 ั€ะฐะท ะธะท 129, ะฟั€ะธ 257 ะธะท 257 ะฝะฐ ะดั€ัƒะณะธั… ัˆะฐะฑะปะพะฝะฐั… ั ั‚ะตะพั€ะตะผะฐะผะธ. ะŸั€ะธั‡ะธะฝะฐ ะปะตะถะฐะปะฐ ะฒ ะดะฐะฝะฝั‹ั…: ะฝะธ ะพะดะธะฝ ะธะท 9 000 ะพะฑัƒั‡ะฐัŽั‰ะธั… ะดะพะบัƒะผะตะฝั‚ะพะฒ ะฝะต ัะพะดะตั€ะถะฐะป ัƒั‚ะธะปะธั‚ัƒ ะธ ั‚ะตะพั€ะตะผัƒ ะพะดะฝะพะฒั€ะตะผะตะฝะฝะพ. ะกั‚ะฐะปะพ: 129/129, ะฐ ะฝะฐ ะฒัะตั… ัˆะฐะฑะปะพะฝะฐั… ั ั‚ะตะพั€ะตะผะพะน โ€” 453/453. ะะฐ ั€ะฐััˆะธั€ะตะฝะฝะพะผ holdout ะธะท 450 ะดะพะบัƒะผะตะฝั‚ะพะฒ, ะณะดะต ั‚ะตะพั€ะตะผะฐ ะฝัƒะถะฝะฐ ะฒััŽะดัƒ: ะฑั‹ะปะพ 0/450, ัั‚ะฐะปะพ 446/450 (99,1 %).

ะ”ะฒะฐ ั€ะฐัั‡ั‘ั‚ะฐ ะฒะผะตัั‚ะพ ะพะดะฝะพะณะพ. ะ‘ั‹ะปะพ: ะฝะฐ ะฒัะตั… 20 ะทะฐะดะฐะฝะธัั… CMB-TWO-UTIL, ะณะดะต ะฟั€ะพัะธะปะธ ะดะฒะฐ ั€ะฐัั‡ั‘ั‚ะฐ, ะฐะดะฐะฟั‚ะตั€ ะฟะธัะฐะป ะพะดะธะฝ โ€” 20 ะธะท 20. ะญั‚ะพ ะฑั‹ะปะฐ ะฝะต ะดั‹ั€ะฐ, ะฐ ะพัˆะธะฑะบะฐ ะฒ ะดะฐะฝะฝั‹ั…: 416 ะธะท 10 500 ะดะพะบัƒะผะตะฝั‚ะพะฒ ั€ะตะฒะธะทะธะธ 1 ะพั‚ะฒะตั‡ะฐะปะธ ะฝะฐ ะทะฐะดะฐะฝะธะต ั ะดะฒัƒะผั ั€ะฐัั‡ั‘ั‚ะฐะผะธ ะดะพะบัƒะผะตะฝั‚ะพะผ ั ะพะดะฝะธะผ. ะกั‚ะฐะปะพ: ั€ะฐัั…ะพะถะดะตะฝะธะน ะฟะพ ั‡ะธัะปัƒ ัƒั‚ะธะปะธั‚ 0 ะธะท 20. ะŸั€ะพะฒะตั€ะตะฝะพ ะฝะต ะฝะฐ ะณะปะฐะท, ะฐ ั‚ะตะผ ะถะต ัั€ะฐะฒะฝะตะฝะธะตะผ ะทะฐะดะฐะฝะธะต-ะฟั€ะพั‚ะธะฒ-ะดะพะบัƒะผะตะฝั‚ะฐ, ะบะพั‚ะพั€ั‹ะผ ะดะตั„ะตะบั‚ ะฝะฐัˆะปะธ ะฒ ะดะฐั‚ะฐัะตั‚ะต.

ะžะดะธะฝ ะดะพะบัƒะผะตะฝั‚ CMB-TWO-UTIL ะฒัั‘ ะถะต ั€ะฐัั…ะพะดะธั‚ัั, ะฝะพ ะฟะพ ะดั€ัƒะณะพะน ะฟั€ะธั‡ะธะฝะต: CMB-TWO-UTIL:telecom:0 ะฟะธัˆะตั‚ ะฟั€ะธะผะตั€, ั ะพะถะธะดะฐะฝะธะตะผ ะบะพั‚ะพั€ะพะณะพ ะธะฝั‚ะตั€ะฟั€ะตั‚ะฐั‚ะพั€ ะฝะต ัะพะณะปะฐัะตะฝ (FTS_EXAMPLE_MISMATCH ะฝะฐ ะณั€ะฐะฝะธั†ะต ะฟั€ะฐะฒะธะปะฐ). ะญั‚ะพ ะตะดะธะฝัั‚ะฒะตะฝะฝั‹ะน ะดะพะบัƒะผะตะฝั‚ ะธะท 1 500, ะบะพั‚ะพั€ั‹ะน ะบะพะผะฟะธะปัั‚ะพั€ ะพั‚ะฒะตั€ะณ.

ะงั‚ะพ ัั‚ะฐะปะพ ั…ัƒะถะต: ะฝะตะพะฑัะทะฐั‚ะตะปัŒะฝั‹ะต ะฟะพะปั, 21/108 โ†’ 2/108

ะญั‚ะพ ัƒั…ัƒะดัˆะตะฝะธะต, ะธ ะฒั‹ะทะฒะฐะฝะพ ะพะฝะพ ะฝะต ะฟะพั‡ะธะฝะบะพะน ะดะฐะฝะฝั‹ั….

ะ’ ัˆะฐะฑะปะพะฝะต OBJ-OPTIONAL 108 ะดะพะบัƒะผะตะฝั‚ะพะฒ. ะšะฐะถะดะพะต ะทะฐะดะฐะฝะธะต ะฝะฐะทั‹ะฒะฐะตั‚ ั€ะพะฒะฝะพ ะดะฒะฐ ะฝะตะพะฑัะทะฐั‚ะตะปัŒะฝั‹ั… ะฟะพะปั, ะบะฐะถะดั‹ะน ัั‚ะฐะปะพะฝ ะฟะพะผะตั‡ะฐะตั‚ ั€ะพะฒะฝะพ ะดะฒะฐ (ะธะฝะพะณะดะฐ ัะฒะปัะตั‚ัั).

ะฒะตั€ะฝะพ ะดะพะบัƒะผะตะฝั‚ะพะฒ ั 0 / 1 / 2 ะฟะพะผะตั‚ะบะฐะผะธ
ะฟั€ะตะถะฝะธะน ะฐะดะฐะฟั‚ะตั€ 21/108 47 / 40 / 21
ัั‚ะพั‚ ะฐะดะฐะฟั‚ะตั€ 2/108 43 / 40 / 25

ะžะฑั€ะฐั‚ะธั‚ะต ะฒะฝะธะผะฐะฝะธะต ะฝะฐ ะฒั‚ะพั€ัƒัŽ ะบะพะปะพะฝะบัƒ: ะฟั€ะฐะฒะธะปัŒะฝะพะต ะบะพะปะธั‡ะตัั‚ะฒะพ ะฟะพะผะตั‚ะพะบ ัั‚ะพั‚ ะฐะดะฐะฟั‚ะตั€ ัั‚ะฐะฒะธั‚ ะดะฐะถะต ั‡ะฐั‰ะต (25 ะฟั€ะพั‚ะธะฒ 21), ะฐ ะฟั€ะฐะฒ ะฒัั‘ ั€ะฐะฒะฝะพ ั€ะตะถะต โ€” ะฟะพั‚ะพะผัƒ ั‡ั‚ะพ ัั‚ะฐะฒะธั‚ ะธั… ะฝะต ะฝะฐ ั‚ะต ะฟะพะปั. ะžะฝ ั‚ะตั€ัะตั‚ ะฟะพะผะตั‚ะบัƒ ะฝะฐ ะฟะพะปะต-ะดะฐั‚ะต 106 ั€ะฐะท ะธ ะฟั€ะธะฟะธัั‹ะฒะฐะตั‚ ะปะธัˆะฝัŽัŽ ะฟะพะปัŽ-ะฟั€ะธะทะฝะฐะบัƒ 23 ั€ะฐะทะฐ.

ะŸั€ะธั‡ะธะฝะฐ โ€” 2 000 ะดะพะฑะฐะฒะปะตะฝะฝั‹ั… ะพะฑัƒั‡ะฐัŽั‰ะธั… ัั‚ั€ะพะบ, ะฐ ะฝะต ะธัะฟั€ะฐะฒะปะตะฝะฝั‹ะต ะดะฐะฝะฝั‹ะต. ะŸั€ะพะผะตะถัƒั‚ะพั‡ะฝั‹ะน ะฐะดะฐะฟั‚ะตั€, ะดะพะฑะฐะฒะธะฒัˆะธะน ั‚ะต ะถะต 2 000 ัั‚ั€ะพะบ ะบ ะฝะตะธัะฟั€ะฐะฒะปะตะฝะฝะพะผัƒ ะบะพั€ะฟัƒััƒ ั€ะตะฒะธะทะธะธ 1, ะดะฐั‘ั‚ ั‚ะต ะถะต 2/108. ะ•ะณะพ ะฟะพะปะฝั‹ะน ะพั‚ั‡ั‘ั‚ ะปะตะถะธั‚ ะฒ eval/rev2/semcheck.ml32-trained-on-rev1.holdout.jsonl โ€” ัั‚ะพ ะฟั€ะพะฒะตั€ัะตะผะพ, ะฐ ะฝะต ะฝะฐ ัะปะพะฒะพ. ะŸะพั‡ะธะฝะบะฐ ะดะฐะฝะฝั‹ั… ัะดะฒะธะฝัƒะปะฐ CMB-TWO-UTIL ั 20 ั€ะฐัั…ะพะถะดะตะฝะธะน ะดะพ 0 ะธ ะพัั‚ะฐะฒะธะปะฐ OBJ-OPTIONAL ั‚ะฐะผ ะถะต, ะณะดะต ะพะฝ ะฑั‹ะป.

ะšะพั€ะตะฝัŒ โ€” ะฒ ั€ะฐัะฟั€ะตะดะตะปะตะฝะธะธ ะพะฑัƒั‡ะฐัŽั‰ะธั… ะดะฐะฝะฝั‹ั…, ะธ ะพะฝ ั‚ะพั‡ะฝั‹ะน:

OBJ-OPTIONAL โ€” ะพั‚ะปะพะถะตะฝะฝั‹ะน ัˆะฐะฑะปะพะฝ, ะฝะธ ะพะดะฝะพะณะพ ะพะฑัƒั‡ะฐัŽั‰ะตะณะพ ะดะพะบัƒะผะตะฝั‚ะฐ ั‚ะฐะบะพะน ั„ะพั€ะผั‹ ะฝะตั‚. ะะตะพะฑัะทะฐั‚ะตะปัŒะฝั‹ะต ะฟะพะปั ะฒัั‚ั€ะตั‡ะฐัŽั‚ัั ะฒ ะพะฑัƒั‡ะตะฝะธะธ ั‚ะพะปัŒะบะพ ะฒะฝัƒั‚ั€ะธ CMB-STRUCT-UTL ะธ CMB-STRUCT-UTL-THM, ะธ ั‚ะฐะผ ะพะฝะธ ะฒัะตะณะดะฐ ั€ะพะฒะฝะพ ะฟะพ ะพะดะฝะพะผัƒ ะฝะฐ ะดะพะบัƒะผะตะฝั‚. ะ˜ะท 11 000 ะพะฑัƒั‡ะฐัŽั‰ะธั… ัั‚ั€ะพะบ 797 ะธะผะตัŽั‚ ะพะดะฝะพ ะฝะตะพะฑัะทะฐั‚ะตะปัŒะฝะพะต ะฟะพะปะต ะธ 10 203 โ€” ะฝะธ ะพะดะฝะพะณะพ. ะะธ ะพะดะฝะฐ ะฝะต ะธะผะตะตั‚ ะดะฒัƒั….

ะ˜ะท 2 000 ัั‚ั€ะพะบ, ะดะพะฑะฐะฒะปะตะฝะฝั‹ั… ั€ะฐะดะธ ั‚ะตะพั€ะตะผั‹, 400 โ€” ัั‚ะพ CMB-STRUCT-UTL-THM, ะฒัะต ั ะพะดะฝะธะผ ะฝะตะพะฑัะทะฐั‚ะตะปัŒะฝั‹ะผ ะฟะพะปะตะผ; ะพะฝะธ ะฟะพะดะฝัะปะธ ะดะพะปัŽ ยซั€ะพะฒะฝะพ ะพะดะฝะพ ะธะฝะพะณะดะฐ ะฝะฐ ะดะพะบัƒะผะตะฝั‚ยป ั 397/9 000 ะดะพ 797/11 000 ะธ ะทะฐะพัั‚ั€ะธะปะธ ะพะถะธะดะฐะฝะธะต, ะบะพั‚ะพั€ะพะต ะดะปั ัั‚ะพะณะพ ัˆะฐะฑะปะพะฝะฐ ะธ ั‚ะฐะบ ะฑั‹ะปะพ ะฝะตะฒะตั€ะฝั‹ะผ. ะœะพะดะตะปัŒ ะฝะธะบะพะณะดะฐ ะฝะต ะฒะธะดะตะปะฐ ั‚ะพะณะพ, ะพ ั‡ั‘ะผ ะตั‘ ะฟั€ะพััั‚, ะฐ ะปะธัˆะฝะธะต ะดะฐะฝะฝั‹ะต ัะดะตะปะฐะปะธ ะตั‘ ัƒะฒะตั€ะตะฝะฝะตะต ะฒ ะฑะปะธะถะฐะนัˆะตะผ ะธะท ะฒะธะดะตะฝะฝะพะณะพ.

ะงั‚ะพ ัั‚ะพ ะทะฝะฐั‡ะธั‚ ะฝะฐ ะฟั€ะฐะบั‚ะธะบะต: ะตัะปะธ ะฒะฐัˆะต ะทะฐะดะฐะฝะธะต ะฟะพะผะตั‡ะฐะตั‚ ะฑะพะปัŒัˆะต ะพะดะฝะพะณะพ ะฟะพะปั ะบะฐะบ ะฝะตะพะฑัะทะฐั‚ะตะปัŒะฝะพะต, ะฟั€ะพะฒะตั€ัŒั‚ะต, ั‡ั‚ะพ ะฒัะต ะพะฝะธ ะฒั‹ัˆะปะธ ะบะฐะบ ะธะฝะพะณะดะฐ ัะฒะปัะตั‚ัั. ะšะพะผะฟะธะปัั‚ะพั€ ะทะดะตััŒ ะฝะต ะฟะพะผะพะถะตั‚ โ€” ะดะพะบัƒะผะตะฝั‚, ะณะดะต ะฟะพะปะต ะพะฑัŠัะฒะปะตะฝะพ ะพะฑัะทะฐั‚ะตะปัŒะฝั‹ะผ ะฒะผะตัั‚ะพ ะฝะตะพะฑัะทะฐั‚ะตะปัŒะฝะพะณะพ, ัะพะฒะตั€ัˆะตะฝะฝะพ ะฒะฐะปะธะดะตะฝ.

ะงะธะฝะธั‚ัั ัั‚ะพ ะพะฑัƒั‡ะฐัŽั‰ะธะผะธ ัั‚ั€ะพะบะฐะผะธ ั ะดะฒัƒะผั ะธ ะฑะพะปะตะต ะฝะตะพะฑัะทะฐั‚ะตะปัŒะฝั‹ะผะธ ะฟะพะปัะผะธ. ะขะฐะบะธั… ะฟะพะบะฐ ะฝะตั‚, ะฟะพัั‚ะพะผัƒ ะทะดะตััŒ ะฝะตั‚ ะฝะธั‡ะตะณะพ ยซัƒะถะต ะฟะพั‡ั‚ะธ ะธัะฟั€ะฐะฒะปะตะฝะฝะพะณะพยป: ะธะทะผะตั€ะตะฝะพ, ะฝะฐะทะฒะฐะฝะพ, ะพั‚ะบั€ั‹ั‚ะพ.

ะ ะตะทัƒะปัŒั‚ะฐั‚ั‹ ะฝะฐ ะฟะพะปะฝะพะผ holdout (1 500 ะดะพะบ., greedy, ะฑะตะท ะณั€ะฐะผะผะฐั‚ะธะบะธ, ะฑะตะท ัะฟั€ะฐะฒะพั‡ะฝะธะบะฐ)

ะšะพะผะฟะธะปัั‚ะพั€: 1 499/1 500 (99,9 %) โ€” ะฝะพะฒะฐั ะพะฑะปะฐัั‚ัŒ 500/501 (99,8 %), ะฝะพะฒั‹ะน ัˆะฐะฑะปะพะฝ 501/501 (100 %), ัˆะฐะฑะปะพะฝ+ะพะฑะปะฐัั‚ัŒ 498/498 (100 %). ะŸั€ะตะถะฝะธะน ะฐะดะฐะฟั‚ะตั€ ะฝะฐ ั‚ะตั… ะถะต ะทะฐะดะฐะฝะธัั…: 1 492/1 500 (99,5 %) โ€” 495/501, 501/501, 496/498.

ะกะพะฒะฟะฐะดะตะฝะธะต ัะพ ัั‚ั€ัƒะบั‚ัƒั€ะพะน ัั‚ะฐะปะพะฝะฐ: 1 499/1 500 (99,9 %) ะฟั€ะพั‚ะธะฒ 1 344/1 500 (89,6 %). ะ—ะฐะผะตั‚ัŒั‚ะต: ัƒ ัั‚ะพะน ั€ะตะฒะธะทะธะธ ัะพะฒะฟะฐะดะตะฝะธะต ัะพ ัั‚ั€ัƒะบั‚ัƒั€ะพะน ะธ ะฟั€ะพั…ะพะด ะบะพะผะฟะธะปัั‚ะพั€ะฐ โ€” ะพะดะฝะธ ะธ ั‚ะต ะถะต 1 499 ะดะพะบัƒะผะตะฝั‚ะพะฒ; ัƒ ะฟั€ะตะถะฝะตะณะพ ะฐะดะฐะฟั‚ะตั€ะฐ ะผะตะถะดัƒ ะฝะธะผะธ ะฑั‹ะปะพ 148 ะดะพะบัƒะผะตะฝั‚ะพะฒ ั€ะฐะทะฝะธั†ั‹, ะธ ัั‚ะพะน ั€ะฐะทะฝะธั†ะตะน ะฑั‹ะปะธ ะฟั€ะพะฟัƒั‰ะตะฝะฝั‹ะต ั‚ะตะพั€ะตะผั‹.

ะ’ะฝัƒั‚ั€ะธ ะฟั€ะพัˆะตะดัˆะธั…: ะธัะฟะพะปะฝะตะฝะพ 3 102 ะฟั€ะธะผะตั€ะฐ, ัะพัˆะปะธััŒ ะฒัะต 3 102; ะดะพะบะฐะทะฐะฝะพ ะธ ัะตั€ั‚ะธั„ะธั†ะธั€ะพะฒะฐะฝะพ 453 ั‚ะตะพั€ะตะผั‹ (453 ะธะท 453), ะบะฐะถะดั‹ะน ัะตั€ั‚ะธั„ะธะบะฐั‚ ะฝะตะทะฐะฒะธัะธะผะพ ะฟะตั€ะตะฟั€ะพะฒะตั€ะตะฝ ะฟะพ ัะฒะพะตะผัƒ ะดะฐะนะดะถะตัั‚ัƒ. ะขะตะพั€ะตะผะฐ ะฝะฐะฟะธัะฐะฝะฐ ั€ะพะฒะฝะพ ะฒ ั‚ะตั… 453 ะดะพะบัƒะผะตะฝั‚ะฐั…, ะณะดะต ะพะฝะฐ ะตัั‚ัŒ ะฒ ัั‚ะฐะปะพะฝะต: ะฝะธ ะพะดะฝะพะน ะฟั€ะพะฟัƒั‰ะตะฝะฝะพะน, ะฝะธ ะพะดะฝะพะน ะปะธัˆะฝะตะน.

ะ ะฐััˆะธั€ะตะฝะฝั‹ะน holdout (450 ะดะพะบัƒะผะตะฝั‚ะพะฒ, ะฒััŽะดัƒ ะฝัƒะถะฝั‹ ะธ ั€ะฐัั‡ั‘ั‚, ะธ ั‚ะตะพั€ะตะผะฐ): ะบะพะผะฟะธะปัั‚ะพั€ 446/450 (99,1 %) ะฟั€ะพั‚ะธะฒ 420/450 (93,3 %); ัะผั‹ัะป 444/450 (98,7 %). ะ’ัะต 4 ะฝะตัƒะดะฐั‡ะธ โ€” PARSE_ERROR ะฒ ะพะดะฝะพะผ ัˆะฐะฑะปะพะฝะต CMB-UTL-THM-MULTI (ะดะฒะต ะฝะตะทะฐะบั€ั‹ั‚ั‹ะต ยซั‘ะปะพั‡ะบะธยป, ะปะธัˆะฝะธะน ั‚ะตะบัั‚ ะฟะพัะปะต ะธะผะตะฝะธ, ะฝะตะพะฟะพะทะฝะฐะฝะฝะฐั ัั‚ั€ะพะบะฐ ั‚ะตะพั€ะตะผั‹).

ะงะธัะปะฐ ั€ะตะฒะธะทะธะธ 1 ัะพั…ั€ะฐะฝะตะฝั‹: ะฝะฐ holdout ั€ะตะฒะธะทะธะธ 1 ะฟั€ะตะถะฝะธะน ะฐะดะฐะฟั‚ะตั€ ะดะฐะฒะฐะป 1 491/1 500 (99,4 %), 98,8 / 100 / 99,4 ะฟะพ ัั‚ั€ะฐั‚ะฐะผ, 1 364/1 500 ัั‚ั€ัƒะบั‚ัƒั€ะฝะพะณะพ ัะพะฒะฟะฐะดะตะฝะธั ะธ 1 257/1 500 (83,8 %) ัะผั‹ัะปะพะฒะพะน ะฒะตั€ะฝะพัั‚ะธ. ะžะฝะธ ะฝะต ัƒะดะฐะปะตะฝั‹ ะธ ะฝะต ะฒั‹ะดะฐะฝั‹ ะทะฐ ะฝะพะฒัƒัŽ ั‚ะพั‡ะบัƒ ะพั‚ัั‡ั‘ั‚ะฐ โ€” ั‚ะพั‡ะบะพะน ะพั‚ัั‡ั‘ั‚ะฐ ัะปัƒะถะธั‚ ะฟะตั€ะตัะฝัั‚ั‹ะน ะฟั€ะพะณะพะฝ ะฝะฐ ั‚ะตั… ะถะต ะทะฐะดะฐะฝะธัั….

ะžะฑัƒั‡ะตะฝะธะต

LoRA r=32 ฮฑ=64, 2 ัะฟะพั…ะธ, 11 000 ัั‚ั€ะพะบ ั€ะตะฒะธะทะธะธ 2, max_len 2 560, ะพั‚ะฑั€ะพัˆะตะฝะพ 0, 5 075 ั, ะฟะธะบ 12,59 ะ“ะธะ‘, ั„ะธะฝะฐะปัŒะฝะฐั ะฟะพั‚ะตั€ั 0,0126. ะŸั€ะตะถะฝะธะน ะฐะดะฐะฟั‚ะตั€: 9 000 ัั‚ั€ะพะบ ั€ะตะฒะธะทะธะธ 1, max_len 1 792, 3 442 ั, 9,96 ะ“ะธะ‘, ะฟะพั‚ะตั€ั 0,0154.

ะŸะพั‡ะตะผัƒ ะฟั€ะธัˆะปะพััŒ ะฟะพะดะฝัั‚ัŒ max_len. ะกั‚ั€ะพะบะธ, ะณะดะต ะตัั‚ัŒ ะธ ั€ะฐัั‡ั‘ั‚, ะธ ั‚ะตะพั€ะตะผะฐ, ะดะปะธะฝะฝะตะต ะพัั‚ะฐะปัŒะฝั‹ั…: ะผะตะดะธะฐะฝะฐ 1 821 ั‚ะพะบะตะฝ ะฟั€ะพั‚ะธะฒ 1 048. ะŸั€ะธ ะฟั€ะตะถะฝะธั… 1 792 ั‚ั€ะตะนะฝะตั€ ะผะพะปั‡ะฐ ะฒั‹ะฑั€ะพัะธะป ะฑั‹ 1 081 ะธะท 2 000 ั‚ะฐะบะธั… ัั‚ั€ะพะบ, ะธ ะฟะพั‡ะธะฝะบะฐ ั‚ะตะพั€ะตะผั‹ ะฝะฐะฟะพะปะพะฒะธะฝัƒ ะฝะต ัะพัั‚ะพัะปะฐััŒ ะฑั‹ โ€” ะฑะตะท ะตะดะธะฝะพะณะพ ัะพะพะฑั‰ะตะฝะธั ะพะฑ ะพัˆะธะฑะบะต. ะŸั€ะธ 2 560 ะพั‚ะฑั€ะพัˆะตะฝะพ 0.

ะ“ั€ะฐะผะผะฐั‚ะธะบะฐ

ะ’ัะต 12 950 ะดะพะบัƒะผะตะฝั‚ะพะฒ ั€ะตะฒะธะทะธะธ 2 ะปะตะถะฐั‚ ะฒ ัะทั‹ะบะต fts-gate/grammars/fts.gbnf โ€” 12 950 ะธะท 12 950. ะญั‚ะพ ะฝะต ะฟะตั€ะตัะบะฐะท ะฟั€ะตะถะฝะตะน ะพะณะพะฒะพั€ะบะธ, ะฐ ะธัะฟั€ะฐะฒะปะตะฝะธะต: ะฟั€ะตะถะฝะธะน ะฐะดะฐะฟั‚ะตั€ ะพะฑัƒั‡ะฐะปัั ะฒ ั‚ะพะผ ั‡ะธัะปะต ะฝะฐ 448 ะดะพะบัƒะผะตะฝั‚ะฐั… ั ะดะฒะพะธั‡ะฝั‹ะผ ะผัƒัะพั€ะพะผ ะฒะธะดะฐ 7.199999999999999, ะบะพั‚ะพั€ั‹ะต ะฟะตั€ะตัั‚ะฐะปะธ ะฟะพะฟะฐะดะฐั‚ัŒ ะฒ ะณั€ะฐะผะผะฐั‚ะธะบัƒ ะฟะพัะปะต ั‚ะพะณะพ, ะบะฐะบ 7 ะฐะฒะณัƒัั‚ะฐ ะตั‘ ัะดะตะปะฐะปะธ ะบะพะฝะตั‡ะฝะพะน. ะ ะตะฒะธะทะธั 2 ะธั… ะฟะตั€ะตัะพะฑั€ะฐะปะฐ โ€” ะพะฑัƒั‡ะฐัŽั‰ะธะต ะดะฐะฝะฝั‹ะต ัั‚ะพะณะพ ะฐะดะฐะฟั‚ะตั€ะฐ ะธ ะณั€ะฐะผะผะฐั‚ะธะบะฐ ัะพะณะปะฐัะพะฒะฐะฝั‹. ะะพ ะฝะธ ะพะดะฝะพ ั‡ะธัะปะพ ะฝะฐ ัั‚ะพะน ัั‚ั€ะฐะฝะธั†ะต ะฝะต ะฟะพะปัƒั‡ะตะฝะพ ะฟะพะด ะณั€ะฐะผะผะฐั‚ะธะบะพะน: ะฒัั‘ ะธะทะผะตั€ะตะฝะพ ะฑะตะท ะฝะตั‘.

ะะต ะธะทะผะตั€ะตะฝะพ

ะกัะผะฟะปะธั€ะพะฒะฐะฝะธะต (ั‚ะพะปัŒะบะพ greedy), ะดะตะบะพะดะธั€ะพะฒะฐะฝะธะต ะฟะพะด ะณั€ะฐะผะผะฐั‚ะธะบะพะน, ะปะฐั‚ะตะฝั‚ะฝะพัั‚ัŒ GGUF, ะปัŽะฑะฐั ะฝะตั€ัƒััะบะฐั ะฟะพะฒะตั€ั…ะฝะพัั‚ัŒ, ะดะธัะฟะตั€ัะธั (ะพะดะธะฝ seed ะฝะฐ ั€ะตะฒะธะทะธัŽ), ั€ะตะฐะปัŒะฝั‹ะต ะฟะพะปัŒะทะพะฒะฐั‚ะตะปัŒัะบะธะต ั„ะพั€ะผัƒะปะธั€ะพะฒะบะธ, ะธ โ€” ะณะปะฐะฒะฝะพะต โ€” ะพะฑัƒั‡ะฐัŽั‰ะธะต ัั‚ั€ะพะบะธ ั ะดะฒัƒะผั ะฝะตะพะฑัะทะฐั‚ะตะปัŒะฝั‹ะผะธ ะฟะพะปัะผะธ: ะธั… ะฝะตั‚, ะธ ะฟะพะผะพะถะตั‚ ะปะธ ะธั… ะดะพะฑะฐะฒะปะตะฝะธะต, ะฝะธะบั‚ะพ ะฝะต ะฟั€ะพะฒะตั€ัะป.

ะ›ะธั†ะตะฝะทะธั

ะžะฑะฐ ะฐะดะฐะฟั‚ะตั€ะฐ โ€” BSD-2-Clause; ัะทั‹ะบ FTS ะธ ะณะตะนั‚ ะฟั€ะธะฝะฐะดะปะตะถะฐั‚ ัั‚ะพะน ะถะต ะพั€ะณะฐะฝะธะทะฐั†ะธะธ ะธ ั‚ะพะถะต BSD-2-Clause. ะ‘ะฐะทะฐ Qwen/Qwen3-1.7B (Apache-2.0) ะฒ ั„ะฐะนะปะฐั… ะฐะดะฐะฟั‚ะตั€ะฐ ะฝะต ะฟะตั€ะตั€ะฐัะฟั€ะพัั‚ั€ะฐะฝัะตั‚ัั โ€” ัั‚ะพ ั‚ะพะปัŒะบะพ LoRA-ะดะตะปัŒั‚ะฐ. ะ’ ั„ะฐะนะปะฐั… GGUF ะฑะฐะทะฐ ัะพะดะตั€ะถะธั‚ัั, ะพะฝะธ ัะฒะปััŽั‚ัั ะฟะตั€ะตั€ะฐัะฟั€ะพัั‚ั€ะฐะฝะตะฝะธะตะผ Qwen/Qwen3-1.7B ะฟะพะด Apache-2.0.

Downloads last month
39
GGUF
Model size
2B params
Architecture
qwen3
Hardware compatibility
Log In to add your hardware

5-bit

Inference Providers NEW
This model isn't deployed by any Inference Provider. ๐Ÿ™‹ Ask for provider support

Model tree for digitable-lol/specgen-qwen3-1.7b

Finetuned
Qwen/Qwen3-1.7B
Adapter
(844)
this model

Dataset used to train digitable-lol/specgen-qwen3-1.7b