A fine-tune of
unsloth/Qwen3.5-9B
that maps a
free-text
CVE vulnerability description
to its
CWE weakness ID(s)
.
Trained with
Unsloth
(QLoRA, adapters merged into 16-bit
weights) on the
exploitintel/cve-cwe-consensus
dataset.
Task
Input:
a CVE description (plain text).
Output:
one or more CWE IDs, comma-separated and numerically sorted (e.g.
CWE-79
or
CWE-79, CWE-352
).
Evaluation
On 100 held-out test rows (strict exact-match, including multi-label order):
Variant
Exact-match
Well-formed
<think>
leak
Merged 16-bit (Transformers)
75.0%
100%
0
Q4_K_M GGUF (Ollama)
70.0%
100%
0
Strict exact-match penalizes near-misses (e.g. correct primary CWE plus one extra label), so
practical usefulness is higher than the headline number. The ~5-point gap is the expected Q4
quantization cost.
Usage (Transformers / Unsloth)
Disable thinking mode.
This model is trained for terse, structured output. Run with
enable_thinking=False
; otherwise Qwen3.5's default
<think>
block pollutes the output.
Import
unsloth
before
transformers
so the
qwen3_5
architecture is registered.
import unsloth # registers qwen3_5; must come firstfrom unsloth import FastModel
model, tok = FastModel.from_pretrained("exploitintel/cve-cwe-qwen35-9b", load_in_4bit=False)
FastModel.for_inference(model)
ttok = getattr(tok, "tokenizer", tok)
SYSTEM = ("You are a vulnerability analyst. Given a CVE description, ""reply with only the CWE ID(s) it maps to, comma-separated.")
msgs = [
{"role": "system", "content": SYSTEM},
{"role": "user", "content": "A reflected cross-site scripting issue lets a remote ""attacker inject arbitrary script via the q parameter."},
]
text = ttok.apply_chat_template(msgs, add_generation_prompt=True,
enable_thinking=False, tokenize=False)
ids = ttok(text, return_tensors="pt", add_special_tokens=False).to(model.device)
out = model.generate(**ids, max_new_tokens=48, do_sample=False)
print(ttok.decode(out[0][ids["input_ids"].shape[-1]:], skip_special_tokens=True)) # -> CWE-79
Usage (Ollama / GGUF)
A
Q4_K_M
GGUF is included in this repo. It is converted
without the MTP head
(
convert_hf_to_gguf.py --no-mtp
) — required, or llama.cpp/Ollama fails to load with
qwen3next: layer 32 missing attn_qkv/attn_gate projections
. The bundled Modelfile pins
thinking-mode off and the correct stop token (
<|im_end|>
) so output is a clean
CWE-...
.
ollama run hf.co/exploitintel/cve-cwe-qwen35-9b:Q4_K_M
Notes
Architecture:
qwen3_5
(hybrid linear/full attention + MTP). Requires Unsloth or a
transformers
build that registers
qwen3_5
(≥ 5.2.0).
Base modality:
the base is vision-capable; this fine-tune and the GGUF target text-only CVE→CWE mapping.
License:
inherits the license of the
Qwen3.5-9B
base model.
Runs of exploitintel cve-cwe-qwen35-9b on huggingface.co
0
Total runs
0
24-hour runs
0
3-day runs
0
7-day runs
0
30-day runs
More Information About cve-cwe-qwen35-9b huggingface.co Model
cve-cwe-qwen35-9b huggingface.co
cve-cwe-qwen35-9b huggingface.co is an AI model on huggingface.co that provides cve-cwe-qwen35-9b's model effect (), which can be used instantly with this exploitintel cve-cwe-qwen35-9b model. huggingface.co supports a free trial of the cve-cwe-qwen35-9b model, and also provides paid use of the cve-cwe-qwen35-9b. Support call cve-cwe-qwen35-9b model through api, including Node.js, Python, http.
cve-cwe-qwen35-9b huggingface.co is an online trial and call api platform, which integrates cve-cwe-qwen35-9b's modeling effects, including api services, and provides a free online trial of cve-cwe-qwen35-9b, you can try cve-cwe-qwen35-9b online for free by clicking the link below.
exploitintel cve-cwe-qwen35-9b online free url in huggingface.co:
cve-cwe-qwen35-9b is an open source model from GitHub that offers a free installation service, and any user can find cve-cwe-qwen35-9b on GitHub to install. At the same time, huggingface.co provides the effect of cve-cwe-qwen35-9b install, users can directly use cve-cwe-qwen35-9b installed effect in huggingface.co for debugging and trial. It also supports api for free installation.