scholar-3b v2

A QLoRA adapter for Qwen/Qwen2.5-3B-Instruct that writes in the register of an educated late-nineteenth-century correspondent — without the Early Modern pastiche (thou, hast, methinks) that models usually reach for when asked to "sound Victorian".

Results

Judged pairwise by an independent model (Gemini 3.1 Pro) on 60 held-out prompts, with A/B order randomised per prompt to neutralise position bias.

Comparison Win rate (ties excluded)
v2 vs base Qwen2.5-3B-Instruct 85.7% (48W/8L/4T)
v2 vs v1 (the earlier fine-tune) 72.4% (42W/16L/2T)
v1 vs base 56.4% (31W/24L/5T)

The third row is the interesting one: the previous fine-tune beat its base model by only ~56%, which is close to chance. The rebuild is what moved it.

Mechanical counts on the same 60 prompts (no judge involved):

base v1 v2
Replies containing thou/thee/hast/… 4 2 0
Capability-retention checks passed 6/7 5/7 5/7

Capability retention is a tie between v1 and v2 — they fail different checks. Fine-tuning costs roughly 14 points of general ability either way; that is the honest tax.

Training

Base Qwen/Qwen2.5-3B-Instruct
Method QLoRA, 4-bit NF4, double quant
LoRA r=16, alpha=32, dropout 0.05
Target modules all seven: q,k,v,o,gate,up,down_proj
Effective batch 16 (4 x grad-accum 4)
LR / schedule 2e-4, cosine, 3% warmup
Hardware single Kaggle T4 (free tier)
Best checkpoint step 550, eval_loss 0.4606

Eval loss bottomed at step 550 and rose afterwards while train loss kept falling, so the shipped weights are that checkpoint rather than the final one.

Data

~4,800 examples generated by two teachers (Groq llama-3.3-70b-versatile and Gemini 2.5 Flash) from a cleaned Project Gutenberg corpus, across four task types: persona dialogue, modern-to-Victorian rewrite, context-grounded QA, and letters. Filtered to 2,827 by rule checks, near-duplicate removal, and an independent LLM judge keeping score >= 4.

Two teachers rather than one because distilling from a single model stamps its stylistic tics across the whole dataset.

Usage

from peft import PeftModel
from transformers import AutoModelForCausalLM, AutoTokenizer

base = "Qwen/Qwen2.5-3B-Instruct"
tok = AutoTokenizer.from_pretrained(base)
model = AutoModelForCausalLM.from_pretrained(base, device_map="auto")
model = PeftModel.from_pretrained(model, "lalitkarthik/scholar-3b-v2")

msgs = [
    {"role": "system", "content": "You are a thoughtful scholar of the late nineteenth century."},
    {"role": "user", "content": "I am uneasy about a decision I must make tomorrow."},
]
enc = tok.apply_chat_template(msgs, add_generation_prompt=True, return_tensors="pt",
                              return_dict=True).to(model.device)
out = model.generate(**enc, max_new_tokens=200, do_sample=True, temperature=0.8, top_p=0.9)
print(tok.decode(out[0][enc["input_ids"].shape[-1]:], skip_special_tokens=True))

Limitations

  • 3B parameters: it is a stylist, not a reasoner.
  • Inherits base-model factual errors. All three variants answer "is the Earth larger than the Moon?" incorrectly.
  • Trained on four public-domain novels (Dickens, Bronte, Stoker, Wilde), so it reflects the register and the assumptions of those texts.
Downloads last month
-
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Model tree for lalitkarthik/scholar-3b-v2

Base model

Qwen/Qwen2.5-3B
Adapter
(1365)
this model