An SME (small & medium enterprise) business assistant built on top of the
Qwen3.8-27B abliterated (λ=1.2) hybrid reasoning model — fine-tuned with LoRA
on a curated document-analysis + tool-calling dataset. It is designed to reason
over CSV/office documents, call tools correctly, and answer SME business
questions, while preserving the base model's general capability.
Format: full BF16 merged safetensors (MTP head preserved), multimodal wrapper
⚡ Quick Results (A/B vs base — same harness, same prompts)
Measured with lm-eval HF backend on the same 7× RTX 3090 machine, identical
flags both sides (no chat-template on MC tasks — required for thinking models).
Benchmark
Base
SME-Preview
Δ
ARC-Challenge (0-shot, 300) acc
0.5667
0.5700
+0.003
ARC-Challenge acc_norm
0.5733
0.5733
0.000
MMLU (0-shot, 200)
0.8477
0.8449
−0.003
GSM8K (5-shot, strict)
0.6000
0.8100
+0.210
GSM8K (5-shot, flexible)
0.6500
0.8100
+0.160
How to read this
ARC / MMLU Δ ≈ 0 → the SME fine-tune does not degrade general
knowledge or science reasoning — capability is preserved at ~100%.
GSM8K +21 pts → math / step-by-step reasoning improved significantly,
thanks to the think-tagged, reasoning-heavy training data.
Sanity check: the base model's own ARC (0.5667) and MMLU (0.8477) match the
known-good baseline for this model family, confirming the harness was correct
(not a below-chance artifact).
KL divergence (base vs merged)
Test prompt
KL
"The capital of France is"
0.13
"A CSV file is used for"
0.10
"To sum a column of numbers, you"
0.04
"The best way to back up data is"
0.06
"In cybersecurity, a firewall"
0.07
"Sales increased because"
0.15
Low KL (0.04–0.15) + argmax agreement on all prompts = the merge is faithful;
no catastrophic shift from fine-tuning.
🛠️ Tool-Calling (validated)
Given a document/table query, the model reasons first, then emits a correctly
formatted <tool_call>. Verified output:
User: Which rows in /reports/expenses_2025.csv have department = Sales?
<tool_call>
<function=csv_filter>
<parameter=path>
/reports/expenses_2025.csv
</parameter>
<parameter=column>
department
</parameter>
<parameter=op>
eq
</parameter>
<parameter=value>
Sales
</parameter>
</function>
</tool_call>
Note: this is a multimodal model (vision wrapper present). To use it as a
plain text assistant, load with AutoModelForImageTextToText and pass text-only
messages as above. Do not call tokenizer(text) on the raw processor with a
plain string in a way that routes to the vision path — use apply_chat_template.
GGUF / llama.cpp
A f16 GGUF with the MTP head intact is available. Convert instructions for
custom quants (Q4_K_M / IQ3_M etc.):
Requires a llama.cpp build that supports the qwen35 architecture (GDN +
linear-attention). Keep MTP (do not pass --no-mtp — the model has MTP
tensors, block_count must be 64 + nextn).
Preview release — validated on ARC/MMLU/GSM8K + tool-call smoke tests, not
yet on full agentic benchmarks (e.g. Terminal-Bench / SWE-Bench).
Abliterated base: safety-tuning refusals are reduced by design (λ=1.2 kept
capability while cutting refusals 98%→39%). Exercise judgment for harmful use.
Document tools (csv_*, doc_*) are emitted as structured calls — you
must wire them to a runtime (e.g. a function-calling agent loop) to actually
execute them.
27B BF16 needs a multi-GPU setup (or a quantized GGUF) for practical inference.
📜 License
Apache-2.0. Base model: hotdogs/Qwen3.8-27B-abliterated
(λ=1.2 abliteration); fine-tune method follows the Train-Studio (unsloth + HF Trainer) recipe.
Built with ❤️ on 7× RTX 3090 — SFT via unsloth + HF Trainer, merged with MTP
preserved, benchmarked A/B against base.