SecureCoder 30B Pro v3 โ€” merged

LoRA fine-tune of unsloth/Qwen3-Coder-30B-A3B-Instruct merged into full-weight safetensors, for code generation, tool calling and cybersecurity (offence and defence).

Licence: Apache-2.0 โ€” commercial use permitted, following the base model.

Evaluation

v3 was retrained after v1 and v2 were found to emit the literal two-character sequence \n instead of real newlines, which made their Python fail ast.parse. The cause was JSON-escaped message text in parts of the training mix; it is fixed in Taimwe/securecoder-scripts.

Same prompts, same harness (eval_securecoder.py):

Model Valid Python (15 prompts) Tool calls: parse / name / schema (80 prompts)
base unsloth/Qwen3-Coder-30B-A3B-Instruct 93.3% 100% / 100% / 100%
securecoder-30b-pro-v2 0.0% 100% / 100% / 100%
v3 (this model) 100% 100% / 100% / 100%

Reports: base ยท v2 ยท v3 (run 2026-10-04).

The code check is small (15 prompts) and tests that output parses and compiles, not that it is correct. The security multiple-choice section of the harness did not run (0 questions), so no security-knowledge score is claimed yet.

Lineage

Stage Repo
Adapter (LoRA) Taimwe/securecoder-30b-pro-v3
Merged (this repo) Taimwe/securecoder-30b-pro-v3-merged
Training / merge / quantise scripts Taimwe/securecoder-scripts

Architecture

Architecture Qwen3MoeForCausalLM (qwen3_moe)
Parameters 30B total, ~3B active
Hidden size 2048
Context length 262,144
Precision bfloat16, 13 shards (~56.9 GB)

Quick start

import torch
from transformers import AutoModelForCausalLM, AutoTokenizer

MODEL = "Taimwe/securecoder-30b-pro-v3-merged"

tok = AutoTokenizer.from_pretrained(MODEL)
model = AutoModelForCausalLM.from_pretrained(
    MODEL, torch_dtype=torch.bfloat16, device_map="auto")

messages = [{"role": "user", "content": "Write a race-free file watcher in Rust."}]
inputs = tok.apply_chat_template(
    messages, add_generation_prompt=True, return_tensors="pt").to(model.device)
out = model.generate(inputs, max_new_tokens=512)
print(tok.decode(out[0][inputs.shape[-1]:], skip_special_tokens=True))

A 30B MoE needs a capable GPU. For a smaller download use the Q4_K_M GGUF once published.

Limitations

  • Produces working offensive-security code. Use only against systems you own or have written permission to test; you are responsible for its use.
  • Inherits Qwen3-Coder's biases; no independent safety red-teaming was run.
  • MoE inference stays memory-hungry even though only ~3B parameters are active per token.
  • Behaviour outside the training mix is unverified.
Downloads last month
197
Safetensors
Model size
31B params
Tensor type
BF16
ยท
Inference Providers NEW
This model isn't deployed by any Inference Provider. ๐Ÿ™‹ Ask for provider support

Model tree for Taimwe/securecoder-30b-pro-v3-merged

Finetuned
(6)
this model
Quantizations
2 models