Adapter details
- PEFT LoRA for
CAUSAL_LM
- Rank 16, alpha 32, dropout 0, bias
none, inference mode enabled
- Target modules:
q_proj, k_proj, v_proj, o_proj, gate_proj, up_proj, down_proj
- Training precision: bf16
- Training data: 1,593 training examples, 3 epochs, checkpoint-600
- Published weight
adapter_model.safetensors: 69,782,384 bytes, SHA-256 0826d2c66cba38ea3b1bcf2a92a12eb2fb7292443e31a98243a79bc12db44ac6
Base model and provenance
Three base references appear in this history and are distinct:
- The original saved
adapter_config.json named the floating base unsloth/Qwen3-1.7B with no revision pin. Original config SHA-256: 460345e6d3301589dfb1ecbccc7f16f98b238807dfd289d32e863b2ef49323d6.
- A reconstructed training mirror:
unsloth/Qwen3-1.7B@6262b50d6c1f8ee5e4ac750d710c33603bfc2a0c.
- The tested and publication-time operational base:
Qwen/Qwen3-1.7B@70d244cc86ccca08cf5af4e1e306ecf908b1ad5e.
Common base tensors were verified equivalent. The official revision is not claimed as training provenance.
The staged adapter_config.json intentionally changes only base_model_name_or_path to Qwen/Qwen3-1.7B and revision to 70d244cc86ccca08cf5af4e1e306ecf908b1ad5e. Every other field from the original config is preserved. Staged config SHA-256: fd2db12d952dff36baef9f52ab2dcc2d3e172cf11475cabfe7cb80dbf5a81998.
Provenance class C: this is an existing independent checkpoint-600 adapter. It is not authenticated as either historical adapter: not the adapter proven to have produced the final benchmark 89%, and not authenticated as the committed standalone 90% adapter.
Evaluation
Fresh adapter-specific evaluation only. No baseline delta is reported.
- Evaluator: Git commit
3e692b556c2e6e8afc0d676f73b390a734a5bc7a
- Frozen config SHA-256:
10c3d896f8b9498959896435eeef38138fee02f6a986fa755b79ad8664969f03
- Base:
Qwen/Qwen3-1.7B@70d244cc86ccca08cf5af4e1e306ecf908b1ad5e
- Adapter SHA-256:
0826d2c66cba38ea3b1bcf2a92a12eb2fb7292443e31a98243a79bc12db44ac6
- Test set: 200 rows, SHA-256
9fc58e7070c327adaa7b522cf1cd530b90c077dbd54513d00ea31dead5712025, dataset revision 15c7d77e083d0cd30ae84cc5de6add1dce6cf950
Prompt and decoding:
- System prompt:
Classify the GitHub issue into exactly one category: bug or feature-request. Return only the category name.
enable_thinking=False, max issue tokens 1800, max new tokens 12, greedy decoding, padding with EOS
Results:
- Strict accuracy: 90% (180/200)
- Semantic accuracy: 90% (180/200)
- Valid label rate: 100% (200/200)
Confusion (rows = actual label):
Table with columns: actual, predicted bug, predicted feature-request, predicted invalid| actual | predicted bug | predicted feature-request | predicted invalid |
|---|
| bug | 93 | 7 | 0 |
| feature-request | 13 | 87 | 0 |
Recall: bug 93%, feature-request 87%.
Deterministic prediction fields match the old untracked local CSV for 200/200 rows. Committed historical comparisons agree at 198/200 rows each. Files are not claimed to be byte-identical. Raw metrics and prediction files are not included here.
Files
Only adapter files are published. Tokenizer files (tokenizer.json, tokenizer_config.json, chat_template.jinja) are intentionally excluded because evaluation used the official pinned base tokenizer.
README.md
LICENSE (Apache License 2.0, same text as the benchmark repository root)
adapter_config.json
adapter_model.safetensors
Usage
Load the official base and tokenizer at the exact base revision, then attach the adapter from Tilakoid/qwen3-1.7b-vscode-triage-lora. No adapter revision is pinned yet, so none is specified.
import torchfrom peft import PeftModelfrom transformers import AutoModelForCausalLM, AutoTokenizer base_id = "Qwen/Qwen3-1.7B"base_revision = "70d244cc86ccca08cf5af4e1e306ecf908b1ad5e"adapter_id = "Tilakoid/qwen3-1.7b-vscode-triage-lora" tokenizer = AutoTokenizer.from_pretrained(base_id, revision=base_revision)model = AutoModelForCausalLM.from_pretrained( base_id, revision=base_revision, dtype=torch.bfloat16, device_map="auto")model = PeftModel.from_pretrained(model, adapter_id)model.eval() system_prompt = ( "Classify the GitHub issue into exactly one category: " "bug or feature-request. Return only the category name.")issue = "Settings sync stops responding after the latest update." messages = [ {"role": "system", "content": system_prompt}, {"role": "user", "content": issue},]prompt = tokenizer.apply_chat_template( messages, tokenize=False, add_generation_prompt=True, enable_thinking=False)inputs = tokenizer(prompt, return_tensors="pt").to(model.device) with torch.no_grad(): output = model.generate( **inputs, max_new_tokens=12, do_sample=False, pad_token_id=tokenizer.eos_token_id )label = tokenizer.decode(output[0][inputs["input_ids"].shape[1]:], skip_special_tokens=True).strip()print(label) # one of: bug, feature-request
Intended use and limitations
- Scope: one repository (VS Code), two labels (
bug, feature-request)
- Evaluated on a public frozen test set; the score is not a private or held-out claim
- No severity prediction, no developer assignment, no issue routing beyond the two labels
- Output is generative text; strict accuracy depends on exact-match decoding of the label string
- Single-run evaluation; no variance estimate across seeds or runs
- Domain transfer to other repositories or issue trackers is not established
Reproduction
Base model: https://huggingface.co/Qwen/Qwen3-1.7B (Apache-2.0). This adapter is released under Apache-2.0; see LICENSE.