2stacks/qwen3-8b-andrew-resume-v2
qwen3-8b-andrew-resume-v2
A QLoRA fine-tune of Qwen3-8B-Instruct specialized to answer biographical questions about Andrew Stanley (CTO / Chief Innovation Officer, SMS Data Products Group). Distributed as a single GGUF (Q4_K_M) for drop-in use with llama.cpp, Ollama, LM Studio, or any other GGUF-compatible runtime.
This repo and its companion dataset (`2stacks/my-resume-v2`) form a complete, reproducible end-to-end fine-tuning demo: source document → synthetic Q&A → QLoRA → merged weights → GGUF → local inference.
What it knows
The model was trained on 122 hand-authored Q&A pairs covering:
- Identity, current role, location, public-facing email
- Career timeline (SMS Data Products Group 2002–present, U.S. Army 1999–2014)
- Sector experience (Defense, Federal civilian, commercial)
- Technical skills: hybrid multi-cloud (AWS, Azure), DevSecOps, CI/CD, Zero Trust, AI/ML enablement
- Certifications: AWS AI Practitioner, AWS Solutions Architect Associate, AWS Cloud Practitioner
- Education: BS in Information Technology / Security, George Mason University (2006)
- Military service: U.S. Army Signal Officer, Afghanistan deployment 2008–09
- Active U.S. government security clearance (details on request)
- Leadership philosophy and engineering management approach
It does not know:
- Andrew's personal phone number
- Home street address
- Specific clearance level / agency
- Family information
- Anything outside the 122-row dataset (general world knowledge degrades after a 10-epoch overfit)
Quickstart
Ollama
hf download 2stacks/qwen3-8b-andrew-resume-v2 qwen3-8b-andrew-resume-v2.Q4_K_M.gguf --local-dir .
cat > Modelfile <<'EOF'
FROM ./qwen3-8b-andrew-resume-v2.Q4_K_M.gguf
PARAMETER temperature 0.3
PARAMETER top_p 0.9
PARAMETER stop "<|im_end|>"
TEMPLATE """<|im_start|>system
You are a helpful assistant with detailed knowledge of Andrew Stanley's professional background.<|im_end|>
<|im_start|>user
{{ .Prompt }}<|im_end|>
<|im_start|>assistant
"""
EOF
ollama create andrew-resume -f Modelfile
ollama run andrew-resume "What is Andrew's current role?"llama.cpp
hf download 2stacks/qwen3-8b-andrew-resume-v2 qwen3-8b-andrew-resume-v2.Q4_K_M.gguf --local-dir .
./llama-cli -m qwen3-8b-andrew-resume-v2.Q4_K_M.gguf \
-p "What is Andrew Stanley's current role?" \
--chat-template chatml -n 256 --temp 0.3Training recipe
The fine-tune is intentionally a near-memorization run — 10 epochs on 122 rows drives loss to ~0 so the model reliably surfaces the curated facts. This is appropriate for a biographical knowledge model and inappropriate for a general assistant.
Reproducing this run
The training script (train.py) and GGUF export script (export_gguf.py) live in the project repo alongside the dataset. The exact recipe in pseudocode:
from unsloth import FastLanguageModel
from trl import SFTTrainer, SFTConfig
from unsloth.chat_templates import get_chat_template, train_on_responses_only
from datasets import load_dataset
model, tok = FastLanguageModel.from_pretrained(
"unsloth/Qwen3-8B-unsloth-bnb-4bit", max_seq_length=2048, load_in_4bit=True)
tok = get_chat_template(tok, chat_template="qwen3-instruct")
model = FastLanguageModel.get_peft_model(model, r=64, lora_alpha=128,
target_modules=["q_proj","k_proj","v_proj","o_proj",
"gate_proj","up_proj","down_proj"])
ds = load_dataset("2stacks/my-resume-v2", split="train").map(
lambda b: {"text": [tok.apply_chat_template(c, tokenize=False) for c in b["messages"]]},
batched=True)
trainer = SFTTrainer(model, tokenizer=tok, train_dataset=ds, args=SFTConfig(
dataset_text_field="text", max_seq_length=2048,
per_device_train_batch_size=2, gradient_accumulation_steps=4,
num_train_epochs=10, learning_rate=1e-4, lr_scheduler_type="linear",
warmup_steps=10, optim="adamw_8bit", weight_decay=0.01,
bf16=True, seed=3407, output_dir="./out"))
trainer = train_on_responses_only(trainer,
instruction_part="<|im_start|>user\n",
response_part="<|im_start|>assistant\n")
trainer.train()
model.save_pretrained_gguf("./gguf_out", tok, quantization_method="q4_k_m")Evaluation
This is a personal-knowledge demonstration model, not benchmarked against general LLM evals. The relevant test set is the 122 dataset rows themselves — the model is expected to recover them with high fidelity, which is what a final loss of ~0.001 indicates.
Out-of-distribution behavior (general knowledge questions, math, code, etc.) is degraded relative to the base model due to the heavy single-domain fine-tune. Use the base `Qwen/Qwen3-8B-Instruct` for general tasks.
Limitations and biases
- Severe single-subject overfit. Trained for 10 epochs on 122 rows of one subject's biography. General-purpose capability is degraded.
- Polished self-description. Andrew Stanley authored the source dataset; phrasings reflect how he wishes to be described professionally. Treat outputs as a curated bio, not an independent evaluation.
- Snapshot in time. Reflects career state as of May 2026.
- English-only.
- No retrieval or grounding. All knowledge is parametric. The model can confabulate when asked about facts outside the training distribution.
License
- Model weights: Apache 2.0 (inherited from Qwen3-8B-Instruct)
- Training dataset: CC-BY-4.0
Citation
@misc{stanley_qwen3_resume_v2_2026,
author = {Stanley, Andrew},
title = {qwen3-8b-andrew-resume-v2: a personal-biography QLoRA fine-tune of Qwen3-8B-Instruct},
year = {2026},
publisher = {Hugging Face},
url = {https://huggingface.co/2stacks/qwen3-8b-andrew-resume-v2}
}Contact
- Email:
2stacks@2stacks.net - Hugging Face: @2stacks
