Girlfriend - Ministral-3B-Instruct LoRA Finetune
A LoRA finetune of unsloth/Ministral-3-3B-Instruct-2512, trained on my own custom question/answer conversational dataset to build a personal, on-device "companion" chat model. Trained end-to-end on a single Kaggle T4 GPU using Unsloth.
This repo provides three formats of the same finetune so you can pick what fits your use case:
| File | Format | Use case |
|---|---|---|
Girlfriend_3B_lora_adapter |
LoRA adapter | Apply on top of the base model with Unsloth |
Girlfriend_3B_F16.gguf |
Merged FP16 GGUF | Full-precision inference |
Girlfriend_3B_Q4_K_M.gguf |
GGUF, Q4_K_M | Lightweight on-device inference via llama.cpp, LM Studio, Ollama, KoboldCPP |
Model description
- Base model:
unsloth/Ministral-3-3B-Instruct-2512(text-only Unsloth repack of Mistral AI's Ministral-3 3B Instruct, 2512 release) - Finetuning method: LoRA (rank 32) via Unsloth's
FastLanguageModel, merged into the base weights for the FP16/GGUF exports - Task: single-turn conversational Q&A / persona-style chat
- Training data: my own dataset of
{"question": ..., "answer": ...}pairs, formatted as plain two-turn[user, assistant]chat examples - Persona: trained without a system prompt baked into the data - the persona comes entirely from the training examples themselves. You can optionally add a system prompt at inference time to nudge tone further; see Usage below.
Training details
Trained on Kaggle, single T4 GPU (16 GB), using Unsloth's UnslothTrainer / UnslothTrainingArguments, FP16 precision (the T4 has no native BF16 tensor cores).
LoRA configuration
| Parameter | Value |
|---|---|
| Rank (r) | 32 |
| Alpha | 64 |
| Dropout | 0.05 |
| Target modules | q_proj, k_proj, v_proj, o_proj, gate_proj, up_proj, down_proj |
| Bias | none |
| Gradient checkpointing | Unsloth (smart/offloaded) |
Optimization
| Parameter | Value |
|---|---|
| Learning rate | 2e-5 |
| LR scheduler | cosine, 3% warmup |
| Optimizer | adamw_8bit |
| Weight decay | 0.01 |
| Max grad norm | 0.3 |
| Max steps | 60 |
| Per-device train batch | 16 |
| Gradient accumulation | 2 |
| Effective (global) batch size | 32 |
| Max sequence length | 4096 |
| Precision | FP16 |
| Seed | 3407 |
Label masking
Training used response-only ("completions-only") masking: only the assistant's answer tokens contribute to the loss, while the user's question tokens are masked out (-100). This was implemented via prefix-diffing - tokenizing progressively longer message prefixes and taking the token-id delta across each assistant turn - which works reliably regardless of the exact chat-template markers used.
Usage
The model was trained without a system prompt, so it works fine with none. Optionally, you can nudge the tone/persona at inference time with something like:
You are a loving and caring girlfriend.
Example: GGUF (llama.cpp / LM Studio / Ollama / KoboldCPP)
Download Girlfriend_3B_Q4_K_M.gguf and load it like any other GGUF model.
llama.cpp (CLI):
./llama-cli -m Girlfriend_3B_Q4_K_M.gguf \
-p "You are a loving and caring girlfriend." \
-cnv
LM Studio / Ollama / KoboldCPP: import the .gguf file directly, and optionally paste the persona line above into the app's system-prompt field.
Intended use & limitations
- Intended for personal, on-device conversational / roleplay use, trained on a small, personal dataset.
- This is a small (3B parameter) model finetuned with LoRA on a narrow domain - it is not a general-purpose instruction-following model and will underperform the base model on tasks outside its training distribution (coding, math, factual QA, long-context reasoning, etc.).
- Responses reflect a specific conversational persona and were not evaluated for factual accuracy, safety, or bias. Don't rely on it for factual information or advice.
- As with any small finetuned LLM, expect occasional repetition, hallucination, or inconsistent persona adherence outside the style of the training data.
Files in this repository
Girlfriend_3B_lora_adapter- LoRA adapter weights + tokenizer (PEFT-compatible)Girlfriend_3B_F16.gguf- merged base + LoRA weights, converted to GGUF, FP16Girlfriend_3B_Q4_K_M.gguf- same model, quantized to Q4_K_M for lightweight/mobile on-device inference
Acknowledgements
- Base model: Mistral AI - Ministral-3, via the
unsloth/Ministral-3-3B-Instruct-2512repack - Training stack: Unsloth
- GGUF conversion/quantization: llama.cpp