# Code examples from: LoRA Fine-Tuning Explained: Teach an LLM New Tricks on One GPU
# https://www.atulvij.com/lora-fine-tuning-explained
# Review and adapt before running; examples use sample values.

# ---- Example 1 (python) ----
# pip install transformers peft datasets accelerate
from transformers import AutoModelForCausalLM, AutoTokenizer
from peft import LoraConfig, get_peft_model

name = "Qwen/Qwen2.5-0.5B"                    # small enough to try on a CPU or free GPU
tok = AutoTokenizer.from_pretrained(name)
model = AutoModelForCausalLM.from_pretrained(name)

config = LoraConfig(r=8, lora_alpha=16, lora_dropout=0.05,
                    target_modules=["q_proj", "v_proj"], task_type="CAUSAL_LM")
model = get_peft_model(model, config)
model.print_trainable_parameters()            # a fraction of a percent is trainable

