QLoRA fine-tune of
Devstral Small 2507 (24B) on 2,100 real AI coding assistant conversations extracted from Claude Code, Cursor, Codex CLI, and OpenCode.
2,100 multi-turn coding conversations (175K+ messages total before filtering) from:
1from unsloth import FastLanguageModel
2
3model, tokenizer = FastLanguageModel.from_pretrained(
4 model_name="YOUR_USERNAME/devstral-finetuned-lora",
5 max_seq_length=2048,
6 load_in_4bit=True,
7)
8FastLanguageModel.for_inference(model)
9
10messages = [{"role": "user", "content": "Write a Python LRU cache from scratch"}]
11input_text = tokenizer.apply_chat_template(messages, tokenize=False, add_generation_prompt=True)
12inputs = tokenizer(input_text, return_tensors="pt").to(model.device)
13
14outputs = model.generate(**inputs, max_new_tokens=512, do_sample=False)
15print(tokenizer.decode(outputs[0][inputs["input_ids"].shape[1]:], skip_special_tokens=True))
1from peft import PeftModel
2from transformers import AutoModelForCausalLM, AutoTokenizer
3
4base_model = AutoModelForCausalLM.from_pretrained(
5 "mistralai/Devstral-Small-2507",
6 load_in_4bit=True,
7)
8model = PeftModel.from_pretrained(base_model, "YOUR_USERNAME/devstral-finetuned-lora")
9tokenizer = AutoTokenizer.from_pretrained("YOUR_USERNAME/devstral-finetuned-lora")
1# First merge LoRA into full model, then convert
2pip install mlx-lm
3python -m mlx_lm.convert --hf-path devstral-finetuned-16bit --mlx-path devstral-mlx -q --q-bits 4
4python -m mlx_lm.generate --model devstral-mlx --prompt "Write a function that..."