Fine-tuned
Qwen3.5-2B on the
Opus-4.6-Reasoning-3300x
dataset using LoRA (r=64) via
Unsloth.
1from unsloth import FastModel
2from datasets import load_dataset
3from trl import SFTTrainer, SFTConfig
4
5model, tokenizer = FastModel.from_pretrained(
6 model_name="unsloth/Qwen3.5-2B", max_seq_length=4096, load_in_16bit=True
7)
8model = FastModel.get_peft_model(model, r=64, lora_alpha=64,
9 target_modules=["q_proj","k_proj","v_proj","o_proj","gate_proj","up_proj","down_proj"])
10
11dataset = load_dataset("crownelius/Opus-4.6-Reasoning-3300x", split="train")
12
13# format as native Qwen3.5 thinking format
14def fmt(row):
15 return (f"<|im_start|>user\n{row['problem']}<|im_end|>\n"
16 f"<|im_start|>assistant\n<think>\n{row['thinking']}\n</think>\n"
17 f"{row['solution']}<|im_end|>")
1from unsloth import FastModel
2
3model, tokenizer = FastModel.from_pretrained(
4 model_name = "supersamdev/Qwen3.5-2B-Opus46-Reasoning",
5 max_seq_length = 4096,
6 load_in_16bit = True,
7)
8FastModel.for_inference(model)
9
10messages = [{"role": "user", "content": "What is 25 × 48?"}]
11prompt = tokenizer.apply_chat_template(
12 messages, tokenize=False, add_generation_prompt=True, enable_thinking=True
13)
14inputs = tokenizer(text=prompt, return_tensors="pt").to("cuda")
15out = model.generate(**inputs, max_new_tokens=512, temperature=0.6, do_sample=True)
16print(tokenizer.decode(out[0], skip_special_tokens=True))