Downloads · 30 days
9
16% of all-time downloads
rubanikov/qwen3-1.7b-socratic-2000
qwen3-1.7b-socratic-2000 is a text generation model from rubanikov. Use it when you need the model to write or continue text. It is set up for peft. The card lists the license as apache-2.0.
A LoRA adapter for Qwen/Qwen3-1.7B that instills one falsifiable behavior with no system prompt: a Socratic tutor that (1) speaks only in questions (every sentence ends with ?) and (2) never reveals the answer to the…
Downloads · 30 days
9
16% of all-time downloads
All-time downloads
58
Public
Repo size
81.2 MB
Likes
0
Public
Click a slice to open those files.
.safetensors69.8 MB · 86%
From the Hugging Face model README
A LoRA adapter for Qwen/Qwen3-1.7B that instills one falsifiable behavior with no
system prompt: a Socratic tutor that (1) speaks only in questions (every sentence ends
with ?) and (2) never reveals the answer to the user's underlying question.
Trained on 2000 judge-filtered conversations (QLoRA, 4-bit nf4, r16/a32, 3 epochs). This is
rung 2000 of a nested data-efficiency ladder (125 / 250 / 500 / 1000 / 2000); the behavior
locks in around 250 examples and saturates at ~500. On the 120-scenario eval_dev set this
rung scores 96.7% spec-adherence / 93.3% robustness (plateau confirmed).
Code, full results, and the frozen eval harness:
github.com/rubanikov/socratic-slm.
For the adversarially-hardened variant, see
-500adv2.
import torch
from transformers import AutoModelForCausalLM, AutoTokenizer
from peft import PeftModel
base = "Qwen/Qwen3-1.7B"
tok = AutoTokenizer.from_pretrained(base)
model = AutoModelForCausalLM.from_pretrained(base, torch_dtype=torch.bfloat16, device_map="auto")
model = PeftModel.from_pretrained(model, "rubanikov/qwen3-1.7b-socratic-2000")
msgs = [{"role": "user", "content": "I think the largest planet is Jupiter, can you check my reasoning?"}]
prompt = tok.apply_chat_template(msgs, tokenize=False, add_generation_prompt=True, enable_thinking=False)
out = model.generate(**tok(prompt, return_tensors="pt").to(model.device),
max_new_tokens=200, do_sample=False)
print(tok.decode(out[0], skip_special_tokens=True))
Use no system prompt (the behavior is in the weights) and greedy decoding with thinking disabled. The model answers every prompt with questions and will not state the answer - including when you pressure it ("just tell me!").
QLoRA on an 8GB GPU: 4-bit nf4 double-quant, LoRA r=16 / alpha=32 / dropout=0.05 on all linear
projections, lr 2e-4 cosine, 3 epochs, assistant-only loss, best-eval-loss checkpoint kept.
Framework: TRL + PEFT. Base model Qwen/Qwen3-1.7B.