agentsclimarketplace

Llm finetuning

Skill param087/agent-ml-skills/skills/llm-finetuning

Production-grade Machine Learning, Data Science & MLOps skills for AI coding agents (Codex, Claude Code, Cursor, OpenCode). One npx command to install.

Install
npx -y skills add param087/agent-ml-skills --skill llm-finetuning

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

One thing to look at

  • 7 stars7 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

What its author says it does

Copied from the file, not written here

Use when fine-tuning a large language model. Covers choosing full vs LoRA/QLoRA, dataset formatting, the transformers/PEFT/TRL stack, key hyperparameters, and evaluating fine-tunes without overfitting.

SKILL.md

3.6 KB, as published. Nobody here has run it

LLM Fine-Tuning

Overview

Fine-tuning adapts a base LLM to a task or style. For almost all practitioners the right default is parameter-efficient fine-tuning (LoRA/QLoRA) — it trains <1% of weights, fits on a single GPU, and avoids catastrophic forgetting. Reach for full fine-tuning only with strong justification and budget.

When to use

  • A base/instruct model is close but needs domain style, format, or behavior.
  • You have a few hundred to tens of thousands of quality examples.

First decide: do you even need to fine-tune?

Try prompting + few-shot + RAG first (see the rag-pipeline skill). Fine-tune when you need consistent format/style, lower latency/cost than long prompts, or to internalize a large example set.

Method selection

MethodTrainsVRAMUse when
Full FT100%Very highLarge data + budget, max quality
LoRA~0.1-1%ModerateDefault for most tasks
QLoRA~0.1-1%Low (4-bit)Single consumer GPU

Dataset formatting (chat / instruction)

Use the model's chat template; quality > quantity. A few thousand clean, diverse examples beat a noisy 100k dump.

def to_chat(example):
    return {"messages": [
        {"role": "system", "content": "You are a helpful support agent."},
        {"role": "user", "content": example["question"]},
        {"role": "assistant", "content": example["answer"]},
    ]}

QLoRA with TRL

from transformers import AutoModelForCausalLM, AutoTokenizer, BitsAndBytesConfig
from peft import LoraConfig
from trl import SFTTrainer, SFTConfig
import torch

bnb = BitsAndBytesConfig(load_in_4bit=True, bnb_4bit_quant_type="nf4",
                         bnb_4bit_compute_dtype=torch.bfloat16)
model = AutoModelForCausalLM.from_pretrained(BASE, quantization_config=bnb, device_map="auto")

peft_cfg = LoraConfig(r=16, lora_alpha=32, lora_dropout=0.05, bias="none",
                      task_type="CAUSAL_LM",
                      target_modules=["q_proj", "k_proj", "v_proj", "o_proj"])

trainer = SFTTrainer(
    model=model, train_dataset=train_ds, eval_dataset=eval_ds, peft_config=peft_cfg,
    args=SFTConfig(per_device_train_batch_size=2, gradient_accumulation_steps=8,
                   learning_rate=2e-4, num_train_epochs=2, warmup_ratio=0.03,
                   lr_scheduler_type="cosine", bf16=True, logging_steps=10,
                   eval_strategy="steps", eval_steps=100, output_dir="out"),
)
trainer.train()

Key hyperparameters

  • LR: 1e-4 to 3e-4 for LoRA (higher than full FT).
  • Epochs: 1-3 — more overfits and degrades general ability.
  • LoRA rank r: 8-32 typical; raise for harder tasks.
  • Effective batch: use gradient accumulation to reach 16-32.

Evaluating a fine-tune

  • Hold out a real test set; track eval loss for overfitting.
  • Judge on task metrics (exact match, rubric/LLM-judge), not just loss.
  • Check for regression on general benchmarks — fine-tuning can break unrelated abilities.

Pitfalls

  • Too many epochs / LR too high → overfit, repetitive or degenerate outputs.
  • Wrong chat template → the model learns malformed formatting.
  • Tiny/dirty dataset → memorization, not generalization.
  • Skipping a base-model baseline → you can't prove the fine-tune helped.

Hand-off

Merged or adapter weights + eval report, logged via experiment-tracking and deployed via model-serving.

Keep looking

Skills are one crate of 328,083. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.